してしまったmix3だよ!
あー今日祝日やん!
— 衣玖さんは天子の嫁 (@mix3) 2014, 11月 3
そして意識高いのか社畜なのか良くわからないこと呟いたけど
まあいいや オフィス開いてたらすこし仕事してこ
— 衣玖さんは天子の嫁 (@mix3) 2014, 11月 3
当然オフィスに誰も居なかったので一人で仕事とか寂しくて死ぬので速攻で帰ったよ!とんでもないクズ野郎だね!
こんな悲しみ繰り返さないために
切実に祝日リマインダーが必要だと感じたので以前作ったリマインダアプリ(github)に祝日も自動で通知するみたいなの追加したいなぁとか思った
で、golangで祝日を取得する方法無いかなぁと適当にググったら見つからない(本当に適当にググっただけなのでちゃんと探したらあるかもしれない)ので国民の祝日の名称を取得するモジュール(coderepos)をgolangに移植したんだけど、それだけで一日潰してしまって祝日リマインダー出来ませんでした!
また祝日に出勤してしまうかもしれない! やばい!!!
追記
githubへのリンク貼ってなかったよ!おっちょこちょいだね!
無駄にDriverの仕組みを入れてるので日本の祝日以外の実装も追加しやすいよ!多分ね!
YAPC童貞卒業だよ!mix3です。
YAPC1日目だけ参加してきました。2日目は本番化業務があったのでおとなしく自宅作業してました。
聞いたのは以下の通り。ライブコーディングはイベントホールで勝手にやってる奴だったので、休憩がてら途中から見てましたが非常にgdgdで楽しかった。
Perl meets Real World 〜ハードウェアと恋に落ちるPerlの使い方〜
@mackee_wさんによる発表
perlとハードウェアの話っぽいタイトルだけど、perl全く関係ないしネギ振るハズだったのに振れなくて「後でイベントホールに来てください本物のネギ振りをお見せしますよ」的な感じで終わったのが面白かった。
ソフトウェアに比べてハードウェアは現物が無いといけないので単純にハードルが高いのだが、Raspberry PiやらArduinoやらのおかげでその辺りのハードルが下がってきてる感じが伝わってくる内容だった。
あとはテストが難しいというのをどう解決してくかというのが課題のようだ。(個人的な理解だが、おそらく動かして試すしか無いからというのがあるのだと思う)
完成されたシステムなどない。完成された人間もいない。あるのは成長し続ける未完成なシステムと、それを支える未完成な人間だけだ
@kenjiskywalkerさんによる発表
「リハーサルでは20分で終わったのでゆっくり話します」と言って始めたのに結局20分で終わって、残り20分のうち10分をトークショーで乗り切るという
「さすがけんじさんだ、俺たちに出来ない事を平然とやってのける!そこに痺れる憧れる〜!」
な感じの発表だった。さすがです。
内容自体はなんというか、理想とされるシステムの成長の姿を追体験形式で語るみたいな感じだった。
根底としてイミュータブルな世界が来てて理想とされてるシステムの姿(適切に分割されて継続しやすい状態)を実現しやすくなってるから頑張りましょうということなのかなと思っている。
お待たせしました。Perl で BDD を簡単に実践する最高にクールなフレームワークができました
@tokuhiromさんによる発表
Test::Builder2がポシャったようなので、仕方ないからTest::Kantanを作った!使ってね!
作られては消えていく、泡のように儚いクラスタの運用話
@toritori0318さんによる発表
テレビの配信でクラスタの運用をしていて、辛くなるたびに対応してきたという話。
Webとは違って明確にトラフィックが増えるタイミングが分かるので、クラスタ作りまくってその日のうちに消すみたいなのが当たり前に行われているらしい。知らない世界がそこには広がってるなぁと技術的なところは全く分からないので漫然とそんなふうに思いながら聞いていた。
本番怖い。
Git を使ったツール開発
@motemenさんによる発表
申し訳ないけど内容覚えていない…
「git-unifyを作ってくっそ便利だけど、リポジトリぶっ壊れる可能性あるので使う時は気を付けてね」というのだけ覚えてる。
ライブコーディング 2014
@songmuさんによるライブコーディング。
@moznion「進捗、どうですか?」
@songmu「進捗、ダメです」
とかやっててくっそ笑ってた。gdgd。楽しかった。
O2O/IoT/Wearable時代におけるWeb以外のネットワーク技術入門
@lyokatoさんによる発表
ネットワークの話興味あって聞きに行ったけど、発表が物理的に早すぎたのと、内容難しすぎて全く理解出来ずに終わった。
Web以外の知識無さ過ぎてダメだなぁってなった。精進しないといけない。
Mojoliciousを使ったwebアプリケーション開発 実践編
@torii704さんによる発表
ネットワークの話で頭がパーンしたので休憩がてら軽めの内容と思われるものを…、ということで聞いてみた。
Webアプリ開発入門みたいな感じでMojoliciousをベースにざざっと説明するような感じの発表。Containerの説明、永続化する話を後に持ってきてたせいで「この説明を真に受けたら危険では?」みたいな感じてハラハラしたり、MVCのMの説明っぽいところで「ん?」てなったりしたけど概ね「まあそんな感じよね」と頷きながら聞いていた
Java For Perl Mongers
@Yappoさんによる発表
型があるってのは良いこと。冗長になるが同時にそれは変な記述をさせない制限になるので余計なバグを仕込みにくい(例えば型名ミスなどのtypoとか発生しない)
Javaは面白みが無い普通の言語だけど型の良さをちゃんと持ってるので、LLで育ってた人はちゃんとそういうの理解してJavaをdisったほうが良いよ。
という感じでJava賛美っぽい話のまま終わって面白かった。Java好きな人間なので聞いてて終止うんうん頷いてた。
Lightning Talks Day 1
印象に残ったのがまかまかさんには家族離散にならない程度にAcme大全続けていって頂きたいなぁというのと、@gugodさんかな?英語で発表しててすっごい大真面目なビジュアライゼーションの話してたと思うんだけど、みんな「すげーすげー」言いまくってるなか自分全く英語が分からなくてぽかーんってして聞いてた。英語頑張ろう…ほんと…
まとめ
「次もあれば行きたい」と思うぐらいには楽しかった。
ただ部屋の移動時間が一切考慮されていないスケジューリングぽかったのと、居座り組と後は早い者勝ちみたいな感じになってたのはなんか微妙な感じなのと、「もう部屋がぱんぱんで聞けないしイベントホール行って暇潰すか」ということが少なからずあったのがちょっと残念だった。部屋を単純に大きいのにするわけにもいかないと思うので改善するのは難しいと思うけどなんとかしてほしいなと思う。
そして個人的に翻訳聞くレシーバが初日1機遭難してたやつ、その後救助されたのか気になっている(1機4万とか言ってたので紛失とか運営としては正直笑えない話)
衣玖さんが好きすぎて、最近は衣玖さんの人としてチームメンバーからは認識されているようです。(衣玖さん結婚しよ)mix3です。
サンプルアプリ
社内的にgolangを使って行こうか、という流れが出来ていてその流れの中で @acidlemon さん作のWAF、rocketが出てきたので使い方の勉強もかねて早速それのサンプルアプリを作ってみました
リマインダアプリ
うちの社内IRCではお願いすると指定日時にメンションを飛ばしてくれるremember君というbotが生息してるのですが、それのメール版のようなイメージで作りました
指定アドレスにメールして登録、指定日時にメールが飛んでくるだけの簡単なwebアプリです
世の中便利なもので、指定アドレスにメールが来ると指定URLにPOSTしてくれるサービス(つまりSMTPいらない)があったり、1日10000通までメール送信出来るサービス(つまりSMTPいらない)があって、herokuとかと組み合わせることで簡単な物なら無料でメールを使ったサービスが作れてしまうようです
物はこちら go-rocket-sample-app http://secure-sierra-2582.herokuapp.com/
リマインダ登録までの流れ
一応登録されたメールアドレス以外のリマインダ登録は受け付けないようにしたかったので、
- アドレス登録のアドレスに対して空メールすると、仮登録され本登録のURLが返信される
- URLを踏むと本登録が完了する
- リマインド登録のアドレスに対して、件名に日時指定、本文にリマインドの内容を書いて送ると登録される(認識する日時指定はだいたい以下の通り)
- 12:34
- 07-01 12:00
- 2014-07-01 23:59
な感じで動く様になっています アドレス登録後はリマインド登録用のアドレスを保存しておいて使うことを想定しています
ということで
rocketのサンプルアプリでした
衣玖さん芸人に!!!俺はなるっ!!!(海賊王的なノリで
— mix3 (@mix3) 2014, 6月 8
最近p5-Ikusanを作ったり、それで衣玖さんのIRCボット作ったりして衣玖さんへのロマンティックが止まらないmix3です
github.com/mix3/go-ikusanとgithub.com/mix3/go-irc
最近golangを触ってる事が多いのですが(絶賛開発中の社内アプリがgolangだけどそっちにはあんまり関わってなかったりする)
適当になんか作りたいなぁと思っていたところに最近衣玖さんへの愛が溢れ出してきてたので、そりゃ「go版ikachan作ろう」となるのは自然な事ですよね
でgoでircってどう触るんだろうとgithubを漁ったところ
辺りがirc触るためのライブラリとして有名どころなのかなぁということが分かって、その辺り使って作ろうとしたのですが、
go-ikusanのためにgo-irceventの中追いかけてるがエラー検知からのリコネクト処理がダメだこりゃ close(end)して各イベントチャンネルをwaitgroupで待ってるけど、socketのreadで待ってるからtimeoutするまで待ち続けてる
— mix3 (@mix3) 2014, 6月 10
preadってチャンネル用意してるのにどこにも使ってなくて多分これはsocketから1行読んで解釈するのと、それをcallbackに投げるのを分離するためものだと思うけど、まだ未実装ってことなのかな
— mix3 (@mix3) 2014, 6月 10
go-ircevent、groupwaitしてるのsocketを安全に閉じるのを保証するためだと思うけど、socketのreadで待ち続けるのもなんとも言えないなぁ
— mix3 (@mix3) 2014, 6月 10
Errorチャンネルをselectで待ってて、検知したらdisconnectするけどそのdisconnectの中でさらにErrorを投げてるの結構ワンダーな感じする
— mix3 (@mix3) 2014, 6月 10
とか
http://t.co/jXGwN4arHz がエラーハンドリングちゃんとしてそうだけど、flag要求されて非常に使いづらい
— mix3 (@mix3) 2014, 6月 10
とかでなんか微妙に使いづらいなぁとなってしまい、じゃあいっそそっから作るかということで両方の間の子みたなの作ったりしました。github.com/mix3/go-irc
出来るだけ薄くしておきたかったのと、IRCについて知識はまるでないので難しいことはしないようにしたかったので
- ircサーバへのリクエストが出来る
- ircサーバからのレスポンスを受け取れる
- ircサーバからのレスポンスを元にコールバックを呼ぶがディスパッチャみたいなことはしない
- ircサーバからのレスポンスのtimeoutを待たずに落ちる事が出来る
- 落ちたタイミングで何かしたいこともあるだろうから、別途落ちたタイミングでコールバックを呼ぶようにする
- flagは使わない
- loggerはデフォルトでgithub.com/umisama/gologを使うけどinterfaceが定義されてるので差し替え出来るハズ
ぐらいを満たすような感じでgithub.com/thoj/go-irceventとgithub.com/fluffle/goircからコピペしたりしなかったりしました
たまに落ちるときにWaitしたまま帰ってこないみたいなことがある感じなので、明らかにここマズいとかあったらプルリクあると嬉しいです
で、これを元にgo版ikachanことgo-ikusannを作りましたとさ
とってもキュートな衣玖さんがお出迎えしてくれるwebインタフェースも作ってやはり衣玖さんは最高だなって思いました
go-ikusanのwebインタフェース作った 衣玖さんマジかわ pic.twitter.com/sAcXgUZJP1
— mix3 (@mix3) 2014, 6月 14
なおAAの画像は「衣玖 AA」で検索して見繕ったAAなので著作権的に問題あったら非常に心苦しいですが消します
テンプレートは気に入っていて変えたくないのでその辺りは出来るだけそのままを保ちつつ、レスポンシブデザインってどうやるんだろうなと思いながらいじいじしてて数ヶ月経ってしまいこのままだともう日の目を見る事が無さそうな感じしたのでえいやで更新してしまいました
それにともない記事のhtmlを一カ所にまとめる様に変更(記事生成後再生成でゴミが残るので面倒になった)それにともないパーマリンクが変更になるという鬼畜ぶりに我ながら身震いしたけどどうせブクマしてる人も全然いないし自分のブログだし好きにすることにした 404のカスタムhtmlでjs使って多少の誘導ぐらいは出来る様にしたいとは思ってるけどやらないかも
ということで気分も新たにブログたまには書いて行きたい