monolog

monora log #=> ものろーぐ

Adventar::Listを作った

Programming

12月になりました。アドベントカレンダーの季節ですね。 アドベントカレンダーといえば、去年はATNDを中心に行われているものが多かった気がするのですが、今年はAdventarというサイトが使われているものを多く見かけます。 Adventarというのは、その名の通り、アドベントカレンダーの作成, 記事の公開に特化したサービスで、TwitterやGithubアカウントを用いて簡単にアドベントカレンダーへの参加, 作成が出来ます。

ただ、このサービス、1つ気になったことがあります。

なんでアドベントカレンダー作るのはそんなに簡単なのに今日の記事一覧が見れないんだ!!

……何故でしょうか…… 今日公開された記事を5つ観ようとしたら、5つそれぞれのアドベントカレンダーのページを開き、そこから今日の日付のところまでスクロールし、リンクをクリックしないといけないのです……

これはまとめを作るしか無いなーと思いまして、作りました。

Adventar::List

※ちょこちょこ稼働させながらコード書き換えてるので500返りますがご愛嬌

超シンプルです。めいどいんSinatraです。 最初はCGIで作っていて(何)、1ファイルで動いてミニマム感溢れていたのですが、あまりにも遅すぎたので途中でPassengerに変更しました。 データはAdventarから持ってきたものをNokogiriでスクレイピングして、redis_ormを使ってRedisに投げています。 ただ、redis_ormの実装がアレなのか良く分かりませんが、異様にバグります。なんでや!! 例えば、id=1なオブジェクトを検索したらid=2なものが返ってくるとか、find(:all, ...)で取得したデータが何故か最後に突っ込んだデータだけとか… あまりにも残念すぎたので素直にDataMapperを使うべきだったと反省。

最後に: クリスマスプレゼントお待ちしております!

12月になりました。アドベントカレンダーの季節ですね。 アドベントカレンダーといえば、去年はATNDを中心に行[…]

年齢++

雑記

そういえば、9月19日が僕の誕生日だったわけです。ゆかりんと同い年になったのです。

そんなこともあって、9月1日からこんなことを呟いていたりしたわけです。

https://twitter.com/sukukyon/status/373829881567535105

そんなこんなでウィッシュリストを晒して、何かのネタになればなー。あわよくば誕生日プレゼントを……などと期待を膨らませていたら、@KOBA789 先輩(?)から、早速こんなものが届いた。

MAXコーヒー(箱)

……正直びっくりしました……。わーお……

マックスコーヒーが本当に好きで、見つけ次第買っていたりはしますが、まさか箱で来るとは思っていませんでした。

しかも一緒にリストに入れてた缶ではなくペットボトルで来るとは…いやはや本当にありがとうございます。

1日1本飲んで健康増進に努めております。

話はそれますが、学校の生協で、「マックスコーヒー入れてください」と夏前に要望を出して見たところ、先週からいきなりペットボトルの販売を始めたそうです。まさか入荷するとは…

毎日、販売分は完売しているようです。物好きはいるものですね

これだけで終わるのかなーと思っていたら、そんなことはなかった訳でして。

ある日、MAXコーヒーが届いたなどと学校で話していたら、友人氏に、「リストから濃いものを送っておいたよ」などと言われ、恐れ半分に楽しみにしていたら

サドンデスソース

サドンデスソース。骸骨のキーホルダーが付いてます。

……? リスト入れてないよ……? ……

まあ、何となく想像はついていたものの、Amazonのウィッシュリストの「ウィッシュリスト内の物と一緒に他のものを送れる」という仕様を利用されたわけです。

天狗ビーフジャーキー

リストに入れてたのはこれ。天狗ビーフジャーキー(HOT)

撮ったのが食べた後なので空っぽです。レポートの肴に頂きました。美味しかったです、ご馳走様でした。

アイマス2, G4U Vol.2

そして一緒にアイマス2(右側)も送られてきたという! これは嬉しいですね。

左、パッケージの真美が可愛いG4Uは、本人から直接渡され、お借りした物です。(友人氏「真美のスク水とか好きでしょ??」「……」)

