Elixir/Phoenixでウェブサービスを作っている23
Done:
- ブラウザ
- smoothScroll()を修正
- #wrapの高さ変更(windowの高さに応じて固定)
- 上下左右移動で行き先の要素の有無を確認するようにした
- 上下左右移動でカレントゴールを変更するようにした
Todo:
- ブラウザ
- new/create
- n: 新規、enterで作成
- edit/update
- e: 編集、enterで更新
- delete
- X: 削除
- copy/cut/paste
- c: 単体コピー
- C: サブツリー全体をコピー
- x: カット
- v: 下にペースト
- V: 上にペースト
- status切り替え
- f: forward
- b: back
- q: close
- タブ
- システムメニュー
- サインイン/サインアウト
- ユーザーメニュー
- アクティビティ
- ユーザー/グループ...
- アクティビティ
- システムメニュー
- オフライン対応
- すごく欲しいがやらない
- 当初想定より簡単にできるかも
- new/create
- サーバ
- Activity(activities)
- Status(statuses)
- id
- name
- position
- enable
- ユーザー定義
- デフォルト
- 0: todo
- 1: doing
- 2: done
- -1: close
- done/closeは特別にしたいな……
- 面倒くさいなこれ。固定にしよっかな
- デフォルト
- Group(groups)
- 1ユーザー1グループ作る?
- id
- name
- Membership(memberships)
- user_id
- group_id
- pending
- 操作権限チェックを入れる
- ルート操作の防止を入れる
- /goals/:idを/goals/:hash_digestにする
- User.nickにunique属性つける
- check_descendants!でArgumentErrorにしてるところを独自例外に変える
- on_delete: :delete_allと再帰クエリでどっちが速いか調べる
Memo:
- CSS3 flex
- jsでスムーススクロールする方法
- jsでマウスホイールイベントを取得する方法
Programming Phoenix: Productive; Reliable; Fast
- 作者: Chris Mccord,Bruce Tate,Jose Valim
- 出版社/メーカー: Pragmatic Bookshelf
- 発売日: 2016/04/11
- メディア: ペーパーバック
- この商品を含むブログを見る
Clojureを勉強している13
- How Do I Use This Training Plan?
- What If I Miss a Day or Two?
- 1日2日休んでも構わないとのこと
- What If I Don’t Understand the Exercise?
- 9章に書いたサイトを参考にしたり質問したりしろとのこと
- Week 1
- Day 1
conj
は要素をコレクションにくっつけるとだけ覚えていたんだけど、(conj '(1 2 3) 4)
で'(4 1 2 3)
が返るようにリストの場合は頭につくのがびっくりした(:b {:a 10 :b 20 :c 30})
で20
が取れるのギョッとした。正直find
使って欲しい
- Day 2
- ウェブサイトの誘導に従って問いてたら、やり過ぎた。本の方は飛び飛びだった。
- Day 3
- Day 4
mapcat
...
- Day 5
- なかなか厳しい。ググッて答え見たりした。堪え性がない。アカンね。
- Day 1
- 作者: Carin Meier
- 出版社/メーカー: O'Reilly Media
- 発売日: 2015/04/14
- メディア: Kindle版
- この商品を含むブログを見る
- Chapter 10 Weekly Living Clojure Training Plan
- How Do I Use This Training Plan?
- What If I Miss a Day or Two?
- What If I Don’t Understand the Exercise?
- Week 1
- Week 2
- Week 3
- Week 4
- Week 5
- Week 6
- Week 7
- Congratulations
Clojureを勉強している12
第9章をやったというか調べた。頑張っていっぱい書いたのだが、はてなブログが"The body contains NG words"のエラーを出し死亡。リンク集的になったのがダメだったのかもしれない。本を読んでくれ。良いリンク集だった。
- 作者: Carin Meier
- 出版社/メーカー: O'Reilly Media
- 発売日: 2015/04/14
- メディア: Kindle版
- この商品を含むブログを見る
Elixir/Phoenixでウェブサービスを作っている22
Done:
- ブラウザ
- this.props.childrenを上書きしてるので修正
- children -> descendants
- ItemTreeComponentに与えるprops見直し
- goal_tree全体は含まない
- ツリー全体に関わる処理はsubscribe()でやる
- JsonPath入れる
- やめ。insertなどできるモデルを導入。
- 木構造を扱うライブラリの調査
- joaonuno/tree-model-js
- afiore/arboreal
- tree-model-jsかな……
- joaonuno/tree-model-jsパッケージの導入。
- できた
- r7kamura/key-stringパッケージの導入。
- できた
- keydown event処理をItemTreeComponentからdispatchするようにした
- ItemTreeComponentに持ってる方がおかしいので、どっかもっと上の方のコンポーネントで処理した方が良いかも
- handleEvent()をItemTreeComponentからGoalAppComponentに移した
- this.props.childrenを上書きしてるので修正
Todo:
- ブラウザ
- #wrapの高さがセクションの倍数になるように動的に変更
- ツリー全体を展開する
- 上下移動(要素の有無を見る)
- jk
- 右移動(要素の有無を見る)
- h
- 左移動(要素の有無を見る)
- l
- new/create
- n: 新規、enterで作成
- edit/update
- e: 編集、enterで更新
- delete
- X: 削除
- copy/cut/paste
- c: 単体コピー
- C: サブツリー全体をコピー
- x: カット
- v: 下にペースト
- V: 上にペースト
- status切り替え
- f: forward
- b: back
- q: close
- タブ
- システムメニュー
- サインイン/サインアウト
- ユーザーメニュー
- アクティビティ
- ユーザー/グループ...
- アクティビティ
- システムメニュー
- オフライン対応
- すごく欲しいがやらない
- 当初想定より簡単にできるかも
- サーバ
- Activity(activities)
- Status(statuses)
- id
- name
- position
- enable
- ユーザー定義
- デフォルト
- 0: todo
- 1: doing
- 2: done
- -1: close
- done/closeは特別にしたいな……
- 面倒くさいなこれ。固定にしよっかな
- デフォルト
- Group(groups)
- 1ユーザー1グループ作る?
- id
- name
- Membership(memberships)
- user_id
- group_id
- pending
- 操作権限チェックを入れる
- ルート操作の防止を入れる
- /goals/:idを/goals/:hash_digestにする
- User.nickにunique属性つける
- check_descendants!でArgumentErrorにしてるところを独自例外に変える
- on_delete: :delete_allと再帰クエリでどっちが速いか調べる
Memo:
- CSS3 flex
- JSONPath
- JavaScript用: s3u/JSONPath
- こっちは多分要る
- Erlang用: GeneStevens/jsonpath
- こっちはいらないと思うが、1つのゴールを返すとき先祖も付けて返す必要ありそう
- JavaScript用: s3u/JSONPath
- jsでスムーススクロールする方法
- jsでマウスホイールイベントを取得する方法
Programming Phoenix: Productive; Reliable; Fast
- 作者: Chris Mccord,Bruce Tate,Jose Valim
- 出版社/メーカー: Pragmatic Bookshelf
- 発売日: 2016/04/11
- メディア: ペーパーバック
- この商品を含むブログを見る
Clojureを勉強している11
- Chapter 8 The Power of Macros
- Exploring Macros
- マクロだ!
- マクロで何ができるかというと……
- 自分自身で言語機能を作成し埋め込むことができる
- プログラムに必要なコードの行数を減らし、より簡明に読みやすくできる
- パターンや繰り返しのコードを包んで、簡単なマクロの呼び出しに置き換えることができる
- ふむ
- ほう
when
はマクロなんか defmacro
でマクロ作成macroexpand
でマクロを展開macroexpand-1
が1回展開でmacroexpand
がマクロである限り展開なのかな?(英語を気持ちで読んでるので)
- Creating Our Own Macros
defmacro
でパターンを省略できた
- Using Templating to Create Macros
- `がquote、~がunquote。Elixirよりも短いな。
- Don't use a macro unless you have to. との戒めが
- Exploring Macros
- 作者: Carin Meier
- 出版社/メーカー: O'Reilly Media
- 発売日: 2015/04/14
- メディア: Kindle版
- この商品を含むブログを見る
- Chapter 8 The Power of Macros
- Exploring Macros
- Creating Our Own Macros
- Using Templating to Create Macros
Elixir/Phoenixでウェブサービスを作っている21
昨日は風邪ひいて寝まくった。今日はやるぞ。やった。
Done:
- ブラウザ
- Material Design Lite導入失敗。
- スクロールが効かなくなる
- 現在あるべき位置をsubscribe()に飛ばしてそこでスクロールする
- 初期表示&スクロールのときだけ遅延させる
- react-keydown導入失敗。
- スムーススクロール関数の修正
- hjklで移動(要素の有無を見てない)
- 現在位置取得関数のクロスブラウザ互換性のための修正
- power_assert_exを0.0.8にアップデート
- Material Design Lite導入失敗。
Todo:
- ブラウザ
- ツリー全体を展開する
- 上下移動(要素の有無を見る)
- jk
- 右移動(要素の有無を見る)
- h
- 左移動(要素の有無を見る)
- l
- new/create
- n: 新規、enterで作成
- edit/update
- e: 編集、enterで更新
- delete
- X: 削除
- copy/cut/paste
- c: 単体コピー
- C: サブツリー全体をコピー
- x: カット
- v: 下にペースト
- V: 上にペースト
- status切り替え
- f: forward
- b: back
- q: close
- タブ
- システムメニュー
- サインイン/サインアウト
- ユーザーメニュー
- アクティビティ
- ユーザー/グループ...
- アクティビティ
- システムメニュー
- オフライン対応
- すごく欲しいがやらない
- 当初想定より簡単にできるかも
- サーバ
- Activity(activities)
- Status(statuses)
- id
- name
- position
- enable
- ユーザー定義
- デフォルト
- 0: todo
- 1: doing
- 2: done
- -1: close
- done/closeは特別にしたいな……
- 面倒くさいなこれ。固定にしよっかな
- デフォルト
- Group(groups)
- 1ユーザー1グループ作る?
- id
- name
- Membership(memberships)
- user_id
- group_id
- pending
- 操作権限チェックを入れる
- ルート操作の防止を入れる
- /goals/:idを/goals/:hash_digestにする
- User.nickにunique属性つける
- check_descendants!でArgumentErrorにしてるところを独自例外に変える
- on_delete: :delete_allと再帰クエリでどっちが速いか調べる
Memo:
- CSS3 flex
- JSONPath
- JavaScript用: s3u/JSONPath
- こっちは多分要る
- Erlang用: GeneStevens/jsonpath
- こっちはいらないと思うが、1つのゴールを返すとき先祖も付けて返す必要ありそう
- JavaScript用: s3u/JSONPath
- jsでスムーススクロールする方法
- jsでマウスホイールイベントを取得する方法
Programming Phoenix: Productive; Reliable; Fast
- 作者: Chris Mccord,Bruce Tate,Jose Valim
- 出版社/メーカー: Pragmatic Bookshelf
- 発売日: 2016/04/11
- メディア: ペーパーバック
- この商品を含むブログを見る
Clojureを勉強している10
- Making HTTP Calls with ClojureScript and cljs-http
- cljs-httpライブラリはclojurescriptでHTTPを扱うライブラリと。
- core.asyncと組み合わせて使うととってもいい感じ?(英語を雰囲気で読んでいるのでご勘弁)
:require-macros
とかいう新しいのが出てきた。なになに、マクロはClojureScriptじゃなくClojureで書かれているのでこの特別なキーワードを使って参照する、と。- ブラウザ側から非同期でjsonをgetして表示するというのをやった。
- DOM Control with ClojureScript and Enfocus
- Event Handling with Enfocus
- enfocusは
listen
でイベントに関数を登録できる enfocus.events
をrequireしてat
にlisten
関数を渡す。ふむ。できた。- ほう!enfocusはアニメーションまで付いてるのか
- アニメーションを使うには
enfocus.effects
ネームスペースをrequireする fade-out
で無事にフェードアウトできた
- enfocusは
- Summary of Our Clojure and ClojureScript Web Application
- 今までやったことのまとめ。
- まず、Compojureを使って作ったウェブサーバーを起動させた。
- んで、シンプルなhtml textを返すルートを追加した。
- CheshireというJSONライブラリの使い方を学び、JSONレスポンスを返すエンドポイントを作った。
- 次に、RingミドルウェアのJSONライブラリであるring-jsonを使って、自動的にJSONが返るようにした
- ClojureScriptフロントエンドを追加し、cljsbuildを使って設定する方法を学んだ
- んで、cljs-httpを使ってClojureScriptでデータを取得した
- 最後に、Enfocusライブラリを使って、DOMを更新し、ボタンにイベントを登録し、フェードアウトするアニメーションを加えた
- Other Useful Web Development Libraries
- Hiccupというテンプレートライブラリがあると。コード見た感じHamlとかSlim相当だな。
- Enliveってのもあると。こっちは静的なファイルにEnfocusみたいに変更を加えるのか。う〜ん、自分の好みはHiccup、デザイナーと協業ならEnliveみたいな感じかな?
- Liberatorっていうコンテンツ・ネゴシエーション・ライブラリ。クライアントの要求するメディアタイプ毎の場合分けに。
- Liberatorはlast modified timeやetagsも扱うのか。このまま扱うのは細か過ぎるが、フレームワークには同様の機能が載っていて欲しいかんじだな。
- TransitってJSONを扱うライブラリは小さくて速いのか。う〜ん、JavaのByteArrayInputStream/ByteArrayOutputStreamなんかが露出しているなぁ。必要があれば。
- Om。あ、これReactのインターフェースライブラリだったのか。vdomを再発明したものかと思ってた。
- Hoplonってのがどうもフルスタックなウェブ・アプリケーション・フレームワークっぽい。ホビロンっぽい。
- Luminusってのもある。こっちはマイクロ・フレームワークって書いてあるな。
- データベース関連は、java.jdbcがローレベル、KormaがSQL抽象化、YesqlもSQLライブラリ。
- あと、Datomicってイミュータブル・データベースがあるらしい。イミュータブル・データベースってよくわからんな。初めて聞く。
- 第7章おわり。明日は第8章、マクロの話。
- 作者: Carin Meier
- 出版社/メーカー: O'Reilly Media
- 発売日: 2015/04/14
- メディア: Kindle版
- この商品を含むブログを見る