p0t: トラウマストーリー失礼いたします 「心の病い・勝利法則」 のご案内です ご笑覧ください。 http://www4.ocn.ne.jp/~kokoro/
posted by 安達三郎 at 2007/08/30 08:53:24
謎のコメント貰いました。ご笑覧て・・・。 トラウマって単語に片っ端からコメントしてく何かなんでしょうな。
でも、メトロクロスのトラウマはそんな「勝利法則」じゃ克服できないぞ!
p0t: トラウマストーリー失礼いたします 「心の病い・勝利法則」 のご案内です ご笑覧ください。 http://www4.ocn.ne.jp/~kokoro/
posted by 安達三郎 at 2007/08/30 08:53:24
謎のコメント貰いました。ご笑覧て・・・。 トラウマって単語に片っ端からコメントしてく何かなんでしょうな。
でも、メトロクロスのトラウマはそんな「勝利法則」じゃ克服できないぞ!
Tech Per: ActiveRecord and HAVING clausesFound 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なんていうプラグインを書いてみた。普通に動いた。なんだこりゃ、こんな簡単で便利でイイノカッ!!
![]() |
|
””安い”“、”“字が多い”“、”“CD付いて無い”“と飯食いながらや電車のなかなど手持ちぶさたなときの”“読む本”“にぴったりなことで有名なSoftware Designの8月号買いました。
特にレコメンデーションエンジンの連載がためになりました。人と人やモノとモノの相関を求める関数っていっぱいあるんですな。またスパム判定で有名なベイズ推定をレコメンデーションに使うっていうのもその分野の人にとっては普通なのかもしれませんが、まさにその発想はなかったわ。
次回は実装編だそうで超楽しみなんですが、言語はPython。最近色んなところでPythonにぶちあたります。Python読めないと損してる感が高まってきてる・・・。
![]() |
|
マンガをあまり読まない友達でさえも、「4巻はいつ出るんだ!」と怒らせたヒストリエの4巻が出てました。これ読んでAoEシリーズがやりたくなった人がいっぱいいると見た!(含む俺)
AoKのシナリオ作れるヤツで誰か再現して!(暗黒の時代 vs 領主の時代で)
![]() |
|
ユメのチカラ: 人月の神話Brooksはプログラミングがなぜ楽しいかという事も記している。
- 物を作り上げる純粋な喜び
- 他の人々に役立つものを作ることの楽しさ
- 複雑なパズルのような組み立て部品を完成させ、それが巧妙に転回するのを眺めるおもしろさ
- つねに新しいことを学ぶという喜び
- 非常に扱いやすいメディア(媒体)で作業する喜び。その上、プログラムというのは、詩人の言葉と違って、現実に動いて働きだす
俺がプログラミング関連書籍の古典の中でも一番好きなのがこの人月の神話です。
先見性があり普遍的な教訓の数々が素晴らしいですがここであげられているように、何より”“プログラミングは何故楽しいのか”“という根本的な点に触れているところが大好きです。
既にIT業界にかかわっている人も自分がどの要素に強い喜びを感じるかで自分のキャリアを見直すことが出来ると思います。また、この業種と関わり合いがある人も相手が何にモチベーションを感じているのかを知るとスムーズに仕事が進むんじゃないかと思います。
逆に、デザイナーや営業の人は何に喜びを感じてやっているのか気になります。(そういう本が知りたい)
![]() |
|
ひげぽん OSとか作っちゃうかMona – TaPLを買うか迷い中追記
計算論 計算可能性とラムダ計算、借りてきた。これは厳しい。。
買っといて挫折済みの俺が来ましたよ。
一緒に買ったSchemeによる記号処理入門はスゴイ良かったので・・・ん~~~引き分けっ!!
![]() |
|
![]() |
|
とあるはてな社員の日記 – まっさらなサーバを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アプリケーションの簡単作成方法を話ました。
スライドだけだとさっぱりなので手順とソースも上げとこうと思います。
ソース:
手順:
プロジェクトを作成。(面倒なので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
生成された一覧画面。
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が表示されます。
Jester.jsでCRUDの確認。(実際には_methodパラメータによるメソッドエミュレーションを使っているのでPUTやDELETEがPOSTになっています。)
通常のページとWeb APIを同じロジックで認証できるのはシンプルですっきりした感じがします。派生する話題も色々ありそうで今後も手っ取り早い作り方をチェックしていきたいと思います。
田口元の「ひとりで作るネットサービス」探訪: 【番外編】カップルで作るネットサービス──うわさメーカーカップルでネットサービスを作った2人がいる。ネット企業に勤め、開発のスキルも持つ者同士。普段からシステムの話で盛り上がる2人が、力を合わせてサービス開発を始めた事の始まりは……。
,.ィ , - 、._ 、 . ,イ/ l/  ̄ ̄`ヽ!__ ト/ |' { `ヽ. ,ヘ N│ ヽ. ` ヽ /ヽ / ∨ N.ヽ.ヽ、 , } l\/ `′ . ヽヽ.\ ,.ィイハ | _| ヾニー __ _ -=_彡ソノ u_\ヽ、 | \ つまりこの連載自体、 .  ゙̄r=<‐モミ、ニr;==ェ;ュ<_ゞ-=7´ヽ > 独り者にダメージをあたえるために . l  ̄リーh ` ー‐‐' l‐''´冫)'./ ∠__ 始めから仕組まれたものだったんだよ!! ゙iー- イ'__ ヽ、..___ノ トr‐' / l `___,.、 ./│ /_ . ヽ. }z‐r--| / ト, | ,、 >、`ー-- ' ./ / |ヽ l/ ヽ ,ヘ _,./| ヽ`ー--‐ _´.. ‐''´ ./ \、 \/ ヽ/ -‐ '''"  ̄ / :| ,ゝ=< / | `'''‐- 、.._ / !./l .\ ./ │ _ _,> '´|l. ミ:ゝ、 _/,´\ ./|._ , --、 | i´!⌒!l r:,=i . | | l. / |= ヽ/ | .|l⌒l lニ._ | ゙ー=':| |. L._」 l. | l./ .! / | i´|.ー‐' | / | |. ! l . l. |. .! .| / .!.|"'|. l' │-==:|. ! ==l ,. -‐; l | l. .| / | i=!ー=;: l | l. | | / // l | l .|/ !│ l l、 :| | } _|,.{:: 7 l | l ./ .| |__,.ヽ、__,. ヽ._」 ー=:::レ' ::::::|; 7 . l | l / .|. \:::::\::::: ヽ ::::::!′ :::| .:/ . l | .∨ ! /ヽ::: `::: :::: ...
ナ ゝ ナ ゝ / 十_" ー;=‐ |! |! cト cト /^、_ノ | 、.__ つ (.__  ̄ ̄ ̄ ̄ ・ ・ ミミ:::;,! u `゙"~´ ヾ彡::l/VvVw、 ,yvヾNヽ ゞヾ ,. ,. ,. 、、ヾゝヽr=ヾ ミ::::;/  ゙̄`ー-.、 u ;,,; j ヾk'! ' l / 'レ ^ヽヘ\ ,r゙ゞ゙-"、ノ / l! !ヽ 、、 | ミ/ J ゙`ー、 " ;, ;;; ,;; ゙ u ヾi ,,./ , ,、ヾヾ | '-- 、..,,ヽ j ! | Nヾ| '" _,,.. -─ゝ.、 ;, " ;; _,,..._ゞイ__//〃 i.! ilヾゞヽ | 、 .r. ヾ-、;;ノ,.:-一'"i j / ,.- 、 ヾヽ、 ;; ;; _,-< //_,,\' "' !| :l ゙i !_,,ヽ.l `ー─-- エィ' (. 7 / : ' ・丿  ̄≠Ξイ´,-、 ヽ /イ´ r. `ー-'メ ,.-´、 i u ヾ``ー' イ \_ _,,......:: ´゙i、 `¨ / i ヽ.__,,... ' u ゙l´.i・j.冫,イ゙l / ``-、..- ノ :u l u  ̄ ̄ 彡" 、ヾ ̄``ミ::.l u j i、`ー' .i / /、._ `'y / u `ヽ ゙:l ,.::- 、,, ,. ノ ゙ u ! /_  ̄ ー/ u / _,,..,,_ ,.ィ、 / | /__ ``- 、_ l l ``ーt、_ / / ゙ u ,./´ " ``- 、_J r'´ u 丿 .l,... `ー一''/ ノ ト 、,,_____ ゙/ / ./__ ー7 /、 l '゙ ヽ/ ,. '" \`ー--- ",.::く、 /;;;''"  ̄ ̄ ───/ ゙ ,::' \ヾニ==='"/ `- 、 ゙ー┬ '´ / \..,,__ 、 .i:⌒`─-、_,.... l / `ー┬一' ヽ :l / , ' `ソヽ ヾヽ l ` `ヽ、 l ./ ヽ l ) ,; / ,' '
参照: 田口元の「ひとりで作るネットサービス」探訪: シンプルなツールをシンプルな生き方で──Plnet.jp・駒形さん