Clojureを勉強している9

7章の続き。 Using Clojure in Your Browser with ClojureScript ClojureScriptだっ! project.cljのdependenciesにorg.clojure/clojurescriptを加え、pluginsにlein-cljsbuildを加え、cljsbuildの設定を書く、と。 lein trampoline cljsbuild repl-rhinoでc…

Elixir/Phoenixでウェブサービスを作っている19

寝てて更新が遅れた。今日は深夜大寒波で足が寒くてプログラミングやってらんなかったのと、Clojureの勉強の方でVimの設定にハマったので、些少な進捗しか出せなかった。明日は頑張る。 Done: ブラウザ 開いてないゴールをdisplay: noneするようにした Todo:…

Clojureを勉強している8

Creating a Web Server with Compojure 第7章はウェブアプリを作るということなので楽しみでござる おっ、ClojureScriptも書くらしい。 Compojureというライブラリを使うらしい。 CompojureはRingというローレベル・ウェブアプリケーション・ライブラリにシ…

Elixir/Phoenixでウェブサービスを作っている18

Done: ブラウザ jsでスムーススクロールする方法の調査 scrollTop animation without jquery jsでマウスホイールイベントを取得する方法の調査 ホイール系イベント2014年版クロスブラウザ HTMLの構造をカラムからツリーに変更 Todo: ブラウザ ツリー全体を展…

Clojureを勉強している7

ns関数の引数に(gen-class)を入れないとREPLが立ち上がったときに環境を読んでくれないのでハマった。 Basics of core.async Channels まずは同期: chanでチャネルを作成 chanの引数に数字を与えるとその分だけバッファが作られる >!!でブロッキングput !で…

Elixir/Phoenixでウェブサービスを作っている17

今日は出だしが遅かったので進捗が少ない(しかし、コミット数は多め)。 Done: ブラウザ Component分割 CSS3でリストのツリーをカラム表示に変換できるか調査 実験中…… 先祖を詰めるのが難しい JSONPathが必要? JavaScript用: s3u/JSONPath こっちは多分要…

Clojureを勉強している6

Getting Set Up with a Clojure Editor やっとファイルに書ける! ずっとREPLでやってきてtypoしたとき不便だった。 vimなのでvimプラグインを入れる guns/vim-clojure-static シンタックスハイライト、インデントなど。基本。 tpope/vim-fireplace vimからR…

Elixir/Phoenixでウェブサービスを作っている16

Done: サーバ リファクタリングいろいろ Goal.Commands copy Goal.Queries self_and_descendant_ids descendant_ids POST /goals/:target_id/copy?dest_parent_id=:dest_parent_id&dest_position=:dest_position Todo: サーバ Activity(activities) id goal_…

Clojureを勉強している5

Javaとの互換性の話。 .だけでJavaのメソッド呼び出せるのかすげえな。 new関数はわかりやすいんだけど、型の後ろに.付けてインスタンス生成するのはちょっと覚えにくいな。 ElixirもErlangのモジュール呼び出すの簡単になってるし、VM利用言語は気を使って…

Clojureを勉強している4

状態とコンカレンシーの話。 atom出てきた。 reset!で再セットか swap! 別のスレッドで使ってる場合はリトライされるのか。 例ではfutureで別スレッドを用意 printlnみたいな副作用を含む関数などを差し挟むと当然同じ出力が発生する しかし、atomは想定通り…

Elixir/Phoenixでウェブサービスを作っている15

今日は軽微なコミットしただけで、画面の方考えてた。そろそろサーバの方終わるので、と思ったんだけどサーバ側も増えた。先に画面やるけど。 Done: Phoenix 1.1.1から1.1.3へアップグレード 参考:1.1.1 -> 1.1.2 package.jsonを書き換えた後、npm install…

Elixir/Phoenixでウェブサービスを作っている14

Done: サーバ PUT /goals/:id check_descendants! 自分の子孫に移動しないように確認 descendants self_and_descendants DELETE /goals/:id cascadeに任せてる…… Todo: サーバ Goal child_ids sibling_ids ancestor_ids descendant_ids POST /goals/:id/copy…

Clojureを勉強している3

今日は第2章第2節から第2章の最後までやりました。いや〜面白かった。綺麗だね。 Functions Creating Functions and Other Neat Expressions partialがカリー化か。 compすごい。 Destructuring 最近の言語は付けるようになってるね。良い mapのdestructurin…

Elixir/Phoenixでウェブサービスを作っている13

読書の方は1冊読み終わったので1日休憩ズラ。 Done: サーバ PUT /goals/:id update move inc positions dec positions ややこしいしめっちゃ汚い Todo: サーバ PUT /goals/:id 自分の子孫に移動しないように確認 DELETE /goals/:id POST? /goals?:from_id&to…

Elixir/Phoenixでウェブサービスを作っている12

起きるのが遅かったのでここまで。久しぶりにめっちゃ熟睡できたのでヨシ。 Done: サーバ 閉包テーブルやめて隣接リストwith再帰クエリにする DBをPostgresにする 一応テスト書いてたので割りと簡単にできた insert children parent siblings Todo: サーバ P…

DDDを読んでる15

