Rails 2.3.4から入ったrake db:seed。所謂マスターデータを入れる処理はmigrationじゃなくてこっちにしようという話。マスターって名前も業界ではよく使うけど定義が曖昧だし、モデリングには有害なんじゃないかってぐらいだけどそういうデータにどんな名前をつければ良いのか思いつかない。seedもあまりしっくりこないけど何かに統一されたのはうれしい。

今まではみんなrake db:seedに該当するようなものを思い思いに作ってて、Redmineでrake redmine:default_data。RadiantCMSはrake db:bootstrap(両方うろ覚え)。

db/seeds.rbは単に実行されるというだけで特に決まりはないのでとりあえずdb/seedsディレクトリを作って下記のような感じにしておいた。

db/seeds.rb:

require 'active_record/fixtures'

Fixtures.create_fixtures "db/seeds", :docs
Fixtures.create_fixtures "db/seeds", :users

それまではdb/fixturesディレクトリとrake db:load_defaultとかやってたけど、seedsの方が素敵な名前。これからは、

rake db:reset
でスキーマから初期データまで一発!
プログラミングの基礎 (Computer Science Library)
浅井 健一
サイエンス社
売り上げランキング: 83443

詳しく調べず買ったら中身OCaml。言語はあまり気にせず写経してきます。

1.3 準備

% sudo port install ocaml +doc
--->  Computing dependencies for ocaml
--->  Fetching ocaml
--->  Attempting to fetch ocaml-3.11.1.tar.bz2 from http://distfiles.macports.org/ocaml
--->  Attempting to fetch ocaml-3.11-refman.html.tar.gz from http://distfiles.macports.org/ocaml
--->  Verifying checksum(s) for ocaml
--->  Extracting ocaml
--->  Configuring ocaml
--->  Building ocaml
--->  Staging ocaml into destroot
--->  Installing ocaml @3.11.1_0+doc
--->  Activating ocaml @3.11.1_0+doc
--->  Cleaning ocaml

インストールした。

% ocaml
        Objective Caml version 3.11.1

# "あ" ;;
- : string = "�\129\130"

UTF-8で日本語が出ない。

MacOS X

日本語の表示の仕方

  1. ターミナルの漢字コードをEUCにしてください。「ファイル」メニューの「情報を見る」でターミナルインスペクタを開き、「ディスプレイ」メニューの中の「文字セットエンコーディング」を「日本語 (EUC)」にしてください。
  2. 次に、環境変数LANGを en_US.ISO8859-1(等)に設定して ocaml を起動してください。(ロケールの名称はOSのバージョンによって異なる場合があります。)
  3. csh 系なら env LANG=en_US.ISO8859-1 ocaml
  4. bash 系なら LANG=en_US.ISO8859-1 ocaml

参考URLから著者のサポートページには上記のようにせよとある。でもUTF-8使いたいなあ・・・。

あと、このインタプリタの終了はどうやるんだろう。とりあえずC-dで終了しておいた。

HTMLのインデントを合わせたい。

単純なテンプレートでは、partialテンプレートみたいなのを読み込むときにそのときの周りのインデントに合わせなければいけないので無理。

hamlを使えば解決だけど、デザイナーにhamlはひどいので無理。

renderやyieldをラップしてインデント幅を渡すようにしてみたけどキモイ。

HTMLとさほど書き方が変わらずにインデントを合わせる方法は無いかな?

foo.php:

<?= include "partial.php" ?>

bar.php:

<ul>
  <li>
    <?= include "partial.php" ?>
  </li>
</ul>

partial.php:

Hello!

これが・・・

http://localhost/foo.php:

Hello!

http://localhost/bar.php:

<ul>
  <li>
Hello!
  </li>
</ul>

こうなるのが嫌。

AquesTalkのrubyバインディング作りました。

komagata’s win32-aques_talk at master – GitHub

インストール

$ sudo gem install komagata-win32-aques_talk -s http://gems.github.com

使い方

$ irb
>> require "aques_talk" 
=> ture
>> AquesTalk.play_sync("これわてすとですね?") # Shift_JIS only
=> 0

AquesTalkはwindows版dllのみが組み込んで配布することもOKとなっているのでwindows版をRubyから手軽に使いたいと思って作りました。

RubyバインディングといってもC言語拡張ではなく、ruby-ffi(Foreign Function Interface)を使っています。

ffiを使うことで、windowsのdllやlinuxのsoなんかの動的ライブラリをrubyから直接使うことが出来ます。