次

20130922-005547.jpg

さすがに開けた時に真顔になったのはこれっきりですね。

いや、確かに真ん中の本はちょっと面白そうだからウィッシュリストに入れてたのだけど、まさか右のような漫画とか、左のような何でR指定じゃないんだこれみたいな物が一緒に来るとは……(左の本は気になったら作者名でググると良いです)

20130922-012430.jpg

キムワイプとチェリーコークです。缶で12本だとこうやって横に長いパッケージになるんですね。

缶ビールで6本パックは見たこと有りますが、横に長いのは初めて見ました。

キムワイプって…… 卓球に使うやつですよね?

ところでこれ、誰が送ってきたのかなーとふと気になったのですが、後日、同級生である @hu__hu 氏からの物であると判明。

@hu__hu 「キムワイプ入れたから分かると思ってた」 分かるかぇ……

ちなみに以前、彼の誕生日に砂利を送ったことがあります。

抹茶そば, 宇治抹茶、 茶筅

茶そばと宇治抹茶, 茶筅(茶せん)です。 @nullpogemuta さんより頂きましたっ

抹茶大好きです。茶そば食べたさに青春18きっぷを買って宇治の伊藤久右衛門に行くぐらいには。(当時のツイート)

宇治抹茶も大好きなので、点てて頂きたいと思います。ありがとうございます。

以上になりますが、まさかこんなに届くとは… いや、そもそも何か届くとすら思ってはいなかったので正直驚いてます。

そして、ウィッシュリストに入れてないものが半分を占めているという事も驚きですが…。

そういえば、ウィッシュリストの住所は"きょんたん"名義で入れてあったのですが、住所の最後に"〇〇方"(〇〇: 苗字)にしておくと届く! みたいなライフハックを見たことがあり実践したみたところ、しっかり届くことが判明しました。

受け取り時に、ヤマトのお兄さんに「ワンちゃんのきょんたんさんにお荷物ですー!」とか言われる事案が発生したのはまた別の話、わんわん。

 

送ってくださった方々、本当にありがとうございました。大切にさせて頂きたいと思います。

ちなみにウィッシュリストは、年中公開しております… お待ちしております。

誕生日プレゼントとして届いたもの。

そういえば、9月19日が僕の誕生日だったわけです。ゆかりんと同い年になったのです。 そんなこともあって、9月1[…]

開いているタブ数をツイートする Chrome Extension を作ってみた。

Programming

ふとした思いつきで作ってみた。

https://twitter.com/sukukyon/status/381401707759935489 [https://twitter.com/sukukyon/status/381401849338683394

]()Chrome Extension 、作るの面倒くさそうだなーという思い込みがあったのだけど、実際に試してみたらかなり簡単でした。

情報も充実してて、分からないことはググったら一発で解決したので、ふとした思いつきという微妙なモチベーションでも詰まらずに完成したわけですっ。

今更、作り方を説明などしても無駄な感じなので、参考になったサイトを2つだけ。

Chrome Extensions API リファレンス

ただのリファレンスと言っては何だけれど、困ったことは大体ここを見れば良いと思う。

What are extensions? - Google Chrome

公式の解説ページ。リファレンスにもなっているけれど、チュートリアルだったり、各機能のサンプルが豊富にあったり。

単に自分が使えればいいやー程度の、そもそも公開する気なんてさらっさら無い拡張機能なので、セキュリティ周りとかを何も考えずに作ったら1時間で出来た。

それにしてもお手軽だなーと。

JavaScript やら HTML やらの基本知識さえあれば、そこそこの物は簡単に作れる気がする。ただ、既存の物は結構多いのでやはり新規性が…

とりあえず出来上がったものを置いておきますね。

http://dev.monora.me/test/TabCount.crx Chromeでそのままインストールしようとするとエラーが出るので、一旦ダウンロードしてから、設定->拡張機能 のところに ドラッグすればインストール出来る気がします。

ふとした思いつきで作ってみた。 https://twitter.com/sukukyon/status/381[…]

愚痴

雑記

