コンピュータやソフトウェアのあれこれ@道民(&元道民)
Archive for 6月, 2011
仕事
6月 5th
仕事
今日もデバッグ作業のお手伝いをしました。ちょっとした修正なんだけど数年前に書かれたマジックナンバーや文字列べた書きな箇所の修正だったので、時間がかかってしまった。TDDとかそれ以前の問題だよなー、って思った。定数定義やメソッドを小さくするってのはほんと大事。
[Java札幌][TDDBC][TDD] TDD Boot Camp 札幌 2.0 開催しました!(運営編)
6月 5th
TDDBC@Sapporo02 に行った
6月 4th
TDDBC@Sapporo02 に行った
テスト駆動祭に行ってきました.今日は誕生日でコンサドーレ札幌が勝ってTDDBCがあるなんてなんという贅沢な日だったんだろう.
個人的にはコミットログの英文とトピックブランチの名前付けをなんとかせねばなるまいなぁと思いました.あとEmacsでなくてもRubyでなくてもUS配列じゃなくてもSKKじゃなくても言い訳しない.こんな感想でいいのだろうか…
今回もまた楽しかったです.講師してくれた @t_wada さん,企画してくれた @shuji_w6e さん,ペアプロしてくれた @irasally さん,Ruby 用のレガシーコード書いてくれた @sumim さん,一緒にチーム組んでくれた @tricknotes さん @zonu_exe さん,そして参加者のみなさんありがとうございました.
Rubyチームまとめメモ
今日やったソースコードのgitリポジトリ
やったこと
- autotest 使えるようにした
- Database仕様化テスト
- Databaseリファクタ
- Book#to_byte仕様化テスト
- Book#to_byteリファクタ
Keep
- 考えの共有
- 自分の考えを伝えて,承認してもらうのは良かった
- これからやろうとする意図から話せた
- やろうとしている事が仕様化テスト/リファクタリング/機能追加のどれなのか明確に作業してた
- 集中して直す所を3人で共有できた
- 最終的にどういう風に直したいかを提示して,その後階段を作って登っていけた
- 環境
- おかし
- 唐揚げ弁当
- 集中できた
- 3人良かった
- ツール
- Ruby はテストが書きやすい
- growl いいよね
- magit のブランチ履歴めんこい
- Rspec の shared_example を覚えた
- niku's Emacs
- git
- 1test1commit
- topic brunch
- 普段やってない人と開発できた
Problem
- Rspec自体の話があまりできなかった
- コミットログ英語迷うわ…
- 達成感のある所までできなかった
- Emacs の良さが伝えられなかっただろうか…
Try
- Rspecの哲学を盛り込みたい
- Rspec を覚えたい
- コミットログがサクっと書ける英語力
- 休憩をもう1回くらい取ってもいいかも
- Twitter と連携してたのいいな
- リモートリポジトリにpushする(?)
- vimでやろう
- JIS配列でやろう
- Emacs 環境構築
- もう少し助けを求めても良かったの…かな
- カバレッジを取る
今日はxibファイルを修正するような..
6月 4th
今日はxibファイルを修正するような簡単なバグ修正のお手伝いをした。チームリーダーの役割を担当しているので本当はデバッグしてはいけないんだけど、バグの報告件数が多いので少し手伝いました。でも自分の中で決して難易どが高いものには手をつけないというルールだけは引いた。だって修正するのに時間がかかりすぎるかもしれなし、バグを埋め込むことになるかもしれないからね。
[備忘録]readlineでコケるとこなど @yokohama.rb#9 + 所感
6月 4th
只今yokohama.rb にきております。
今日の流れは、
1.githubでアカウントをつくる
2.gitをつかってみる
3.rails プロジェクトをつくってみる
4.herokuにデプロイ
3.まではすべてやったことがあったんですが、
$ heroku create
を実行すると、
`require': no such file to load -- readline (LoadError)
と怒られました。
今まで使っていた rvm で使っていた ruby-1.9.2-p136 での readline 導入を
以下のサイトを見つつ頑張ったんですが、ダメだったので新しく ruby-1.9.2-p180 をインストールする時に、
readline を含めてコンパイルするようにして、gem の移行を行うことですべて解決しました。
openssl や zlib 関連でもよくコケるみたいだから、そっちも入れてコンパイルすればよかった。と後悔
こんな流れです。
$ rvm install ruby-1.9.2-p180 -C --with-readline-dir=$HOME/.rvm/usr
$ rvm gemset copy 1.9.2-p136 1.9.2-p180@global Copying gemset from 1.9.2-p136 to 1.9.2-p180@global Making gemset for 1.9.2-p180@global pristine.
これで、次回同じようなエラーが出ても rvm での環境構築に立ち向かえそうです。
これから 20:45 までの間に以下を参照して Rails3.1 を触ってみようかと思っています。
http://twitter.com/#!/joker1007/status/76966518818213889
http://twitter.com/#!/joker1007/status/76968297807089664
http://firn.jp/2011/04/19/rails3-1-1
[参考サイト]
http://d.hatena.ne.jp/TrinityT/20110122/1295685900
http://d.hatena.ne.jp/rochefort/20110102/p1
はじめての yokohama.rb から帰宅しました。
懇親会含めてとても楽しかったです。こんな Reply もいただきました。
http://twitter.com/#!/a_matsuda/status/77024033731915776
[所感]
自分は、 sapporo.rb を出発し、 asakusa.rb を経由し、 yokohama.rb に参加してみました。
今思えば、せきゅぽろを始発で出て、まっちゃさんの勉強会にたどりついて、 LOCAL に入って Ruby に入ってと
大したことできない割にいろんなコミュニティによくしてもらったなと感じています。
こんなこと感じたのも、今日の yokohama.rb がコミュニティ初参加だった方がいたから。
懐かしい感じがしました。
懇親会で自分の就職活動についても話しましたが、
コミュニティ活動が及ぼした影響はとても大きかったと思っています。
これだけは絶対にブレない。
北海道でLOCALに関わり始めたみんな、いいことあると思いますよ。
自分の話すこと、やることに自信をもつことや、自信をもっていいんだ
ということに、今回も気がつかされました。
本当に勉強会にはいろんな力をもらっています。みなさんありがとうございます。
[備忘録]readlineでコケるとこなど @yokohama.rb#9
6月 4th
只今yokohama.rb にきております。
今日の流れは、
1.githubでアカウントをつくる
2.gitをつかってみる
3.rails プロジェクトをつくってみる
4.herokuにデプロイ
3.まではすべてやったことがあったんですが、
$ heroku create
を実行すると、
`require': no such file to load -- readline (LoadError)
と怒られました。
今まで使っていた rvm で使っていた ruby-1.9.2-p136 での readline 導入を
以下のサイトを見つつ頑張ったんですが、ダメだったので新しく ruby-1.9.2-p180 をインストールする時に、
readline を含めてコンパイルするようにして、gem の移行を行うことですべて解決しました。
openssl や zlib 関連でもよくコケるみたいだから、そっちも入れてコンパイルすればよかった。と後悔
こんな流れです。
$ rvm install ruby-1.9.2-p180 -C --with-readline-dir=$HOME/.rvm/usr
$ rvm gemset copy 1.9.2-p136 1.9.2-p180@global Copying gemset from 1.9.2-p136 to 1.9.2-p180@global Making gemset for 1.9.2-p180@global pristine.
これで、次回同じようなエラーが出ても rvm での環境構築に立ち向かえそうです。
これから 20:45 までの間に以下を参照して Rails3.1 を触ってみようかと思っています。
http://twitter.com/#!/joker1007/status/76966518818213889
http://twitter.com/#!/joker1007/status/76968297807089664
http://firn.jp/2011/04/19/rails3-1-1
[参考サイト]
[備忘録]readlineでコケるとこ
6月 4th
只今yokohama.rb にきております。
今日の流れは、
1.githubでアカウントをつくる
2.gitをつかってみる
3.rails プロジェクトをつくってみる
4.herokuにデプロイ
3.まではすべてやったことがあったんですが、
$ heroku create
を実行すると、
`require': no such file to load -- readline (LoadError)
第16回FormalMethods勉強会に行ってきた
6月 4th
「Monad攻略戦」と聞いたので、参加してきました。
Type Class in Coq / @tmiya_ さん
- On Understanding Types, Data Abstraction, and Polymorphism
- universal Polymorphism 個別実装なし
- parametric : ML系の多層型
- inclusion : サブタイプ、継承
- ad-hoc Polymorphism 個別に実装が必要
- overloading 名前が同じだが無関係
- coercion 期待される型に自動で変換
- 今日の話は、ad-hoc の方
- universal Polymorphism 個別実装なし
- Hask圏におけるモノイド対象
- Coqでは、型クラスとして定義できる
- M:Type -> Type, 公理もモナド型に含められる
- left_unit, right_unit, assoc を公理とする
- >>=, と do は Notation で定義可能
- M:Type -> Type, 公理もモナド型に含められる
- 一番簡単なモナド id'
- 【演習】return' と bind を定義後、Proofモードでモナド測を証明する
- 最後はDefined で閉じる(Qed だと、内部が見えなくなるらしい)
- Maybe モナド (Coqではoption型のこと)
- 【演習】同様に証明
- 【演習】None >>= (fun x => Some (x + 1)) を実行してみる → None になる
- Listモナド (flat_map を使う)
- 【演習】同様に証明
- MonadPlus ・・・ :> にてMonadを拡張。
- MaybePlus(Maybeをmonadフィールドに持つ)
- 【演習】MonadPlus測の証明
- 「@」は明示的に型を指定するの意
- 同様に、ListPlus
- 継続モナド
- CPS変換は、(A->R)->R。Rを⊥とすると、¬¬Aのこと。
- eta_expansion → f = (fun x => f x)
- extensionality → functional_extensionality により定義。
- (forall x : A, f x = g x) -> f = g 外延性
- まとめ : Type ClassはJavaのインタフェースのようなもの。公理を入れられるのが強力。
Coq への道 - 道なかば編 / 佐藤 大輔さん
- 初めてのCoq (intros、apply などなど)→ さっぱりわからない
- 証明とは? → 公理 Pi(i = 1, 2, ...) と 推論規則
- 例: 星形の頂点の角度の和は180度
- Coqの証明は、公理の列には見えない・・・
- 公理群を操作しているのではないか
- 指摘『「公理」ではない*1』
- 証明の手順
- 公理や定理、推論規則を適用する
- よく使われるtacticsの紹介 → intro(s?), split, right, left, apply, rewrite, destruct ,unfold, assert, replace, exact, assumption, reflexivity, exists
- split 連言の分離, right 宣言の選択, apply 三段論法, rewrite 置き換え
- destruct 仮定の分離, unfold 定義の展開, assert レンマの導入, replace A with B 変数の導入
- exact 前提とゴールが一致, reflexivity A=Aの形
- Coqの難しさ
- 天才幼稚園児に数学を教える気分 → 実数における100<>0も厳密な証明が必要
- 補足『ユークリッド幾何はライブラリがあるが、壮大』
- 例: 調和級数が発散することの証明 (未完成)
- ∞の定義がない → 補足『∀n, ∃N, x > N → P x > n』
- 自然数と実数が混ざっている
- Function は証明しにくい
- 補足『Function より帰納的に定義するといいかも。』
- 微積がCoqでは使えない(微分のライブラリはあるけど積分が見つからない)
- 数列の全要素が正であることの証明ができてない
- 補足『P 1 -> ((∀n, P(div2 n)→P n)→∀n, P n みたいな帰納法の方が合いそう』
- 補足『Rsigma は使えないのか。級数のライブラリ。』
- 補足『Coqのライブラリサイトはしばしば落ちるので、DLしておいた方がよい』
monads.clj / @kencobaさん
- monads.cljとそのTEST
- このMaybeモナドの定義はモナド則を満たさなそう
- (fn f [x] 1) について (m-bind (m-result nil) f) と (f nil) が一致しない
- clojure は nil は () ではない
- このMaybeモナドの定義はモナド則を満たさなそう
ProofSummit2011のお話
ProofSummit2011にどなたに登壇して頂きたいか、など。
- ACL2(Common Lisp)のrev-revネタ。ただし、equal内が逆だと難しかったりするのがACL2の癖らしい。
- Isabelleは初学者向けかも? autoが賢い。
- Qi
合わせて読みたい
- 公式の議事録: #fm_forum no.16
*1:premises
勤続5年の表彰があったので振り返ってみた
6月 1st
勤続5年の表彰があったので振り返ってみた
昨日はお休みということもありメールの受信件数が半端なかった。その中には急ぎの問い合わせやそうでないものなどいろいろあったけど、淡々と処理している最中でした。そうすると突然勤続5年表彰が行われました。「へっ?」といった感じでしたが金一封をありがたくいただきました。 今の会社に転職して5年が経ったのだけど、あっという間の時間だった。 転職したときはWebのことはおろかLinuxやDBなどわからないことだらけで とっても苦労したことを思い出します。時には一瞬この業界は向いてなさそう だから辞めようと思った事もありました。が、辞めるのは簡単なのでなんとか 歯を食いしばり3年くらい頑張っていたら
自分のできる範囲の仕事がとても広がっていることに気がつきました。
この3,4年目あたりに自分のエンジニアライフに転機が訪れました。 初めてWebアプリを作るというプロジェクトにアサインされました。 環境は以下でした
- Ruby(Rails)
- JavaScript
- MySQL
- Linux
とりあえず全部知らない技術でとても厳しかったなぁ。そもそもWebアプリ作るのも 初めてだし、Linux でコマンドもほぼ叩けなかったなー。いやー、今考えてみてもよく作ったと思う。
この次のプロジェクトは
@tmaedaさん + Mac なプロジェクトにテストリーダーとしてアサイン されたプロジェクトでした。これがリーダー業の始まりでとても勉強に なったのは今でも忘れません。 右も左もわからない状態でテストチームの面倒みたり(そういえばメンバーは全員社外の人だったな)、 お客さんやPMである前田さんと折衝したりと大忙しでした。 でも一番辛かったのは使用が固まってない部分があったりして、「何テストするんすか?」状態だったことかな(笑)。 という状態だったけど納品は問題なくできたんだな。開発側のメンバーもみんなすばらしかったのもあるね。 で、僕にとって一番嬉しかったのは、お客様と打ち上げしているときに、テストに関することでとても信頼して もらっていることがわかったことでした。
書くと長くなるので後は要点だけまとめることにする(笑)。 このプロジェクトに関わったと同時に以下の点が変わっていきました。
- しまださん、しだらさんと知り合い影響を受け始める
- いつの間にか前田さんに変わってプロジェクトを丸っとまかされるようになった
- Ruby勉強会を中心に外の世界へ視野を広げるようになった。
- RubyKaigi に参加するようになった
- RubyKaigiの当日スタッフやったり、札幌Ruby会議の実行委員やったり
- Mac大好きになったり
- 本をたくさん買うようになった
- Ruby と Mac を使うようになり仕事が楽しくなった
- 勉強会やイベントを通じて仲間や友人が増えた
- レンズに興味を持つようになった
う〜ん。なかなかいろいろやってきたなーって感じです。
また、明日から精進して楽しんで仕事していきたいと思います。