Ipoptをビルドする

普段の生活で,ある関数の値が最小になるようなパラメータを求めたい,ということが稀によくあります.このようなとき,正攻法では,微分して 0 になるところを解析的に求めたり,それができなければ勾配法を使って数値解を求めたりしますが,正直面倒くさくてやりたくないです.

そういうとき,MATLAB みたいなツールがあると,関数を定義して投げるだけで,値が最小(実際は極小)になるそれっぽい数値解を求めてくれますが,普通の人はそんな高級なツールは持ってませんし,学生でも大学の計算機室に行かないと使えなかったりします.

Ipopt はそれをやってくれる C++ のライブラリで,定義されたインターフェース(仮想クラス)を継承して,いくつかのメソッドを実装するだけで,関数を最小化してくれます.しかも,Eclipse Public License なので,組み込んだプログラムの再配布もしやすく,いろいろな用途に使えます.

ただ,Ipopt を Windows でビルドするには,環境を整えたり,依存しているライブラリを入手したりするのが面倒だったり,公式ページに書いてあるとおりにやっても上手くいかなかったりと,いろいろと困難が多いです.一応,公式サイトにビルドされたバイナリ(.dll とそれを呼び出すための .lib)が公開されていますが,バージョンが古く,最新の Visual Studio からだと使えなかったりします.

ここでは,私が試行錯誤して得た Ipopt のビルド方法を紹介します.ついでにそのバイナリも配布します.

続きを読む>>
技術系 > ソフトウェア | comments (0) | trackbacks (0)

SECCON 2015 オンライン予選 writeup

Twitterでお世話になっている友利奈緒さん(@mzyy94)に誘われ,特殊能力者を保護する活動の一環として,SECCON 2015オンライン予選に参加しました.初めてのCTFで,解ける問題があるのか心配でしたが,なんとか数問を解くことができました.チームのページの方に,各問題の解き方についてメモがありますので興味がありましたらご覧ください.

SECCON Team TomoriNao - HackMD

ここでは,私が解いた次の3問について,どうやって解いたのかを,一晩経ってからの考察も含めて紹介します.

  • Reverse-Engineering Hardware 1
  • Find the prime numbers
  • Reverse-Engineering Hardware 2
続きを読む>>
技術系 > その他 | comments (0) | trackbacks (0)

友利奈緒ちゃんの抱き枕カバーを自作した

友利奈緒のみなさま,こんにちは.生徒会長の友利です.

本日は,友利奈緒 Advent Calendar 7日目ということで,私,友利奈緒が,友利奈緒の尊さのあまり抱き枕カバーを自作してしまったことなどについて書き綴っていきます.

自作抱き枕カバーというと,いわゆるアイロンプリントによるものを想像する方が多いと思われますが,私が作ったのは,商用と同じ,昇華転写印刷という手法を使った非常に肌触りがよいものです.おそらく,一般のご家庭でこの方法を使って抱き枕を自作している人は,世界中を探してもあまりいないのではないかと思いますので,抱き枕カバーを自作したい方はぜひ参考にしてください.

友利奈緒 Advent Calendar 2015 - Adventar

続きを読む>>
技術系 > その他 | comments (2) | trackbacks (0)

サーバーを増やした

新しくサーバーマシンを購入した.機種は,PRIMERGY TX100S3pの,Xeon E3-1230V2モデルで,RAMを16GB積んで使っている.

続きを読む>>
技術系 > ハードウェア | comments (0) | trackbacks (0)

自宅にInfiniBandを導入した

InfiniBandを導入した.本当は10ギガビットイーサネットを導入したかったのだが,10GBASE-T対応のNICがまだ高額だったので,中古での値下がりが進んだInfiniBandを導入することにした.

続きを読む>>
技術系 > ハードウェア | comments (0) | trackbacks (0)

gigabeat V401のHDDを交換した

今はもう撤退してしまいましたが,数年前まで東芝はgigabeatというブランドでポータブル音楽プレーヤーを発売していました.私は6年くらい前に,40GBのHDDを内蔵したgigabeat V401を購入し,今まであちこち故障したのを直しながら使い続けていましたが,最近HDDの容量が足りなくなり,新しいプレーヤーを買おうにもgigabeatの音質が気に入っていたので,HDDを大容量のものに換装しました.

続きを読む>>
技術系 > ハードウェア | comments (0) | trackbacks (0)

YMZ294を動かす(3)

とりあえず以下のところまでひととおり動きました.

  • 電源を入れるとEEPROMからデータを読み出して再生する.
  • プルアップされたPD5をGNDにショートさせた状態で電源を入れるとEEPROM書き込みモードで起動する.アドレスとデータはUARTから指定する.

ソースコードは汚いし,けっこう量があるので,そのうち一つのページにきちんとまとめて掲載します.なにかに流用したいので早くソースをよこせという方はいたらコメントください.もしコメントがあれば少し急ぎます.なければ

技術系 > 電子工作 | comments (0) | trackbacks (0)

YMZ294を動かす(2)

前の記事の続き.シフトレジスタが届いて部品がすべて揃ったので,試作してみました.

続きを読む>>
技術系 > 電子工作 | comments (0) | trackbacks (0)

YMZ294を動かす

学校では毎日同じ時刻にチャイムが鳴ります.これは,定時になるとリレーを動作させて接続された線を短絡する,プログラムタイマーという装置と,端子が短絡されるとチャイムが流れる装置を組み合わせて実現されており,業務用なので高価ではありますが,個人でも店を探せば通販などで購入することができます.

で,最近これをヤフオクで安く買い,30分毎に短いチャイムを,1時間毎に長いチャイムを,3時間毎に別のチャイムが鳴るように設定して使っているのですが,何かに集中していて気がついたら数時間が経っていたということがなくなったり,目覚まし時計で起きるのに失敗しても時報で目が覚めたりと,いろいろな効能がありました.

さて,時報のメロディーとして,学校のチャイム(ウェストミンスターの鐘,というものらしい)というのも風情があっていいのですが,やはり自分の好きな曲を流したいというのもあります.好きな曲と言っても,普通のPCM音声をパソコンから流すだけじゃおもしろみがないので,音源ICをマイコンか何かから制御して音を鳴らしたいところです.

音源ICというとFM音源が有名で,表現力も高く扱いやすいのですが,残念ながら生産が終了しており,個人が簡単に入手できるようなものではないようです.

そこで,秋月電子で500円で販売されているYMZ294というICを使うことにしました.これは,矩形波生成器とノイズ生成器,32段階の音量変化を3チャンネル備えたもので,表現力は必要最小限であるものの,入手性と価格は悪くないですし,いざとなったら汎用のマイコンでも比較的簡単にエミュレーションが可能に見えます.

続きを読む>>
技術系 > 電子工作 | comments (1) | trackbacks (0)