ちょっと色々つらみが溜まってきて、Twitterで愚痴るにも文字数的に微妙な感じだったので、帰り際にiPhoneで書きためてたら割りと微妙な量になった。

以下、ただの愚痴です。

なんというか、こうやればいいのにっていう解決案に対して、「こうすると良いよ」みたいなのは言えても、どうしても真意が伝わらなくてぐぬぬってなる 強く言えない理由はいくつかあって、

  • 後輩(相手)に悪く言われたくない

  • 相手の努力を否定しにくい

  • そもそも自分が相手ほど頑張っていない

っていうのが大きいなぁ…

そもそもの価値観?が共有できないのは辛いし、そう簡単に言葉に表せるものでもないから大変だなーって

ただ、プログラミングに対する憧れ、みたいなのも悪いとは思わない、っていうか僕がそういうのを持ってるから否定できないのよね。 そんな僕みたいな人が仮にも上にいるのが諸悪の根元な気もする…

1年前の自分なんて、ただただ雑談ばっかりしてたり、Vita で DIVA f なんぞをやって過ごしていたわけですし、本当に他人のことをとやかく言えないのがなぁ…………

幻想を捨てろって言われて捨てられたら良いよねって思うけど、それは思考の転換の問題であって、結構大変な訳です。 変えなくちゃっていう切迫感ばかりが残ってるときは、結局何も出来なくて、自分の考えって言うのは自覚してない間に変わっていて、ふとそれに気がつくっていうのが良くあるので。 考えって言うか価値観かなぁ、まあ似たような物だと僕は思ってるけど

これを書いていて、自意識過剰っていう単語が脳内に貼りついているわけですが、そういうことなのかなぁ?

まあ結局、過去にも似たようなことは何度も起こってるし、何度も同じようなことを思ってるので、今回もその例に漏れず、寝て忘れるのが一番ですよね…

こうやって帰りの電車で文章化してたら割とすっきりしたので、やっぱり考えを整理するのって大事だなーと思った次第です。 あまりにもやり方が普通すぎて面白くないとは思うけれどw

ちょっと色々つらみが溜まってきて、Twitterで愚痴るにも文字数的に微妙な感じだったので、帰り際にiPhon[…]

Apple Storeに行ったらMBAが5時間で修理された話

雑記

Apple Storeに行く前に 言っておくッ! おれは今 やつの早さを ほんのちょっぴりだが 体験した い…いや… 体験したというよりは まったく理解を 超えていたのだが……

