2014-04 << 2014-05 >> 2014-06

2014-05-31 (土)

暑い.

夜は飲み会的な.いつも行く店に行ったら,三森すずこのサインが壁に書かれていた.

IMG_20140531_201524.jpg

アルコール多め.

IMG_20140531_205101.jpg

肉.

中途半端に手をつけて,なんとなく出来そうと分かったところで放置されてるものが多いのでどうにかしたい.PCの「C:\Users\kawahira\Documents\Projects」フォルダを見て,もう少し何かしてから公開しようと思って,放置してしまってるものがたくさんあるのを見てると何か危機感を感じる.

スマホのカメラのフォーカスにかかる時間とフォーカス機構が動いてる間に連続して撮った画像から奥行き付きのモデル生成するとかサクッと試そうと思いつつ半年以上経ってた…….ただ最終的にはGoogleのProject Tangoとかのほうが未来ありそうだしと思って放置.

ThinkPadキーボードのコントローラ基板を自作して,キーボード部分だけ買って,USBやBluetooth接続の基板と,3Dプリンタとかでガワ作って自分好みなトラックポイントキーボード欲しいとか.もう回路もファームウェアも動いてるのになぜか完成しない.普通に使いたいし,70億人くらいの人が欲しいと思ってるはず.

紙やホワイトボードにペンで文字や図形を書きつつ,スマートフォンに色々処理させてみるとかも,やろうと思って6年.ふと思い出してAndroidアプリに移植し始めたの2年前か.リアルタイムに計算したり式を展開したり間違い指摘されたりしないのは紙とペンのバグだと思うので修正したい.

今月の頭に買ったポケットミクも,色々出来るなと思うし,妄想の中では出来たつもりでいるのに,永久に放置される未来しか見えない...

2014-05-30 (金)

仕事で使ってたノートPCがリプレースされて新しくなったので,環境周り色々見直し中.

*B0088T87BE

デュアルDisplayPortアダプター0B47092が届いてたので会社で使うことにする.

このアダプタ,箱に接続の仕方が書かれた紙が入ってるだけで,説明書の類が無い.というか,いまいちスペックも分からない.Lenovoらしいけど.

とりあえず1680x1050のディスプレイ2枚つないでみると,IDT WMM1300という名前で出てきて,3360 x 1050の1枚のディスプレイとして認識されていた.出力解像度を1枚のディスプレイのサイズに合わせると,同じ内容が2枚に表示される.

解像度違うやつ混ぜたり,片方を縦にして使いたいときどうなるんだろうか....(中身は同じWMM1300を使っているであろう他の製品だと,解像度が低いディスプレイに合わせられるっぽいので同じ解像度にしとく必要がありそう?)

ウインドウ最大化すると横長になりすぎて,そのままだと使いにくいので何かよさそうなツールとか探そう.

IMG_20140530_221017.jpg

あとはフルスクリーン表示するソフトや,Windowsのログイン画面もパスワード欄が真ん中で分割されるのでちょっといやな感じ.グラフィックボード側の設定でどうにかならないかな...ディスプレイを一枚増やせば真ん中で切れるのは気にならなくなるかも.

Thunderboltのおかげか,さいきんDisplayPort対応機器増えてきたけど,デイジーチェーンできない機器多いし,DisplayPortハブもほとんど見かけないし,マルチディスプレイ環境にやさしくないな...

2014-05-29 (木)

昼前から予定入っていたので,午前中に出社.

StartSSLからSSL証明書がもうすぐ切れるよメールが来てるので更新しないと...

Chromecast届いてたので,試しに使ってみる.でも今日は遊ぶ時間ない.

2014-05-28 (水)

朝起きて、Chromecastを買いに行くべきか悩んだ結果、そもそもテレビとかないし買う必要はないという結論を出した。で、会社行ったらやっぱChromecastで遊んでる人いたので、うっかりAmazonで注文してしまった。

ついでに会社のPC新しくなってDisplayportついたので、http://www.amazon.co.jp/dp/B0088T87BE を注文してみた。

