windyakinってなんて読む

うぃんぢゃきんではない

高専プログラミングコンテストのサウンドトラックをつくった(準備編)

f:id:windyakin:20151022215441p:plain

10月11日・12日に開催された全国高等専門学校 第26回 プログラミングコンテストで、競技部門で毎年新規に作成されているオリジナルBGMの過去5大会分を収録したサウンドトラックCD「Program Your Beats」を頒布しました。

ost.procon-online.net

ネット上でも予想を超える反響があり、会場頒布として確保していた在庫は完売することができました。これはひとえに鈴木先生が作曲された曲たちが非常に素晴らしい曲であるということ、またプロコン参加者のみなさんがこの曲達を愛しているということだと思っています。 私をはじめとするPROCON O.S.T. Projectのメンバーも「曲を愛する」人々の一員であり、今回我々がそのCD化の企画に関わることができたことを非常に光栄に思っています。

プロコンでは最近ソースコードを公開するのが流行っているようですが*1、我々はプログラミングとはちょっと違う次元で色々やっていたため、公開するようなものもありません。 ただせっかくなので、次回CDを作ってくれる人が現れた時とかのために、作った経緯やノウハウなんかをここに記したいと思います。 内容が内容なのでどうしても若干泥臭いというか、面白くもない裏話がダラダラと続くので、読みたい人だけ読んで下さい。

*1:Proconist https://proconist.net/ もよろしく!

続きを読む

日本語が綺麗になるBootstrapテーマ「Honoka」をつくった

f:id:windyakin:20150526222351p:plain

報告記事を書いてなかったので書く。

honokak.osaka

Bootstrapテーマの「Honoka」を作って公開した。コンセプトとしては「日本語環境に特化したBootstrapテーマ」だ。もともとBootstrapは英語圏で作られたものなので,英文を表示するには適していても,日本語の文を表示するには文字サイズや,フォントの指定が足りなかったりする。今までBootstrapを読み込んだ後に別のCSSファイルで日本語フォント指定とかを行っていたけど,面倒になってきたので「最初から指定してやればいいじゃん」ってことでBootstrapテーマを作ることにした。

続きを読む

Twitterのリアルタイム検索結果をプロジェクターに映す奴つくった

f:id:windyakin:20150330172714j:plain

よくカンファレンスとかの会場であるプロジェクターでTwitterハッシュタグ検索結果を映し出すアレ。検索しても意外と出て来ないしそもそもなんて検索すればいいのかよくわからない。高専カンファレンス in 津山2で表示するのに色々と模索したが,あんまりいい感じなものがなかったので,なら作ってしまえということで,当日の朝に15分で作った。

続きを読む

GoogleのCMで源ノ角ゴシック(Noto Sans CJK)が使われてた

新年初エントリはフォントの話。

Googleが今絶賛流している以下のCM。

この中の最後に出てくるメッセージ。

今年も、たくさん失敗できるように。

さがそう。

この文字を見て「さ」が妙に特徴的だったので,なんとなく「源ノ角ゴシック?」と思って比較したら案の定だった。

オリジナル

f:id:windyakin:20150102142134p:plain

比較

f:id:windyakin:20150102142722p:plain

源ノ角ゴシックといえばGoogleAdobeの共同開発によって去年リリースされたフリーの日本語書体で,Googleでは「Noto Sans CJK」として利用されている。開発に携わったのだからおそらくGoogleにも使用権利がある(?)わけで,今回のCMで使われたのだと思う。

ちなみに

検索に打ち込まれている部分はモトヤマルベリ。これはAndroid標準でインストールされてる日本語フォント。メーカー製だと違うかもだけどNexus5とかPure Android端末は間違いなくこれ。

f:id:windyakin:20150102143352p:plain

これでパロディ動画が簡単に作れますね!!!

Kippoログファイルからログイン試行されたIDパスワードの組み合わせを抽出する

書いた。

