自然なリファクタリング

古いHDDから中学生の頃に書いていた結構な量のコードが発掘された。CやPHPもあったが、殆どがRubyだった。 詳細が分からないのでとりあえず全部PrivateRepositoryに置いてみた。
中には当時書いていたTwitterClientがあって、APIが1.0のままだから現在では動かせないが読めるものだったので読んでみた。微妙な銘々規則や変数名、明らかにコピペされた箇所、起きそうもない例外に対しての冗長、雑な例外処理(これは致命的で笑った)。見ていて結構恥ずかしくなった。
下位のディレクトリに、仕様だと思われるWordファイルが見つかった。今の僕ならどうやるかなぁ、とふと気になたのでちょっと悩むといい感じの設計が見えてきた。
400行近いコードの刷新と、API1.1(というかオレオレAPI)対応が主にやったことだけど意外と時間がかかった。40分くらいで綺麗になって、ちゃんと動くものが仕上がった。同じ機能が148行で提供できた。どうせなら140行で書き上げたかった。*1
改善するのにコードだけでは不十分だというのが分かったので、今後は仕様書ちゃんと書こうと思う。
今回のコード発見では結構面白い気付きがあって、コードや仕様を読んでいて「ここは良くないなぁ」「これは使えるなぁ」っていうのの選択がポンポンできたということ。7年前の僕では出来ていなかったことが、今の僕にはできていて、成長しているのかもしれないなぁと実感した。特に、良くない所を見つけ出す嗅覚(?)と、それに対する改善方法を即座に思い付ける様になっていたことが嬉しかった。
7年間あれば書籍が増えてインプットや知見も増えるし、他人との出会いで触発されたりして、そりゃあ変わるよねってことで。
僕自身も僕や周りの人たちによってリファクタリングされているような、そんな感覚が心地よかった。
数年先の僕ならもっと綺麗で、もっと軽量で、もっといいものを書けたりするんだろうか?と思いながら、現在でも開発の続いている僕の大好きなプログラミング言語で書かれた、僕の大好きなClientのプロジェクトファイルに手を付けることにした。

リファクタリング:Rubyエディション

リファクタリング:Rubyエディション

Rubyベストプラクティス -プロフェッショナルによるコードとテクニック

Rubyベストプラクティス -プロフェッショナルによるコードとテクニック

*1:よく考えたらTwitterは140文字だ。

Redmineの親チケットの期日を変更できない

のが気になったのでとりあえず検索した。

親チケットの特定の項目の値が変更できない — Redmine.JP

結果として子チケットの中で最も期日の遅いものに合わせていることが分かった。(そりゃーそうだよねって感じ)親チケットに期日を直接与えることも設定次第では可能なことが分かったけど、よっぽとな理由がない限りデフォルト設定のままで良さそう。

 

コップ本の話

 

Scalaスケーラブルプログラミング第3版

Scalaスケーラブルプログラミング第3版

 

 Kindle版買ったけど、殆どの本では使える検索機能とか色々使えなかったのでしんどい。大人しく書籍版を買おうか悩んでいる。ただそうなると総額8000円の出費なので痛い。痛みに耐えれる経済力が欲しい。

Scala書けるようになればペイできそうなので買うんだろうけど…。

持ち歩けるホワイトボード(ヌーボード)貰った

どうした

ヌーボードというノート型ホワイトボードを頂いて、使ってよかったので共有したくて書く。

ヌーボードとは

ノート型のホワイトボード。 4枚、両面で計8ページ使える。
ページとページの間に半透明(半透明だけどちゃんと文字は透過する)のフィルムがあって、閉じていても擦れて書いた事が消えないようになっている。
閉じてるときは開かないように、右下にあるゴムバンドによって抑えが効く。

CANSAY nu board ヌーボード A4判 NGA403FN08

CANSAY nu board ヌーボード A4判 NGA403FN08

出会い

