サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大そうじへの備え
cuzic.hatenadiary.org
cuzic です。 大昔に買っていた本であるプログラミングの心理学 を読み終えました。 プログラミングの心理学―または、ハイテクノロジーの人間学 25周年記念版 作者: ジェラルド・M.ワインバーグ,木村泉,久野靖,角田博保,白浜律雄出版社/メーカー: 毎日コミュニケーションズ発売日: 2005/02メディア: 単行本購入: 4人 クリック: 54回この商品を含むブログ (61件) を見る 昔にも読み終えた本なんだけど最近また読みたいな、思って読み返したのです。 印象に残った文章を箇条書きで引用します。 プログラムが動かないなら、実行効率とか適応力とか開発費用とかいった尺度はなんの意味も持たない フィッシャーの基本定理「システムは特定の環境によく適応していればいるほど、新しい環境には適応しにくくなる」 いまなお多くの管理職はすべてを求めたがり、最良の製品を得るために懸命なトレードオフを見出
cuzic です。 WMI でいろいろとプロパティなどを観察していて、Description という Qualifier でその WMI クラスのプロパティに関する詳細な説明が得られることに気がつきました。 簡単な例としては、 require 'win32ole' loc = WIN32OLE.new("WbemScripting.SWbemLocator") service = loc.ConnectServer service.SubclassesOf("", 131072).each do |klass| desc = klass.Qualifiers_.Item("Description") rescue nil puts "#{klass.Name} #{desc}\n" if desc end とすると、さまざまな WMI クラスの説明を表示できます。131072 (= 0x2
cuzic です。 今日はいろいろと事情があって、かなぁり久しぶりにバッチファイル(.bat のファイル)を作っていました。 私は MS-DOS => Windows3.1 => Windows95 と、正当な進化の歴史を歩んできた人間なので、もちろん昔はバッチファイルを使っていました。 (とはいえ、Windows 3.1 の頃はほとんど MS-DOS ばかり使っていたが) EDLIN (vim の ex モードのようなラインエディタ)でバッチファイルなどを作っていたら、そのうち EDIT (私にとってはSEDIT だったが)のようなスクリーンエディタが登場してとても使いやすくなって感動したものです。 おっさん向けの昔話は置いておくとして、その頃は ERRORLEVEL も駆使したバッチファイルを製作していたのです。しかし、今となってみると、まったく思い出せないので、完全に1から学習するハ
投稿時は、MessagePack-JS の結果の方が eval より高速としていましたが、それは ベンチマークテストのバグに由来するものでした。計測しなおしまして、記事を訂正しましたので下記を参照ください。 cuzic です。 MessagePack-JS ライブラリをちょっと更新しましたので、報告します。 主な変更点としては、以下のとおりです。 バグ修正。 ユニットテストの追加 ベンチマークの追加 MessagePack.load_url 関数の削除 といったところです。 ベンチマーク結果ですが、以下のとおりとなり、eval の方が速いという結果になりました。 (Firefox なら 20倍以上遅い) MessagePack JSON Firefox 9,140msec 380msec Chrome 6,883msec 213msec Internet Explorer 8 でも検証した
cuzic です。 MessagePack の JavaScript 実装を作成しましたので、公開しました。 GitHub においております。 サーバ側で生成した MessagePack の文字列をクライアント側の JavaScript で、 var data = MessagePack.unpack(unescape("%a1%61")); alert(a); と書けば Ruby で 'a'.to_msgpack に相当する MessagePack のシリアリゼーション結果を変数 data に格納します。 現在は以下の状態です。 MessagePack 形式のデコードが可能。 整数、nil 、false 、true、浮動小数点、文字列、ハッシュ、配列 に対応 FireFox 3.6.3 と IE 8.0.6 で動作検証を実施。正常動作を確認。 作成した理由としては、以下の理由です。 最近
Ruby の each、each_with_object、inject、map は使いどころが微妙に違う。 それぞれ適切な状況で使い分けられれば、コードはより分かりやすくなる。 どんな状況でも each で書くことはできる。だから、each だけ使いこなせればいいという考え方はある点で正しい。そのような考え方の人にとってはeach で書くのがもっとも分かりやすいコードになるだろう。 しかし慣れてみると上記のメソッドを使い分けられる方が簡潔で分かりやすいコードになる。その理由はメッセージ性の違いだ。 each ですべてを書く場合は余計なコードを書く必要があり、その分、どうしても、本質的なコードが埋もれてしまう。余分なコードがないほど、本質的なコードが際立つ。メッセージが伝わりやすくなる。意味があるコードの比率を下げることは、中級プログラマへの道を開く鍵だ。 それでは本題に入ろう。 まずは簡単
前回紹介した 東芝のハードディスクレコーダ(VARDIA)への iEPG による録画システム(RRR)を github に公開したので、簡単に紹介します。 前回説明しましたとおり、 1. Ruby で iEPG をパース。Google App Engine にメール送信指示。 2. GAE から RD 専用メールアドレスにメール送信 3. RD からメールで録画予約 という手順を行います。 試してみたい方は、 git clone git://github.com/cuzic/rrr.git で、ダウンロードしてみてください。 簡単な使い方は以下のとおりです。 1. 準備 Ruby をインストールする Ruby をお持ちでない方はインストールしてください。 作者は ActiveScriptRuby で検証しています。 http://arton.hp.infoseek.co.jp/indexj
Ruby Advent Calendar の記事で http://blog.udzura.jp/2009/12/13/switch-your-ruby-on-ubuntu910/というのがあった。 RVM はいいものだが、利用している環境が Ubuntu でもあるので、この方法についても試してみることにした。 ただ、冗長な書きぶりが気になったので、update-alternatives を生成する Ruby スクリプトを作成。 このスクリプトを利用すれば、rails コマンドなど新たにコマンドが増えたときにも簡単に対応できる。 1 RUBY186 = ["/usr/local/ruby/ruby-1.8.6-p383", "", 120] 2 RUBY187 = ["/usr/local/ruby/ruby-1.8.7-p174", "", 150] 3 system1 = ["/usr/
ふと思い立ってというか、FastLadder が Ruby on Rails 上で動いていること を知ってよっこいしょとインストールしてみた。 備忘録として、その内容をメモする。 やったこと。 1. レンタルサーバの契約。 本当はローカルパソコン上で動かそうと思っていたのだが、Ruby 1.8.6 推奨かつ crawler を常に動かし続ける必要があるようなので、このためにレンタルサーバを新規に契約することにした。 https://www.burst.net/ の一番安いプランで、月間6ドル。自宅サーバを構築した場合の電気代よりも安いかな、と思って契約。 2.アカウントの追加 作業用のアカウントを追加。 useradd -m cuzic 3.レンタルサーバの設定の見直し。 このレンタルサーバは初期状態では ssh で root でのログインを許していた。さすがにそれはまずかろう、ということ
いろいろな Ruby のバージョンを同時並行で利用するためにRVM http://rvm.beginrescueend.com/ というツールがある。大変便利であったので、インストール方法のメモを保存。 # JRuby も一緒に利用できるようにしたかったので、Sun の # Java をインストール。 $ echo "deb http://archive.ubuntu.com/ubuntu jaunty multiverse" >> /etc/apt/sources.list $ aptitude update $ aptitude install sun-java6-jdk $ vim /etc/apt/sources.list #multiverse の行を削除 $ aptitude update # RVM をインストール $ gem source -a http://gemcutt
裏シリコンバレーツアーは、2008年3月に開催された有志の学生・社会人によりシリコンバレーを訪問したツアーだ。最初は5〜6名だと思っていたらあれよあ れよと人数が増えてしまい、最終的に 18 名の大所帯になってしまった。 3月9日(日) 朝に JTPA シリコンバレーツアーの人たちと解散。JTPA シリコンバレーツアーの参加者の中で、裏シリコンバレーツアーにも参加する人が4人いたので、その人たちと一緒に待つ。空港でネットしながらメールを確認してもらっているうちに、裏ツアーの参加者の一部が JTPA シリコンバレーツアーで使っていたホテルに一緒に宿泊していたことを思い出す。彼らと一緒のバスに乗り合わせてこれたら効率が良かったのだが、そうすることをすっかり頭から抜け落ちてしまっていた。非常に申し訳ない。 11時頃にみんな到着すると思っていたら飛行機が到着してからの手続きでみんな手間取っていたら
最近、なぜかフリーターや NEET に関する論説を多く目にする。 NHK でワーキングプア特集の第3弾があったことも影響しているのかもしれない。 私がワーキングプアの問題について思うことは同じ議論が繰り返されすぎているということだ。 基本軸としては自己責任論・自助努力論と、社会の構造の変化に帰する部分の対決などがあって、この手の議論が繰り返されすぎていて、あと一歩踏み込んだ意見が出てこないものなのだろうか、と思う。 マクロな統計的な観点でいえば NEET やワーキングプアの増大はマクロなレベルでの給与水準や雇用者数の減少によるものだ。この要因を無視することは現実的なものの見方には思えない。 最近のエントリだが、以下のリンクの文章は昨今のものでは白眉であり、深い分析がなされている。 http://d.hatena.ne.jp/jmiyaza/20071231/1199032910 一部引用す
Relative Path プラグインが Rails 2.0 で動かないという苦情がメールであったので、それに対応しました。 ついでに、CodeRepos に SVN レポジトリーを移動しました。 http://svn.coderepos.org/share/lang/ruby/relative_path 最新版を使いたい方は、 ./script/plugin install http://svn.coderepos.org/share/lang/ruby/relative_path を実行してください。 Rails 2.0 対応で苦労したのは、Routing Optimisation という仕組みに対応するのと、Rails 1系 と Rails 2系に両対応するのにどうするかでした。 Rails 2.0 には edit_user_path などで、url_for(:controller
この前の土曜日は、Ruby On Rails の何が革新的だったかということについて 友人と議論していました。 そのときの会話の内容をメモとして、残しておきます。 Rails の思想 Convension over Configuration による設定レスでの動作 Confortable Constraints (心地よい制約)による 本質的でない事項は決定せずに、デフォルトの設定のままで そこそこ普通の動作を行わせることができる。 設定を変更することも容易 内部 DSL としての Ruby と高級言語としての Ruby へのシームレスな発展 ほぼ単なる設定ファイルとしての Ruby スクリプトから、 高度な動作を記述したアプリケーションを記述する Ruby スクリプトまで 高度な内容を記述可能 Web アプリケーション開発のベストプラクティスのフレームワーク化 MVC(Model, V
先日、私が主宰で るびま読書会をひらきました。 そのときの議論になった項目についていくつか記します。 ディープコピーとシャロウコピーについて Ruby の Marsharl が出てきたので、「それはディープコピーを行いたいときに使います」と発言したあたりから議論が発展しました。 ディープコピーというのはあるオブジェクトが保持する先のオブジェクトまでコピーすることです。反対の意味に使われる言葉は、シャロウコピーで、この場合は 参照をコピーすることになり、オブジェクト間で共通のオブジェクトを参照することになります。ディープコピーでは、オブジェクト間で共通のオブジェクトを参照することはありません。 ディープコピーをいつ使うべきかということは多くの初学者のプログラマが悩む問題のようです。 まず、簡単に私の意見をここで書きます。 まず、ディープコピー、シャロウコピーをいつ使うかというのは正しい問いで
Rails 勉強会@関西 第6回に参加したり、他の情報収集を行ったりして、/ 以外の Location で Rails アプリケーションを公開する方法について調べましたので、メモとして公開します。 まず新しく http://d.hatena.ne.jp/someeda/20060313 の記事について一歩さんに教えてもらいました。 このページではどのような Location に Rails アプリケーションを配備するかが分かっている状態でその Location の静的コンテンツなどを適切に表示可能なように routes.rb の編集やシンボリックリンクの作成を行うという方法です。 他に maiha さんの stylesheet controller という手法について氏久さんから教えてもらいました。http://wota.jp/ac/?date=20050808 stylesheet co
今日はかなり珍しく技術的な話題を提供します。 要約 [困ったこと] 1つの Screen で複数のサーバにたくさん telnet するとどの仮想端末で何をしていたか忘れる! 選択が面倒! [この記事を読むとできること] Screen のウィンドウタイトルにユーザ名、ホスト名、作業中のディレクトリを表示 どのサーバにどのウィンドウでログインしているかを確認しながらウィンドウ選択 知っている方もかなり多いのかもしれませんが、bash には PROMPT_COMMAND という環境変数があります。PROMPT_COMMAND を使うことで、PROMPT が表示される時に自動的に実行するコマンドを指定できます。 これにたとえば私の場合ですと、次のように設定しています。 PROMPT_COMMAND='echo -ne "\033]0;$(whoami)@$(hostname):$(pwd)\007
最近、プログラミング系のトピックについて全然書いていなかったので、今日は久しぶりに Ruby On Rails について書きます。 今回は複数 Rails 環境を VirtualHost ではなく、Location の違いによって実装する方法についてです。 背景 多くの Ruby On Rails アプリケーションを解説する文章では、virtual host 機能を利用して、/ の Location が Ruby On Rails として使われていることを前提に説明がなされています。 しかしながら、DNS の設定の権限を持っていない場合などでは、virtual host の利用は現実的な解ではありません。他に、http://localhost:3000/ などと、ポート番号指定で行うという方法もありますが、ポート番号指定はあまり好きではない方もいらっしゃるでしょう。そういう人たちのために、
今日は、emacs で Rails でのコーディングをする上での tips を紹介します。 その名も grep-gems コマンドです。 これを実行することで、/usr/lib/ruby/gems/1.8/gems/ 以下のディレクトリに対して再帰的に grep を実行します。 私はメソッドの定義や、テストプログラムでのそのメソッドの使われ方を調べるときによく利用しています。 正直言って、現在でも Ruby On Rails ではかなり多くのメソッドは、まだ、充分にドキュメントが整備されているとはいえない状況です。 そのため、今でもソースを読み込むことが自分がやりたいことが可能かどうかを調査する一番優れた方法となってしまっています。Rails のソースを全文検索することはどうしても必要不可欠な作業です。 しかしながら、繰り返し行っていると、生産性が落ちます。DRY の原則にも反します。だい
今日は、2月25日の Rails 勉強会で紹介した Relative Path プラグインと Double Filter プラグインをリリースするべく努力しました。 そして、一応なんとか使えるようにリリースしてみたつもり。 Plugins Relative Path Double Filter 使い方は基本的には英語で書いた説明を読んでください。 Relative Path プラグインの方は次の感じで大体使えます。 インストール ruby script/plugin install http://opensvn.csie.org/relative_path/trunk # edit app/controllers/application.rb class ApplicationController include RelativePath end これで、今まで書いてた url_for の
今日 CNET Japan を読んでいると、Ruby On Rails の記事が掲載されていました。 この記事を読みながら、ふと Ruby On Rails を SWOT 分析するとどうなるだろうか、と考えたのでやってみたいと思います。 SWOT 分析というのは、強み(Strength)、弱み(Weakness)、機会(Opportunity)、脅威(Threat)の4つの軸から評価する手法です。 SWOT 分析を行うことで内部的な分析と外部の環境の分析を組み合わせることで総合的に判断することができます。 強み Ruby On Rails 自身の強みは、それを利用することでの圧倒的な開発効率です。特に、一般的な CRUD(Create,Read,Update,Delete) と呼ばれるデータベースのテーブル操作については scaffold (足場)という機能を利用することで、非常に簡単に実
Virtual Box に Ubuntu 12.4 を入れて、それに rbenv で各種Ruby をインストールしたので、その方法のメモ。 sudo aptitude install libssl-dev libyaml-dev libreadline-dev zlib1g-dev sudo aptitude install libncurses5-dev libgdbm-dev tk-dev # for maglev sudo aptitude install build-essential # for java sudo aptitude install openjdk-7-jre-headless openjdk-7-jdk # for git sudo aptitude install git-all # for rbenv sudo aptitude install rbenv
昨日は間違いを指摘されるということについて話しました。 けれど、間違いを指摘されるというフレーズにいい印象を感じる人はあまり多くないでしょう。 人には自分が正しいと認識したいと思う強い、非常に強い欲求があります。自分を正当化したいという思いが強すぎて起きる問題は数多くあります。 次のような例を想像してください。 電車で自分が座っているときに、お年寄りの方が乗ってきました。だけど、席をゆずりたくありませんでした。そのときにあなたは思います。 「今は、私はとても疲れているんだから、席をゆずる必要はない」 「まわりもみんなゆずっていないじゃないか」 「あの人は席を譲られたら老人だと思われてると思って、いやな気がするに決まっているよ」 日常生活では自分を正当化する気持ちが間違っているときにそれをただされる機会はなかなかありません。自分の中にあるそういう感情の動きを自覚さえしないまま生きていけます。
このページを最初にブックマークしてみませんか?
『プログラミングは素晴らしい』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く