私が歌川です

@utgwkk が書いている

技術

パート分けされた歌詞からパート情報を削除するワンライナー

sed -re 's/(.+)(.)/\1/g' atapon.txt こういう文字列置換,初めは慣れなくて perl -mutf8 -nle 's/(.+)(.)/\1/g' -p atapon.txt とかやっちゃうけど,これぐらいならわざわざ Perl を使うまでもなくて,sed で十分という気づきを得られる. -r を付ける…

エディタの自動保存プラグインを有効にしてコードを書いている

エディタ(vim)の自動保存プラグインを有効にしてコードを書いている.今は 907th/vim-auto-save を使っている. github.com 自動保存は賛否両論あると思うけど,git 管理下にあるなら git が自動的に diff をとってくれるし,vim なら gitgutter とかでどこ…

ログを残す文化

ログを残す文化は大事だけど,残し方をもっと気をつける必要があると日々思っている. 情報が散らばってしまわないか? Dropbox,Evernote,wiki,iPhone のメモアプリ,Slack,IRC……と散らばってしまうと,あとで探すのが面倒 一箇所に集めておく 後から参…

KMC の春合宿で Python の処理系の講座をした

追記: dict の実装で出てくる図が間違っています*1.あとで修正します. スライドを差し替えました.変更点は次の2点です. dictの図を開番地(オープンアドレス)法のものに訂正 バイトコードについて追記(2バイトで1つの命令と引数を表す旨) 先日 KMC で春合…

Python の map とfor内包表記(リスト内包表記)は結局どっちが速い?

tl;dr map が遅いとされるのは関数呼び出しの差があったため 現在では(list にこだわらなければ) map は (2017/3/10 11:00追記)イテレータを生成するときは 圧倒的に速い 総合的に見ると,式のみのときはfor内包表記が速く,関数のときは map が速い様子か …

Python C API を使ってみて雰囲気をつかむ

はじめに 最近は機械学習などで Python がよく書かれていますが,その内部構造を意識してコードを書くという機会は,最適化をしなければならない,という段階になるまではあまりないと思われます. また,C言語による様々な Python のモジュールが書かれてい…

2ちゃんねるのトリップを Unicode の時代に実装する

tl;dr Shift-JIS が混ざるとつらい こういうところは Python2 のほうがよかった…… トリップとは トリップとは,2ちゃんねるなどの匿名掲示板において個人を簡単に証明するための合言葉,またその機能によって表示される文字列のことを指します*1. トリップ…

SKK-JISYO.touhou.utf8 を生成(変換)するスクリプトを書いた

https://t.co/5woYHPtsgE 東方Projectの用語のSKK辞書がなくて困っていたので,https://t.co/7CQiZxOXZq の Google 日本語入力向け辞書から変換するスクリプトを書いた.CorvusSKK v2.4.5 で動作確認済です.— 6人目 (@utgwkk) 2017年2月1日 SKK 使ってて東…

深夜テンションで書いたコードを長期間運用していくと発生すること

たとえばこのようなコードがある.Twitter でいいねした画像付きツイートを保存して,その URL を Slack に投稿して,サムネイル画像を生成して,必要な情報を DB に書き込むという処理をやっている. client.on_event(:favorite) do |event| source = event…

ボタンを押すとそのボタンと周囲4近傍のボタンの ON/OFF が反転して,全てのボタンを ON にすればクリアのパズルゲームを解くやつ(5x5はライツアウトと言うらしい)の3x3の場合のソルバを書いて,考察してみる

記事タイトルが長すぎる. はじめに みなさんは,ボタンを押すとそのボタンと周囲4近傍のボタンの ON/OFF が反転して,全てのボタンを ON にすればクリアのパズルゲーム(5x5はライツアウトと言うらしい)をやったことがありますか? 私はああいったパズルが苦…

#nowplaying をリアルタイムに配信したい

KMCM(1) 京大マイコンクラブはC91 1日目(木) 西ほ40-b に配置されました!部員の制作物の入ったCDや部誌を頒布します! pic.twitter.com/0Pgye7mWrF— 京大マイコンクラブ(1日目西ほ40-b) (@KMC_JP) October 29, 2016 はじめに これは KMCアドベントカレンダ…

Git 管理されたファイルの履歴を書き換えて、全てのファイルをまるごと特定ディレクトリ内に移動させる

tl;dr 書き換えないと死ぬという状況でなければ git mv で済ませましょう (追記) $ git filter-branch --tree-filter \ 'mkdir hoge; for file in `ls | grep -v hoge`; do mv -t hoge $file; やりたいこと Git リポジトリのルートディレクトリ以下のファイ…

Ruby の dig メソッドが便利なので Python で実装した

dig メソッドとは instance method Hash#dig (Ruby 2.3.0) たとえば各種 API を叩いて返ってきた JSON をパースした後の辞書型のような、データがいくらでもネストしてあるようなデータ構造があるとき、普通なら obj['path']['to']['destination'][2] とか o…

ISUCON6 本戦で今度こそ完全に打ちのめされた #isucon

正の点数記録されてほしい #isucon— おうどん (@utgwkk) October 22, 2016 チーム *1 として参加しましたが、ざっくり言って完敗でした。やはり本戦の問題は難しかった……。 問題の詳細やら、やったことやらはチームメイトの2人が書いてくれるだろうし、そも…

SQL で DB 問い合わせをしないでプログラミングをして遊ぶ

