読者です 読者をやめる 読者になる 読者になる

アルバム・オブ・ザ・イヤー 2016

2016年に初めて聴いたアルバムで気に入った9枚を書きます。

ネットワークスタック内の謎の2バイトについて探る

この記事はTSG Advent Calendar 2016 - Adventarの25日目として書かれました。自分既にOBですし、25日目ともなると「何か壮大なネタを…」とか考えあぐねていたのですが、現実的なネタを思いつけなかったので最近やってたことでも書きます。 先日LinuxのNICド…

Linuxネットワークドライバの開発

この記事はLinux Advent Calendar 2016 9日目の記事です。 遅刻してしまい申し訳ございません。。。とある事情があって1ヶ月半ほど独自NICのLinux向けのネットワークドライバを開発していた。 今回はARM用のデバイスドライバを開発した。NICはXilinx社のFPGA…

情報幾何の基礎とEMアルゴリズムの解釈

大学の演習で1ヶ月ほど(本気で取り組んだのは事実上最後の1週間だけだったが…)情報幾何について発表したので、資料を公開してみる。 数学的な厳密さよりも、できるだけ前提知識の無い人にもわかりやすく、を意識して説明を心がけたので多方面からマサカリ…

d3.jsで通信トラフィック可視化をやってみた

ゼミでSparkのノード間通信を可視化しようという話になった。 肝心のクラスタがグローバルネットワークから隔離されており、ログインノードからしかアクセスできないという環境だったので、 クラスタで収集したパケットキャプチャログをログインノードに送る…

Apache Sparkで特異値分解

Slacaなんて2年ぶりくらいに書いたし、ぶっちゃけほとんど何も覚えてなかったので、今後Sparkを使う可能性がある上で備忘録として。 ちなみに、Scala, sbt, Sparkのセットアップについては触れない。 import org.apache.spark.SparkContext import org.apach…

No bad local minima: Data independent training error guarantees for multilayer neural networks

今まで「3行で」コーナーやってたけど、「概要でよくね?」という気がしてきたし、なんとなく馬鹿らしくなってきたのでやめる。"No local bad minima"というタイトル見た瞬間面白そうだと思ったので読もうと思った。 概要 ニューラルネットの学習誤差をネッ…

Learning Multiagent Communication with Backpropagation

果たしてこのシリーズが続くのか、はたまた3日坊主になるのか。 (まあ流石に毎日やるつもりはないのだけど) 3行で マルチエージェントシステムに関して 相互に通信するようなニューラルネット(CommNNと呼ばれている)を用いて制御 交通渋滞回避などに応用で…

Learning Deep Structured Semantic Models for Web Search using Clickthrough Data

大学の4年生ともなるので、"ちゃんと"論文を読み込んでストックしたいと思い、ブログに読んだ論文を簡単にまとめていきたい。 巷では「百本読むまで人権無し」とも言われるそうなので、できるだけある程度の頻度でアウトプットしていければなと思っている。…

只見線日帰り旅行に行ってきた

あけましておめでとうございます。僕は長期休暇にだいたい青春18きっぷを購入しているのですが、今回も例によって余らせてしまった(しかも3日分)ので、期間内にどこかに旅行しに行こうと思って日帰り旅行できそうな場所を調べていたところ、matome.naver.j…

CPU実験でTravis CIを使ってみた

この記事はCPU実験 Advent Calendar 2015の15日目の記事です。CPU実験において、僕の班は(主に僕の独断で)Travis CIを導入しました。 もう一度CPU実験の概要について説明します。CPU実験では主に コア係(VHDL) コンパイラ係 シミュレータ係 FPU係(VHDL) の…

CPU実験でコンパイラの改造でハマったところ

東大理学部情報科学科の3年生が毎年くぐる関門であるCPU実験で、コンパイラ係として1stアーキテクチャが完動したところで所感を述べます。

Travis CIでOCamlを使うまでの道のり

Travis CIはGithubのhookと連携して、push時に自動的にテストを通す、所謂CI、継続的インテグレーションツールというやつだ。 本記事ではTravis CI自体の詳細な使い方に触れることはしない。公式ドキュメントをたどれば結構親切に説明されている。Travis CI…