バイト先で1人に1冊支給されるので使っていたけど、私用では持って無かったのでずっと欲しかった。
買うのはなぁって思っていたので貰えてとても喜んでいる。

詳細

  • ホワイトボードマーカーが1本付いてくる
    • Pilot ボードマスターS
    • P-WMSRF8というカートリッジを買えば交換可能
    • 極細なので書いてていい感じ(主観)
  • A4以外にも新書サイズやA3サイズがある
  • 表紙が紙っぽいけど、たぶんこれプラスチック

むすび

小さめのホワイトボードにしては若干値段が高く感じるかもしれないけど、ちょっと書いて持ち歩けることや、サッと消せるホワイトボードの利便性を併せ持った製品なのでとても買いだと思う。
自分でも新書サイズのものを買ったので、周りに布教させたい。

CANSAY nu board LIGHT (ヌーボード・ライト) イエロー NULT01YW04

CANSAY nu board LIGHT (ヌーボード・ライト) イエロー NULT01YW04

CANSAY nu board ヌーボード 新書判 NGSH03FN08

CANSAY nu board ヌーボード 新書判 NGSH03FN08

Zenfone3 7.0にしたらシャッター音が消えない問題(解決済)

設定方法

設定 

音 振動 

ボリュームの同期をオフ

カメラ再起動

 

どうした

Zenfone3(海外版)にAndroid7.0(ヌガー)が降ってきた。30分くらいで更新が終わって色々弄っていたところ、純正カメラアプリでシャッター音が消せないので試行錯誤した。

結局ボリューム同期という機能によってシャッター音も連動してオンに成るようだったので、同期切ったら止まった。参考までに。

プログラミングElixir 読んだ

大学図書館のを読み終えた.
貸し出し期間中では読了できなかったので結局Kindleでも買った.

プログラミングElixir

プログラミングElixir

前に英字版を読んだことがあったけど,母国語で書かれていたぶんこちらの方がすらすら入ってきた.英字版の最新のものはVer1.3についても言及されているらしいので機会があったら読みたい.(キャッチアップが足りないので変更点をあまり良く知らない。)

読んだ経緯は,ホットデプロイが容易に*1可能な言語とされているErlangを学ぼうとして,Rubyライクな公文でbeamを使える本言語の存在を思い出したからである.成果として一応軽くSNSアカウントの死活監視スクリプトのようなものを作るまでは出来た,GUIはどうすればいいのか分からないので考えている.Phoenix使ってブラウザ上で表示出来たら便利そう.

開発環境の構築までが厄介だったので,それについてはもう少し時間のあるときに纏めて書きたい.
まだ確立できていない.

*1:僕からしてみればまだ難解

近況

本来なら4月に書くらしいのですが,まぁいつやっても変わらんだろうというスタンスで書きます.
B2になりました.単位がほしいです.
去年からフェードアウト気味だった某プロジェクトとかの参加は無理だろうなぁと半ば諦めていましたが,まだ居てもいいよ.というような温かい言葉をもらえたので体調も戻って,落ち着いた頃頃に戻れたらなぁと考えています.参加するからには結果を残したいです.
学科の方でもプロジェクト(?)のようなものが立ち上がったのでそちらには参加しています.自由な雰囲気があって僕は好きです.

技術習得ですが,春休みが明ける少し前からElixirの学習を始めて,Erlangで軽い監視ツール作りました.耐障害性の強さに定評があるだけのことはあって,ちゃんと書けばコケません.
最初はWebフレームワークであるphoenixを使うためにやってみましたが,それよりもErlangの並行処理指向のStyleに惚れたので今はこちらがメインです.
その他の技術としては,自動車運転免許習得の為に教習所に通い始めました.夏までに取れたらいいなぁと考えています.
FEも追々狙います.


書きたいことが上手く文書化できてない気もしますが.
そんなこんなでまとめると,僕は元気です.元気の度合いにもよりますが.