2014/09/24 今日読んだもの
あまりにも忘れすぎるので、毎日読んだものを記録するように努力する
テキストからの評判分析と 機械学習
http://www.iip.ist.i.kyoto-u.ac.jp/sigfpai/past/sigfpai73-kaji.pdf
少し古いけど、昔読んだのを再読
Option型のmapとflatMapがようやくわかった(Scalaの話)
Scalaを始めて1ヶ月と少し。Option型のmapとflatMapを使う場面が現れ、一体こいつが何なのかを理解するのに時間がかかった。
mapは、A => B の関数を引数に取る。Option[A]の中身を取り出して、Some(A)の場合はA => B を適用し、Option化して返す。
内側でやっていることは
@inline filan def map(f: A => B): Option[B] =
if(isEmpty) None else Some(f(this.get))
で、一番頭を悩ませたのがflatMapで、一体こいつは何のために居るのかで悩んだ。
flatMapの定義はこんなかんじ
@inline final def flatMap[B](f: A => Option[B]): Option[B] =
if(isEmpty) None else f(this.get)
Chinachuも乗っかってるサーバーも安定しないので、とりあえず更新してみた
酔った勢いで何も考えずに次のコマンドを使ってみた
./chinachu updater
せっかくオープンソースなのだから、更新する前に簡単にコミット履歴とか読むべきなんだろうが、なんか録画失敗した勢いでがーっとやってしまった。
願わくば、次の予約コケないでくれ……
Scalaで日本語使ってずっこけるのは、Javaの設定がイマイチだから
scala.io.Source でfromFileしてからgetLinesやったら日本語の行でお亡くなりになったので、きちんとJava側の設定をやっときましょうごめんなさい
echo 'export JAVA_OPTS="-Dfile.encoding=UTF-8"' >> ~/.bashrc
source ~/.bashrc
Scalaの世界に入門する
Scalaを始めることにした。
去年から考えていたけれど、そろそろ真面目に関数型のアプローチに触れなくては、今までの自分の中で創り上げてきたなんちゃって関数脳から逃れられないと思ったから。なので、オブジェクト指向と関数型の両方のアプローチを採りつつ、関数型が推奨されるというScalaを使うことで、上手くオブジェクト脳を使いながら関数に脳を拡張していこうと決めた。
教材は、コップ本。
あと、勉強を後から見返すために、Githubに勉強用リポジトリも用意。
DebianのChinachu(録画)サーバーにUSBでHDDを増設した
録画サーバーはコンパクトにまとめようと思っていたので、当初HDDは2.5インチの500Gを選んだ。 どうせネットワーク経由でつながっているし、HDDがいっぱいになってきたらどっかの外付けに移せばいいと思っていたが、色々と問題が出てきたので、サーバーに外付けHDDを刺してとりあえずしばらくの間は凌ぐことに決めた。
買ってきたHDDは、Seagateの2TのHDDで、外付けケースはGroovyの35SATA-U3-BK。これで3台目の外付けケースだが、選んだ理由はUSB3.0対応と、並べた時にカッコ良さそうなデザインだから。 だが、録画サーバーはUSB2.0ポートしか無いので、近いうちにサーバーのリプレースか、それとも他の解決策を模索しなくてはいけないだろう。
LinuxにUSBでHDDを繋ぐのは初めてだったので、いろいろなページを見て調べた。概ね、次の手順になるみたいだ。
GithubのWebhookを受け取ってみる
仕事ではGithubを使った開発をやっているので、コードレビューやなんかもGithub上でやっている。
しかし、コメントはGithub上でやっているが、その他の多くのやりとりを他のグループウェアでやっている関係上、Githubに書いてはグループウェア上でURLを張り、コメントを求めるというやや二度手間的な事態が発生していた。
なので、GithubのWebhookを受け取り、PullRequestにコメントがあった場合は、グループウェアの方にその内容を転記するシステムを作ろうと思って、ここ数日なんじゃかかんじゃかコードを書いていた。
その過程で、GithubのWebhookを実際に受け取り、その内容を精読していたのだが、どうもドキュメント類を読んでも「Githubの何のイベントに対応したHookなのか」を知る方法が分からない。 現状で欲しいのはPullRequestに対するコメントだけなので 、その他の雑多なHookはどうでもいいのだが、今後の拡張性を考えると、どんなHookなのかを判別する方法は今のうちに作っておいた方がいい。
MacのGitでmvしたらコケた
前にも一回同じ事で困ったことがあるけど、二度と困らないようにブログにしておく。
gitを使ってファイルを管理しているとき、gitに無断でファイルの移動はやってはいけない。gitがそのファイルを追いかけてくれなくなるからだ。
git mv hoge foo
って感じに、ファイルを移動することで正しく追跡を続けてくれる。
困ったのは、Macを使っているときに、次のようなファイル移動をしようとしたとき。
git mv FizzBuzz Fizzbuzz
こういうエラーがでる。
Fedoraの.bashrcを壊した話
Fedoraというか、Redhat系のお話
.bashrcをGithubで共有するようにしてからしばらく経って、新しいPCにFedoraを入れた。 最初は特にターミナルとかも普通だったのだけど、ひと通り確認終わってからgit cloneしてきた.bashrcに置き換えると、表示が完全に変になった。 ぱっと見てわかる症状は、
-
プロンプトが表示されない(というか、bashのバージョンが出る)
-
カラースキームが変(エディタもそうだし、普通の状態も変)
-
でもなんか.bashrcの内容は反映されてる
って感じ。 一番悩んだのは、.bashrcで設定しているPATHとかAliasとかは反映されているので、どうも.bashrcのエラーって感じではなさそうということ。 だが、新しいPCを買ったのは2月で、2月は地獄のように忙しい毎日を過ごし、3月も別の趣味に一ヶ月を投じてしまったので、ほとんど ターミナルを触ることなく、放置してしまった。
tailfでWebサーバーのログを監視するのがいい加減目が痛い
ステータスコードに色を付けてみた。
tailf /var/log/nginx/access.log | perl -pe 's/ 2\d\d /\033\[1;36m$&\033\[0m/gi;s/ 3\d\d /\033\[1;33m$&\033\[0m/gi;s/ (4|5)\d\d /\033\[1;31m$&\033\[0m/gi'
perlを使って、シェルに出てくる特定の文字列に色をつけてるだけ。
ちょっと楽になる。