この記事を作るときにログファイルを集計する必要があった。そのときLinuxに入っていた標準コマンドを使用して集計したのが面白かったので今後のために書き記しておこうと思う。

Kippoはログファイルのサイズが1MBを超えたらファイルを分割し始める。

$ ll
total 90084
-rw-rw-r-- 1 kippo kippo  833519 Dec 11 15:50 kippo.log
-rw-rw-r-- 1 kippo kippo 1000060 Dec 11 09:52 kippo.log.1
-rw-rw-r-- 1 kippo kippo 1000037 Dec 10 20:47 kippo.log.10
-rw-rw-r-- 1 kippo kippo 1000067 Dec 10 18:51 kippo.log.11
-rw-rw-r-- 1 kippo kippo 1000072 Dec 10 10:12 kippo.log.12
-rw-rw-r-- 1 kippo kippo 1000012 Dec 10 09:40 kippo.log.13
-rw-rw-r-- 1 kippo kippo 1000068 Dec 10 09:06 kippo.log.14
:

ちなみにログファイルでログイン試行に関する行はこんな感じの形式。

2014-12-11 09:52:09+0900 [SSHService ssh-userauth on HoneyPotTransport,39727,103.41.124.40] login attempt [root/krystyna] failed

スペース区切りで,失敗すると末尾にfailedで成功すると末尾にsucceededが付く。これ以外にもいろんな情報がログに残っているので,とりあえずログインに関係するログ行だけをgrepコマンドで取り出す。

$ grep -e "login attempt \[.*\]" kippo.log*
2014-12-11 15:57:07+0900 [SSHService ssh-userauth on HoneyPotTransport,40088,103.41.124.31] login attempt [root/010392829] failed
2014-12-11 15:57:09+0900 [SSHService ssh-userauth on HoneyPotTransport,40088,103.41.124.31] login attempt [root/kappleton] failed
:

これをパイプを使ってcutに渡してやる。cutの区切り文字には[を使いたいのでオプションに-d'['を指定した。そうすると今回必要な情報は3番目のブロックにあるので,更にオプションとして-f3を指定。

$ grep -e "login attempt \[.*\]" kippo.log* | cut -d'[' -f3
root/010392829] failed
root/kappleton] failed
:

末尾のfailedとかが必要ないので,今度は]で区切った最初のブロックを取り出してやる(-d']' -f1)。

$ grep -e "login attempt \[.*\]" kippo.log* | cut -d'[' -f3 | cut -d']' -f1
root/010392829
root/kappleton
:

まだこの状態だと重複があるので,今度はuniqコマンドで重複を削除することにした。しかしuniqコマンドはソート済みでないと働いてくれないので,uniqに渡す前に一度sortコマンドを使ってソートしてやる必要がある。このときuniqコマンドのオプションに-cを指定することで重複回数を出力してくれる。

$ grep -e "login attempt \[.*\]" kippo.log* | cut -d'[' -f3 | cut -d']' -f1 | sort | uniq -c
    18 /
     2 /0rd
     2 123/123

この出力はまだ文字列順で重複回数順になっていないので,もう一度sortコマンドを使う。このときオプションに-n-rを指定してやる。-nオプションは先頭の数字を数値としてみなしてくれ,-rは逆順(降順)でソートし一番多い数値を先頭に持ってきてくれる。

$ grep -e "login attempt \[.*\]" kippo.log* | cut -d'[' -f3 | cut -d']' -f1 | sort | uniq -c | sort -nr
   1603 root/root
    582 root/admin

これでログイン試行されたIDとパスワードの一覧が出力ができた(参考)。ただこのコマンドには問題があって,パスワードに]を使われると]以降の文字が削ぎ落とされて正しくカウントできない可能性がある。一度出力してから気づいたのだが「まぁいいだろ」ってことで見捨てた。

ちなみにログイン試行回数はgrepwcで計算できる。

$ grep -e "login attempt \[.*\]" kippo.log* | wc -l
99254

また増えてる…