babie steps

作業療法記録

『カンバン仕事術』を読んでいる3

6章 WIP制限を読んだ。 「デヴィッド・P・ジョイス」が誰だかググッてもよくわからなかった。 おーっ、人にWIP制限をかけるとか、作業項目をタスクに分割するとか、自由度が高い! 物理強い!! カンバン仕事術作者: Marcus Hammarberg,Joakim Sundé…

『カンバン仕事術』を読んでいる2

5章 仕掛り作業を読んだ。WIPについて。 チケットに付ける[WIP]と紛らわしそう。「チケットのWIP」「カンバンのWIP」って呼び分けるのかな。それとも前者をWork in Progress、後者をWork in Processと呼び分けるのかな。(追記:角さんのTwitterでのツッコミ…

Clojureを勉強している20

4clojureの問題はギブアップして最後の章やった。難しくて億劫になってしまったもんで。 Clojure 1.7.0から入ったtransduceの説明だった。 これにて終わり。 Living Clojure作者: Carin Meier出版社/メーカー: O'Reilly Media発売日: 2015/04/14メディア: Ki…

『カンバン仕事術』を読んでいる1

いまのところ4章まで。おもろい。特急レーンのとこで「おっ、頭いいな。なるほど〜」と思った。 4章の作業項目カードは全部はできないなと思った(全部やる必要ないと書いてある)。既に買った付箋がそんなに大きくないので。Post-itの75x100mmのを買ったん…

『リモートチームでうまくいく』を読んだ

手を動かさないでよい本も読むことにした。 内容なんですが、流石実践者ということで一日の長があるな、と感じた。特に、2章3節の「オフィスにあってリモートにないものを補完する」が面白かった。オフィスにはある「存在感」「雑談」などを試行錯誤でリモー…

Clojureを勉強している19

Week3 Day 1 To Tree, or not to Tree バイナリツリーのチェックかー。3要素のコレクションだったらいいのかな?と思ったらfalseと空リストはアカンっぽい できた。 Beauty is Symmetry 安直に95の条件に(= (second t) (last t))を加えてみたが4つ目で死ん…

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

Done: サーバ Goal.Commands.deleteを作る(positionを詰めるため) Goal.Commands.update_positionsでポジションが変わらないときの処理を追加 ブラウザ new/create n: 新規(下) N: 新規(上) enterで作成 escでキャンセル edit/update e: 編集、enterで更新…

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

Done: サーバ ブラウザ TreeModelのオプションchildrenPropertyNameをdescendantsからchildren(デフォルト)に変更 /goalsで初期ステートを構築するようにした 子が0のときのゴールの新規作成ができるようにした コンポーネントの構造(ul,liの包含)を変更 T…

Clojureを勉強している18

Week 2 Day 5 Pascal's Triangle パスカルの三角形の指定した行を描けというもの。 お手上げ。 ググッてすごく綺麗だなと思ったのがこれ gist.github.com あ、mapってそういう動きするんだ、っていう。 Living Clojure作者: Carin Meier出版社/メーカー: O'R…

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

Done: サーバ サインアップ後のログインでエラーになっていたのを直した /goals/roots作成 /goalsでカレントユーザーのrootsとその子孫を返すように変更 JSON APIでセッションを認識するようにした ブラウザ URLが/goalsのとき/goalsをリクエストし取得する…

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

Projectモデルやっぱいらんなということでまた大改造した。フラフラして良くない。 Done: サーバ Activity(activities)モデルを作成 User.nickにunique属性をつけた Projectを削除 ブラウザ Todo: ブラウザ /projects/で取得したprojectに基づき/goals/(JSON…

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

今日はめちゃめちゃしんどくてコード書くのを諦めたら元気出てきたのでコード書いた。Fetch API初めて使ったんですけど、これ楽しいですね。 Done: サーバ TWITTER_REDIRECT_URI必要なさそうなので.envrc.exampleから消した サインアップ後は/projects/に飛…

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

Done: サーバ Projectモデルを作成 Membershipモデルを作成 Statusモデルを作成 Project(projects) サインアップ時にproject, membership, goal(root)を作るようにした Goal(goals) project_idを足した owned_byを削った Todo: ブラウザ GoalController.inde…

Clojureを勉強している17

Week 2 Day 4 Symmetric Difference clojure.set/{intersection,difference,union}を使ってクリア。 Least Common Multiple -最小公倍数か。効率よいアルゴリズムとか知らんな……。ググる。2つを掛けたものを先日やった最大公約数で割ればいいのか…… ゲーッ…

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

Done: ブラウザ onKeyDownイベントハンドラをGoalAppComponentからItemTreeComponentに移した hjklキーを押したときの処理をItemTreeComponentに移動した siblingを求める処理でツリーを探索しないようにした currentを求める処理でツリーを探索しないように…

Clojureを勉強している16

頭使うんで数日分をまとめてできなくなってる。1日分の問題数が少なくなったのでリンクを張ることにした。 Week2 Day 3 Simple Clojures できた。関数を返す関数ですな Cartesian Product 全組み合わせかよ。デカルト積・直積って言うのか。 REPLではできて…

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

Done: ブラウザ mocha/power-assertの導入 ispartaの導入 Todo: ブラウザ コンポーネント化 TreeModelを継承したモデルを作ってsiblings関係の関数を生やす new/create n: 新規、enterで作成 edit/update e: 編集、enterで更新 delete X: 削除 copy/cut/past…

Clojureを勉強している15

Week 2 Day 2 (let [[a b & c :as d] __] [a b c d])難しいな。dはa b & c全体の変名っぽい not=は引数いくらでも取れるんだなぁ gcd書けとな。ユークリッドの互除法かー、名前だけ知ってて覚えていないのでググる。できた。 Living Clojure作者: Carin Meie…

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

Done: ブラウザ フォーカス移動時、要素が中央にこないのを修正 スムーススクロールやめたらガクガクしなくなった Todo: ブラウザ new/create n: 新規、enterで作成 edit/update e: 編集、enterで更新 delete X: 削除 copy/cut/paste c: 単体コピー C: サブ…

Clojureを勉強している14

今日はスタートが遅かったので1日分で終わり Week 2 Day 1 おなじみフィボナッチ数列がなぜかできなくて、ンゴーンゴー言ってたら0からじゃなく1から始まるバージョンだった。 全部自力で解けたぞう(言語リファレンスは見ながら) Living Clojure作者: Cari…

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

Done: ブラウザ tabindexを付ける onFocus, onClick時にカレントゴールを変更しスクロールする hjkl移動のとき、フォーカスも移動するようにした ItemTreeComponentで自分自身のnodeをthis.props.nodeで取れるようにした Todo: ブラウザ 親から子に移動する…

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

Done: ブラウザ smoothScroll()を修正 #wrapの高さ変更(windowの高さに応じて固定) 上下左右移動で行き先の要素の有無を確認するようにした 上下左右移動でカレントゴールを変更するようにした Todo: ブラウザ new/create n: 新規、enterで作成 edit/updat…

Clojureを勉強している13

How Do I Use This Training Plan? 1週5日、7週間、即ち35エクササイズで終わるトレーニングプランとのこと 最初の3週間は4Clojureというウェブサイトの課題を解く 穴埋め形式っぽい 次の3週間はルイス・キャロルと不思議の国のアリスにインスパイアされたプ…

Clojureを勉強している12

第9章をやったというか調べた。頑張っていっぱい書いたのだが、はてなブログが"The body contains NG words"のエラーを出し死亡。リンク集的になったのがダメだったのかもしれない。本を読んでくれ。良いリンク集だった。 gist37e41fa3e42572b34538 Living C…

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

Done: ブラウザ this.props.childrenを上書きしてるので修正 children -> descendants ItemTreeComponentに与えるprops見直し goal_tree全体は含まない ツリー全体に関わる処理はsubscribe()でやる JsonPath入れる やめ。insertなどできるモデルを導入。 木…

Clojureを勉強している11

Chapter 8 The Power of Macros Exploring Macros マクロだ! マクロで何ができるかというと…… 自分自身で言語機能を作成し埋め込むことができる プログラムに必要なコードの行数を減らし、より簡明に読みやすくできる パターンや繰り返しのコードを包んで、…

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

昨日は風邪ひいて寝まくった。今日はやるぞ。やった。 Done: ブラウザ Material Design Lite導入失敗。 スクロールが効かなくなる 現在あるべき位置をsubscribe()に飛ばしてそこでスクロールする 初期表示&スクロールのときだけ遅延させる react-keydown導…

Clojureを勉強している10

Making HTTP Calls with ClojureScript and cljs-http cljs-httpライブラリはclojurescriptでHTTPを扱うライブラリと。 core.asyncと組み合わせて使うととってもいい感じ?(英語を雰囲気で読んでいるのでご勘弁) :require-macrosとかいう新しいのが出てき…

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

Done: ブラウザ ゴールツリー全体をセンタリング 現在のゴールが中心になるようにスクロール スクロールのイージング power_assert_exのバグが直ったので再び採用 Todo: ブラウザ 現在あるべき位置をsubscribe()に飛ばしてそこでスクロールする ツリー全体を…

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 ユー…