本日18:30より4共14にて例会があります。部員による講座の内容は"SQL はチューリング完全"です。— 京大マイコンクラブ (@KMC_JP) 2016年10月20日 今日の KMC の例会講座で、こういう発表をしたので、話したことをざっくりまとめておきます。SQL はチューリン…

『コーディングを支える技術』を読んだ

コーディングを支える技術 ~成り立ちから学ぶプログラミング作法 (WEB+DB PRESS plus)作者: 西尾泰和出版社/メーカー: 技術評論社発売日: 2013/04/24メディア: 単行本(ソフトカバー)この商品を含むブログ (35件) を見る 世界にはいろいろなプログラミング…

有限オートマトンを実装してなんとなく挙動をつかむ

前置き みなさんは、チューリングテストに合格していますか? 本題 有限オートマトンとは、内部状態を持ち、入力によってさまざまな状態に遷移し動作する機械を抽象化したものです。 これは、有限オートマトン - Wikipediaから引用した図です。このように、…

CODE FESTIVAL 2016 予選B参加できなかった

寝坊しました。 A 入力文字列の先頭から順に "CODEFESTIVAL2016" と異なる箇所の個数を数える。 B 日本人と外国人の予選通過者数を別個で記録しておいて、条件の通りに判定していく。 C ふつうにプリム(クラスカル)法だと通らなさそうなので、解説の通りにや…

カウントダウンする sleep

sleep 900 などをやっていると人間は不安になってくるということを最近感じている。 カウントダウンが表示される sleep コマンドみたいなのないのかな— ミーハー (@utgwkk) 2016年10月7日 なさそうなのでシュッと書いた。source ./countdown.sh などとすると…

butimi.li クローンを書いた

github.com 使い方 もへくんさんの記事に書いてあることとだいたい同じことができるはずです。 例1 例2 bottle 使うとこういう web アプリならサクッと書けるのでよいです。 ※ 知らない人にブチミるのはやめましょう。 うおおおおおおおおおおおおああああああ…

CODE FESTIVAL 2016 予選A落ちた

社会は甘くない、甘えるな 順位 gyazo.com A substr とかしてやればいいと思うけど、Python でサクッといった print(s[:4], s[4:]) とかできてスライス記法は便利なので、こういう問題のときは Python で解くことが多い。 B 条件に一致するペアを数える。 順…

ISUCON6 予選で打ちのめされたけど通過した #isucon

こんにちは。酔っ払ってるので難しいことが書けませんが、なんと学生枠8位で通過していました。チーム :innocent: です。 github.com isucon.net ももじろうで先輩と飲んでたら結果を聞いてびっくりしました。 どういうことをしたのかは @wass80 がブログに…

ISUCON6 に出て予選で打ちのめされてきた #isucon

あわせて読みたい utgwkk.hateblo.jp www.wass80.xyz yu3mars.hatenablog.com やったこと Ruby で実装 SQL の最適化 Nginx の静的ファイルキャッシュ 応援 github.com 結果 19610点 感想 さてISUCON初参加でしたが、結果を見るともののみごとに打ちのめされ…

10m5s などの時間を表す文字列をパースするライブラリを作った

github.com コマンドラインから、--after=5m みたいな感じで渡される、時間を表す文字列をうまくパースするライブラリ py-timeparser を作りました。 PyPI にも上げたので、pip install py-timeparser でインストールできます。 timeparser っていうライブラ…

妖怪少女のための Brainf*ck インタプリタ

こんにちは。人類は古来から、プログラムを書く際の力試しとして、Quine*1やBrainf*ck*2処理系を書く傾向にあります。 そのような傾向があり、やはり傾向であるので、書きました。 github.com ちなみに文法チェックはしていません。 構文木を作る 構文木とい…

シンデレラガールズJSON

シンデレラガールズ劇場 · GitHub シンデレラガールズ劇場の、話ごとの出演アイドルの名前とか、タイトルとかをまとめた JSON です。データ元は でれげき -シンデレラガールズ劇場まとめ- です。 これを使うと、最も多く登場したアイドルのランキングとかが…

Mackerel を使ってないんたんを監視し、天気の変化をいち早く感知しよう

こんにちは。我々が人生で最も気にするものランキングがあったとしたら、1位が将来のこと、同率1位がお金のことで、3位ぐらいに天気が来るのではないでしょうか。歌川です。 そんな、人生で3番目ぐらいに気になる天気をサクッと知れたら、あるいは降水注意報…

ICPC2016 国内予選に参加しました

チーム YoukaiGirl として、サークルの人たちと参加しました。結果は3完で116位でした。 ぼくは基本的に実装をしていて、ほかの2人に先に解法を考えてもらっていました。 A (1WA) 異なる i≠j に対して abs(a[i] - a[j]) の最小値を取る。 これだけなんだけど…

ゲームのハイスコアランキングが記録できるサービスを稼動させた

サークルのラピッドコーディング祭りで、部員の一人がランキングサーバーを書いていたので、じゃあそれを web サービスにして、RESTful に叩ければよいじゃんと考えて、Node.js で実装して*1、立てました。 github.com エンドポイントは https://ranking.utg…

画像をシュッとトリミングするやつを作った

Gyazo った画像をそのページで直接トリミングしたい(2度目)— うたがわ (@utgwkk) 2016年4月28日 こんな発言をしてて、じゃあ HTML と JS で画像のトリミングするのってどうやるんだろうという気持ちになったので作った。 trimming image こういう感じで動き…