タグ

ブックマーク / secondlife.hatenablog.jp (53)

  • プログラミングの楽しさ。オープンソースとの出会い。 - 2nd life (移転しました)

    100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊 が出版され、『私と Ruby と添削と』という内容で寄稿しました。私がどうプログラミング・オープンソースの楽しさを知ったかについての昔話です。公開して良い、とのことなので公開いたします。 なお、文章中に出てくる tdiarytimes.rb のコードは以下です。9年前に書いたコードなので今読み返すと恥ずかしいを通り越してもはや微笑ましいですね!!1これでも当時は、自分なりにできるだけ綺麗なコードにして公開した記憶があります。 https://github.com/tdiary/tdiary-contrib/blob/master/plugin/tdiarytimes.rb 私と Ruby と添削と プログラミング技術の向上させるには、どういう方法があるでしょうか。プログラミングに関する書籍を読む、オープンソースで公開されて

    プログラミングの楽しさ。オープンソースとの出会い。 - 2nd life (移転しました)
  • さいきんの Rails サービスを高速化をしてみた - 2nd life (移転しました)

    先日のももクロハッカソンで出会った wantedly を作ってる仲さんが と言ってたので、面白そうなので wantedly を速くしてみました。 wantedly ちなみにデータが数百万オーダーもなさそうなのに、どのページもログインすると2-5秒ぐらいかかっていたので、確実に速くできそうだなぁという感覚はやる前からありました。 アプリケーションサイドのチューニング 初心者*1にありがちな問題として SQL に適切にインデックス張ってない キャッシュすべき場所をキャッシュしていない 無駄なデータを引きすぎてる ことがよくあります。ので順に実装を見ていきました。 SQLに適切なインデックスを張ってない 張ってありました!びっくり!\(^o^)/ キャッシュすべき場所をキャッシュしていない Facebook API を利用したアプリケーションなんですが、ユーザのデータの取得を毎回馬鹿正直に HT

    さいきんの Rails サービスを高速化をしてみた - 2nd life (移転しました)
    poppen
    poppen 2011/11/09
  • デブサミ2009 はてなの開発戦略 - 2nd life (移転しました)

    先日のデブサミ2009で発表した、はてなの開発戦略 (すごい名前だ…) のプレゼン資料を公開します。前半は主に git の話で、後半ははてなブックマークリニューアルの、Perl 層の開発をどんな感じで行っていったか、という話です。 デブサミ2009 はてなの開発戦略View more presentations from hotchpotch. はてなの git では、中央のマスタレポジトリサーバがあって、そこから各自 clone / fetch して開発を行ってるので、完全に github のような分散のメリットを生かしているわけではありません。 しかし完全に分散を生かさずとも、git に移行したメリットは十分にあって、資料の中でもふれていますが、やはり一番便利なのが git のブランチ機能です。もうこれ無しでの開発は考えられないなぁ、ぐらいで、さくっとブランチ切って開発、ブランチの切り

    デブサミ2009 はてなの開発戦略 - 2nd life (移転しました)
  • やたーはてなダイアリーファイルシステムできたよ\(^o^)/ - 川o・-・)<2nd life

    はてなダイアリーが AtomPub で編集できるようになったので、早速 fuse を使ってファイルシステムを作ってみました。こんな感じに使えます。 http://rails2u.com/tmp/diary_fuse/fuse.htm (動画) /create に保存すると現在時刻で作成 /20080820101010 など、エントリーを編集可能。保存で更新。 rm するとエントリーを削除 /\d{14} 的なファイル名で保存すると、その時刻のエントリーを作成 などなど。Ruby の FuseFS を初めて使ってみましたが、結構簡単にファイルシステムをいじれて便利ですね。ちなみに文の改行周りがおかしくなるというアレな挙動をして、全然実用できませんが、AtomPub 使うとこんな事もできるよーという例として見ていただければ。 ソースコードは以下です。

    やたーはてなダイアリーファイルシステムできたよ\(^o^)/ - 川o・-・)<2nd life
  • gist.github.com で GreaseMonkey Script を管理しよう - 川o・-・)<2nd life

    http://gist.github.com/ 最近 github にまた新しいサービス、gistが誕生しました。これはよくあるソースコードを web にペーストして参照できるサービスの git 版、と云ったところです。 gist の良いところは、まず git を知らなくても使えるところが上げられます。普通のペーストサービスと同じで、ソースコードを適当にはっつければOKで簡単です。編集ももちろん web 上からでき、インターフェイスから編集を行うと、git の履歴としてサーバサイドに保存されます。また、匿名による作成・編集も可能です。(匿名による編集は cookie が切れるまでっぽいですが) そして、git と同じく、github にログインしてれば、gist で誰かが貼り付けたソースコードを fork でき、自分の権限の元編集操作が可能になります。ので、誰かが貼り付けたコードを for

    gist.github.com で GreaseMonkey Script を管理しよう - 川o・-・)<2nd life
  • github に gem を公開する - 2nd life (移転しました)

    http://github.com/ 最近一部で話題沸騰の githubgithubRails で作られたアプリケーションでは、自分が知りうる限り一番の完成度と使いやすさを誇るんじゃないか、と思っています。 ソースコードツリーの見やすさ、(g)zipでくれ機能、各種 git の情報へのアクセスしやすさ、最初に git レポジトリを作ったとき表示されるチュートリアルと云った基的なことはもちろんですが、オープンソースプロジェクト・コミュニティを加速させるであろう、分散レポジトリを利用した様々な機能がすばらしいですね。 誰かが公開してるレポジトリを fork ボタン一つで自分のレポジトリにクローンし、いろいろ変更を加え、大に取り込んで欲しいなぁ、と思ったら pull request。大のコミッタは気に入れば pull で取り込めばよいし、もし気に入らなかったとしても、変更者がそのフ

    github に gem を公開する - 2nd life (移転しました)
  • cdd - screen の別WINDOWのカレントディレクトリに移動する zsh スクリプト - 2nd life (移転しました)

    現在は m4i さん作のcdd を tmux, bash, multi session +α に対応した - カワイイはつくれる のcddを使うのがオススメです。 screen を使ってると、別の作業している WINDOW のカレントディレクトリに移動したくなることってありませんか?私は月1000回ぐらいあります。で、毎回手動で打つのがめんどくさくなってきたので zsh スクリプト書いてみたら思っていた以上に便利だったので、汚いスクリプトですが公開します。 http://svn.coderepos.org/share/lang/zsh/cdd/cdd 使い方は、上記スクリプトを checkout したりダウンロードしたりしてから、.zshrc に autoload -U compinit compinit source ~/path/cdd # (cdd はこのファイル) するを追加します

    cdd - screen の別WINDOWのカレントディレクトリに移動する zsh スクリプト - 2nd life (移転しました)
  • 川o・-・)<2nd life - Visitors, a fast web log analyzer

    http://www.hping.org/visitors/ 高速なapache log analyzer。公式には No installation required, can process up to 150,000 lines of log entries per second in fast computers (20MB/s with my log files average length). と、一秒で150,000行さばけるとうたっている。うちの環境で実際に10万行ほどのログをわせたところ1秒ちょいと非常に高速にさばけた。出力ではhtml(サンプル)だけならずテキスト(サンプル)も選べる。 ログアナライザとして必要な機能は一通りそろってるし、Googleからの検索キーワードも表示できてGood。日語検索ワードだとeuc-jpやsjisやutf-8だったりするのでnkfをか

    川o・-・)<2nd life - Visitors, a fast web log analyzer
  • perl でインタラクティブなシェルを実現する perlsh - 2nd life (移転しました)

    http://search.cpan.org/~hayashi/Term-ReadLine-Gnu-1.15/eg/perlsh 最近 perl を勉強中で、ちょくちょく挙動に関する疑問が出てきます。ですが Ruby における irb のようなインタラクティブシェルが無い(と思っていた)ため、挙動をちょくちょく調べるのに、エディタ開いてソース書いたりしていてめんどくさい!と思ってたりします。 しかし今日 id:hideoki が挙動チェックでなにやら便利そうな対話型のシェルを使っており、それが perlsh というインタラクティブなシェルでした。 $ perlsh # 起動 main[10]$ @ary = qw(1 2 3 4 5) 1 2 3 4 5 main[11]$ map { $_ * $_ } grep { $_ % 2 } @ary 1 9 25 のように対話的に実行でき、返

    perl でインタラクティブなシェルを実現する perlsh - 2nd life (移転しました)
  • 次世代 JavaScript ライブラリを作りました - 2nd life (移転しました)

    先日 Scriptaculous 1.6.0 が公開されましたね。Web2.0 全盛の今、Scriptaculous は無くてはならない必須ライブラリの一つとなりました。 2000年前後、DHTML と云われる技術を駆使した視覚効果を頻繁に使った Web ページをよく見るようになりました。当時はキャズムを飛び越えて、アーリーマジョリティまで広く使われていたと云っても過言ではないでしょう。Web 2.0 はまだまだキャズムを飛び越えてたとは云えません。そこでアーリーマジョリティ層にも広く使われるようになるのに貢献しようとしているのが実は Scriptaculous なのです。以前 Ruby on Rails のメーリングリストではScriptaculous は Web 2.0 などではない!Blink, Marquee 2.0だ!(意訳)、つまり Scriptaculous は Web 2.

    次世代 JavaScript ライブラリを作りました - 2nd life (移転しました)
  • fcwrap を使ったAS3オールドタイプ開発 - Shibuya.es 発表資料 - 川o・-・)<2nd life

    昨日の Shibuya.js Technical Talk #3 - Shibuya.es で LT をしてきました。関係者、来場者のみなさん、お疲れ様でした。 どの発表も面白かったです。技術的な面では omo さんのはじめてのABCでの、AVM2/JIT の話が大変面白かったです。なんで型を定義すると速くなるのかなど、「へーこう実行されるからなのかー」と解りやすかったです。 また会場では一斉を風靡するであろう、kushigahamaメソッドが生まれました。あのインパクトは正直高橋メソッドを初めて見たとき以上でした。今年は高橋メソッド以上にkushigahamaメソッドが流行る予感…。 また、fcwrap のデモも撮ったので置いておきます。 http://rails2u.com/misc/fcwrap_demo/fcwrap.htm このように保存するだけで即座に結果を表示/リロードしつつ

    fcwrap を使ったAS3オールドタイプ開発 - Shibuya.es 発表資料 - 川o・-・)<2nd life
    poppen
    poppen 2007/04/07
  • 川o・-・)<2nd life - Rack を使って Web サーバで統一されたインターフェイスの利用する

    http://rack.rubyforge.org/ 先日登場した Rack というライブラリを使うと、Web サーバごとに同一のインターフェイスを利用できるようになります。通常、Ruby で Web アプリケーション を動作させるとき、cgi なのか、fcgi なのか、もしくは mongrel や webrick を使うのか、ということを考えなければなりません。cgi のみで動作決めうち、など良いのですが、ガワである Web アプリケーションフレームワークや一般に配布するアプリケーションなど、既存のフレームワークを用いずに作るときは、さまざまな動作環境でも動くように考慮しなくてはなりません。 たとえば既存のフレームワークである Rails や Camping はそれぞれ個別に cgi/fcgi/mongrel/webrick などの対応を行っています。しかし Rack で定義されているイ

    川o・-・)<2nd life - Rack を使って Web サーバで統一されたインターフェイスの利用する
  • ActionScript3 (mxmlc) でのコンパイルを100倍速にする方法 - 2nd life (移転しました)

    三日前から Flex2 SDK で ActionScript3 を始めました secondlife です。こんにちわ。AS3 は言語仕様的には ECMAScript と Java をあわせた感じで普通な書き方で OOP できるのでうーん、と頭をひねることはあまりないのですが、他のところでいろいろはまりまくってます。 で、原始的な解決方法として trace() を使ったプリントデバッグを行っているのですが、スクリプト言語に慣れきった体ではコンパイル時間が遅くて死にそうです。たとえばこんな HelloWorld.as package { import flash.display.Sprite; public class HelloWorld extends Sprite { public function HelloWorld() { trace("Hello World!"); } } }を

    ActionScript3 (mxmlc) でのコンパイルを100倍速にする方法 - 2nd life (移転しました)
  • Rails のためのものぐさな Web アプリケーションの国際化手法 - 川o・-・)<2nd life

    最近、自分が作る Web アプリケーションで、日語圏に限らず使ってもらえそうな物は最初から一応国際化(というか英語対応)して作るようにしています。国際化対応しておくと、はてブに限らず、del.icio.us や digg で取り上げられたりして、いろいろな人に使えてもらって嬉しいし海外からも adsense 収入gです。del.icio.us のトップや /popular/ からのリファラは、はてブトップ or 人気エントリーからのリファラとそんなに変わらないぐらいなのですが、digg からのアクセスはその十数倍あって驚きでした。 で、題の国際化の方法なのですが、favicon2dots や polaroizeぐらいの小粒なアプリケーションなら、ほんの数分〜十数分作業時間を増やすだけで対応できてしまうので、その方法のご紹介を。 ruby-gettext 武藤さん作の ruby-gett

    Rails のためのものぐさな Web アプリケーションの国際化手法 - 川o・-・)<2nd life
  • 川o・-・)<2nd life - favicon を dot's ぽく変換する - favicon2dots

    http://favicon2dots.com/ favicon を dot's っぽく似非3D表示するサービス、favicon2dots を作ってみました。サイト上から 変換したい favicon やそのサイトの URL を打ち込むと、それっぽく変換してくれます。 またはてなidを id:secondlife のようにそのまんまフォームに打ち込むと、はてなユーザアイコンを変換してくれます。 id:secondlife id:nagayama id:eureka id:tikeda また、適当な gif/png 画像を指定しても dot's ぽく変換してくれます。 http://subtech.g.hatena.ne.jp/images/report.gif http://subtech.g.hatena.ne.jp/images/task.gif その他オプションとかもあるのでいろいろ弄

    poppen
    poppen 2007/02/07
  • vim で Ruby のリファレンスマニュアルをさくさく検索する - refe.vim - 2nd life (移転しました)

    http://rails2u.com/projects/refe.vim/ http://rails2u.com/projects/refe.vim/screencast.html (スクリーンキャスト) プログラムを書いてるとどれだけ簡単にリファレンスマニュアルを検索できるかによって効率が数割変わると言っても過言ではありません。普段は Ruby のリファレンスマニュアルの検索には htmlhelp を愛用してるのですが、windows を使ってないときやコンソールから検索したいときに不便です。 で、コマンドラインから日語の Ruby リファレンスマニュアルを検索するすばらしいツールとして青木さん作の ReFe があります。ReFe 単体だけでも十分便利なのですが、結果の絞り込みをインクリメンタルサーチで行いたいなぁとか、リファレンスを引きたい時はほとんど vim でプログラミングしてい

    vim で Ruby のリファレンスマニュアルをさくさく検索する - refe.vim - 2nd life (移転しました)
  • vim の text-object をより便利に使えるプラグイン - surround.vim - 2nd life (移転しました)

    http://www.vim.org/scripts/script.php?script_id=1697 vim7 から追加された text-object は大変便利で、今や手放せなくなっています。その text-object をより便利に使えるプラグイン、surround.vim が便利すぎるので紹介します。 いままで、text-object では (以下では、コードの『*』の位置に現在カーソルがあると考えてください。) foo 'b*ar' bazの位置にカーソルがあるとき、i' でシングルクオーテーションの中身を選択できたり、a' でシングルクオート含む部分を選択できました。しかし『'』そのものを削除したり、置換したりはできなく、ちょっと不便でした。しかし、surround.vim では ds cs ys vs それぞれにコマンドを割り当てて、様々なことができるようになってます。たと

    vim の text-object をより便利に使えるプラグイン - surround.vim - 2nd life (移転しました)
    poppen
    poppen 2006/12/26
  • Rails 1.2 pre / Rails 1.1.6 の htmlhelp 作りました(trunk も更新) - 2nd life (移転しました)

    http://rails2u.com/htmlhelp/rails/ というわけで現時点の Rails 1.2 pre 用のを作ったり、stable が無いのはどうよ?と思って Rails 1.1.6 のを作ったり trunk を最新に更新したりしました。これからも気が向いたら更新して上記ディレクトリに上げておきます。lighty や apache の dir-listing で RSS はいてくれないかなぁ*1、とか思う今日この頃です。 で、そろそろ 1.2 が出そうな予感です。Rails 1.2 では現在の stable だと問題ないけど、非推奨になっている項目が結構あるので、数ヶ月後にリリースしようと思っているような方は、今のうちから使っておくと良いと思います。 詳しくは WEB+DB Vol 36 で Rails 1.2 についての解説記事、『先取り Rails』を読むと良いと思い

    Rails 1.2 pre / Rails 1.1.6 の htmlhelp 作りました(trunk も更新) - 2nd life (移転しました)
  • rails.vim まとめ - 2nd life (移転しました)

    id:higepon に『rails.el も rails.vim も知らなかったよ!もっと早く知ってたら生産性が三倍になっていたのに!(一部誇張』と云われたので、rails.vim について ひげぽん OSとか作っちゃうかMona- - rails.el まとめ に沿った形で簡単に紹介したいと思います。 インストール 通常のインストール http://www.vim.org/scripts/script.php?script_id=1567 から rails.zip をダウンロードし、~/.vim/ 以下に展開します svn からのインストール vba (vim のパッケージングシステム)を使うので vim7 以上限定の方法ですが svn co http://svn.tpope.net/rails/vim/railsvim/ railsvim cd railsvim rake rails

    rails.vim まとめ - 2nd life (移転しました)
  • 川o・-・)<2nd life

    Perl での print debug の方法の紹介がブーム(?)だったので、自分がよく行ってる Ruby での debug 方法7つについて書いてみます。 p ご存じの人も多い Kernel#p メソッド。これを使うとオブジェクトの内容を見やすい形で出力してくれます。 >> p ({:foobar => :baz}) {:foobar=>:baz}Object#inspect を使うと、p で出力するときと同じ文字列を String として取得できます。 >> puts ({:foobar => :baz}).inspect {:foobar=>:baz}初心者の頃この p での出力を使う方法がわからなくて困った記憶が…。 pp pp というライブラリを使うと、p より、より見やすい形式で出力してくれます。たとえば >> a = Array.new(10) { {:foobar => :

    川o・-・)<2nd life