Raspberry Pi3を勢い余って買ったので無線LAN APにしてみる
気合でしました。ansibleにしてあるので実行すればたぶん動きます。 OSはnoobのほう。参考サイトとかは書いてある通りです。
注意点
- 無線LANの口(wlan0)から受け取ったのを有線LANの口(eth0)に流してるので当然有線LANの接続が必要です
- タグうったときには書き忘れてたけどhosts書いてください
- hostsのグループ名をgizehから変える場合はsite.ymlのhostsも変えてください
gizeh/roles/wifi/templates/etc/iptables.ipv4.net
はもしかしたら動かないかもです。- みた感じ動く気がするけど……
- 参考サイトの "SET UP IPV4 FORWARDING" の項目に該当するので手動でやり直してみてください
- SSIDはgizehになります
- 変えたいときはここを変更
電子工作とかやるぞーっていうよりは適当なlinuxサーバとして使うつもりです。
でもアクセスポイント化すると前述のように有線LANの接続が必要になってケーブルがうざったいのでオフにする予定。 上のgithubのリンクはタグを見るようにしてるんでたぶんいつでも有効です。
yarnをnpm i -gでインストールしようとしたら怒られた
タイトルどおりです。
$ npm i -g yarn npm WARN deprecated yarn@0.17.10: It is recommended to install Yarn using the native installation method for your environment. See https://yarnpkg.com/en/docs/install
npmじゃなくてネイティブのパッケージ管理を使おうねと言われています。
OSXならbrew、Ubuntuならapt-getとかそういう話です。
これなんでだろって思ってたら公式に答え書いてありました。
Install via npmのところ。
Note: Installation via npm is generally not recommended. npm is non-determinstic, packages are not signed, and npm does not perform any integrity checks other than a basic SHA1 hash, which is a security risk when installing system-wide apps.
For these reasons, it is highly recommended that you install Yarn through the installation method best suited to your operating system.
npmでインストールするのは通常オススメできない。なんでかっていうとnpmは非決定的で、パッケージが署名されておらず、SHA1ハッシュ以外の正真性チェックを行わないから。
というわけでbrew installとかでいれましょう。
第30回 西日暮里.rb オブジェクト指向設計実践ガイド読書会 に参加してきました
読書会第一回から2週間が経過して、読書会第二回が開催されたので参加してきました。
内容
今回は第三章、第四章が対象でした。第三章は依存関係の管理について、第四章はインターフェースについてです。とはいえ今のまとめは語弊があって、「依存関係の管理」はオブジェクト指向のキモであると筆者が書いたように本書全体で扱うテーマなので不適切です。第三章では特に依存関係とはなにか、どのような依存関係が望ましいのかという点について説明しています。第四章の"インターフェース"も、2種類ある"インターフェース"のうちの片方にしか触れていません。2種類あるというのは、1つは「ある1つのオブジェクトに対して送信できるメッセージの定義群」としての意味で、もう1つは「複数のオブジェクトに対して同じようにメッセージを送ることができるようなメッセージの定義」としての意味です。ざっくりいうと、前者が1つのオブジェクトがもつメソッドのシグネチャのまとまりで後者がJavaのインターフェースです*1。第四章では前者についてどのような定義がよいのか、何を考慮すべきかについて説明しています。
以下、トピックとして気になったものについてかいていきます。
依存関係の認識
本書では依存関係とは何かについて具体的に例を挙げて説明している。 あるクラス内にクラス名がハードコードされていたらそれは当然依存関係であるのだが、それ以外にも初心者が気が付きにくいものがあげられていた*2
依存関係の方向を意識するのが大事なのはひしひしと伝わってきたのだけれども、ここでRubyの言語仕様的な難しさを感じる。Javaだとファイル単位でimport文を書くのであるファイルがどのパッケージに依存するかは宣言的。一方でRubyのrequireはファイル単位ではなくグローバルに影響を及ぼすので依存関係を意識する機会が少ないというのはあるとおもう。
コンストラクタで処理する
これは本の中にある変更に対する反論として挙がっていたのだけれども*3、あるクラスが他のクラスに依存してる場合、それを明示するためにコンストラクタ内で見せたほうがいいんじゃないかという話。
遅延初期化は生成コストがバカにならない場合のみにすべきで普通のインスタンス変数は initialize
メソッドで初期化したほうがいいのでは、という意見があった。
この指摘はたしかにそうかもなと納得したのでとりあえずメモ化みたいなのはやめる。
西日暮里.rbは今後も2週間に1回くらいのペースで「オブジェクト指向設計実践ガイド」の読書会を開催していくようなのでよければ是非。月曜日夜20時からで最寄りが秋葉原なので参加もしやすいと思います。なお次回は第五章と第六章の予定で第五章では動的型付け vs 静的型づけのセクションがあるので最悪の場合死に至るかもしれません。
近況
つらつら書く
本
漫画
シリーズ揃えてるやつから。
- 大砲とスタンプ1〜4巻
- 東京喰種無印版1〜14巻
- 石田スイはwebコミ読んでて一般デビューしたのもしってたけど忘れてた
- 飲み会で話題にあがったので読んだ
- 亜門萌え
- まだ1周しかしてないのでまたゆっくり読みそう
- 王様達のヴァイキング1〜10巻
- からかい上手の高木さん4巻
- 脳が溶けた
- 4巻の高木さんすごくてほんとにすごい
- テンションが上がりすぎて読んでたら足がつった
- あしたは土曜日の春夏と秋冬も読んだ。よかった。心があたたまる
- ヴィンランド・サガ1~18巻
- あの娘にキスと白百合を1〜5巻
- 白峰さんよりは黒沢さん派なんですけどいちいち出て来るキャラが立っててすごくよい
- サブキャラだと自転車通学のエピソードと広報委員会のエピソードがよかった
- これも周回候補
- AIの遺電子3巻
- 須藤先生の過去をちょこっとやった感じだけどこれいつまで続くんだろう
- 無難な面白さなので買ってる
- 3月のライオン1〜12巻
- 1〜11は読んでたけど盛ってなかったのでこの機会に一気買いした
- 変わらずよかった。れいくんの無自覚高飛車な感じがよい
- アニメ1、2話だけみて、シャフ度出ないなーって思ってたけど二階堂だけシャフ度で笑った
- 亜人ちゃんは語りたい4巻
- 安定の面白さ
- サッキー幸せになってほしい
まだ1巻しか買ってないやつ
- 上野さんは不器用1巻
- 青春のアフター 1巻
- 緑のルーペ先生の。一般デビューしてたの知らなかったです
- 1~3話で心をグサグサえぐってきたのでつらかった
- 続き絶対買う。そろそろ完結らしい
- かぐや様は告らせたい 1巻
- 恋愛心理バトルギャグ漫画
- おもしろかったけどなんか物足りなかったので続きはいいかなって感じ
- キャラがあんまりツボにハマらなかったのかもしれない
- ちおちゃんの通学路 1巻
- ハイテンションコミュ障アクションギャグ漫画
- 面白かったけど続き買うかっていうとちょっとわかんない
- Kindleの発色と絵面があんまりあわない気がする
- 徒然チルドレン 1巻
- なんか異常に安かったときがあって買った
- 面白いが続きは別になくてもいいかなって思ったのと前にwebで見たなあという気持ちが強く残ってしまった
- 九井諒子とかはwebで見たぞって思いつつも買ったけど
- りぶねす 1巻
- なんか異常に安かっt
- 続きは別になk
- webでは見てない
not 漫画
- 1日で読めてわかるTCP/IPのエッセンス
- 普通に忘れてるので勉強になった
- 読者ハ読ムナ(笑)
- 藤田和日郎の新人アシスタント育成術の本。いま6割くらい。
- 中盤からは創作に特化した話だけど序盤は一般論としていいこといってると思う
- オブジェクト指向設計実践ガイド
- ちょっと積み気味。漫画読みすぎのため
- 勉強会いくのでちゃんと読みますすみません……
近況書くつもりだったのに最近読んだ漫画を羅列しただけで終わってしまった。まあこれが僕の近況ということで。
読書会でガヤガヤしてきました - 第29回 西日暮里.rb オブジェクト指向設計実践ガイド読書会
先日出版されました「オブジェクト指向設計実践ガイド」の読書会に参加してきました。
一言で言うと最高でした。
本についてはまあいまさら僕が説明するまでもない気はしますが、Sandi Metzルールで有名なSandi Metz氏が書いた本の和訳です。
原著は5年前に出版されていたそうですが先日和訳版が出版されました。
翻訳者であるtaiki__tさんが西日暮里.rbのオーガナイザーをやっているということでせっかくだから翻訳者を交えてやっていこうぜというイベントだったようです。
読書会というのの形式で一般的なのかはよくわかりませんが、今回は読む時間をとって、付箋になんやかんや書いて、貼って、ざっとトークするというのをやりました。
予習済みの想定なので読む時間は、あんまりとってなかったです。たぶん1章10分くらい?
僕は5章か6章まで読んでたんですが、その状態で1章2章をパラ見するという経験をして、それだけで結構面白かったです。
トーク部分は、ちょっと脱線することもあったけど言いたいことを言えたし聞きたいことを聞けたしという感じで大満足です。
付箋にはなんでも書いてよかったのですが、大別すると「わかる」「これみんなは実際どうしてんの?」「これさすがにおかしくね?」の3つくらいのレベル感のものがありました。
2つ目は、まあたとえば定量的な計測の難しい感覚的な部分についてどう思うかという質問であったりとか、チーム開発でこれを実践していくためにはどうやってます?とかそういう話でした。
トーク的に広がりがあって面白かったのは2, 3はまあそれぞれ言いたいことがあるので盛り上がって、あと1には具体的な事例がついてるとネタとしてよさそうです。
本に書いてあってそうだよね〜〜〜わかる〜〜って程度の部分はトーク的にはさらっと流してよさそうだなと思いました。 *1
トーク内容で特に記憶に残ってるのは、「メソッド分割しすぎって思うことがある」という話。
いままで「でっかいメソッドは悪。殺すべし」ということは教わってきたけど「分割しすぎ」って言われたことがないのでふーんって感じでした。具体的なコードをみて話したわけではないので、どういうレベルのものを指していっているのかが気になりました。
あと、僕以外だれも付箋つけてなかったけど本の中にある『オブジェクト指向とは「依存関係を管理すること」です』ってフレーズがあってかっこいいなって思いました。
「オブジェクト指向って何?」って聞かれたらどう答えるだろう。特に思いつかないけど。メッセージパッシングだよとかいってごまかしそう。
復習がてら読み直すにはいい会だったので第3章以降も開催されるといいなって思います。ぜひぜひ。
余談ですが買うなら物理本かgihyo digital publishing版がよさそうです。
Kindle版はコード部分のフォントがプロポーショナルで、しかも元ソースが =
でアラインするタイプのフォーマットなのでクソ読みづらいです。
追記
あんまり本の内容を書きすぎてもよくないかなとおもって基本的には書かないようにしていたのだけど、どうもSandi Metzの主張と食い違うところがあったのでそこだけは書いておくことにした。
クラス内からのインスタンス変数アクセスもメソッド呼び出しを経由せよ、という内容があった。
その恩恵の例として、ちょっと値を変更したときにも呼び出す側のコードを変更せずに済むので保守性が高いというのがあった。
class Foo def bar @bar end def some_method puts bar end def another_method puts bar * 2 end end
変更するとこんな感じ
class Foo def bar "bar: #{@bar}" end def some_method puts bar end def another_method puts bar * 2 end end
ここについて強く主張していたのはmtsmfmさんだったと思うけどこのコードはよくなさそう。
インスタンス変数 @bar
がある場合に bar
メソッドはインスタンス変数 @bar
を返すと期待してしまうけど実際は違う値が返ってくるから。驚き最小の原則に反する気がする。
@bar
にナニカ変更を加えた値を使うなら例えば bar_inspection
とかそういう別名メソッドを生やすべきでしょうよって感じの主張で、うんうんその通りだわって思った。*2