私が歌川です

@utgwkk が書いている

技術

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 こういう感じで動き…

JavaScript と Python (tornado) を使った匿名チャットツールを作った

github.com サークルの新入生プロジェクトで、JavaScript を基礎から学習して、ゲームを作れるようになる、というものがある。 で、そのプロジェクトの部内のページに、 オンラインゲーム作れるようになるとイイネ!! と書いてあったので、どういうふうに作ると…

Subsonic 5 のプレーヤを multimedia key に対応させる UserScript を書いた

普段、Subsonic で好きな楽曲を聴きながらコードを書くことが多くて、とにかく捗るんだけど、時にはシュッと multimedia key で一時停止したり、前後のトラックを再生したりしたくなる。 サードパーティ製の Subsonic クライアントを入れればよいのでは、と…

救い as a Service

部室のサーバーで、霊夢ちゃんというスクリプトが走っていて、具体的にはTwitterでいいねした画像付きツイートのURLをSlackに流して、その画像を保存するスクリプトだ。 今日これをRubyで書きなおした。といっても、大部分はすでにだいぶ前に書いていたが、…

Vagrant にっき(2)

yakumoran*1 の base box を、CentOS から Ubuntu に変えた。 Ubuntu だと Shared folder にミスるから CentOS を使ってたというのがあったが、めでたく解決できた*2ので、これからも Ubuntu を使っていこうという感じになった。 yum でパッケージ管理するの…

Vagrant にっき

ノートパソコンに入れていた Ubuntu を手放すことにした。 今までは、マシンには Windows 10 と Ubuntu の2つの OS を入れていた。コードを書くときは Ubuntu で、ゲームをするときは Windows というふうに使い分けていた。一つ問題があって、Ubuntu でブラ…

霊夢ちゃん

以前、Twitter でふぁぼった画像付きツイートをSlackに流すスクリプト を書いたのですが、今回はそれを Ruby で書きなおしてみました。 github.com なんと、画像を保存する機能まで付いています!(あっちには付いていた?) Ruby、周囲の共通語みたいな感じで…

Atom.io で使っているパッケージを列挙した

id:suzusime 君に部室で Atom.io を布教して、GitHub Patchwork Kyoto に参加した一日だった。 ぼくが Atom.io に導入しているパッケージを列挙していきます。文法ハイライト・Snippets 系(language-hogehoge)は除きます。 custom-title atom.io Atom.io の…

PythonからシュッとMeCabを使うためのメモ

$ sudo apt-get install mecab libmecab-dev mecab-ipadic $ pip install natto-py これだけでいけた……。 自前でコンパイルしなくてもいい感じにできるので便利。 デフォルトだと Juman 辞書を使うけど、宗教上の理由とかがない限りは IPA 辞書を使ったほう…

やり直しのきく人生を認識するために、「今のなし」で直前のツイートを削除するスクリプトを書いた

今のなし、で前の発言が消える仕組みを作ろうね— 私が歌川です (@utgwkk) 2015, 10月 29 コード "(いま|今)のなしで?" で前のツイートを削除できるぞ!!!!! あとがき 人は間違う。間違うからこそ人だ。 人生は、やり直しがきく。やり直しがきくからこそ…

Linux Mint で存在しないコマンドを叩いた時の処理がバグっていたので、何とか修復した

症状 Linux Mint の bash で存在しないコマンドを叩いたら、次のような Python のエラーが出る。 Traceback (most recent call last): File "/usr/lib/command-not-found", line 27, in <module> from CommandNotFound.util import crash_guard ImportError: No modu</module>…

Linux Mint 17.2 に rbenv を導入するメモ

インストールしたての Linux Mint 17.2 に rbenv を導入しようとして、微妙に詰まったのでメモ。 # g++をインストール sudo apt-get install g++ # これも必要ぽい sudo apt-get install -y libssl-dev libreadline-dev zlib1g-dev この後に rbenv install […