2014-05-26 (月)

とても眠い.

2014-05-25 (日)

明け方に起きて自炊本リーダー(仮)をいじる.そのあと昼すぎまで寝る.

ここ一週間,久しぶりにAndroid触っていた.スマホはもう少し使いやすくならいないのかなあ.このペースだと10年くらい待つ必要あるのかも.少なくとも現状のスマホのUIだと複雑なことするの面倒臭すぎるし,人間が考えてること勝手に読み取って良しなにやって欲しいと感じる.

*[Android] 自炊本リーダー(仮)

Book Reader(仮)もとい自炊本リーダー(仮)をいじる日.

半年ぶりにアップデートしました.

最近放置してしまっていたけど,使ってくれている人は徐々に増えてるな.RAR形式対応の要望が多かったので対応.https://github.com/edmund-wagner/junrar を使ってお手軽に済ます.

そういえば,数日前にGoogle Playから,「ポリシーに違反しているからレーティング変更した」というメール来てたけど,理由はよくわからなかった.

Google Play のアプリ コンテンツのレーティングを見ても,アプリ自体はどう頑張っても引っかかる要素なさそう.ストアのスクリーンショットにニャル子さんの表紙のようなものが見えてるせいで「刺激の少ないアニメや架空の暴力描写を含むアプリ」に引っかかったか.

2014-05-24 (土)

午後出かける.夕方帰ってきて寝る.

*[Android] FileChannel.mapでOut of memoryになって困る

Android(というかJava)で大きいファイルを扱うとき FileInputStream で読んでると遅いので,FileChannel.map()でmmapしたりするけど色々ハマりどころが多い.

複数ファイルを切り替えながらmmapしてるとすぐ「java.io.IOException: mmap failed: ENOMEM (Out of memory)」とか言われてしまう.

ヒープはほとんど使ってないので,単純にアドレス空間の制限に引っかかってるのだろうけど,ファイルを閉じてもMappedByteBufferがガベージコレクタに回収されるまでアドレス空間を専有し続ける.いまのところ,祈りながらSystem.gc()と書く以外の方法が見つからない...

ついでにByteBufferのpositionがintなのがすでに残念だし,ByteBufferの皮をかぶった何かを実装しようと思ったけど,ByteBufferメソッド多すぎて無かったことにした.Java使わずに書いたほうが良さげ.

2014-05-23 (金)

今日も早く起きたので午前中コード書く日.やっと調子出てきた頃に会社行く時間になるのが残念だな.

加速度センサー周りいじる.ジャイロと組み合わせればそれなりに動くけど,誤差の蓄積はけっこう酷いので人間の動きを認識してそれっぽく処理するようにしないといけない.

2014-05-22 (木)

昨日,家に帰ってすぐ寝てしまったので,朝起きてコード書く.ちゃんと補正した上でNexus5のセンサで,移動のトラッキングがどれくらい出来るか確認したり.

*Nexus7の加速度センサ周りとか

手元のNexus5の加速度センサだと,方向によるけど0.2~0.3m/s^2くらい中心がずれてたっぽい.倍率も0.4%くらいSensorManager.GRAVITY_EARTHと差があった(けど,今いる場所の重力が実際その値だったという可能性もある)

GRAVITY_MOONとかは使う可能性が,もしかしたらあるかもしれないけど,GRAVITY_DEATH_STAR_Iとか,いつ使うんだろ系の定数多い.

Oculusもどきを作った時,ジャイロでのヘッドトラッキングの補正にSensorManager.getOrientation()使ってたりしたけど,今回は一から書いた.

getOrientation()は簡単に加速度と地磁気からおおよその方向が得られるのでちょっとした用途に使うのは便利だけど,真下に近い方向を向いてる時とかに一部の軸の回転量が不正確になる.(以前使った時は軸を入れ替えて計算したりしてごまかしていた)