あ…ありのまま 今 起こった事を話すぜ! 「おれは Apple StoreでMBAを修理に出したと 思っていたら いつの間にか修理が終わっていた」 な… 何を言っているのか わからねーと思うが(ry

とどのつまりは、MacBook Air(Mid 2012)を修理に出したということです。

症状は下記の画像の通り

[caption id="attachment_308" align="alignnone" width="320"]

MBA ディスプレイ交換前

MacBook Airのディスプレイを交換する前[/caption]

ディスプレイの中央に、背面のリンゴが透けています。というよりか、元から透けるものだと思っていた…… 先日のプロ生で、「これって透けるものなんですか?」「んなわけねーよwww」というやり取りで知りました。びっくり 要するに圧迫痕な訳です。

というわけで先日、Apple Store GinzaのGenius Barに持ち込んで見て頂いたところ、あっさりと無償修理をして頂けることに。 バックアップを済ませて、今日の12時ごろに再びApple Storeへ行きMacBook Airを預けました。 「大体どのくらい掛かりますか?」「3日から、最長で1週間ですね。」

同日(今日)の17時12分: 「修理が終わりましたのでいつ取りに来てくださっても大丈夫です。」「は、はい…」

な、何を言っているのか(ry どうやら5時間で修理が終わるらしいです。唖然 偶然、身内が銀座周辺にいたので直後にMBAを引き取り。修理に出してから7時間で手元に戻って来ました。

修理後は下記の画像の通り。真っ白ですね。 ちなみにMacBook Airはパーツの密度が高い影響か、液晶パネル単体の交換は出来なくて、本体の上半分をまるごと交換する形になります。

[caption id="attachment_309" align="alignnone" width="320"]

MBA ディスプレイ交換前

MacBook Airのディスプレイを交換した後[/caption]

そんなこんなで修理に出したらその日に修理されて手元に戻って来ました。

以前もキーボードにコーヒー牛乳をぶっかけて修理に出したことがあったのですが(水没: 有償修理)、その時にも1日で修理終了の連絡がありました。 Apple Store、すごいです。すごすぎます…… Genius Barは対応するスタッフ(Genius)によって対処が異なるという印象があるので、これは当たりでしょうか?

今回の対応の早さは本当にあっという間で、素晴らしい対応をして頂いたApple Storeの方に改めて感謝を。

Apple Storeに行く前に 言っておくッ! おれは今 やつの早さを ほんのちょっぴりだが 体験した い…[…]

mod_mruby on FreeBSD

FreeBSD Programming

mod_mrubyをFreeBSDで動かそうとして詰まるの修正点が変わってしまったのと、mod_mrubyが更新されてEvent MPMとWorker MPMでも動くようになったようなので再チャレンジしてみました。

FreeBSDでのmakeのやり方がまた変わってしまったので後述します。 とりあえずベンチマークの結果から。


$ cat test.txt
Hello!

$ cat test.rb
#!/usr/local/bin/ruby

print "Content-type: text/plainnn"
print "Hello"

$ cat test.mrb
Apache.rputs("Hello")
Apache.return(Apache::OK)

検証機のスペック: IBM ThinkCentre A55 (9636-A16) CPU: Core2 duo E6300@1.86GHz RAM: DDR2-SDRAM 1GB LAN: Broadcom Gigabit Ethernet Apache/2.2.23 (FreeBSD), mod_fcgid/2.3.6

Varnish(3.0.3)がリバースプロキシとして動いているので参考値であることをご了承ください。

abの条件は前回と同じく下記の通りで、3回計測して平均を取っています。


$ ab -n 100000 -c 100

Typereq/sPlain Text6318.693Ruby 1.9.3p194(mod_fcgid)5159.423mod_mruby****6700.153 ~~4626.193


> 2013/2/17 21:15追記:
> mod_mrubyの作者である @matsumotory さんが[こんな事](https://twitter.com/matsumotory/status/303099603451015168)を仰っていたので最新版をビルドし直して再測定しました。は、速い…

mod_mrubyはApacheのモジュールとかを書くのに面白く使えそうなので、そちらの道を模索してみたいなぁ……と

FreeBSDでmod_mrubyを使うためには、またちょこっと弄る必要があるみたいです。

```

$ git submodule init && git submodule update
$ cd mruby

```

mruby本体のビルド設定に**-fPIC**を付ける。

```

$ nano tasks/toolchains/gcc.rake
4: cc.flags = [ENV['CFLAGS'] || %w(-g -O3 -Wall -Werror-implicit-function-declaration -fPIC)]

```

makeではなく**gmake**を使う。

```

$ rake
$ cd ..
$ ./configure
$ gmake && gmake install

```

この2点だけです。エラーが読めない人間には辛い……
もう httpd.conf が mod_mruby を読み込むよう設定されているはずなので、 Apache を再起動させれば終わりです。

```

$ httpd -k restart

```
mod_mrubyをFreeBSDで動かそうとして詰まるの修正点が変わってしまったのと、mod_mrubyが更[…]

意識高いたかーい

雑記

明けました。 2ヶ月ぐらい続いた5月病が、ようやく収まりつつあるのと共にちょっと思いついたりしたので雑記。 全くもって生産性がない内容です。

ふと思ったのだけど、何かを作ったり、何かをしたりするのってやる気(=意識)を削ってすることなんじゃないかなーと。 つまり、意識高い状態から、意識を落とすことで何かが出来るんじゃない? とふと思ったり。

意識を上げる方法っていうのが本当に人それぞれではあるのだけど、生産性が高い, 仕事の効率が良い人っていうのはその意識を上げる方法を知っていたり、意識をあまり下げることなく結果に結び付けられるんじゃないかなー。と

明けました。 2ヶ月ぐらい続いた5月病が、ようやく収まりつつあるのと共にちょっと思いついたりしたので雑記。 全[…]

年末です。

雑記

いつの間にか2012年終わるらしいです。まだ元旦の様子を鮮明に思い出せますが……

今年あった内容が多すぎてまとめる気も起きないのでだらだらと箇条書きします。

  • JCと初日の出を見に行く

  • 不登校脱却っぽい何か

  • 受験勉強頑張った

  • 10年ぐらい前から行きたかった志望校に受かりました

  • JCをもふった

  • 入学してJKをもふった

  • 朝投稿したら机の上にロウきゅーぶ!のポスターが広げられていた

  • 次の日には智花のフィギュアが置いてあった

  • 次の日にはry

  • Supercon行きたいな〜と思って先輩達にお願いしてチームを組んでもらう

  • 予選をゴリ押しで解く

  • 初RedBull

  • 予選通って本選行きが決定

  • 色々とあってタイに行く

  • タイから帰ってきた次の日からSuperconで5日ぐらい計算機室に閉じ込められる

  • ふえぇ……が流行りだす

  • 本選のサンプルプログラムを読むのに期間の8割を使う→挫折

  • 文化祭でRedBull4本ぐらい飲んだ→学内の自販機が売り切れに

  • レポートの提出期限に追われる

  • レポートの提出期限に追われる

  • レポートの提出期限に追われる

  • レポートの提出期限に追われる

  • JKをもふもふした

  • プログラミング生放送勉強会 第19回@品川に参加する

  • CombConfに参加した

  • 発表をやった→壁紙のスク水が写っているところがが写真に収められる

  • LTすべった

  • ㍆㌋㌉㌏㌉㌸㌾㌋㌞㌹㌅

  • レポートが年内再提出なのにまだ手を付けてない←イマココ

  • 妹に身長を抜かされているかもしれない事実が[要出典]

この記事、誰得なのかわからないですね…… なんだかんだ言って、僕は今年かなり充実した1年を送ったと感じているので全て良しですね。

では良いお年を

いつの間にか2012年終わるらしいです。まだ元旦の様子を鮮明に思い出せますが…… 今年あった内容が多すぎてまと[…]

プログラミング生放送 第19回@品川とCombConfに参加しました。

雑記

昨日今日と2日続けてプログラミング関係の勉強会に参加して来ました。

内部の様子については多分他の方がまとめていらっしゃると思うので個人的な短い感想です。

今回、この2つの勉強会で色々な方と話すことが出来て、すごいな〜と思うことがとても多かったです。 年齢に関係なく、色々な人と交流出来て、自分が今まで知らなかったような分野のことを新しく知ったりとか、これ使う必要性あるのかなぁ……と思っていたものの活用法という新しく学ぶことというのがとても多かったです。

CombConfでは「Ajaxで暗号化通信とかいろいろ」というタイトルで発表をしました。 発表でデモに失敗したり、頑張って直してLTで見せようと思ったらまた失敗したりしてます。⇒動きました発表やLTのデモが失敗するのは何かジンクスとかなんですか……?(Wikipedia参照)

夏のSuperconではあまり他の方と交流することが出来なかったので、自分にとっては初めての経験でしたが、またこういった機会があったら参加してみたいと思います。

数回ブログ記事書いて思ったけど筆不精すぎてやばい。

昨日今日と2日続けてプログラミング関係の勉強会に参加して来ました。 内部の様子については多分他の方がまとめてい[…]

mod_mrubyをFreeBSDで動かそうとして詰まる

FreeBSD Programming

CombConfの発表が2日後に迫っているにも関わらず他の技術に手がでます。

組み込み向けのRubyであるmrubyをApacheに組み込めるようにした、mod_mrubyというものをFreeBSDで動かしてみようかと思って手を出したら大苦戦しました。

とりあえず動いたには動いたという状況ですが、簡単なメモとベンチマークを取ってみました。

2013/2/17追記mod_mrubyの更新によって手順が変わりました⇒ mod_mruby on FreeBSD

導入はmod_mrubyのページと同じようにやればいいのかと思いきや、makeでエラーを吐いてしまいます。


$ make
make: illegal option -- -
usage: make [-BPSXeiknpqrstv] [-C directory] [-D variable]
        [-d flags] [-E variable] [-f makefile] [-I directory]
        [-j max_jobs] [-m directory] [-V variable]
        [variable=value] [target ...]
rake aborted!
Command failed with status (2): [make -C src --no-print-directory CC='gcc' ...]

Tasks: TOP => default => all
(See full trace by running task with --trace)
*** [libmruby.a] Error code 1

Stop in /root/mod_mruby.

どうもmrubyのRakefileがLinux向けのようで、makeをgmakeに書き換える必要があるようです。


$ nano tmp/mruby/Rakefile
#MAKE = ENV['MAKE'] || 'make'
MAKE = ENV['MAKE'] || 'gmake'

mrubyは1回mod_mrubyをmakeをしないとRakefileが存在しないので注意です。

あとはWarningが出ますがとりあえずスルーして、make installすればApacheにモジュールが登録されます。 あとはhttpd.confに、


AddHandler mruby-script .mrb

と書き加えれば普通にmrubyファイルが動くはずなのですが……

自分の環境(Freebsd 9.1-BETA1 amd64, Apache/2.2.23 Event MPM)な環境では、httpdを起動した直後からCPUをバカ食いする上、リクエストに全く応答しなくなるという状況に陥ってしまい、解決策が分からなくなりました。 そんなことをTwitterで呟いたら、mod_mrubyの作者である、matsumoto-rさんから

http://twitter.com/matsumotory/status/282046980342022144

という指摘を頂きました。試しに(FreeBSD 9.0 i386, Apache/2.2.22 Prefork MPM)な旧サーバーで試したところ、何も問題がないかのように動きました。 どうもApache 2.2でEvent MPMをやるのはだめみたい……?

試しにどのくらい速いのか、mruby, FastCGIのRuby(mod_fcgid, 1.9.3p125), 静的ファイルの3つで比較してみました。


$ cat test.mrb
Apache.rputs("Hello")
Apache.return(Apache::OK)
#!/usr/local/bin/ruby

$ cat test.rb
print "Content-type: text/plainnn"
print "Hello!"

$ cat test.txt
Hello!

検証機のスペック: IBM ThinkCentre 8086-AGJCPU: Celeron D 330 2.66GHz RAM: DDR-SDRAM 1GB LAN: Gigabit Ethernet(Intel chip)

abの条件は下記の通り


$ ab -n 100000 -c 100

結果:

  • mruby

Time taken for tests: 108.551 seconds Requests per second: 921.23 [#/sec] (mean) Time per request: 108.551 [ms] (mean) Time per request: 1.086 [ms] (mean, across all concurrent requests)

  • Ruby(FastCGI)

Time taken for tests: 362.996 seconds Failed requests: 109Requests per second: 275.48 [#/sec] (mean) Time per request: 362.996 [ms] (mean) Time per request: 3.630 [ms] (mean, across all concurrent requests)

  • txt

Time taken for tests: 98.767 seconds Requests per second: 1012.48 [#/sec] (mean) Time per request: 98.767 [ms] (mean) Time per request: 0.988 [ms] (mean, across all concurrent requests)

なんとmrubyが静的ファイルに迫る速度を出してました。すごい……

ちなみにmrubyが動かなかった方のメインサーバー(Core2 duo E6300@1.86Ghz, RAM512MB)ではRuby(FastCGI: mod_fcgid)で1857.93 [#/sec]とかいう値を叩きだしてました。後日メインのサーバーの方もPreforkにして検証してみようかと思います。 いつになったらFreeBSD PortsにApache 2.4が来るのだろう……

そういえば、もう明後日に迫っていますが、CombConfに参加します! 内容は、「HTTPSを使わずに暗号化通信をしよう」でやる予定です。 出来るの………?(まだ検証してない

CombConfの発表が2日後に迫っているにも関わらず他の技術に手がでます。 組み込み向けのRubyであるmr[…]