タグ

ブックマーク / blog.udzura.jp (33)

  • PHP しか書けなかった僕が Ruby を始めたころに思ったこと10点 « blog.udzura.jp

    RubyKaigi とか色々あって、ふと、僕がプログラミングを始めたころのことを何となく思い出したので走り書きしておきます。特に PHP に関しては記憶が曖昧なところがおおいので、 PHPer モヒカン族によるツッコミを歓迎します。 配列とハッシュが違う PHP においては、配列も連想配列もすべて array() と言う関数で生成する。むしろ、配列というものがキーを数字にしているだけの連想配列と言う位置づけだと思う。 Ruby ではもちろん、主たるコレクションには Array と Hash の二種類が存在し、区別される。最初はこの区別に若干戸惑いを覚えた。 ちなみに Python だとリスト・タプル・辞書ともっと増えるわけで、Javaのコレクションクラスに至ってはさらに多いし、この辺はどの実装が正しいとか適切とかではなく慣習なのかなあ、と思ったりする。 型(クラス)がより厳格 PHP では

  • なぜ、個人のサービスなのにテストを書くのか。 « blog.udzura.jp

    以下のエントリは、自分内ブレインストーミングの結果を書き起こしただけのモノなので、数年後どころか数ヶ月後でも意見が変わっているかもしれない。と言う前提で。 三つ、考えられる。 「未来の自分」が楽になる 自動テストコードは、その状態でのそのソフトウェアの挙動、仕様のスナップショットを撮る、と言う側面があり、それはドキュメントを各行為にも通じるが、「今書いている」自分以外の誰かがそのソフトウェアを変更したり、メンテナンスしたり、理解する際に役に立つ。人間はモノを忘れていく以上、「今書いている」自分以外、とは、当然未来の自分も含まれる。 実際、経験的にも、変更したらまずは rake spec を走らせて、エンバグしていないことを確認できるのは気持ちがすごく楽……。そのサービスを変えつづけていくつもりなら、是非テストを書こう。必ずいいことがある。 で、以下二つは、コードをgithubなどのソーシャ

  • RubyKaigi2011に行った+Sinatra/Padrinoについてしゃべった « blog.udzura.jp

    表題のとおり、日 RubyKaigi 2011 にいってまいりました。いくつか発表をさせていただいたりしたので、今回はそのメモ+感想です。 Yami RubyKaigi – RailsダークサイドとSinatra/Padrino 闇で発表した内容です。5分尺で作っていた元々のバージョンです…… こちらの Togetter に若干反応が残っています。内容は、まあ、書いてあるとおりでコメントもなく、詳細は下記「!SinatraKaigi」ともかぶります。 「Railsいけ好かない」とか口走った記録がありますがそれは闇に操られてのことで、僕はRailsだいすきです! !日Sinatra会議 僭越ながら、大ホール・小ホールともに盛り上がる発表の中、やらせていただきました。参加していただいた皆様に感謝。 発表のアジェンダとしては、主に以下の3つの話をした記憶があります。 (1)Web開発には、事

    mitukiii
    mitukiii 2011/07/19
    『「Railsいけ好かない」とか口走った記録がありますがそれは闇に操られてのことで、僕はRailsだいすきです!』
  • 正規表現の先読み/否定先読み/戻り読みの話 « blog.udzura.jp

    POWER_OF_1000 = /1(?=(?:000)+(?:[^\d]|$))0+/ "hogehoge10000000hogehoge".scan(POWER_OF_1000) #=> [] "hogehoge1000000000hogehoge".scan(POWER_OF_1000) #=> ["1000000000"] "hogehoge1000000000".scan(POWER_OF_1000) #=> ["1000000000"] これは、「『後ろにちょうど3の倍数個の”0″が続いて、その後で数字以外か文字列終端が続いているような”1″』で始まり、”0″が1以上続く」文字列にマッチする正規表現である。 つまり、まず “1″ にマッチし(*1)、その後の先読みにより、「後ろにちょうど3の倍数個の”0″が続いて、その後で数字以外か文字列終端が続いているかどうか」ということ自体

    mitukiii
    mitukiii 2011/07/15
  • Gyazo の upload.cgi を Sinatra で実装したりした(Heroku にデプロイもできるよ!) « blog.udzura.jp

    皆さんご存知の便利画像アップロードサービス、 Gyazo 、そのサーバ側実装 upload.cgi を、クローンして再実装してみた。 udzura / upload.cgi プロジェクト名は冗談で、中身は Sinatra で実装されています。さらに、画像保存にファイルではなく MongoDB(Mongoid gem) を利用しているので、 heroku その他クラウド上にデプロイできるというおまけ付きです。 デプロイメント、使い方 Heroku に登録し、アカウントを verify したあとならば、 git clone git://github.com/udzura/upload.cgi.git cd upload.cgi heroku create your-gyazo-app # setup heroku heroku addons:add mongohq:free heroku ad

  • etckeeperのつかいかた(インストール、サブコマンド追加) « Coding Suicidal

    Time to Read 2分 etckeeperと言うものがあり、要するに /etc 以下をリポジトリにして変更履歴を管理してくれる、大変大雑把と言えば大雑把なソフトウェアがあります。大雑把ですが、結構便利です。 インストール 1 sudo aptitude install git-core etckeeper そしたら、 /etc/etckeeper/etckeeper.conf と言う若干くどい名前の設定ファイルを編集。 1 2 3 4 5 # The VCS to use. #VCS="hg" VCS="git" #VCS="bzr" #VCS="darcs" Gitの他、MercurialやBazaarなんかが使えます。ただし、Subversionなどのような、中央リポジトリが必要なバージョン管理システムは使えませんね(ローカルにコミットしていくため)。 VCSを決めたら: 1

  • RackとSinatra、Padrinoに関する雑感 « blog.udzura.jp

    Warden はかなり好き(PadrinoというかSinatraでも使えるし)。でも、僕もDeviseはやり過ぎだと思う派だなあ 認証関連の画面遷移やURLが Devise の規約にぴったりハマるケースっていくらなんでも稀だと思うし、カスタマイズするとなると結構ソース追わないといけなくなって結局だるい… env['warden'] に一通り入ってるのは、少しかっこ悪いかもしれないけど便利。 認証とかリダイレクト処理とかガラケー対応とか、はアプリケーション体ではなくRack Middleware で実現したいな~と言う facebook でこんなことをつぶやいた。 僕は Rack とその関連技術が凄く好きで、もっと勉強する人が増えてほしいと思っているのだが、何で好きなのかとかを整理してみた。 Good Stuff 結合度が低くなる。なので: Rackでとある機能(認証など)を実現すれば、そ

  • 僕がプログラミングをはじめたきっかけ « blog.udzura.jp

    なかなかちゃんとしたブログ記事書く時間もないので、チラ裏してみます。 厨房時代 パソコン部に入る 兄が残した『こんにちは!マイコン』というを読んでBASIC をやる。詳細よく覚えていない 16パズルを作ったはずなんだけどソースはもちろん残っていない 工房時代 実家は自営業なので、家業のホームページを作るよう頼まれる 技評のを買う Web 標準とかその辺に一時期凝り、よくわかんないインターネットの争いに巻き込まれたりする CGI やったり、 Delphiでフリーソフトウェア作って配布している人たちはリア充だと思っていた 大学時代 大学デビューを志していたのでプログラミングしてない 就活 営業とか出版社とかに落ちまくり、当時なぜか「SEなら誰でも内定もらえる!」 という話があったんでSEで応募したら内定が出た 就職後 DWH(DHH じゃないよ) っぽいシステムの運用からキャリアが始まる

  • Rack::Rewrite の README を超訳してみました « blog.udzura.jp

    Rack::Rewrite というものがあり、たとえば heroku のような、サーバ側は何もいじれないような場合でもソースに rewrite rule を書くことが出来たりします。日人にはあまり広まっていないようなんですが、多機能というわけでもないし、 README を邦訳すればノリが判明して使えるかなーと思って、日語にしてみました。 かなりザックリ+猛然と意訳超訳なので、原文も合わせてどうぞ。 gist: 972903 を直接ご覧になった方がいいかもしれません。一応以下にも張り付けます。 繰り返しますが、原文の雰囲気はこんなんじゃない気がします。 This entry was posted on 2011年5月15日, 2:46 PM and is filed under Ruby. You can follow any responses to this entry throug

  • Padrino+MongoDB+Herokuを使って、5分でWikiアプリ作成する « Coding Suicidal

    ここ数か月、PadrinoというRuby製フレームワークにはまり込んでいるわけですが。 軽量 テスト、i18n、各種ヘルパーなど一通りの機能が入っている ベースはSinatraなので、面倒くさいroutes.rbを書かなくてよい なによりザクザク作れて楽しい そんなPadrinoを草の根でも広げていきたいな~と思い、「Padrino+MongoDBHeroku」なシンプルなWiki風ウェブアプリケーションの作り方を、入門記事風に書いてみます。 環境はMac OS XやデスクトップLinuxを想定しています。前提として、まず、RubyRubyGems、Gitは入っていますか? 入っていないならばとりあえず入れておいてください。 Windowsの場合、Getting Started with Heroku on Windows(http://devcenter.heroku.com/art

  • Rackで静的サイトを公開する(DirectoryIndex対応版) « blog.udzura.jp

    Rackライブラリ自身に Rack::Static が添付されていますが、これ、ディレクトリを見に行った場合に自動的に「index.html」を見てくれるとか(Apacheで言うDirectoryIndex設定のこと)、そういう気を回してくれないんですね。 あと、普通にWEBrickを使えばいいんという話もあるでしょうけど、Rackアプリケーションとして実装する意味って結構あって、例えば Rack::URLMap なんかと組み合わせたりできたりします。 ということで、 Rack::Directory を少しだけ変更することで実装可能。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #!/usr/bin/env ruby require 'rack

  • Ruby で凄く簡単に GET/POST 送信ができる関数を作りました « blog.udzura.jp

    require 'net/http' def wbs_request(method, uri_string, data={}) uri = URI.parse(uri_string) uri.path = "/" if uri.path.empty? http = Net::HTTP.new(uri.host) case method.to_s.downcase.to_sym when :get query_string = data.to_a.map{|(k, v)| "#{k}=#{v}"}.join("&") return http.get(uri.path + "?" + query_string).body when :post return http.post(uri.path, data).body when :put, :delete, :head raise NotImp

    mitukiii
    mitukiii 2011/04/08
    rest_client可愛いよrest_client
  • 関数型っぽい言語を比較 – Quick Sort編 – « **deadwinter**

    関数型な書き方が得意な言語を比較。目に付いたモノを一通り見ただけの自分メモです。。 Erlang 1 2 3 qsort([]) -> []; qsort([Pivot|Rest]) -> qsort([ X || X <- Rest, X < Pivot]) ++ [Pivot] ++ qsort([ Y || Y <- Rest, Y >= Pivot]). from http://ja.wikipedia.org/wiki/Erlang#.E9.96.A2.E6.95.B0.E5.9E.8B.E8.A8.80.E8.AA.9E Haskell 1 2 qsort [] = [] qsort (x:xs) = qsort [y | y <- xs, y < x] ++ [x] ++ qsort [y | y <- xs, y >= x] from http://d.hatena.ne.

    mitukiii
    mitukiii 2011/03/22
    Ruby読んでから他の見たらやっと読めた。