あと,前から不便だと思ってるの,android.opengl.Matrixがrotateとかの操作が右からしか掛けられないのだけど,なんでandroid.graphics.Matrixの4x4版にしてくれなかったんだろうか.こっちはpreとpostの両方のメソッド用意されてる.

このへんで時計見たら昼だったので会社へ.

2014-05-19 (月)

仕事する.

2014-05-18 (日)

Androidアプリ書いたりする.Nexus7はあまり気にならなかったけど,Nexus5の加速度センサわりと誤差あるなあ.キャリブレーションする機能つけないとダメそう.

電子パーツ買いに出かけたはずが,気づいたら本を物色していて,秋月閉まる時間だし,何もせずに帰ってきた.

この日記,スマホで見てる人もだいぶいるので,テンプレートとCSSを少しいじった.幅に合わせてレイアウト変わるように.使ってるCGIも10年前に書いたやつだし,そろそろ新しいのに乗り換えたいなあ.

2014-05-17 (土)

そろそろ会社いく準備しよう,と思ったけど土曜日だった

cssいじったりしていた.いつも,以前書いたcssを適当にコピペしながら作ってるのだけど,良くわからないものが紛れ込んだり,どれが新しいのかとかもう分からないので整理したい.ひとまず,いつも使う部分は少しづつ切り出しておく.Bootstrap使えば良いのだけど,bootstrapに合わせてHTML書きなおすのも何か嫌だし,簡単なフォーム作りたいだけの時とかにBootstrap使うのもなあという理由で,いつも前のやつのコピペで済ましてしまう.

