サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
買ってよかったもの
blog.udzura.jp
初めましての方は初めまして。近藤うちお(@udzura)です。 Sinatra ベースのフレームワークである Padrino framework の日本語サイトを管理したりしています。 Ruby Advent Calendar jp: 2011 2日目である今日は、 Sinatra 主要コミッタである rkh が、わずか 8 行で実装した Sinatra クローン、「almost-sinatra.rb」を読み解いたりして、2日目にして一気に読者を置いてけぼりにしたいと思います(1日目はこちら – “Coffeescripting with Ruby”)。 RedBull(できれば複数本)の用意を推奨します…… まずは、全コードを下にコピーして置いておきます。先日、 このパッチ が accept されたので、それが適用された最新バージョンです。 %w.rack tilt backports
先日公開された るびまの Sinatra/Padrino/Rack の記事 ですが、ぼくの想像以上の反響と好意的な評価をいただいているようで、大変うれしく思います。 “Rails Hub情報局” にも取り上げていただきました。 Railsはフルコース、Sinatraはお皿、Padrinoはビュッフェ 西村さんの素晴らしい洞察力で、 Sinatra、Padrino、Rackについての考察もされた必読の記事なんですが、一点だけ引っかかったところが、 Padrinoはビュッフェ という点で、「アレ?」 となりました。 自分自身でも Sinatra と言う皿の上に、ロガー、キャッシュ、ヘルパー、認証と言った料理をたくさん盛り付けていく という表現をしていたんですが、ちょっと、自分でどういうつもりで使ったのかな~とあらためて考えこんでしまいました。 #このあたりの違和感を twitter で整理して
11月25日、有志にておこなった、渋谷近辺の Rubyist とそうでもない Rubyist による勉強会。今回は、 ActiveSupport のソースを読んでみた。 会場は最近「株式会社 VOYAGE GROUP に行ってきた!」で話題にもなった VOYAGE GROUP さん提供でした。 見たファイルとそのメモ 公式 github repo から落としてきた。下記、抜けがあるかもしれません。 “lib/active_support” “lib/active_support/inflector/methods” 読めば分かる “lib/active_support/dependencies/autoload” autoload の第二引数を省略可能になる “lib/active_support/lazy_load_hooks” #on_load “lib/active_support/
uri = URI.parse("mysql://u-kondo:XXXXX@localhost:3306/hogege") uri.class #=> URI::MySQL uri.host #=> localhost require 'uri' require 'active_record' class URI::MySQL < URI::Generic def default_port 3306 end def database path[1..-1] rescue nil end def connection_hash { :adapter => scheme, :host => host, :username => user, :password => password, :database => database, :encoding => 'utf8', :port => p
Time to Read 30秒 要するに、ログインしてAccount Settingなどを開いても、このページへの導線がないので大変難儀しました。あほか~ あとは twitter などと同じく、アップリケーションを登録 [...]
業務でも便利に使わせていただいております、 Webistrano 、言ってみれば capistrano の web UI なんですけれど、大変有用なので、ちょこっと紹介します。 What’s good Webistrano は、リモートサーバーへのデプロイを大変簡単にしてくれる capistrano と言うコマンドラインツールを、ウェブアプリケーションでラップしたものです。 やれることは素の capistrano と同じなんですが、ブラウザベースアプリケーションになることで以下のようなメリットが生まれます。 ブラウザベースなので、 CUI に抵抗がある人でも簡単にデプロイできる (CUIをいつまで経っても覚えてくれない人っていますよね~…) テスト、ステージング、本番、などで別々の設定を保存できる (Highline などを使ってインタラクティブに尋ねる必要なし) プロジェクトをまたい
内容としては、わりと緩いので、適当に参考にしてください。 TokyuRubyKaigi の雰囲気を今回やっとつかめたので、もしまた LT が当たれば、次回からは酒の勢いに任せて過激なことを言っていきたいと思います。 This entry was posted on 2011年10月31日, 10:36 AM and is filed under Padrino, Ruby, Sinatra. You can follow any responses to this entry through RSS 2.0. You can leave a response, or trackback from your own site.
アセットパイプラインなどで使えるとして話題の Sprockets gem 、自分向けまとめ。確認しないで書いているところもあります。 アセットパイプラインを支える技術 – sprockets Sprockets: Rack-based asset packaging Web assets 、具体的には主に CSS と JavaScript の圧縮/依存性の解決/各種ソースからの変換をサポートするための Rubygem 。 asset とは資産、財産の意。 執筆時点現在のバージョンは 2.0.3 。なお、 rack-sprockets gem は、 sprockets( 具体的には、 require 'sprockets' map '/assets' do environment = Sprockets::Environment.new environment.append_path 'ap
日本で初めてかもしれない Padrino framework に関する MEETUP 、「スタートPadrino」が開催されました。その場で、 Padrino framework の日本エバンジェリスト(自称)っぽくお話をさせていただきました。お誘いいただいた @repeatedly さんにあらためて感謝。 言いたいことを全部詰め込んだこともあり、だいぶ長いですが、雰囲気は分かっていただけるかな~と。 今後も地道に Padrino を楽しくする活動をしていきます! あと、ハッカソンとかしたいです。 Sinatrasta という言葉は流行らない気もしますがしつこく主張していこうと思います。 個人的には懇親会と称して、久しぶりにロンア~ルに入れたのも良かったです。 栄児 家庭料理 本郷店 板橋店にまた汁なし坦々麺食べにいこうかな~……。
mocksmtpd という便利ルビージェムがある。詳細な使い方は 作者さんの日記 にもあるが、今日はより簡単にメール配信のテストが出来るようなおまじないのやり方を紹介する(主に、未来の自分が見返すために)。 インストール rubygems.org には謎のフォークされた gem がホストされていて胡散臭い。さいわい、githubにホストされているため、今日びのフレームワークなら bundler とかを使って楽にインストールできる。 Gemfile:
来年は行きたいですね。 個人的に、 Perl はおっさんの書くものだと思ってたんですが、来年の今の僕は 28 歳でただのおっさんなので参加できますね。 初めてのPerl 第5版 著者/訳者:Randal L. Schwartz Tom Phoenix brian d foy 出版社:オライリージャパン( 2009-10-26 ) 大型本 ( 424 ページ )
はい。 計測用の Rack Middleware を自作 Rack 向けミドルウェアと言うかたちで切り離されているわけではないようなので、以下の手順で。 NewRelic::Agent::Instrumentation::Rack の説明のとおりに、メトリックだけをするミドルウェアを作成。 lib/app_metric.rb: require 'new_relic/agent/instrumentation/rack' class AppMetric # アプリケーションをスルーするミドルウェアを実装: def initialize(app) @app = app end def call(env) @app.call(env) end # call を定義した後で include すること: include NewRelic::Agent::Instrumentation::Rack e
37signals Signal vs. Noise で投稿されたブログ記事、面白そうなので日本語にしてみた。特に許可をとってたりとかしてないし、そんな厳密に原文をなぞってないですけど、まあ緩く。原文を必ずあわせて読みましょう。 37signals でデータを取り扱う仕事の終着点のひとつとして、たくさんのバラバラの API を取り扱うことがある – 私は少なくともこの数か月間で、10以上のサードーパーティ API を利用し、それと同時に我々の持っているすべてのパブリック API と、さらに多様な内向けインターフェースを取り扱ってきた。いくつもの違った言語で書かれたラッパーを利用し、いくつかは自分自身で書いた。こんな私が API の設計 – デザインとドキュメントに関して、利用者として強い意見を持っていたとしてもおかしくはないだろう。 私の経験上、 API のユーザビリティに真に関係する要素
前回までのあらすじ Sinatra と Padrino の最新バージョンがリリースされたよ。 Sinatra 1.3.0 は昨日紹介したよ(Sinatra 1.3.0 & Padrino 0.10.3 がリリースされました。ざっくり紹介(1))。今日はパドリーノです。 そのまえに、 Padrino ってなんだよという方へ Padrino framework は、コアに Sinatra を据え、さらに便利になるようにいろいろな機能を拡張したライブラリ一式です。むかし sinatra_more というものがあったんですが、その開発メンバーも含め新チームでゴリゴリと開発している模様です。 このフレームワークの狙いは、 Sinatra のエッセンスに合わせつつ、どんどん複雑さを増すばかりのアプリケーション開発に必要となるような機能、たとえば、フォーム、メール配信、国際化、ヘルパー、キャッシュなど…
スィナトゥラとパデュリ~ノの最新バージョンがめでたく リリースされました。 1.3.0 は大変難産だったようなので、おめでとうございます。 ブログ、CHANGELOG等を見て、まずはざっくり Sinatra 1.3.0 を紹介させていただきます。で、こっそりとリリースされ続けてきた Padrino 0.10.0~0.10.3 での主な変更点は明日紹介させていただきます……。 ということで。 stream API の追加 一番の目玉はこれです。きっと。 get '/' do stream do |out| out << "It's gonna be legen -\n" sleep 0.5 out << " (wait for it) \n" sleep 1 out << "- dary!\n" end end 要するに、「レスポンスボディをちょっとずつ返す」ことが出来るようになりました、た
「いまさら C 言語っすかwww」という風潮もあるが、普通に勉強になった。 僕にしては珍しく2週間程度で読み終わった。これはひとえに、 自分の興味関心が強い分野であった 本のレベルが自分にとってちょうど良かった(今回の場合は、C言語はポインタが分かり、Linuxを一通り使えるが、ポインタのポインタや関数ポインタ、システムコールの種類などは十分精通していないというレベルにぴったりだった)。 文体というか語り口が、自分にとってすんなりくる感じだった(著者の青木さんはRuby Hacking Guideなどの著者で、文章に馴染みがあった。) 特に、ファイルシステム/ストリーム/プロセス という切り口で解説してくれて、最後にちゃんと動くアプリケーションをアレしてくれていたのは大変しっくりきて良かった。
しばらく、 blog.udr.me こっちで運営します。 リンク切れ等は気づいてから駆動で直していますんで、もし発見したら教えてください。 * * *
最近、微妙に身内な感じで、プログラマ風の人たちで集まり『7つの言語 7つの世界』の読書会などをやっている。 で、僕はとりあえず一通り読み終わって、今後は読書会の場などで手を動かしながら、サンプルコードを写経などしながら、課題を解いていったりする段階だと思ったので、先日 Ubuntu Natty マシンを用意してセットアップを行った。その際の作業メモ。某勉強会界隈はどうせみんな Mac でしかも Book Air なので、 Lion / homebrew 版の手順書を誰か作っていただけると幸甚です。 処理系を入れる Io 以外は一気に入れることができる。 apt 最高!!!!
Debian/Ubuntu では、 moreutils というパッケージに parallel と言うプログラムが含まれている(Debianだとsqueezeから)。しかし、この parallel は GNU parallel ではなく、似ているけどかなり違う何かのようだ。 なので、 parallel と言うコマンド自体は便利なんだけれど、例えば GNU Parallelがすごすぎて生きるのがつらい にあるサンプルがそのまま動かない、素晴らしい導入記事なのに、、、、 そもそもネットで拾えるいろんなサンプルが動かないので…… Ubuntu厨として生きるのはつらい。 で、どうするのか GNU Parallel 20110822 (‘Utøya’) released まずすべきこととして、 Debian and Ubuntu people have complained GNU Parallel
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 36 37 38 39 40 41 42 43 44 45 46 47 48 require 'sinatra' require 'haml' class Sinatra::Request def pjax? env['HTTP_X_PJAX'] || self["_pjax"] end end get '/' do haml "%p this is index...", :layout => !request.pjax? end get '/akubi' do haml "%img{src: 'http://udzura.jp/images/150709359.jpg'}", :layout =>
このたび人生で初めて、 RubyGems で皆さんに使っていただける gem を公開いたしました。 rack-session-dbm とは rack-session-dbm | RubyGems.org | your community gem host udzura/rack-session-dbm – GitHub Rackベースのウェブアプリケーションのセッションを、ファイルベースのDBである SDBM/GDBM に保存するミドルウェアです。 Rackベースのウェブアプリケーションの場合、デフォルトでは Cookie にセッション情報を保存するので(暗号化等は無論できます)、その情報をクライアントのローカルにどうしても持ちたくない場合、かつ、 memcached や ActiveRecordStore などを導入するのが大げさだと思われる場合に利用できるかと思います。要するにカジュア
なんか twitter でそういう声があったのでざっくり試したよ。 Rack::URLMap を使う なんと! Rack::URLMap は、 env["PATH_INFO"] をよしなにしてはくれません。/sub サブディレクトリにマウントしたアプリケ~ションにも、 /sub が付いたまま渡ります。なので、自分で削除する Rack Middleware 書いたった。 app1.rb: 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 36 37 38 39 40 41 42 require 'rubygems' require 'bundler/setup' Bundler.require class SubApp < Sinatra::Base
ずっと GNU screen を使ってギ~クを気取りたかったんですが、複雑怪奇な .screenrc などに関するバッドノウハウが怖くて(この辺 zsh 移行とかでも同じようなことが言えそう)何度か挑戦しては挫折していたんです。 でも、ここ数か月ぐらい byobu を導入していて、普通に長いこと使えているし大変快適なので、今回ざっくり紹介してみようかな~とか思います。 byobu とは Ubuntu Manpage: byobu byobu in Launchpad Byobu is a Japanese term for decorative, multi-panel screens that serve as folding room dividers. As an open source project, Byobu is an elegant enhancement of the
コメント投稿、退会画面など、サービスの一部に CAPTCHA を表示したいときがあるかと思います。 今回は、 Rack 対応の Ruby 製フレームワークを使っている場合、簡単なライブラリ+ reCAPTCHA で、たとえば、退会画面に CAPTCHA を表示することが出来るので、そちらを紹介します。 実装方法 まず、ユーザ登録画面等を作っときます、今回の目的は退会させることなので、適当でいいですね。 次に、 reCAPTCHA にユーザ登録をして、 API KEY と SECRET を入手します。 諸々を作ったら、必要な gem をインストールさせるため、 Gemfile などに以下を記述、しかるのち bundle install。
皆さん、楽しくテスト書いてますか~~~ 今日は、 rack-legacy を使うことで、 PHP のアプリケーションなのになぜか Ruby のコードでテストできて(受け入れテストのあたりですけど)、そうすると本物の RSpec とかが使えて楽ですよ、と言う話をします。 rack-legacy とは。 まず、 Rack とは、 Ruby 製のウェブアプリケーション(Ruby on Rails、Sinatraなどをご存知かもしれません)とサーバ(Apache/Passenger、NginX、Lighttpdなどなど…)をつなぐ一種の規格です。 Perl や Python にも似たような仕組みがあります。 ここで、 Rack::Legacy というミドルウェアを使うと、他の言語の CGI や、 PHP のアプリケーションが Rack の上で動かせます。 そして、 Rack の上で動くということは
microdata というものがある。いわゆるセマンティック(笑)ウェブ(爆)だ。セマンティックウェブの話が出た3年前ぐらいは、概念はすごいけど画餅みたいなところがあり、胡散臭いコンサルやスタートアップが出現してて怪しいイメージもあったが、 Google さんをはじめとした検索エンジンの技術向上とか、似たような規格として facebook とか SNS 系で人気の OGP(Open Graph Protocol) も出てきていて、ウェッブペ~ジにメタデ~タを埋め込むことが普通になりつつあるように思われる。 今回、ちょっとした機会があって microdata などについて調べたので、そのメモなど。基本的に僕の独学だったりするので、学術的にとか色々おかしなところのツッコミとかが欲しい感じです。 セマンティック☆ウェブってそもそも何なの? 僕もよく分からないのだが、 HTML で記述した文章に、
RubyKaigi とか色々あって、ふと、僕がプログラミングを始めたころのことを何となく思い出したので走り書きしておきます。特に PHP に関しては記憶が曖昧なところがおおいので、 PHPer モヒカン族によるツッコミを歓迎します。 配列とハッシュが違う PHP においては、配列も連想配列もすべて array() と言う関数で生成する。むしろ、配列というものがキーを数字にしているだけの連想配列と言う位置づけだと思う。 Ruby ではもちろん、主たるコレクションには Array と Hash の二種類が存在し、区別される。最初はこの区別に若干戸惑いを覚えた。 ちなみに Python だとリスト・タプル・辞書ともっと増えるわけで、Javaのコレクションクラスに至ってはさらに多いし、この辺はどの実装が正しいとか適切とかではなく慣習なのかなあ、と思ったりする。 型(クラス)がより厳格 PHP では
以下のエントリは、自分内ブレインストーミングの結果を書き起こしただけのモノなので、数年後どころか数ヶ月後でも意見が変わっているかもしれない。と言う前提で。 三つ、考えられる。 「未来の自分」が楽になる 自動テストコードは、その状態でのそのソフトウェアの挙動、仕様のスナップショットを撮る、と言う側面があり、それはドキュメントを各行為にも通じるが、「今書いている」自分以外の誰かがそのソフトウェアを変更したり、メンテナンスしたり、理解する際に役に立つ。人間はモノを忘れていく以上、「今書いている」自分以外、とは、当然未来の自分も含まれる。 実際、経験的にも、変更したらまずは rake spec を走らせて、エンバグしていないことを確認できるのは気持ちがすごく楽……。そのサービスを変えつづけていくつもりなら、是非テストを書こう。必ずいいことがある。 で、以下二つは、コードをgithubなどのソーシャ
表題のとおり、日本 RubyKaigi 2011 にいってまいりました。いくつか発表をさせていただいたりしたので、今回はそのメモ+感想です。 Yami RubyKaigi – RailsダークサイドとSinatra/Padrino 闇で発表した内容です。5分尺で作っていた元々のバージョンです…… こちらの Togetter に若干反応が残っています。内容は、まあ、書いてあるとおりでコメントもなく、詳細は下記「!SinatraKaigi」ともかぶります。 「Railsいけ好かない」とか口走った記録がありますがそれは闇に操られてのことで、僕はRailsだいすきです! !日本Sinatra会議 僭越ながら、大ホール・小ホールともに盛り上がる発表の中、やらせていただきました。参加していただいた皆様に感謝。 発表のアジェンダとしては、主に以下の3つの話をした記憶があります。 (1)Web開発には、事
次のページ
このページを最初にブックマークしてみませんか?
『blog.udzura.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く