CSAW CTF Quals 2015 Reversing 200 Writeup

CTF

この2日間CSAW CTF Qualsが開かれていたようなので、大学のサークルの中でCTF team無所属勢として参加してみた。 1日目はおでかけしていたので、夜行で東京に帰ってきて2日目昼ごろから参戦。 いかんせんCTF初心者なのでいろいろ手間取り、結局最終的にRever…

初心者でもできるはじめてのPull Request

先日Google Summer of Code 2015に応募した。 応募プロジェクトはPython Software Foundation (以下PSF)のサブプロジェクト、SciPy。 ざっくり言うと「SciPyには使い勝手のいい微分モジュールが無いから実装しようぜ」という内容のproposal。 PSFは「proposa…

GHDL on OS X

学科の課題でVHDLを書く必要があったのだけれど、持ち合わせてるPCがMacだけだったので、環境構築でいろいろと苦労した。 推奨環境はAltera社のQuartus II Webpackだったのだが、残念ながら今のところwineを使ってもうまく動かせなかったのでGHDLを使うこと…

新年の挨拶と元日の出来事

2015年あけましておめでとうございます。去年は年が暮れるにつれて忙しくなってしまい、更新する時間を確保できませんでした。 ネタとしては「MuseScoreのxmlファイルを解析する」だとか「Haskell初心者が基本データ構造を書いてみた」だとかあったんですが。

Yosemiteでmecab-pythonを入れた話

なんか昔Mavericks時代にmecabを入れようとしたら全然入れられなかった気がするけど、Yosemiteにあげてから brew install mecab brew install mecab-ipadicでやると一瞬でインストールできた。brewが賢くなったのかな。でもその代わり、Pythonバインディング…

本当にあった怖い話「Yosemiteにアップグレードしようとしたら起動しなくなった」

タイトル通り。日頃からTimeMachineをちゃんと使ってバックアップしていなかったことを盛大に後悔。 なんで起動しなくなったの アップグレード中に電源が落ちました。 仕事のデータも大学の課題も全部入っていたので、その瞬間凍りついた。 起動しないってど…

Tomoeのインストール

OCR

Tomoeという日本語の手書き文字認識ライブラリがある。 手書き文字認識エンジン Tomoe 使いたいと思ったのだが、Macでビルドしようとしたところビルドエラーが出たので、その解決方法をメモ。 その1 tomoe-0.6.0/lib/glib-utils.hを開いて #include <glib/garray.h> を #inc</glib/garray.h>…

U-22プログラミング・コンテスト入選

U-22プログラミング・コンテスト2014 U-22プログラミング・コンテスト2014実は、8月末に参加したサイボウズ・ラボユースHackathonで制作した文字認識エンジンを、締切10分前にU-22プログラミング・コンテストにSubmitしていました。 正直なところ決して高い…

学科進学など

しました。理学部の情報やる感じのところです。<感想> 地下室にいると本当に時間感覚がなくなって時間が溶ける 地下なのでLTEは入らない 教授陣の「うちの学科はつらいこともあるかもしれませんが」の連発 地下室にベッド&冷蔵庫&電子レンジ完備 本棚にパ…

ChromeでSinatraのCookieを正しく動作させる

SinatraでCookieを(とりあえず)使う まずはsinatra-contribというgemが必要。Gemfileに gem 'sinatra-contrib' と書いてbundle installするか、 gem install sinatra-contrib でインストール。そうすると require 'sinatra/cookies' でCookieが利用できる…

SIMDの使い方メモ

C++

勉強を始めたばかりなので間違ってるところもあるかもしれないので、ツッコミがあると嬉しいかも。 SIMD - Simple Instruction Multiple Data 単一命令で複数データを扱う仕組み。イメージとしては と4回足し算するよりも の方が足し算一回で速いだろ?って…

サイボウズラボユースHackathon 2014に参加してきた

文字認識システムShrift from levelfour 最終日のスライドです。取り急ぎ報告ということで。 ちなみにサイボウズのブログとか見ると僕がバッチリ映っているのですが、探さないでください。