(追記:一旦ここに置くことにした https://github.com/binzume/csslib )

2014-05-16 (金)

そういえば,ニコニコ超会議でiPhoneとフレネルレンズでOculus Riftっぽいことやってた人いたなと思って真似してみる.とりあえず,発掘したフレネルレンズ+1Lのお茶の紙パック+Nexus5で試作.

IMG_20140517_024020.jpg

Nexus7用に作ったシェーダだとまともに見えなかったので調整する.それでもあんまり良い感じではないな.レンズが悪いのか視野角が狭い...ありあわせの材料なので仕方ないか.(というか,上手くいかなそうなのは確認済みだったのだけど)

IMG_20140517_023536.jpg

こっちの写真は失敗作.ディスプレイとレンズの距離が微妙に足りなかった.

試行錯誤しつつやって作るのに1時間弱.材料費はたぶんフレネルレンズが50円くらいであとはテープとか紙パックとか.

Oculusわりと大きめのポネル1枚でできてるけど,最近,ディスプレイのピクセル密度が上がってきてるので,500ppiくらいのパネル使えるなら,小さいパネルを左右2枚用意して作ったほうが小型化出来て良い感じになりそう.

2014-05-15 (木)

そういえば,携帯キャリアから出てるAndroid端末,Bluetoothテザリング出来ないのが多いけどなんなのだろ.常時ONにしててもそんなに電池食わないしWiFi切れないしWiFiでのテザリングより便利なのだけど.

2014-05-14 (水)

経営統合とか何か色々.

とても眠いので帰ってすぐ寝てしまった.最近,夜は起きてられない.かといって,朝はやく起きるわけではないのだけど.

2014-05-13 (火)

昨日は日付が変わる前に寝てしまったので,10時間くらい寝た.

IPv6接続の速度を測ってみたら,

speedtest6.png

多少ばらつきはあるけど,だいたい400~420Mbpsくらい出るみたい.

VNE経由だと200Mbps制限なくなるという話だったけど,思ったより出る.というか400Mbpsは間に入ってるバッファローのルータの上限の可能性もあるな.

Googleはいつのまにか大抵のサービスがIPv6対応してるし良い感じ.

2014-05-12 (月)

何年かぶりにIPv6な環境をちゃんと整える.追加料金無しで,トンネルとか使わないちゃんとしたIPv6環境が作れるようになったのは良いけど,これがオプションでなく,デフォルトで提供されないと意味ないな.

*フレッツとかIPv6とか色々

土曜日にフレッツのv6オプションを申し込んでNTT側はすぐ設定完了してv6なアドレス降ってきたのだけど,ISP(ニフティ)側の設定が完了するまでインターネットに出れなかった.で,完了メールが来ていたので試してみたら,普通にIPv6で繋がった.

これで実験のためとか動作確認でIPv6が必要になってもトンネル通したりする必要が無くなった.あと,IPoE接続なのでISPを通らずVNE経由でインターネットに出るため,フレッツ光ネクストの200Mbps制限をうけずに1Gbpsでインターネットにつながる.NTTのフレッツはやたら面倒なことになってるのでこのへん読んでから色々調べるとわかりやすい.

手順にDNSサーバの設定があったけど,RAで降ってくるフレッツのDNS( 2404:1a8:7f01:a::3, 2404:1a8:7f01:b::3)がそのまま使えるようになってるみたいなのでとりあえずそのまま.ただ,このDNSサーバ,一昨日試した時はフレッツ内の名前しか解決できない酷いやつだったはず(?).まぁISP側の設定前に名前解決できてしまうと,つまりTCPoverDNSとかでインターネットに出れるってことで,ISPの契約せずにフレッツだけでインターネット接続できる可能性が出てくるので,ダメなんだろうな...

そうえば,設定完了前は2408から始まるアドレスが振られてたけど,完了後は240bから始まるアドレスに変わった.

2014-05-11 (日)

新宿と秋葉原あたりで買い物.

2014-05-10 (土)

部屋掃除したり.傷みかけた玉ねぎが出てきたので,賞味期限の切れた玉子と,冷凍庫にあったいつのものか分からない鶏胸肉で親子丼.

先日,OpenSSLのバージョンアップをしてたときに,ほとんど使ってないVPS環境があったのに気づいたので解約する.で,しばらく前から東京リージョンを指定できるようになってたので,うっかり契約しそうになったけど我慢.

*AndroidとかIPv6とかいろいろ

IIJmioはIPv6アドレスをくれるので,せっかくなのでAndroidでIPv6周り試してみていた.普通に外から繋がるし色々出来そう.IPv4はプライベートIPしか振ってくれなかったりして不便だった.

ただ,WiFiつなぐと3Gネットワークのインターフェイスは無効になってしまうのか.両方有効にしておく設定無いかな.

フレッツのv6オプションを申し込んで気づいたのだけど,以前NTTのフレッツは.fletsというオレオレTLDを使っていたのだけど,普通の.jpドメインを取得していた.fletsというgTLDを誰かに取られたらどうするんだと思ってたけど,普通にjpドメインになっていた.まともになった.

2014-05-09 (金)

時間が足りていない.

2014-05-07 (水)

もっと休みたい気もするけど,出社.

2014-05-06 (火)

一日新宿をふらふらする日.

今日で休み終わりか.あと半年くらい休みたい.

ポケットミク,パッケージ見ただけだと凄さ分からないし,もったいないな.

そろそろARMもちゃんと使えるようになっておかないとダメな気がしてきた.DIPパッケージが無いと素人電子工作erには辛いよなーと思ってたら,これがよさ気].使い物になるのか怪しい感じだけど.

*都庁の展望台行った

お昼は肉食べた.都庁の展望台に行ってみたかったので行ってみた.ysaotomeはお腹壊してるようなので,残りの面子で.

IMG_20140506_140320.jpg

高い.

IMG_20140506_143119.jpg

展望台の監視カメラが気になった.とても多い.

IMG_20140506_141030.jpg

人口密度やばそうな都市だなあ.

IMG_20140506_155136.jpg

モンブランとチーズケーキ食べた.

夕食はモツ鍋食べた.

2014-05-05 (月)

雨やんだので夕方出かける.

*ポケットミクで遊ぶ

会社寄って,5/1の続き.

