@kyanny's blog

My thoughts, my life. Views/opinions are my own.

2010-01-01から1ヶ月間の記事一覧

第11章 タスクF: ユーザ管理

管理画面と管理者ユーザの追加、アクセス制限などの実装。モデルの仮想属性、セッションによる認証、トランザクションとフックなど。 モデルの仮想属性 attr_accessor などで定義する データベースのテーブルのカラムと関連付かないがモデルオブジェクトが保…

第10章 タスクE: チェックアウト!

注文する機能の実装。モデル間のリレーションが出てきた。 has_many, belongs_to など。 データベースの外部キー制約 データベースの種類に依存する (汎用性はない) モデル間のリレーションシップ モデルと連動したフォーム 空のモデルオブジェクト (まだデ…

第9章 タスクD: Ajaxの追加

Ajax。部分テンプレート、 RJS など。 RJS はなんかむずかしそう。 部分テンプレート ビューの一部を専用のファイルにおさめたもの ふつうは one action => one view template となる 「一つのテンプレートにロジックが入りすぎていないか」 部分テンプレー…

第8章 タスクC: カートの作成

ショッピングカート機能を実装する。セッションを使う。フラッシュも。 セッション ステートレスな HTTP プロトコルの上位でステートフルトランザクションの仕組みを擬似的に実現するもの Rails では cookie ベースのものがデフォルト => 他のストレージを使…

第7章 タスクB: カタログの表示

カスタマーがアクセスする商品一覧ページを作る。 抽象度を持たせてプログラムを作成する コントローラのアクション内にモデルべったりの実装をしない レイアウトを利用してテンプレートを warp する yield :layout, @content_for_layout button_to ヘルパー…

第6章 タスクA: 商品の管理

商品管理機能を実装する。 データベース接続情報 config/database.yml scaffold と migration migration ファイルの中で self.up, self.down メソッドを定義する 検証 (validation) はモデルで行う モデルはコードの世界とデータベースの間に立つ門番 モデル…

第5章 Depotアプリケーション

第5章はこれから作る Depot についての概要説明のみ。実作業はないのでパス。 RailsによるアジャイルWebアプリケーション開発 第3版 RailsによるアジャイルWebアプリケーション開発 第3版 (見だし一覧) GitHub - kyanny/agile_web_development_with_rails: M…

第4章 Hello, Rails!

4章からは実践編なのでひたすらサンプルコードを打ち込んだ。なのであんまり拾ってメモすることがない。いくつかマーカーをひいたところもあるので、そこを書きつつ、 github のコミットへの permalink を並べておく。 URL /path/to/app/controller/action E…

第3章 Railsのインストール

インストールの方法だけなので軽く流す。 特定のバージョンの Rails をインストールする # gem install rails --versioin 2.2.2 新しい Rails アプリケーションを作るときに特定のバージョンの Rails を使うように指定する $ rails _2.2.2_ --version Rails …

7章 メソッド

メソッドはサブルーチンのようなもの オブジェクトにメッセージを送り、内部状態を変化させる 内部状態を変化させない関数的メソッドもある メソッド呼び出し、括弧の省略、メソッド連鎖 引数とメソッドの結合は弱い レシーバ (オブジェクト) の省略 private…

my_ruby_select というプログラムを書いた => rvm 使うとイイらしい

MacPorts には python_select というプログラムがあって、これは MacPorts でインストールした複数の python 実行ファイルのバージョンを切り替える便利スクリプトです。それを真似た感じのを Ruby で書いてみました。ただし、 MacPorts 用ではなくて、自分…

Lispjobs.jp の求人が面白い

http://jobs.shibuya.lisp-users.org/archives/105 Lispjobs.jp 初の求人掲載なのかな?匠技研という会社の求人なのだけど、これが面白い。 好きなプログラミングだけに集中するためにすでに引きこもりを始めているだとか、ニコニコ動画でのみその才能を発揮…

株式会社あくしゅさんの新年会に参加してきた

オープンソースのクラウドコントローラ「Wakame」の開発で有名な、株式会社あくしゅさんの新年会に参加させていただきました。場所は原宿。閑静な住宅街の中にある、いい雰囲気のしゃぶしゃぶ屋さんしゃぶ膳紫波 (しゃぶぜんしわ)。あくしゅの皆さんのご友…

~/.sqliterc

sqlite3 では、 sqlite> .mode lineなどとすると SELECT クエリの出力フォーマットを変えることができるが、こういうのを ~/.sqliterc に書いておくと起動時に読み込んでくれるらしい。 .mode は他にも column とか csv とかいろいろある。参考 man sqlite3 …

6章 変数と式

キーワード拾いメモは明日。変数と式についてはマインドマップを書いてみたのでアップ。演算子はかけなかった。 変数 オブジェクトへの参照 複数の変数が同じオブジェクトを参照していることがある cattle = "yahoo" p cattle.length #=> 5 animal = cattle …

第2章 Railsアプリケーションのアーキテクチャ

MVC Model (How, どのように実行すべきか) モデルは門番 ビジネスルール、データ検証、データストア ActiveRecord ORM (Object Relational Mapping) テーブル => クラス, 行 => オブジェクト, 列 => オブジェクトの属性 View ユーザーインターフェース 商品…

第1章 はじめに

トニー・ブザン「頭がよくなる本」をだいたい読み終えつつあるので、読み終えた章のマインドマップを書いていくことにした。読みながら重要だと思ったキーワードにマークをつけているので、そのマークを中心に拾い読みしてマインドマップを書く => キーワー…

5章 入出力

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ではコードブロ…

「RailsによるアジャイルWebアプリケーション開発 第3版」を読み始めた

一日に2章ずつ読んでコードを実際に入力していくのを目標に。飽きとさぼり防止のために git で管理して一ステップずつコミットしていく。きりがいいところ(章が終わった)で github に push する。一回目の読みとコードの入力を同時にやると視線が動きすぎ…

4章 文字列

文字列は String クラスのオブジェクトなので String.new で作れる。他は "", '' などで囲ってリテラル表記。 Perl と同じ。 "" の中のエスケープ文字を解釈するのも '' の中では解釈しないのも Perl と同じ。あと + と str = String.new("Hello") p str + "…

3章 数値

あんまり長く書いても時間ばかりかかってしょうがないので、要点をうまく拾っていけるように気をつける。数値について。とても大きい整数も ok で、 Perl のように 100_000_000 と可読性のためにアンダースコアを混ぜることもできる。0x, 0X ... 16進数 0d, …

2章 配列とハッシュ

配列は「オブジェクトへの参照を順に並べたもの」各要素はオブジェクトへの参照、そのものではないのでオブジェクトを変更すると配列の要素も変更される。 cattle = "yahoo" container = [cattle, cattle] p container #=> ["yahoo", "yahoo"] cattle[2..3] …

1章 ようこそ、Rubyのある生活へ

object.object_id メソッドで、あるオブジェクトの一意な番号がとれる。== と equal? は比較方法が違うので var1 == var2 と var1.equal?(var2) の結果は同じになるとは限らない。object.class メソッドで、あるオブジェクトのクラスがわかる。 "string".cla…

「初めてのRuby」を買った

Ruby を真面目に勉強しようと思って Twitter でオススメ本を聞いてみたところ、 Yugui さんの「初めてのRuby」を推す声が多かった。 Amazon のレビューも高評価のものが多かったし、本屋で少し立ち読みしてみたが良さそうな気がしたので買ってみた。Ruby の…

迷路じゃないほうの問題やってみた

6人でミーティングをする。どの2人を取っても、初対面か会ったことがあるかのいずれかである。このとき、「互いに初対面の3人組」か「互いに会ったことのある3人組」のどちらかは存在することを証明せよ 問題公開のあとの反応: 人生を書き換える者すらい…

株式会社ライブドアを退職します

私事で恐縮ですが、今月末をもって株式会社ライブドアを退職することになりました。13日が最終出社日でした。2006年4月に入社し、3年9ヶ月在籍しました。まだ一応籍はあるはずなので過去形で語るのはおかしいかな。席はもうないかもしれないけどな!がはは!…

MySQL の MEMORY(HEAP) ストレージエンジンを使うときは index_type に気をつけろ

結論: MEMORY ストレージエンジンの index_type はデフォルトで HASH なので = or 演算子を使用する等価比較にのみ使用される。 >, >=, MySQL 5.0.75 (やや古めかしい?)を使っていて、 MEMORY ストレージエンジンのテーブルに対して、 SELECT * FROM tbl W…