HTTPリクエストで画像をPOST送信

普段formを使っているとPOSTでどうやってパラメータが送信されてるとかあんまり意識しないので、Pythonで画像ファイルをPOST経由で送ろうとしたら一瞬で詰んだ。 とりあえずはWiresharkとか使ってHTTPモニタリングして、どんなパケットを送受信してるか観察…

はじパタ4章 with Python

環境構築するだけしてnumpyすらまともに扱えないのは恥ずかしいので、はじパタのRによる実行例をPythonに移植しながらPythonの科学計算ライブラリに慣れつつ、機械学習にも慣れようという魂胆。 とりあえず第4章から。 irisのデータを用意 scikit-learnには…

ScalaNLPを使う

Scala用の科学計算ライブラリを引き続き探していたところ、ScalaNLPというのを見つけた。 名前通りNatural Language Processing、つまり自然言語処理用のライブラリなのだが、数学周りも結構充実しているし、何よりScala向けにチューニングされたライブラリ…

ScalaでApache Commons Mathを使う

Scalaで科学計算をしようとしたんだけど、Scalaのデファクトスタンダードっぽいライブラリがない。 仕方ないので、Javaのライブラリを読み込むことにした。 JavaにはApache Commons Mathという良さげなライブラリがあったので、それを使うことにした。Math -…

python3.4.0でscikit-learnでインストール

pip3 install scikit-learn でビルドエラー発生。 これを踏んだの2回目なので書いておく。 ちょいと調べればすぐに出るんだけどね。 sklearn/cluster/_k_means.c:7955:19: error: no member named 'f_tstate' in 'struct _frame' (*frame)->f_tstate = tstat…

capistrano 3.xでrails appをdeployするときにハマったこと

railsアプリをデプロイするときに最近流行のCIってやつに乗ってみるかと思って、普段なら手動デプロイしていたところを自動デプロイすることにした。 調べてみたらどうやらcapistranoという、ほぼデファクトスタンダードになっているgemがあるとのことだった…

Python+OpenCV+brew on Mavericksの環境構築

ハマりました。どうやらpyenvとOpenCVの仲が非常に悪いらしい。 なので、とりあえずpyenvを一回止めて、systemのpythonにOpenCVを入れるところから始めました。 pyenvをインストールしたときに.bash_profileか.bashrcあたりのどこかに if which pyenv > /dev…

SinatraのSessionがページ遷移時に切れる

1週間くらいこの問題と格闘してたかも。 現象 Sinatraでセッションを利用していたんだけれども、ページを遷移すると同じドメイン内なのにセッションが空になってしまう。謎だ。 問題のソースコードはこちら。 プロジェクトの中からセッションに関わる部分だ…

rubyで楽々言語処理系