全部読み終わった。感想は特にない。スマン。 「それは違うだろ」とか「もっと上手いやり方がある」とかは一切出てこなかったな。元々の自分の読書の仕方が「鵜呑み」であるということもあるのだが、至極真っ当なソフトウェアの作り方だと思う。 う〜ん、全…

Elixir/Phoenixでウェブサービスを作っている11

Done: サーバ 閉包テーブル勘違いしてたのでいろいろ修正 MySQL/MariaDBをターゲットにやってたけど、PostgreSQL再帰クエリ使えるやんけ。どうしようかな…… Todo: サーバ PUT /goals/:id update move DELETE /goals/:id ユーザーチェックを入れる ブラウザ …

DDDを読んでる14

この章は特に直近で必要としてないので身が入らない。読んだだけだなぁ。 第16章 大規模な構造 進化する秩序(EVOLVING ORDER) システムのメタファ(SYSTEM METAPHOR) 「素朴なメタファ」とそれを必要としない理由 責務のレイヤ(RESPONSIBILITY LAYERS) …

Elixir/Phoenixでウェブサービスを作っている10

Done: サーバ GET /goals/:id/parent GET /goals/:id/siblings Goalにparent_id, generationsカラム(ヴァーチャル)を付ける POST /goals create insert copy Todo: サーバ PUT /goals/:id update move DELETE /goals/:id ユーザーチェックを入れる ブラウ…

DDDを読んでる13

やっぱ最低2度は読まないと分からないな。分かっても頭に入ってないので、また機会を設けて読みなおす必要がある。 第15章 蒸留 コアドメイン(CORE DOMAIN) コアを選択する 誰がこの作業をやるのか? 蒸留の拡大 汎用サブドメイン(GENERIC SUBDOMAINS) …

Elixir/Phoenixでウェブサービスを作っている9

Done: サーバ Goal.Commands.children Goal.Commands.ancestors Goal.Commands.siblings Goal.parent_id廃止 Goal.goal_treeをGoal.descendant_treeにリネーム GET /goals/:id/children Todo: サーバ GET /goals/:id/ancestors GET /goals/:id/siblings ユー…

DDDを読んでる12

大規模プロジェクトを思い出して厳しい。能力が足りないチームの場合は外部のより良いモデルを諦めたりするのがリアリティある。 第14章 モデルの整合性を維持する 公開ホストサービス(OPEN HOST SERVICE) 公表された言語(PUBLISHED LANGUAGE) 例14.6——…

Elixir/Phoenixでウェブサービスを作っている8

体がダルくて寝まくってた。 Done: フィクスチャを導入 これ: Fixtures for Ecto SQLアンチパターン読んだ Todo: サーバ GET /goals/:id/children GET /goals/:id/ancestors GET /goals/:id/siblings POST /goals create insert copy PUT /goals/:id update …

DDDを読んでる11

自分が参加した巨大プロジェクトを思い出しながら読んだ。経験したことは楽に頭に入るなぁ。 第14章 モデルの整合性を維持する 境界づけられたコンテキスト(BOUNDED CONTEXT) 例14.1——予約コンテキスト 境界づけられたコンテキスト内での分派を認識する 継…

Elixir/Phoenixでウェブサービスを作っている7

今日は寝てしまって全然進まなかった…… Done: - API設計(コードなし) Todo: Treeクエリライブラリ作成 /goals/:idを/goals/:hash_digestにする User.nickにunique属性つける Programming Phoenix: Productive; Reliable; Fast作者: Chris Mccord,Bruce Tat…

DDDを読んでる10

短かった。リファクタリングをするべきタイミングについて書いてあるのが良かった。 第13章 より深い洞察へ向かうリファクタリング 開始 探究チーム 先達の技 開発者のための設計 タイミング 好機となる危機 エリック・エヴァンスのドメイン駆動設計作者: Er…

Elixir/Phoenixでウェブサービスを作っている6

HTML5&CSS3の本を読んで寄り道したけど、無事に読み終わったので再開。大雑把ながらレイアウトが書けた。CSSむずい。一部は動的に要素のstyleいじらないといけないなぁ。 Done: sanitize.css導入 font-awesome導入 大まかなレイアウトを作成 Todo: Treeクエ…

DDDを読んでる9

デザインパターンを完全に忘れているということがわかった。デザインパターンの本を買ったときルビーストであったので、Rubyにはこれいらんなというものが多すぎて流し読みしかしてなかった。あとダンボールの山からデザインパターンの本引っ張り出してくる…

HTML5&CSS3標準デザイン講座を読んでる4

ようやく本命のCSS3部分が読めた。今回作るウェブアプリだとレスポンシブ使わないので、チャプター9は流し読みで済ませた。 総評だが、初級者が中級者になるための本だった。自分はXHTML+CSSの時代から知識をアップデートしていなかったので、読んで良かった…

DDDを読んでる8

本の例が具体的なのと俺の簿記会計の知識の無さが相まって2回読んでもあんま頭に入らなかった。アナリシスパターンを参考にするといいよっていう、ただのストーリーとして読んだ。 第11章 アナリシスパターンを適用する 例11.1——利息を得る 勘定を用いた場合…