Twitter で医師が拾われて Google のソフトウェアエンジニアになって 3 年半が過ぎました

はじめに 『天才』はつくれる 競技プログラミング同好会競技就活部門 Google は世界最高のプログラミングスクールである 雇用形態と働き方 ソフトウェアエンジニア (SWE) Google でのお仕事 Google の面接の内容 Google の面接の問題の種類 コーディングクイ…

一般財団法人『高IQ者認定支援機構』の高域知能検査『CAMS』

このエントリは、2020年7月5日に受験した、一般財団法人『高IQ者認定支援機構』の高域知能検査『CAMS』の体験談です。試験のヒントやネタバレは極力しないようにしたつもりです。万が一まずい表現を見つけられた方がいらっしゃいましたら、 nodchip@tanuki- …

ユーザーモードダンプを収集する

将棋所で対局中に思考エンジンがクラッシュした場合の原因を調べたいとき、ユーザーモードダンプを収集するように設定しておくと、クラッシュ時に自動的にユーザーモードダンプを特定のフォルダに保存してくれる。メモリダンプはVisual Studioのファイルから…

コンピュータ将棋で学ぶ組み込み関数(intrinsic)入門

はじめに この記事はコンピュータ将棋 Advent Calendar 2016 25日目の記事として書かれたものです。 内容は tanuki- WCSC26 版以降に実装されているKPPT評価関数のAVX2による高速化についてです。C91 で頒布予定の『コンピュータ将棋 2016年度課題技術総復習…

Visual Studioをアンインストールする

Visual Studioをアンインストールしたいとき、本体をプログラムと機能からアンインストールしても関連コンポーネントがアンインストールされずに困ることがある。公式ドキュメントには各コンポーネントを主導でアンインストールするように書かれているが正直…

SubversionレポジトリをGitに移行する

自宅サーバーのSubversionレポジトリをGitに移行したのでメモ。Gitではデータ転送用のプロトコルとして以下の4種類が使用できる。 Local Secure Shell (SSH) Git HTTP 自分は自宅サーバーに既にセットアップしてある環境を再利用するため、SSHを使用すること…

Ubuntuで古いカーネルを削除する

コマンドを忘れてしまっていたので備忘録として。 sudo apt-get autoremove リンク 不要になったパッケージを削除してくれる、autoremove - UNIX的なアレ http://wadap.hatenablog.com/entry/20080109/1199891111

apt でミラーサーバーを自動的に選択する

deb mirror://mirrors.ubuntu.com/mirrors.txt vivid main restricted universe multiverse deb mirror://mirrors.ubuntu.com/mirrors.txt vivid-updates main restricted universe multiverse deb mirror://mirrors.ubuntu.com/mirrors.txt vivid-backports…

MySQLで破損したテーブルを修復する方法

自宅サーバーのMySQLのテーブルが壊れ、SELECT文で書き込まれていないはずの値が返ってきたり、mysqldumpが途中で停止しまったりするようになってしまいました。修復した時のメモを残しておきます。 データベースのバックアップを取る $ sudo service mysql …

心地良すぎるDependency Injectionライブラリ Guice

etc9さんの"心地良すぎるモックライブラリ Mockito"がとても勉強になったので、似たような形式でGuiceの紹介をしてみます。 Dependency Injection きちんと勉強したわけではないので間違っていたらごめんなさい。Dependency Injection (DI)はユニットテスト…

結合テスト向けGuice補助ライブラリGuiceBerry

GuiceBerryの目的と使い方が分かった気になったので備忘録として書いてみる。GuiceBerryはGuiceを使用しているコードツリー内で、JUnitやTestNGを使用して結合テストを書いている場合、テスト内でのインスタンスの生成の補助をしてくれるライブラリっぽい。…

サーバー監視ツール munin

C83で入手したThe Database Times Vol. 2で@zembutsu氏が紹介されていたサーバー監視ツール"munin"が気になったので試してみた。munin-nodeがサーバーの情報を集めて、muninがvisualizeをするらしい。Ubuntuには標準でmuninのパッケージが用意されているよう…

Apache2 + MPM Worker + mod_fastcgi + php5-fpm でWordPressを動かす

今までQMACloneはTomcat6に付属のHTTP Connectorを使用してhttpをサーブしていた。つい先日、httpのサーブはApacheを使用し、AJP Connector等でTomcatと繋げたほうが通信が安定するという都市伝説をネット上で見かけた。なんでもSocket通信のエラーハンドリ…

botプログラムからFacebookページにAPI経由で投稿するためのアクセストークンを取得する

自分の作っているQMACloneにはFacebookのページに問題を投稿する機能があるのですが、トークンの期限が切れたために動かなくなっていました。 トークンの取得方法を調べ直しましたので備忘録として書いておきたいと思います。 短期間用(1〜2時間)アクセスト…

Apache Commons DbUtils

Apache CommonsのDbUtilsはJDBCの補助ライブラリで、よく書くテンプレを簡略化することができます。DbUtilsを使うことでConnectionのcloseし忘れを防止することができたりもします。自分はQMACloneのデータベース部分にDbUtilsを使っています。 準備 解説で…

透過型HTTPプロキシ

