kinoppyd.dev

blog

products

accounts & contact

kinoppyd dev - page 12

kinoppyd blog

Scalaの世界に入門する

2014-06-02 20:41:01 +0900

Scalaを始めることにした。

去年から考えていたけれど、そろそろ真面目に関数型のアプローチに触れなくては、今までの自分の中で創り上げてきたなんちゃって関数脳から逃れられないと思ったから。なので、オブジェクト指向と関数型の両方のアプローチを採りつつ、関数型が推奨されるというScalaを使うことで、上手くオブジェクト脳を使いながら関数に脳を拡張していこうと決めた。

教材は、コップ本

あと、勉強を後から見返すために、Githubに勉強用リポジトリも用意。


DebianのChinachu(録画)サーバーにUSBでHDDを増設した

2014-04-27 14:37:47 +0900

録画サーバーはコンパクトにまとめようと思っていたので、当初HDDは2.5インチの500Gを選んだ。 どうせネットワーク経由でつながっているし、HDDがいっぱいになってきたらどっかの外付けに移せばいいと思っていたが、色々と問題が出てきたので、サーバーに外付けHDDを刺してとりあえずしばらくの間は凌ぐことに決めた。

買ってきたHDDは、Seagateの2TのHDDで、外付けケースはGroovyの35SATA-U3-BK。これで3台目の外付けケースだが、選んだ理由はUSB3.0対応と、並べた時にカッコ良さそうなデザインだから。 だが、録画サーバーはUSB2.0ポートしか無いので、近いうちにサーバーのリプレースか、それとも他の解決策を模索しなくてはいけないだろう。

LinuxにUSBでHDDを繋ぐのは初めてだったので、いろいろなページを見て調べた。概ね、次の手順になるみたいだ。


GithubのWebhookを受け取ってみる

2014-04-26 18:08:32 +0900

仕事ではGithubを使った開発をやっているので、コードレビューやなんかもGithub上でやっている。

しかし、コメントはGithub上でやっているが、その他の多くのやりとりを他のグループウェアでやっている関係上、Githubに書いてはグループウェア上でURLを張り、コメントを求めるというやや二度手間的な事態が発生していた。

なので、GithubのWebhookを受け取り、PullRequestにコメントがあった場合は、グループウェアの方にその内容を転記するシステムを作ろうと思って、ここ数日なんじゃかかんじゃかコードを書いていた。

その過程で、GithubのWebhookを実際に受け取り、その内容を精読していたのだが、どうもドキュメント類を読んでも「Githubの何のイベントに対応したHookなのか」を知る方法が分からない。 現状で欲しいのはPullRequestに対するコメントだけなので 、その他の雑多なHookはどうでもいいのだが、今後の拡張性を考えると、どんなHookなのかを判別する方法は今のうちに作っておいた方がいい。


MacのGitでmvしたらコケた

2014-04-21 18:49:36 +0900

前にも一回同じ事で困ったことがあるけど、二度と困らないようにブログにしておく。

gitを使ってファイルを管理しているとき、gitに無断でファイルの移動はやってはいけない。gitがそのファイルを追いかけてくれなくなるからだ。

git mv hoge foo

って感じに、ファイルを移動することで正しく追跡を続けてくれる。

困ったのは、Macを使っているときに、次のようなファイル移動をしようとしたとき。

git mv FizzBuzz Fizzbuzz

こういうエラーがでる。


Fedoraの.bashrcを壊した話

2014-04-13 19:57:52 +0900

Fedoraというか、Redhat系のお話

.bashrcをGithubで共有するようにしてからしばらく経って、新しいPCにFedoraを入れた。 最初は特にターミナルとかも普通だったのだけど、ひと通り確認終わってからgit cloneしてきた.bashrcに置き換えると、表示が完全に変になった。 ぱっと見てわかる症状は、

  • プロンプトが表示されない(というか、bashのバージョンが出る)

  • カラースキームが変(エディタもそうだし、普通の状態も変)

  • でもなんか.bashrcの内容は反映されてる

って感じ。 一番悩んだのは、.bashrcで設定しているPATHとかAliasとかは反映されているので、どうも.bashrcのエラーって感じではなさそうということ。 だが、新しいPCを買ったのは2月で、2月は地獄のように忙しい毎日を過ごし、3月も別の趣味に一ヶ月を投じてしまったので、ほとんど ターミナルを触ることなく、放置してしまった。


tailfでWebサーバーのログを監視するのがいい加減目が痛い

2014-02-25 00:18:01 +0900

ステータスコードに色を付けてみた。

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を使って、シェルに出てくる特定の文字列に色をつけてるだけ。

ちょっと楽になる。


