Chapter 9 - Practical Object Oriented Design in Ruby

Combining Object with Composition まとめ 1つのオブジェクトを複数のオブジェクトで構成するという話。 自転車オブジェクトがPartsオブジェクト持つという例で、sparesのようなPartsオブジェクトが返答すべきメッセージは内部でPartsオブジェクトへ処理を…

Chapter 7 - Practical Object Oriented in Ruby

Sharing Role Behavior with Modules まとめ dock typeの章で説明したような共通の振る舞いを発見した際に、それをモジュール化することで、コードを1つの箇所に置くことができる。 シーケンス図の各ノードに、具体的なクラス名を書くのではなく、求められて…

Chapter 6 - Practical Object Oriented Design in Ruby

Acquiring Behavior Through Inheritance まとめ 継承とはメッセージを自動的に転送すること。 継承を用いると、クラスの構造が複雑になるので、必要な情報が揃った時に行うのがいい。 具体的には、2つの似たような種類のクラスがあって、1つの親クラスと、2…

Chapter 5 - Object Oriented Design in Ruby

Duck Typing まとめ あるオブジェクトを、どのクラスのオブジェクトか?という視点で見るのではなく、どういったインターフェースを持っているか?という視点で見ること。 あるオブジェクトに対して、kind_of? 等で分岐させて、それぞれ異なるメソッドを呼び…

Chapter4 - Practical Object Orient Design in Ruby

Creating Flexible Interfaces 抜粋 第3章で頻繁に変更が起こるクラスに依存するのは危険という話があったが、この考え方はクラス内の範囲でも同じように適応できる。 クラスの持つパブリックなインターフェースは、そのクラスが持つ責任をドキュメントの役…

Chapter3 - Practical Object Orient Design in Ruby

Managing Dependencies 抜粋 デザインのやるべきことは、それぞれのクラスが仕事をこなすために必要な最低限のことだけを知っているように、依存性を管理すること dependency injection クラスが知っていることを減らすという視点で、クラスの名前と初期化方…

Chapter 2 - Practical Object Oriented Design in Ruby

Designing Classes with a Single Responsibility 抜粋 クラスは一つの責任しか持つべきではない。 そのクラスを一文で簡潔に説明できるかどうかが一つのバロメーター。 andやorが入る場合は、2つ以上の責任を持ってしまっている可能性が高い。 designの決…

Chapter 1 - Practical Object Oriented Design in Ruby