透過型HTTPプロキシを使うとブラウザのプロキシ設定を使用しなくても自動的にHTTPプロキシを使うことができるそうなのでやってみた。IEの設定でプロキシを無効にして、Google ChromeのinspecterからHTTPアクセスのヘッダを確認したところ、自宅サーバーのsqu…

Ubuntu Linux サーバーをルーターにする

ある日突然Fedora LinuxでTomcatのサーブレットが動かなくなってしまった。本来であれば原因を調べて復旧すべきなのだが、一刻も早くQMACloneを復旧させたかったため、Ubuntuに乗り換えることにした。以下はその時の備忘録である。 PPPoEを用いてネットに繋…

Fedora Linuxサーバーをルーターにする

QMACloneが夜間に重くなる原因を調査しているのだが、ネットワークに詳しい人に聞いたところ、Corega製の安物ルーターのせいではないかとアドバイスを頂いた。そこで、YAMAHAやNTT-ME製のルーターに買い換えようと思ったのだが、近くのPCショップには置いて…

MySQLをバージョンアップした際にプロシージャーが動かなくなる問題

MySQLのメジャーバージョンを変更すると、プロシージャーが動かなくなることがある。これはバージョンアップによりプロシージャー関連のテーブルの構造が変更されたのが原因だそうだ。以下のコマンドを使うと一応動くようになる。 mysql_upgrade -uroot -p(…

COBOLを全く知らない自分がCOBOLを想像してみた

自分の周りにはCOBOLを嫌う(性格にはCOBOLerを嫌う)人が多いように思う。自分はCOBOを知らないので、なぜそんなにCOBOLが嫌われているのか良く分からない。ということで、ネットで見つかる断片的な情報を元にCOBOLがどんな言語なのか想像してみた。Wikipedia…

Trac 0.12以降でsubversionからチケットを更新する方法

Trac 0.12以降を導入してsubversionのコミットからチケットをcloseできなくなってしまった。Trac 0.11まではsubversionのレポジトリのhookディレクトリにpost-commitを配置して、trac-post-commit-hookを呼び出せばよかったのだが、Trac 0.12からはやり方が…

Javaからプリンターへ印刷する

とあるイベントでWebフォームで入力したテキストをプリンターで印刷するプログラムを書いた。その時の備忘録。 フォーム フォームはGoogle Web Toolkitでサクッと作った。以下はクライアント側のソースコードの一部。テキストボックス二つと送信ボタンという…

GWTを使用したPukiwikiプラグインを作る

某Pukiwikiにタスクの進捗を管理するページがある。最初の頃は表を手動で書き換えるようになっていて、めちゃめちゃ面倒だった。最近、listboxプラグインを導入して簡単に書き換えられるようにしたのだが、今度は見栄えが悪くなってしまった。そこで、見栄え…

CSUS Programming Constest Control System

備忘録がてらICPC模擬地区大会及び地区大会で使用する"CSUS Programming Constest Control System"通称PC^2の使用法をまとめておこうと思います。Windows 7を前提に書いていますが、その他の環境でも同様の方法で動くと思います。以下、サーバー・ジャッジ・…

オンラインジャッジ補助スクリプト

PKUとCodeforces用の補助スクリプトを過去に公開したのだが、一つのスクリプトで両方に対応したいと考えて統合してみた。さらに、M-JudgeとAOJにも対応してみた。対応オンラインジャッジ PKU JudgeOnline http://poj.org/ Codeforces http://www.codeforces.…

Visual Studio 2010のヘルプを使いやすくするGreasemonkeyスクリプト

C++を書くときにはいつもVisual Studio 2010を使っている。Visual Studio 2010は個人的には非常によく出来たIDEだと思うのだが、非常につかづらい点が一つある。ヘルプだ。Visual Studio 2008の時のヘルプは専用のクライアントソフト(?)で閲覧する形になって…

全文検索エンジンLuceneで自作のAnalyzer/Tokenizerを使用する

端的に言うと、AnalyzerとTokenizerを継承したクラスをそれぞれ作れば良い。今回作成したTokenizerは以前よりQMACloneで使用している、辞書に含まれている単語を抜き出すというTokenizerである。アルゴリズムはVitabiアルゴリズムを少しだけ変えただけなので…

Luceneを用いた全文検索

自分が開発・運営しているQMACloneでは全文検索エンジンにtritonn-MySQLを使用している。tritonnを使用する場合、yumやaptでインストールすることができるMySQLパッケージを使うことが実質できなくなってしまう(正確には共存できるはずだが面倒)。このためメ…

LLVMでJITアドレス空間にある関数に別の関数へのポインタを渡して呼び出す

LLVMで(ryものすごくどうでも良いようなことをやっているような気がしないでもないのだが、とりあえずできたので書く。前回二つ分の合わせ技で行けるらしい。LLVMには関数ポインタを表す型は用意されていないっぽい(?)ので、代わりにi8*を使用する。ソースコ…

LLVMでJITアドレス空間にある関数を使用する

前の記事に引き続いてLLVMでJITアドレス空間にある関数にアクセスする方法。LLVMのチュートリアルのCh.4にやり方が載っているのだが、そのままでは動かなかった。理由はLLVMが関数のシンボルを見つけられないかららしい。VisualStudioではシンボルのエクスポ…