NginxでリバースプロクシをしているサイトでWebSocket使ったら、なんか変な感じになった

2014-02-11 19:19:57 +0900

バックエンドで起動しているMojolicious製アプリにNginxのリバースプロクシ経由でアクセスしたら、WebSocketが即切れるようになった。 考えてみたら当たり前だけど、そりゃ実行している場所とアクセス受けてる場所が違ったら、そうなる気がする。

解決方法は、単純にNginxの設定に

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";

を書くだけ。serverディレクティブの下に書いていいのか、それともlocationで縛っておいたほうがいいのかはよくわからない。 nginx websocket reverse proxy configuration 

仕組み的には、今のセッションを別のプロトコルに変更するヘッダがhttp1.1にあって、それを追加しているらしい。なので、http_versionのディレクティブは必須。これを書き忘れて、しばらく悩んでいた。 Nginxの最新安定版がWebSocketのリバースプロキシに対応したそうなので試してみた 

あと、Nginxのバーションも1.4以上である必要がある。(開発版だったら1.3でも行けるらしいけど、いまさら1.3を使う理由は特にないと思う) CentOSだったので、yumにリポジトリ追加してインストール

rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
yum update -y nginx

こんな感じで思いっきりばーんとアップデートかけたら、設定ファイルが飛んだ。ワロス。

実際には飛んだわけではなく、.rpmnewという拡張子がついてバックアップされていたが、それにしばらく気づかず、ブログのトップ画面が “ Welcome to Nginx! “ になって焦りまくっていた。二年前に勢いで作ったVPSとリバプロ構成だったので、全然設定覚えてなかったから助かった……マジでちゃんと構成管理やろう。

ともあれ、こんな感じで無事Nginxのアップデートと、WebSocketのリバースプロクシ対応ができたので、この間作ったWebSocketのサンプルをVPSで動かすことができた。 https://github.com/YasuhiroKinoshita/learn_websocket

今日は勉強会という名のもくもく会に出て、ひたすらWebSocketを使ったWebアプリをコーディングしていた(上のGithubのやつとは別)ので、VPS上で動かせてよかった。


ブロガー探偵になりたい

2014-01-31 00:14:55 +0900

正確に言うと、ブロガーの助手がいる探偵になりたい


X61をアップグレードするかどうか、さくらクラウドで実験してみた(続報)

2014-01-28 23:37:34 +0900

改めてdstatで同条件で計測してみたところ、どうやらメモリだけじゃなくてSSDのスピードも相当やばいことがわかった。 なんだこの結果

usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
  5   1  94   0   0   0|   0    32k|  11k  443k|   0     0 | 420    83
  2   1  77  20   0   0|  33M    0 |1356B   37k|   0     0 |1189  2150
  7   2  56  35   0   0|  58M    0 |3380B  132k|   0     0 |2143  3771
  2   1  86  12   0   0|  18M    0 |3378B   89k|   0     0 | 757  1261
  3   1  78  18   0   0|  26M    0 |4077B  131k|   0     0 |1032  1722
  5   2  62  31   0   0|  51M    0 |3612B   83k|   0     0 |1855  3315
  6   3  54  38   0   0|  61M    0 |3148B   77k|   0     0 |2235  3997
  5   2  59  34   0   0|  57M    0 |3247B  103k|   0     0 |2071  3714
  5   1  63  32   0   0|  47M    0 |1963B   47k|   0     0 |1708  3057
  3   1  90   7   0   0|  10M    0 |5131B  134k|   0     0 | 535   740
  7   1  83   9   1   1|  12M    0 |9693B  402k|   0     0 | 803   862
  3   1  78  18   0   0|  28M    0 |2745B   50k|   0     0 |1085  1892
  7   1  74  18   0   0|  28M    0 |8038B  336k|   0     0 |1282  1846
  4   1  81  14   0   0|  21M    0 |3696B  120k|   0     0 | 883  1411
  4   1  82  14   0   0|  25M    0 |5269B  167k|   0     0 |1049  1683
  4   2  74  21   0   0|  33M    0 |6067B  206k|   0     0 |1300  2149
 10   2  50  38   0   0|  64M    0 |6456B  261k|   0     0 |2523  4182
 10   1  73  16   0   0|  25M  144k|  12k  515k|   0     0 |1381  1677

X61をアップグレードするかどうか、さくらクラウドで実験してみた

2014-01-27 23:51:10 +0900

さくらクラウドで、2コア6GのSSDマシンでインスタンス作ってみたところ、同等のDBでほぼクエリが一瞬で流れることが判明。むしろ、受け取ったデータを処理するほうがボトルネックになってた。 やっぱり、メモリの量が問題みたいだ。どうしたもんか。