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

Done:

  • ブラウザ
    • mocha/power-assertの導入
    • ispartaの導入

Todo:

  • ブラウザ
    • コンポーネント
    • TreeModelを継承したモデルを作ってsiblings関係の関数を生やす
    • 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)
      • id
      • goal_id
      • user_id
      • backup(json)
      • diff(json)
    • 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と再帰クエリでどっちが速いか調べる
  • TWITTER_REDIRECT_URI必要なさそう

Memo:

Programming Phoenix: Productive; Reliable; Fast

Programming Phoenix: Productive; Reliable; Fast

Clojureを勉強している15

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

Living Clojure

Living Clojure

  • 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

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

Done:

  • ブラウザ
    • フォーカス移動時、要素が中央にこないのを修正
    • スムーススクロールやめたらガクガクしなくなった

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
    • タブ
      • システムメニュー
        • サインイン/サインアウト
      • ユーザーメニュー
        • アクティビティ
          • ユーザー/グループ...
    • オフライン対応
      • すごく欲しいがやらない
      • 当初想定より簡単にできるかも
  • サーバ
    • Activity(activities)
      • id
      • goal_id
      • user_id
      • backup(json)
      • diff(json)
    • 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:

Programming Phoenix: Productive; Reliable; Fast

Programming Phoenix: Productive; Reliable; Fast

Clojureを勉強している14

今日はスタートが遅かったので1日分で終わり

  • Week 2
    • Day 1
      • おなじみフィボナッチ数列がなぜかできなくて、ンゴーンゴー言ってたら0からじゃなく1から始まるバージョンだった。
      • 全部自力で解けたぞう(言語リファレンスは見ながら)

Living Clojure

Living Clojure

  • 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

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

Done:

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

Todo:

  • ブラウザ
    • 親から子に移動するとき、孫があるとスクロールがガタガタするのを直す
    • keydownイベントの位置を変更
    • 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)
      • id
      • goal_id
      • user_id
      • backup(json)
      • diff(json)
    • 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:

Programming Phoenix: Productive; Reliable; Fast

Programming Phoenix: Productive; Reliable; Fast

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
    • タブ
      • システムメニュー
        • サインイン/サインアウト
      • ユーザーメニュー
        • アクティビティ
          • ユーザー/グループ...
    • オフライン対応
      • すごく欲しいがやらない
      • 当初想定より簡単にできるかも
  • サーバ
    • Activity(activities)
      • id
      • goal_id
      • user_id
      • backup(json)
      • diff(json)
    • 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:

Programming Phoenix: Productive; Reliable; Fast

Programming Phoenix: Productive; Reliable; Fast

Clojureを勉強している13

  • How Do I Use This Training Plan?
    • 1週5日、7週間、即ち35エクササイズで終わるトレーニングプランとのこと
    • 最初の3週間は4Clojureというウェブサイトの課題を解く
      • 穴埋め形式っぽい
    • 次の3週間はルイス・キャロル不思議の国のアリスにインスパイアされたプロジェクトベースの課題を解く
    • 最後の1週間は自分自身のアプリを作ってHerokuにデプロイするとこまで
      • う〜ん、1日3エクササイズを目標にやってみようかな。12〜13日で終える予定で。
  • 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
      • 正規表現出てきた。#"[A-Z]+"みたいに文字列のブレースの前に#を付けたら正規表現とのこと
      • F#やElixirの|>みたいな->出てきた
      • ->>も出てきた。こっちは最後の引数に当てはめる
    • Day 4
      • mapcat...
    • Day 5
      • なかなか厳しい。ググッて答え見たりした。堪え性がない。アカンね。

Living Clojure

Living Clojure

  • 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