同じ用途で標準ライブラリのdlやdl2なんかがありますが、ffiはRubiniusやjRubyでも同じインターフェースで使えるところが特徴だそうです。

ポインタのオブジェクトや構造体をマッピングするための仕掛けをffiが用意してくれるの予想以上に便利!

グルー言語としてRubyを便利に使うためにCの資産などをどんどん活用していきたいです。

参照:

クラス/メソッドの定義 – Rubyリファレンスマニュアル

仮引数にデフォルト式が与えられた場合、メソッド呼び出しで実引数を省略したときのデフォルト値になります。ただし実引数との対応を取るため、i番目の引数にデフォルト値を指定したならば、 i+1番目以降でも全てデフォルト値を指定するか、可変長引数を利用しなければなりません

知らなかった。

>> def foo(arg1 = 1, arg2); end
SyntaxError: compile error
(irb):6: syntax error, unexpected ')', expecting '='
def foo(arg1 = 1, arg2); end
                       ^
        from (irb):6

これは駄目。

>> def foo(arg1 = 1, arg2 = 1); end
=> nil

これはOK。

仕事で2年以上使っててこのありさまだよ!

僕が3Dプログラマをやめた理由 または3Dプログラミングを学ぶべき6つの理由 – Keep Crazy;shi3zの日記

そこで数あるプログラミングの題材のなかから、3Dプログラミングを選ぶことがなぜ「面白い」のか、その魅力を語る試みをしてみようと思った。

あるジャンルを深くやった人がそのジャンルの「何がおもしろいのか」を語るのを読むのはとても面白い。もっと聞きたい。

僕は浅く広く勉強してきたので、さてどのジャンルをやろうかなと思ったときにどれがやりたいのか自分でも良くわからない。

他にどういうジャンルがあるだろう?

  • 3D
  • Web
  • バイナリ
  • モバイル
  • 自然言語解析
  • バイオインフォマティクス
  • 並列処理
  • 画像認識
  • 音声認識
  • 音声合成
  • サウンド
  • OS
  • 言語
  • ゲーム
  • AI
  • DB
  • 組み込み
  • ネットワーク
  • 統計
  • アルゴリズム
  • セキュリティ

深くやってる人の「何が面白いのか」が聞きたいなあ。

MS IMEさらに...お馬鹿になっていく - Windows Live

(中略)

某MS社員に、「MS IME最近どうなっているのよ?」と先週聞いた答えが…「IME開発の主体が、中国にシフトしまっていて我々も手を出せない…...個人的にはATOKに切り替えようと思っている」と言う現役開発系社員の発言に絶句!!! 

(中略)

MSのモットーは「Eat Your Own Dog Food」(人にドッグフードを勧める前に、まず自分で食ってみろ!)だったはずなのに、”犬も食わない”って話かよーっ…。きっと藤村さんが、泣いてるぜよ!!!

「幡ヶ谷」「笹塚」が変換出来ないとかあまりにも卑怯過ぎるでしょう?

おまえらに京王線住民の悲しみの何がわかるっていうんだよ!

参照:ブロントさん名言集

brancheをtrunkにマージ

branche-nameブランチがどのリビジョンで分かれたのか確認する。

$ svn log --verbose --stop-on-copy https://example.com/foo/branches/branche-name

マージしてコミット。(必ずどこからどこまでマージしたか書いておく)

$ cd trunk-name
$ svn merge -r 889:HEAD https://example.com/foo/branches/branche-name
$ svn ci -m'Merged branche-name branche changes r889:1288 into the trunk.'

Redmineのチケットメール確認中、

[社内システム </del> 新機能 #1763] (差し戻し) ohaka-support.netの管理情報をまとめる <del> komagata@gmail.com </del> Gmail

ちょwww

SCSHというshellに特化した処理系があるそうです。へぇ〜

参照:

アクトインディ技術部隊報告書

会社のページの方にもエンジニア募集の文載せました。

Webエンジニア募集 – アクトインディ技術部隊報告書

会社のこのブログ、デザインもシステムもむしろ仕事より頑張って(g000001さんが)作ってくれたのに評判が宜しくありません。 (AllegroServからHunchentootに移行予定とか)

会社本体のページからリンク貼るかどうか躊躇されてますが、おれはとても良いブログだと思うので関係ありません。 (Emacs, SLIMEからしか更新出来ないところとかKAWAII!)

しかし、たしかにコノ記事の会社と同一会社のとは思えないわな・・・。

当たり前の徹底を圧倒的な強みに変える葬儀ベンチャーの話(1/4):MarkeZine(マーケジン)

関連: