BIOMEGA 3 (3) (ヤングジャンプコミックス)
  • BIOMEGA 3 (3)
  • 集英社(2007-08-17)
  • 集英社
  • (著)弐瓶 勉
  • 定価:¥ 620
  • 新品価格:¥ 620
  • 中古価格:¥ 442
  • ASIN:4088773179

キャラや建物の造型、アクションのアイデアがスゴい。

もっと巨大建造物が見たい。 BLAME!ではストーリー上、全ての背景がそんな感じだったのでBIOMEGAでも沢山出てくるのに物足りない感が否めない!

p0t: トラウマストーリー

失礼いたします   「心の病い・勝利法則」 のご案内です  ご笑覧ください。 http://www4.ocn.ne.jp/~kokoro/

posted by 安達三郎 at 2007/08/30 08:53:24

謎のコメント貰いました。ご笑覧て・・・。 トラウマって単語に片っ端からコメントしてく何かなんでしょうな。

でも、メトロクロスのトラウマはそんな「勝利法則」じゃ克服できないぞ!

Tech Per: ActiveRecord and HAVING clauses

Found this good discussion on the subject, where Blake Watters suggests adding support for ””:having”” on find to the core of ActiveRecord. I agree on this being a needed feature, but there is also a mention of a work-around, that I am using now. Simply put your HAVING clause last in the ””:group”” key.

ActiveRecord#findに:havingとか無いなあとおもったら:groupに書けるらしい。

Tags.find(:all, :select => 'COUNT(id) AS count, name', :group => 'name <strong>HAVING count > 1</strong>')

書けた。ほう。

ちょっとフィードを加工する用があったのでPRaggerを今頃使ってみることに・・・と思ったらハマッた!

何しろpragger.rbが42行しかねえ!インストールも必要無い。MTに用があったのでPublish::meta_weblogなんていうプラグインを書いてみた。普通に動いた。なんだこりゃ、こんな簡単で便利でイイノカッ!!

Software Design (ソフトウエア デザイン) 2007年 08月号 [雑誌]

””安い”“、”“字が多い”“、”“CD付いて無い”“と飯食いながらや電車のなかなど手持ちぶさたなときの”“読む本”“にぴったりなことで有名なSoftware Designの8月号買いました。

特にレコメンデーションエンジンの連載がためになりました。人と人やモノとモノの相関を求める関数っていっぱいあるんですな。またスパム判定で有名なベイズ推定をレコメンデーションに使うっていうのもその分野の人にとっては普通なのかもしれませんが、まさにその発想はなかったわ。

次回は実装編だそうで超楽しみなんですが、言語はPython。最近色んなところでPythonにぶちあたります。Python読めないと損してる感が高まってきてる・・・。

ヒストリエ 4 (4) (アフタヌーンKC)

マンガをあまり読まない友達でさえも、「4巻はいつ出るんだ!」と怒らせたヒストリエの4巻が出てました。これ読んでAoEシリーズがやりたくなった人がいっぱいいると見た!(含む俺)

AoKのシナリオ作れるヤツで誰か再現して!(暗黒の時代 vs 領主の時代で)

Microsoft Age of Empires 2 Gold Edition
ユメのチカラ: 人月の神話

Brooksはプログラミングがなぜ楽しいかという事も記している。

  • 物を作り上げる純粋な喜び
  • 他の人々に役立つものを作ることの楽しさ
  • 複雑なパズルのような組み立て部品を完成させ、それが巧妙に転回するのを眺めるおもしろさ
  • つねに新しいことを学ぶという喜び
  • 非常に扱いやすいメディア(媒体)で作業する喜び。その上、プログラムというのは、詩人の言葉と違って、現実に動いて働きだす

俺がプログラミング関連書籍の古典の中でも一番好きなのがこの人月の神話です。

先見性があり普遍的な教訓の数々が素晴らしいですがここであげられているように、何より”“プログラミングは何故楽しいのか”“という根本的な点に触れているところが大好きです。

既にIT業界にかかわっている人も自分がどの要素に強い喜びを感じるかで自分のキャリアを見直すことが出来ると思います。また、この業種と関わり合いがある人も相手が何にモチベーションを感じているのかを知るとスムーズに仕事が進むんじゃないかと思います。

逆に、デザイナーや営業の人は何に喜びを感じてやっているのか気になります。(そういう本が知りたい)

人月の神話―狼人間を撃つ銀の弾はない
  • 人月の神話―狼人間を撃つ銀の弾はない
  • ピアソンエデュケーション(2002-11)
  • ピアソンエデュケーション
  • (著)Jr.,フレデリック・P. ブルックス
  • (原著)Frederick Phillips,Jr. Brooks
  • (翻訳)滝沢 徹
  • (翻訳)富沢 昇
  • (翻訳)牧野 祐子
  • 定価:¥ 3,045
  • 新品価格:¥ 3,045
  • 中古価格:¥ 2,374
  • ASIN:4894716658
ひげぽん OSとか作っちゃうかMona – TaPLを買うか迷い中

追記

計算論 計算可能性とラムダ計算、借りてきた。これは厳しい。。

買っといて挫折済みの俺が来ましたよ。

一緒に買ったSchemeによる記号処理入門はスゴイ良かったので・・・ん~~~引き分けっ!!

計算論 計算可能性とラムダ計算 (コンピュータサイエンス大学講座)
Schemeによる記号処理入門
  • Schemeによる記号処理入門
  • 森北出版(1994-04)
  • 森北出版
  • (著)猪股 俊光
  • (著)益崎 真治
  • 定価:¥ 2,835
  • 新品価格:¥ 2,835
  • 中古価格:¥ 4,970
  • ASIN:4627836708
とあるはてな社員の日記 – まっさらなサーバを30分で本番投入できるようにする

アプリケーションのデプロイは、ずいぶん前から、switchtower(現capistrano)で、ほぼコマンド一発で済んでおり、これはすぐに終わります。

残りの「アプリケーションの動作に必要なライブラリ等のインストール・設定」と「監視などインフラの一部として動作するための設定」の部分は、以前は相当の時間と人手がかかっていた部分なのでした。が、「なんでもrpmパッケージ化 & yum で一発インストール」と最近、話題に登っていた「設定自動化ツールpuppet」を導入することで、ほぼ自動化されるようになり、大幅な時間短縮ができるようになりました。

以前書いたように、Webサービス作る時ってサーバーの設定って基本、何かと面倒で時間がかかりますよね。この間の取材の時にもその話をしたんですが、田口さんは、

「サーバー?そうっすか?適当なレンタルサーバーで小一時間で終わんないっすか?」

「監視とか、ログの設定とかそういう面倒なのはサービスが流行ってからでいいんじゃないっすか?」

とあっさり。確かにひとりで作るWebサービスの場合。まったくその通りだと思いました。たとえばDreamHostの場合、FastCGIも設定されてるし、ローカルでRailsで作ったらfreezeしてどっかにおけば済む話。DBもsqlite3でいいじゃないかと。もし流行ったらMySQLとかに移行すればいいじゃないかと。サーバー設定は困った課題リストから外すことにしよ。(仕事でつくるWebサービスの場合は別なので勉強はしてきますよ!)

ヘンシュウチョさんの、

「RailsだとWeb APIとか自動生成できるってホント?俺に教えてよ!つーか勉強会やろうぜ」

という発言を切欠に小勉強会をやってきました。

ヘンシュウチョさんはオープンソースXML DB eXistの話。XPathやXQueryなどXML関連は仕様の分裂や議論が絶えないので深追いや混乱が楽しいですね。eXistの日本語ドキュメントは殆どなさそうなので是非公開してほしいです。

yoshukiさんはvimやscreen関係の開発環境の話でした。俺なんかはすぐ開発環境をおそろかにして生産性を下げてしまうので非常に参考になりました。

俺は「土日でサービス作れるようになる」を目指しているので、RESTfulアプリケーションの簡単作成方法を話ました。

スライドだけだとさっぱりなので手順とソースも上げとこうと思います。

ソース:

rest-todo.tar.bz2

手順:

プロジェクトを作成。(面倒なのでsqliteを使います)

$ rails rest-todo -d sqlite3
$ cd rest-todo

