プログラミング

Ruby の Ubuntu 12.4 へのインストール

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 ma…

メタプログラミングRuby読書会 第2回

3月5日にメタプログラミングRuby読書会を実施しました。メタプログラミングRuby の中で、カレントクラスという用語が説明されていましたが、 説明が分かりにくいように感じたので新たに整理していこうと思います。カレントクラスとは、def method_name arg…

LiveCoding で 解説

cuzic です。もう先週のことですが、LiveCoding#10 に参加してきたら、突然 解説を依頼され、解説してきました。イベント内容は、yhara さんと nari さんのすごいギークがコーディングするのをみんなで見よう!みたいなもので、最近は sixeight さんが中心に…

Ruby でクラス定義の DSL 作成

cuzic です。今日も Ruby の話題です。理由はないのですが、大林さんの昔出した課題のような問題に取り組んでみました。目標は、 A = AttrClass :accessor, :with_default => 1 do def initialize puts "initialized" end def do_something puts "do_somethi…

Rubyのドキュメンテーション YARD編 (1)

cuzic です。WMI でいろいろとプロパティなどを観察していて、Description という Qualifier でその WMI クラスのプロパティに関する詳細な説明が得られることに気がつきました。簡単な例としては、 require 'win32ole' loc = WIN32OLE.new("WbemScripting.S…

プログラミングの心理学 − 読了

cuzic です。大昔に買っていた本であるプログラミングの心理学 を読み終えました。プログラミングの心理学―または、ハイテクノロジーの人間学 25周年記念版作者: ジェラルド・M.ワインバーグ,木村泉,久野靖,角田博保,白浜律雄出版社/メーカー: 毎日コミュニ…

Windows でバッチファイルと格闘

cuzic です。今日はいろいろと事情があって、かなぁり久しぶりにバッチファイル(.bat のファイル)を作っていました。私は MS-DOS => Windows3.1 => Windows95 と、正当な進化の歴史を歩んできた人間なので、もちろん昔はバッチファイルを使っていました。 …

More C++ Idioms

先週末は、友人と一緒に本を読んでいたのだが、その中で C++ のソースコードが出てきた。私は、オブジェクト指向を C++ から学んだ世代なので C++ のソースコードを読んでいると郷愁を感じる。しかし、いまもう一度読むと C++ はなかなか難しいというか、書…

JS-WMI (2)

cuzic です。JS-WMI というライブラリを開発していて、 WMI の Qaulifier について、ちょっと詳しくなりました。WMI ではオブジェクト、プロパティ、メソッド、メソッドパラメータについて、付加的な情報を Qualifier で取得できます。 Qualifier は CIM Stu…

JS-WMI (1)

cuzic です。さて、前回、IronRuby-WMI を作ってみましたが、本来の趣旨としては WMI を JavaScript で操作するライブラリの作成を目標としていたのですが、脱線してできあがったものでした。前回の記事を書いたあと、プロパティを実現する方法は JScript に…

MessagePack-JS (5)

cuzic です。http://d.hatena.ne.jp/uupaa/20100525/1274729065 で、uupaa さんが私が作ったバージョンより大幅に高速なバージョンの MessagePack の JavaScript 実装を作成されたそうです。私の JavaScript スキルはそれほど高くないですので、uupaa さんの…

IronRuby-WMI (1)

cuzic です。JavaScript の柔軟な使い方の勉強として、WMI (Windows Management Instrument)のラッパーを、Windows Script Host で実行する環境向けに作ってみようと思ってみました。PowerShell と似たノリで、 var klass = get_wmiobject("Win32_Process"…

リファクタリング - Rubyエディション読書会(1)

cuzic です。「リファクタリング - Ruby エディション」読書会を主催してきました。「リファクタリング - Ruby エディション」は、かの名著 Martin Fowler のリファクタリングをサンプルコードを Ruby で書き換え、説明しなおすという野心的な試みを行ってい…

MessagePack-JS (4)

cuzic です。MessagePack-JS をさらに更新しました。 MessagePack.pack() による、MessagePack へのエンコーディング機能の追加。 エンコーディングに対応したテストコードも追加 MessagePack.unpack() のテストコードに XMLHTTPRequest を使った例を追加し…

MessagePack-JS (3)

cuzic です。前回の投稿は ベンチマークテストにバグがあって、うまく処理できていなかったようです。ベンチマークテストのバグを修正すると、私の実装は eval に比べて 10倍以上遅いということが分かりました。今日は一日かけて MessagePack のバイナリ文字…

MessagePack-JS (2)

投稿時は、MessagePack-JS の結果の方が eval より高速としていましたが、それは ベンチマークテストのバグに由来するものでした。計測しなおしまして、記事を訂正しましたので下記を参照ください。cuzic です。MessagePack-JS ライブラリをちょっと更新しま…

MessagePack-JS

cuzic です。MessagePack の JavaScript 実装を作成しましたので、公開しました。GitHub においております。サーバ側で生成した MessagePack の文字列をクライアント側の JavaScript で、 var data = MessagePack.unpack(unescape("%a1%61")); alert(a); と…

update-alternatives

Ruby Advent Calendar の記事で http://blog.udzura.jp/2009/12/13/switch-your-ruby-on-ubuntu910/というのがあった。RVM はいいものだが、利用している環境が Ubuntu でもあるので、この方法についても試してみることにした。ただ、冗長な書きぶりが気にな…

each、each_with_object、inject、map

Ruby の each、each_with_object、inject、map は使いどころが微妙に違う。 それぞれ適切な状況で使い分けられれば、コードはより分かりやすくなる。どんな状況でも each で書くことはできる。だから、each だけ使いこなせればいいという考え方はある点で正…

RVMをインストール

いろいろな Ruby のバージョンを同時並行で利用するためにRVM http://rvm.beginrescueend.com/ というツールがある。大変便利であったので、インストール方法のメモを保存。 # JRuby も一緒に利用できるようにしたかったので、Sun の # Java をインストール…

FastLadder をセットアップ

ふと思い立ってというか、FastLadder が Ruby on Rails 上で動いていること を知ってよっこいしょとインストールしてみた。備忘録として、その内容をメモする。やったこと。1. レンタルサーバの契約。 本当はローカルパソコン上で動かそうと思っていたのだ…

RRRの使い方

今回は、前回に続いて、RRR の使い方を紹介します。開発者でない多くの VARDIA (東芝のハードディスクレコーダ)使いの方は、git のインストールをしていないし、git をインストールしたいとも思っていないでしょうから、コンパイル後のファイルを http://c…

RRRのメール対応

以前このブログで紹介した RRR (Remote Recording Reservation)という東芝の VARDIAシリーズのハードディスクレコーダのための遠隔録画支援ツールの続きです。ラーメン屋行った帰りに、znz さんと会話していたときに、「どうして、Google Apps Engineを利…

RRR: Remote Recording Reservation

前回紹介した 東芝のハードディスクレコーダ(VARDIA)への iEPG による録画システム(RRR)を github に公開したので、簡単に紹介します。前回説明しましたとおり、 1. Ruby で iEPG をパース。Google App Engine にメール送信指示。 2. GAE から RD 専…

東芝製HDDレコーダ到着

長年愛用してきた Cocoon の冷却ファンがお亡くなりになってしまったので、新HDDレコーダが必要になってしまった。コストパフォーマンスと機能面を追及したところ、東芝のVARDIA RD-S1004K に決定、購入した。到着して使い始めたものの、あれこれ微妙な部分…

自己イメージの与える影響

前回は、心の中でつぶやくということについて書きました。この心の中でつぶやくことというのは何に関係しているのでしょうか?たとえば、今日は100行ほど書いて動くようになったからこれくらいでいいかなとつぶやくこと、今日はまだ十分機能を実現したとは思…

間違いを指摘されるということ

プログラミングを行うことが素晴らしい理由について 少しずつこれから説明していきます。プログラミングをすることは、自分に成長の場を多く提供してくれます。プログラミングをしていると、自分の間違っているということに対して いやおうなく気づかされま…

movable type の更新スクリプト。

今まで、いろいろとプログラムを書いてきたが、それを個人的に使うだけでは もったいなく、思えてきたので公開。まずは、movable type の更新スクリプト。 require 'xmlrpc/client' require 'uri' require 'uconv' require 'kconv' class MT def initialize …