高専プログラミングコンテストのサウンドトラックをつくった(準備編)
10月11日・12日に開催された全国高等専門学校 第26回 プログラミングコンテストで、競技部門で毎年新規に作成されているオリジナルBGMの過去5大会分を収録したサウンドトラックCD「Program Your Beats」を頒布しました。
ネット上でも予想を超える反響があり、会場頒布として確保していた在庫は完売することができました。これはひとえに鈴木先生が作曲された曲たちが非常に素晴らしい曲であるということ、またプロコン参加者のみなさんがこの曲達を愛しているということだと思っています。 私をはじめとするPROCON O.S.T. Projectのメンバーも「曲を愛する」人々の一員であり、今回我々がそのCD化の企画に関わることができたことを非常に光栄に思っています。
プロコンでは最近ソースコードを公開するのが流行っているようですが*1、我々はプログラミングとはちょっと違う次元で色々やっていたため、公開するようなものもありません。 ただせっかくなので、次回CDを作ってくれる人が現れた時とかのために、作った経緯やノウハウなんかをここに記したいと思います。 内容が内容なのでどうしても若干泥臭いというか、面白くもない裏話がダラダラと続くので、読みたい人だけ読んで下さい。
*1:Proconist https://proconist.net/ もよろしく!
日本語が綺麗になるBootstrapテーマ「Honoka」をつくった
Twitterのリアルタイム検索結果をプロジェクターに映す奴つくった
よくカンファレンスとかの会場であるプロジェクターでTwitterのハッシュタグ検索結果を映し出すアレ。検索しても意外と出て来ないしそもそもなんて検索すればいいのかよくわからない。高専カンファレンス in 津山2で表示するのに色々と模索したが,あんまりいい感じなものがなかったので,なら作ってしまえということで,当日の朝に15分で作った。
続きを読むGoogleのCMで源ノ角ゴシック(Noto Sans CJK)が使われてた
新年初エントリはフォントの話。
Googleが今絶賛流している以下のCM。
この中の最後に出てくるメッセージ。
今年も、たくさん失敗できるように。
さがそう。
この文字を見て「さ」が妙に特徴的だったので,なんとなく「源ノ角ゴシック?」と思って比較したら案の定だった。
オリジナル
比較
源ノ角ゴシックといえばGoogleとAdobeの共同開発によって去年リリースされたフリーの日本語書体で,Googleでは「Noto Sans CJK」として利用されている。開発に携わったのだからおそらくGoogleにも使用権利がある(?)わけで,今回のCMで使われたのだと思う。
ちなみに
検索に打ち込まれている部分はモトヤマルベリ。これはAndroid標準でインストールされてる日本語フォント。メーカー製だと違うかもだけどNexus5とかPure Android端末は間違いなくこれ。
これでパロディ動画が簡単に作れますね!!!
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とパスワードの一覧が出力ができた(参考)。ただこのコマンドには問題があって,パスワードに]
を使われると]
以降の文字が削ぎ落とされて正しくカウントできない可能性がある。一度出力してから気づいたのだが「まぁいいだろ」ってことで見捨てた。
ちなみにログイン試行回数はgrep
とwc
で計算できる。
$ grep -e "login attempt \[.*\]" kippo.log* | wc -l 99254
また増えてる…