scaffold_resourceジェネレーターを使って、Controller, Migrationファイル, route.rbファイルへの設定追加をします。

$ ruby script/generate scaffold_resource Task name:string completed:boolean created_at:timestamp updated_at:timestamp
$ tree app
app
|-- controllers
| |-- application.rb
| `-- tasks_controller.rb
|-- helpers
| |-- application_helper.rb
| `-- tasks_helper.rb
|-- models
| `-- task.rb
`-- views
|-- layouts
| `-- tasks.rhtml
`-- tasks
|-- edit.rhtml
|-- index.rhtml
|-- new.rhtml
`-- show.rhtml

migrateしてからサーバーを起動します。

$ rake db:migrate
$ ruby script/server

生成された一覧画面。

easy_restful_app_01

Web APIでのCRUDをirbから確認。

$ irb -r 'net/http'
> http = Net::HTTP.start('dev', 3000)
> puts http.get('/tasks.xml').body
> puts http.get('/tasks/1.xml').body
> http.post('/tasks.xml', 'task[name]=task3')
> puts http.get('/tasks.xml').body
> http.put('/tasks/3.xml', 'task[name]=task3...!!??')
> puts http.get('/tasks/3.xml').body
> http.delete '/tasks/3.xml'
> puts http.get('/tasks.xml').body

認証機能を追加。authenticatedジェネレーターでuserモデルを使ってaccountコントローラーを生成します。

$ ruby script/plugin install http://svn.techno-weenie.net/projects/plugins/acts_as_authenticated
$ ruby script/generate authenticated user account
$ rake db:migrate

出来たDBを確認。

$ sqlite3 db/development.sqlite3
SQLite version 3.3.8
Enter ".help" for instructions
sqlite
> .tables
schema_info tasks users
sqlite
> .schema tasks
CREATE TABLE tasks ("id" INTEGER PRIMARY KEY NOT NULL, "name" varchar(255) DEFAULT NULL, "completed" boolean DEFAULT NULL, "created_at" datetime DEFAULT NULL, "updated_at" datetime DEFAULT NULL);
sqlite> .schema users
CREATE TABLE users ("id" INTEGER PRIMARY KEY NOT NULL, "login" varchar(255) DEFAULT NULL, "email" varchar(255) DEFAULT NULL, "crypted_password" varchar(40) DEFAULT NULL, "salt" varchar(40) DEFAULT NULL, "created_at" datetime DEFAULT NULL, "updated_at" datetime DEFAULT NULL, "remember_token" varchar(255) DEFAULT NULL, "remember_token_expires_at" datetime DEFAULT NULL);

login_requiredメソッドがおかしくて(Basic認証の方だけ)100%認証が通らないのでオーバーライドします。

$ vim app/controllers/application.rb
include AuthenticatedSystem

def login_required
username, passwd = get_auth_data
if self.current_user == :false && username && passwd
self.current_user = User.authenticate(username, passwd) || :false
end
logged_in? && authorized? ? true : access_denied
end

タスクのCRUD全部に認証をかけます。

$ vim app/controllers/tasks_controller.rb
class TasksController < ApplicationController
before_filter :login_required
(略)
end

Jester.jsを使ってJavaScriptからWeb APIと認証の動作を確認します。

$ wget 'http://svn.thoughtbot.com/jester/tags/rel-1.3/jester.js' -O public/javascripts/jester.js
$ vim app/views/layouts/tasks.rhtml
<%= javascript_include_tag :defaults %>
<%= javascript_include_tag 'jester' %>
$ mv app/views/layouts/tasks.rhtml app/views/layouts/application.rhtml

FireBugsから確認します。認証が必要なリソースにアクセスしようとするとBasic認証のWindowが表示されます。

easy_restful_app_02

Jester.jsでCRUDの確認。(実際には_methodパラメータによるメソッドエミュレーションを使っているのでPUTやDELETEがPOSTになっています。)

easy_restful_app_03

通常のページとWeb APIを同じロジックで認証できるのはシンプルですっきりした感じがします。派生する話題も色々ありそうで今後も手っ取り早い作り方をチェックしていきたいと思います。