改めてよく見る.電源が1.2V,3.3V,5Vの3系統あって面倒だな.主な部品は,

  • YMW820-S 音源
  • MX25L1635E フラッシュメモリ
  • GPEL3101A 謎(ARMという噂

ポケットミクのフラッシュメモリはMX25L1635Eで,見慣れたやつだし問題ないだろうと考え,とりあえず基板から剥がす.

PCとSPIの接続はhidaspxを流用した.hidaspxはAVRライタだけど普通にSPI通信すること考えて作ってあるようです(他人ごとのように).フラッシュメモリ読み書きするプログラムも昔書いたやつが発掘出来たので,これもほぼそのまま使うことができた.

IMG_20140505_213127.jpg

とても適当.汚い.

最初,なんだかデータが化けると思ったら,電源3.3Vなのに信号5Vで入力してた.クロックを3.3Vにしたらマシになったので,ちゃんと3.3Vにする.それでも,配線がいい加減なのでビットがずれたりするので何回か読み出す.この状態だと書き込むのは怖いな.

IMG_20140505_213658.jpg

ほとんど道具が会社に置きっぱなしになってたので,休みの人気のないオフィスで作業してたのだけど,自称Webエンジニアな人間の机とは思えない感じに...

ファームウェアを読む

ファームウェアのライセンスとか確認してないし,ここから先は夢の中だった気もするし,きっと寝てただけだと思う.

フラッシュメモリの最初の4バイトはSPII.

次に,2000000chという値があるけど,たぶんエントリポイント.というか,フラッシュは20000000hにマップされている雰囲気なので,先頭12バイトがヘッダでその後がコードだと言いたそうだ.

続く4バイトは謎._PIiなので定数かも.

そのあとは実行できそうなコードが書かれてる.32ビットの固定長命令っぽい.Thumbではない?先頭には明らかにARM用であろう割り込みベクタがあるのでARMであることは確実.

バイナリエディタでコード読んでいてもSAN値が下がりそうなので,とりあえず逆アセンブラに突っ込む.それっぽいコードが出てきた.やっぱり開始アドレスそ20000000にしておくとそれらしい感じになる.

ARMのアセンブリコード見てると,ポケステ思い出すな.

人間が読める文字列プールもあるので,見てると色々と想像出来る.

stringpool.png

ちなみに後ろの方に色々データ入ってるけどこんな感じ.デコードする実装は読めてないけど,暗号化や複雑な圧縮はされてないので暫く眺めてれば分かりそう.元の値は16ビットで,何かごにょごにょという感じかなあ.

dump.png

起動時に何かメッセージを出力しているけど,どこに出てるんだろうか.GPEL3101AにJTAGかシリアルインターフェイスがあるのだろうけど,データシートとか無いしなあ.

せっかくだし,初音ミクに"Hello, World"って喋らせるプログラムを書き込んで実行してみたい.MIDIのインターフェイスからコントロールすれば良いと言われればそれまでだけど,やっぱりCPUとメモリがそこにあるなら自分で書いたコードで動かしたいところ.

でもすでに飽きてきたので,たぶんできない...

という夢を見た気がする.

2014-05-04 (日)

そろそろ日中は起きてるようにしないと社会復帰が危ういので起きていようと思ったけど,寝てしまった.

2014-05-03 (土)

時計を一切見ないで眠くなったら寝る生活してると,ほぼ12時間周期になる.

5/1に買った本はあらかた読んだのでまた本屋に...

2014-05-02 (金)

だいぶ日付の感覚が怪しくなってるけど,昨日買った本とライトノベルを読んでた.

2014-05-01 (木)

買い物.

*ポケットミク買った

とても今更感あるけど,うっかりポケットミク買ってた.前から触りたかったのだけど,ずっと忙しかったので.

IMG_20140501_184612.jpg

ついでに会社寄ってポケットミクを分解してご飯食べる.

IMG_20140501_190205.jpg

安っぽい基板が載ってるんだろうなと思って開けてみたら,わりとしっかりした回路だった.

というか,普通にMIDI音源なのか.買って分解してから説明書読んで知った.