いい本だと紹介されていたのと英語の勉強など。 第1章はオブジェクト指向デザインの基本的な紹介。 概要 ソフトウェア開発に変更は付き物。なぜなら顧客は自分が求めているものが最初の段階で解っていない。 なので、変更を容易にするのがOOD(Object Oriente…

React,Reduxのキャッチアップ

フロントエンド周りの技術が少し落ち着いてきたという風潮があるので、キャッチアップ。 やったこと React Tutorial https://facebook.github.io/react/docs/tutorial.html React自体は結構シンプルでわかりやすく、メリットも感じられた。 state周りが、flu…

ActionDispatch::Http::UploadedFileのコードリーデイング

概要 ActionDispatch::Http moduleに class UploadedFile が定義されている。 サーバーにアップロードされたtime fileを扱うクラス。 pickup initialize以外の処理は@tempfileに対するショートカット。 initializeでは、ファイルの有無チェックとファイル名…

ActionDispatch::Http::URLのコードリーディング

概要 ActionDispatch::Http::URLモジュールに諸々追加している。 pickup class << self でクラスメソッドをまとめて定義している。 hostからドメインを取得する。 Array#last は要素数を指定できる。 def extract_domain_from(host, tld_length) host.split(…

ActionDispatch::Http::Headers のコードリーディング

なぜ? CakePHPを長く使っていて、Railsを趣味でちょいちょい触ってみている状態で、 その差として思いつくのが、 標準のコンポーネント、機能の知識 有用なプラグイン知識 言語自体の経験 この標準機能の知識と言語の慣れを埋めるために、railsのコードを読…

Atcoder Beginner Contest 041

Tasks - AtCoder Beginner Contest 041 | AtCoder AtcoderBeginnerContest/041 at master · kitabatake/AtcoderBeginnerContest · GitHub リアルタイム参加 A - Cは問題なし。 いつもより簡単気味。 D リアルタイム 部分点しか取れなかった。 DFSでパターン…

Atcoder Regular Contest 056

Tasks - AtCoder Regular Contest 056 | AtCoder レギュラーコンテストの方にも挑戦してみたいなと思っていたところ、ちょうど開催されていたのでやってみた。 ABCでも苦戦中なのでだいぶ厳しいのかなと思っていたが、A,B問題はABCのC,D問題のような感じで、…

Atcoder Beginner Contest 40

Tasks - AtCoder Beginner Contest 040 | AtCoder 久々のリアルタイム参加。 A - C は問題なく解けた。 D問題 リアルタイム N個の都市があり、都市間をつなぐ道がM個ある。 それぞれの道には製造年が記録されている。 Q人の国民の所在都市と安全意識(ある年…

Atcoder Beginner Contest 038

AtCoder Beginner Contest 038 - AtCoder Beginner Contest 038 | AtCoder 意識しようとしたこと 問題の疑問点はすべて解消する 自分でミニマムケースを作る エッジケースを考える 解き方を思いついた後、穴がないかしっかりと疑う時間を作る。 ABC問題なし…

ABC復習 033-037

github.com 一度解けた問題がちゃんと理解できているか、解法を定着させるために033 - 037前に解いた問題を再度解いてみた。 心構えとしては、 問題をしっかりと理解する 最終的に必要なものを明確にして、それを実現するために必要なもの。。を再起的に明確…

Atcoder Beginner Contest 032

Tasks - AtCoder Beginner Contest 032 | AtCoder A, Bは問題なく解けた。 C 愚直に解くと、すべての開始点から条件内に収まる限り部分文字列をインクリメントしていく方法([tex:N2])で解けそう。 開始点をインクリメントする際に、部分列の積をまた始めか…

Atcoder Beginner Contest 033

Tasks - AtCoder Beginner Contest 033 | AtCoder A, Bは特に問題なし。 C いろいろな解き方がありそうで若干困惑したけど、以下のやり方で解いた。 掛け算を順に処理していく。 かける値のどちらかが0であれば、文字列から丸ごと削除。 それ以外は、1に置…

jQueryのセレクタ解析のSizzleについて

jQueryのソースコードは jquery-2.1.4.js を見ていきます。 Sizzleとは Stand Alone のCSSセレクタの解析エンジンで、指定したセレクタに対するDOM要素を抽出してくれるものです。 Sizzle JavaScript Selector Library jQueryとSizzleの関係性について 下記…

Atcoder Beginner Contest 034

abc034.contest.atcoder.jp A, Bは問題なく解けた。 C DPを用いた解き方が解らなかった。 経路の問題は苦手意識があって、ミニマムケースでも数えるのが苦手。 (w, h) への経路数は、(w-1, h) + (w, h-1) であると気づければ簡単に解くことができそう。 点の…

Atcoder Beginner Content 035 の問題をc++で解いてみた

Atcoder Beginner Contest 035 - 成長志向エンジニアの勉強日記 以前rubyで解いてみてD問題がTLEになってしまったので、C++を学んでチャレンジ。 競技プログラミング以外でもc++を勉強してみたかったので、英語の勉強もかねて、 The C++ Programming Languag…

Atcoder Beginner Contest 035

2016/3/26 に行われた過去コンテストの問題にチャレンジ abc035.contest.atcoder.jp A テレビ 特に問題なく解けた。 B ドローン 特に問題なく解けた。 C オセロ 初回 問題自体はシンプルなので、N個の要素を持つ配列に駒への操作数を保持して、奇数の場合「…

AtCoder Beginner Contest 037 参加しました

アルゴリズムの勉強ということで、5/7 21:00 から行われた AtCoder Beginner Contest 037 に参加してみました。 Welcome to AtCoder Beginner Contest 037 - AtCoder Beginner Contest 037 | AtCoder スキルについて 1年ほど前にpaizaに登録してAランク取得 …

Dropzone.jsの仕組み

依存API ドラッグ&ドロップ - DragDrop | MDN ドラッグ&ドロップ イベント DataTransfer - DragDrop | MDN ドラッグ&ドロップでイベントが発生した際に、ドロップされたファイル情報eventオブジェクトのdataTransferプロパティに格納される Dropzone.protot…

CakephpのLazyModelの仕組み

Cakephp 1.2, 1.3 のModelのロードを最適化するプラグイン LazyModel. GitHub - Phally/lazy_model: Lazy model loading for CakePHP 1.2 & 1.3. Cakephp 2.0 以降では標準化されているようです。 概要 モデルに紐づく関連するモデルを実際に使用する際に初…

codekata04: Data Munging

Kata04: Data Munging - CodeKatacodekata.com 概要 下記の3つの作業をそれぞれ個別に行う. (後に行う作業を考慮して、前の作業を行わない) 天気のデータを読み込んで、整形して出力する. サッカーリーグのデータを読み込んで、整形して出力する. 上記の2つ…

モデリング練習 Kata01: Supermarket Pricing

Kata01: Supermarket Pricing - CodeKatacodekata.com スーパーマッケートの価格設定、購入周りのモデリングの練習。 要件 下記のような複雑な価格設定をどう実現させるか? 3つで1000円 100g 200円 2つ買ったら1つ無料 会計時の処理、在庫管理はどうやって…

JQueryのイベント実行の仕組みを調べてみた

JQueryでのイベントリスナーの設定、実行までがどんな仕組みになっているのかが気になったので調べてみました。今回参考にしたのはjquery-1.7.1.jsです。 まずJQuery自体の定義ですが、無名関数スコープ内で定義されていて、それをwindowオブジェクトに追加…

cakephpの概要

こんな感じになっているようです。 cakephpを設置したディレクトリにhttpリクエストがあると、rewriteモジュールによって「設置Dir/app/webroot/index.php?url=設置Dir以下のパス」の形式のURLに変換され、app/webroot/index.phpが呼び出されます。 http://h…