というとマサカリ飛んできそうで怖いです:;(∩´﹏`∩);:大学の課題で「式木について考察せよ」的なものがあったので、「サクッと言語処理系作ってみるか〜」と軽いノリで作り始めました。 成果物(現状)。https://github.com/levelfour/ruby-lang現状は ・四…

池袋バイナリ勉強会入門編に参加してきた

asm

機械語入門・集中講座(2014/06) - connpass先週末、池袋バイナリ勉強会の機械語入門・集中講座という勉強会に参加してきた。 参加しようと思ったきっかけはだいたいこんな感じ。元々そろそろx86_64アセンブラを勉強したいなと思っていたのでそれらしい勉強会…

MuseScoreで移調時にクラッシュする問題

楽譜作成ソフトMuseScore。僕も愛用しています。 一時Finaleを使ったこともあるんだけれど、どうもMuseScoreの方が入力しやすくて気に入ってます。音符を全部ショートカットでタイピング入力できるのが魅力的かな。そんなMuseScore、さすがに完全フリーなの…

さくらレンタルサーバのプラン移行

バイトで立て込んでたので久しぶりの投稿です。 あ、今関わっているアプリはなんとかリリースにこぎつけたので、概ね一件落着です。今回は備忘録的なもの。さくらのレンタルサーバについて。 とある団体のサーバを管理することになって、折角だから容量増や…

自前ビルドしたパッケージもGNU Stowで楽々管理

GNU

なんか有用な割に意外と知名度が低いのでGNU Stowというパッケージ管理ツールを紹介。Stow - GNU Project - Free Software Foundationパッケージ管理ツールといえば、Debian系ならapt-get、FedoraとかCentOSだとyum、はたまたMacだとportsとかbrewとかまあい…

SQLでカラムの値が重複しないレコードをカウントする

個人的メモに近い何か。MySQLって意外とビルトインの関数が豊富だったりするので、思ったよりいろいろなことが各種スクリプト言語の助けを借りずにできてしまうっぽい。 というわけで、カラムの値が重複しないレコードのカウント。(例)ログイン履歴のテー…

C言語風ブロックコメントを自動挿入する

vim

vimmerのみなさんこんにちは。 駆け出しvim使い4年目のlevelfourです。 vim scriptとかマクロとか使う超越者を震えながら見つめる日々でございます。そんな僕も流石にイライラしたのが、ブロックコメントの入力。 /* hogehoge */ void hoge() {} 例のこいつ…

x86とx86_64アセンブラの比較

asm

そろそろx86_64アセンブラも勉強しないと時代に追いつけなるなということをひしひしと感じつつあるので、手始めにx86とx86_64の違いを比較してみた。なんといっても大きいのは、x86_64ではスタックを利用した引数の受け渡しをする必要が減ったこと。 x86では…

LDAPの導入

共用サーバではSSHにFTPになんやらかんやらアカウントをたくさん管理せねばならず、どうにも面倒… そんな悩みを解決してくれるLDAPというツールがあるという情報を小耳に挟んだ。LDAPとは… エルダップ LDAP 【 Lightweight Directory Access Protocol 】 イ…

ホームディレクトリ以下のファイルへのシンボリックリンクが読み込めない

今回はtipsということで短く。 ApacheのDocumentRootを逐一変更するのは面倒だと思ったとき、実際のwebrootのシンボリックリンクをDocumentRootへはることがあると思う。 例えば、/home/levelfour/wwwがwebrootになっているとき、$ ln -s /home/levelfour/ww…

XcodeでBullet SDKを使う

物理シミュレーションをする上で物理エンジンを使いたいなと思い、Bulletを試してみることにした。最初はPhysXと迷った。相当迷った。Position Based Fluids Demonstration - YouTubeこのPhysXの流体シミュレーションを見てすごく感動した。 けど、調べてみ…

衝突時の反射処理

OpenGLで円を描画する

2月になりました。OpenGLの季節だ(え 今回はOpenGLで円を描画する方法を紹介。 DXlibではDrawCircleを呼ぶだけで簡単に円が描けるみたい。 ところが、OpenGLには一発で円を書けるようなAPIは用意されていない。 ので、「単純に三角関数でパラメータ表示して…

GMPの仕組み

前回の記事でGMPについて紹介してみた。 そこでGMPが内部的にどのように任意精度整数を保持しているのか気になったので、調べてみた。

任意精度算術ライブラリGMP

今までGCCをコンパイルするとき何となしにビルドしていたGMP。 このライブラリ、なんなのかようやく知る機会を得た。 (そもそもビルドするときに何なのか疑問をもつべきではあったが)そもそもこのライブラリ、GNU Multiple Precision Arithmetic libraryと…

1週間でWeb Frameworkを書いてみた話

あけましておめでとうございます。突然の本題ですが、ちょっと紆余曲折あってさくらのレンタルサーバーのライトプランで軽くWebシステムを作ることになりました。 別に仕事でもないのでPHPで書くよりは他のスクリプト言語を勉強の意味も込めて使ってみたいな…

MacでGRUBから自作OSを起動

久々にOS書いてます。そろそろ取っ掛からないと、来年もSECCAMPの機会を逃しかねないですね。以前までははりぼてOSをLinuxに移植していたのですが、途中でちょっと詰んでしまったので、一からフルスクラッチすることにしました。 ただ、今はMacbookを使って…