2010-01-01から1ヶ月間の記事一覧
管理画面と管理者ユーザの追加、アクセス制限などの実装。モデルの仮想属性、セッションによる認証、トランザクションとフックなど。 モデルの仮想属性 attr_accessor などで定義する データベースのテーブルのカラムと関連付かないがモデルオブジェクトが保…
注文する機能の実装。モデル間のリレーションが出てきた。 has_many, belongs_to など。 データベースの外部キー制約 データベースの種類に依存する (汎用性はない) モデル間のリレーションシップ モデルと連動したフォーム 空のモデルオブジェクト (まだデ…
Ajax。部分テンプレート、 RJS など。 RJS はなんかむずかしそう。 部分テンプレート ビューの一部を専用のファイルにおさめたもの ふつうは one action => one view template となる 「一つのテンプレートにロジックが入りすぎていないか」 部分テンプレー…
ショッピングカート機能を実装する。セッションを使う。フラッシュも。 セッション ステートレスな HTTP プロトコルの上位でステートフルトランザクションの仕組みを擬似的に実現するもの Rails では cookie ベースのものがデフォルト => 他のストレージを使…
カスタマーがアクセスする商品一覧ページを作る。 抽象度を持たせてプログラムを作成する コントローラのアクション内にモデルべったりの実装をしない レイアウトを利用してテンプレートを warp する yield :layout, @content_for_layout button_to ヘルパー…
商品管理機能を実装する。 データベース接続情報 config/database.yml scaffold と migration migration ファイルの中で self.up, self.down メソッドを定義する 検証 (validation) はモデルで行う モデルはコードの世界とデータベースの間に立つ門番 モデル…
第5章はこれから作る Depot についての概要説明のみ。実作業はないのでパス。 RailsによるアジャイルWebアプリケーション開発 第3版 RailsによるアジャイルWebアプリケーション開発 第3版 (見だし一覧) GitHub - kyanny/agile_web_development_with_rails: M…
4章からは実践編なのでひたすらサンプルコードを打ち込んだ。なのであんまり拾ってメモすることがない。いくつかマーカーをひいたところもあるので、そこを書きつつ、 github のコミットへの permalink を並べておく。 URL /path/to/app/controller/action E…
インストールの方法だけなので軽く流す。 特定のバージョンの Rails をインストールする # gem install rails --versioin 2.2.2 新しい Rails アプリケーションを作るときに特定のバージョンの Rails を使うように指定する $ rails _2.2.2_ --version Rails …
メソッドはサブルーチンのようなもの オブジェクトにメッセージを送り、内部状態を変化させる 内部状態を変化させない関数的メソッドもある メソッド呼び出し、括弧の省略、メソッド連鎖 引数とメソッドの結合は弱い レシーバ (オブジェクト) の省略 private…
MacPorts には python_select というプログラムがあって、これは MacPorts でインストールした複数の python 実行ファイルのバージョンを切り替える便利スクリプトです。それを真似た感じのを Ruby で書いてみました。ただし、 MacPorts 用ではなくて、自分…
http://jobs.shibuya.lisp-users.org/archives/105 Lispjobs.jp 初の求人掲載なのかな?匠技研という会社の求人なのだけど、これが面白い。 好きなプログラミングだけに集中するためにすでに引きこもりを始めているだとか、ニコニコ動画でのみその才能を発揮…
オープンソースのクラウドコントローラ「Wakame」の開発で有名な、株式会社あくしゅさんの新年会に参加させていただきました。場所は原宿。閑静な住宅街の中にある、いい雰囲気のしゃぶしゃぶ屋さんしゃぶ膳紫波 (しゃぶぜんしわ)。あくしゅの皆さんのご友…
sqlite3 では、 sqlite> .mode lineなどとすると SELECT クエリの出力フォーマットを変えることができるが、こういうのを ~/.sqliterc に書いておくと起動時に読み込んでくれるらしい。 .mode は他にも column とか csv とかいろいろある。参考 man sqlite3 …
キーワード拾いメモは明日。変数と式についてはマインドマップを書いてみたのでアップ。演算子はかけなかった。 変数 オブジェクトへの参照 複数の変数が同じオブジェクトを参照していることがある cattle = "yahoo" p cattle.length #=> 5 animal = cattle …
MVC Model (How, どのように実行すべきか) モデルは門番 ビジネスルール、データ検証、データストア ActiveRecord ORM (Object Relational Mapping) テーブル => クラス, 行 => オブジェクト, 列 => オブジェクトの属性 View ユーザーインターフェース 商品…
トニー・ブザン「頭がよくなる本」をだいたい読み終えつつあるので、読み終えた章のマインドマップを書いていくことにした。読みながら重要だと思ったキーワードにマークをつけているので、そのマークを中心に拾い読みしてマインドマップを書く => キーワー…
ARGV は配列。組み込み定数。 Array#inject は List::Util reduce とか Gauche の fold のようなもの。 expression = ARGV.join(' + ') total = ARGV.inject(0){ |subtotal, arg| subtotal + arg.to_i } puts "#{expression} = #{total}" Rubyではコードブロ…
一日に2章ずつ読んでコードを実際に入力していくのを目標に。飽きとさぼり防止のために git で管理して一ステップずつコミットしていく。きりがいいところ(章が終わった)で github に push する。一回目の読みとコードの入力を同時にやると視線が動きすぎ…
文字列は String クラスのオブジェクトなので String.new で作れる。他は "", '' などで囲ってリテラル表記。 Perl と同じ。 "" の中のエスケープ文字を解釈するのも '' の中では解釈しないのも Perl と同じ。あと + と str = String.new("Hello") p str + "…
あんまり長く書いても時間ばかりかかってしょうがないので、要点をうまく拾っていけるように気をつける。数値について。とても大きい整数も ok で、 Perl のように 100_000_000 と可読性のためにアンダースコアを混ぜることもできる。0x, 0X ... 16進数 0d, …
配列は「オブジェクトへの参照を順に並べたもの」各要素はオブジェクトへの参照、そのものではないのでオブジェクトを変更すると配列の要素も変更される。 cattle = "yahoo" container = [cattle, cattle] p container #=> ["yahoo", "yahoo"] cattle[2..3] …
object.object_id メソッドで、あるオブジェクトの一意な番号がとれる。== と equal? は比較方法が違うので var1 == var2 と var1.equal?(var2) の結果は同じになるとは限らない。object.class メソッドで、あるオブジェクトのクラスがわかる。 "string".cla…
Ruby を真面目に勉強しようと思って Twitter でオススメ本を聞いてみたところ、 Yugui さんの「初めてのRuby」を推す声が多かった。 Amazon のレビューも高評価のものが多かったし、本屋で少し立ち読みしてみたが良さそうな気がしたので買ってみた。Ruby の…
6人でミーティングをする。どの2人を取っても、初対面か会ったことがあるかのいずれかである。このとき、「互いに初対面の3人組」か「互いに会ったことのある3人組」のどちらかは存在することを証明せよ 問題公開のあとの反応: 人生を書き換える者すらい…
私事で恐縮ですが、今月末をもって株式会社ライブドアを退職することになりました。13日が最終出社日でした。2006年4月に入社し、3年9ヶ月在籍しました。まだ一応籍はあるはずなので過去形で語るのはおかしいかな。席はもうないかもしれないけどな!がはは!…
結論: MEMORY ストレージエンジンの index_type はデフォルトで HASH なので = or 演算子を使用する等価比較にのみ使用される。 >, >=, MySQL 5.0.75 (やや古めかしい?)を使っていて、 MEMORY ストレージエンジンのテーブルに対して、 SELECT * FROM tbl W…