日記的「駄目」プログラミング Yet Another Hacking Life

Archive for the ‘プログラミング’ Category

ニコニコのAPIのメモ書き

08.02.2012 · Posted in ニコニコ, プログラミング

ちょっとしたメモ書き 複数動画の情報を一括で取得する iOS用ニコニコ動画が使っているAPIで複数の動画の情報を一括でクェリーすることができる。ログイン不要。 例 : http://i.nicovideo.jp/v3/video.array?v=sm9,sm9,sm9 出力はXML。内容はgetthumbinfo に近いけど要素名が異なる。既存のプログラムで差し替えて使うには互換レイヤーを作らないといけないのでだるい。 以下の配信でのコメントで教えてもらいました。 動画検索APIのURL変更 「...

ググるだけが能じゃない(Scalaの小ネタ)

07.31.2012 · Posted in Lift, Scala, プログラミング

sbtのbuild.sbtへの依存関係の記述にからむ小ネタ そこそこどうでもいいあらすじ Scala+liftwebでMongoDBを使っています。初めはLiftのmapperを使っていたんだけど、スキーマレスとORマッピングの相性が悪いというか、そこに収まらない使い方をしたくなったのでcasbahを使うことにしました。 ビルドにはsbtを使っているんだけれど、依存関係の記述をどう記述するかでハマりました。Scalaのバージョンは2.9.1、Liftのバージョンは2.4。最終的に以下のようなbu...

ニコニコ動画のオレオレ外部プレイヤーの算段がついた

06.28.2012 · Posted in ニコニコ, プログラミング

前回までのあらすじ(真面目に読まなくてもよい) 前回「ニコニコ動画が倒せない(ブラウザ上でニコニコの動画にアクセスする)」 製作中のウェブアプリケーションにニコニコ動画のプレビュー機能を追加したいのだけれど、公式の外部プレーヤーではJavaScriptで制御できなかったり設置にscriptタグを使わなければいけなかったりでいやーんな感じ。で、オレオレ外部プレイヤーを作ろうと思ったんだけど、動画ファイルをHTTP GETするのに必要なnicohistoryというクッキーをクロスドメインで取得する方...

ニコニコ動画が倒せない(ブラウザ上でニコニコの動画にアクセスする)

06.23.2012 · Posted in ニコニコ, プログラミング

2012年6月28日追記:7割方倒せました「ニコニコ動画のオレオレ外部プレイヤーの算段がついた」 ひょんなことからニコニコ動画の動画ファイルへアクセスするのが意外に簡単だと言うことがわかったので、ここ数日取り組んだことのご報告的ななにか。 やりたいこと「ニコニコ動画のオレオレ外部プレイヤーを作る」 欲しいものの仕様 実装はFlash ニコニコ動画の動画を再生出来ること ← 重要 再生、停止、一時停止、音量調整などの基本的な操作ができること JavaScriptから上記操作を制御出来ること 再生完...

ニコニコ動画に動画検索APIができたらしいので取り急ぎScalaで

06.17.2012 · Posted in Scala, ニコニコ, プログラミング

割とどうでもいい前置き(読まなくてもよい) ニコニコ動画の公開APIが発表されてはや数年、「いずれドキュメント化したい」みたいな話が運営からありつつ一向に音沙汰がないまま時間だけが過ぎてきました。(外部プレーヤーや各種APIの開放について) その間ニコ生やらなんやらが流行ったりなんかして、いろんなところで解析なんかが行われたりなんかしてニコニコのサービスを外部から利用する手段はたくさん流通しているものの個人的には「なんかハックな感じでいやだなー」という印象でした。 ハックな感じで嫌だ、っていうの...

Scala(とLift)はじめました

06.04.2012 · Posted in Lift, Scala

JVM上で動く言語をひとつ身につけたいということでScalaを始めました。Javaじゃない理由は「Javaは怨嗟の声しか聞こえてこないから」。あとは関数型プログラミングのパラダイムを体験したいという面もありつつ。 小さいコードを書きつつ、Liftを使えるようになるために格闘中。 「むしゃくしゃしてやった」的に短期間でネタに走ったウェブサービスを作れるようになりたいです。

日記

03.05.2012 · Posted in iOS, プログラミング, 日記

昨日の話。夕方に大百科ブースの打ち合わせで浅草へ。メンバーに恵まれたことをあらためて感じる。夜に帰ってから2時間くらいニコ生をする。 本日。昼に税務署に行って個人事業主の開業届と青色申告の届けを出す。帰ってからXcode4.2でiOSアプリの開発の勉強。Storyboardによる画面遷移までできた。 そんな感じ。

ext3からext4 no journaling modeへの変換

09.07.2011 · Posted in Linux, PandaBoard, 日記

PandaBoardの公式ページで紹介されているUbuntu 11.04は「ARM/OMAP – Ubuntu Wiki」からダウンロードできる。自分は11.04のHeadless Image(モニタやキーボードを使わない前提でX.orgなどが起動しないバージョン)を使っている。 で、このイメージでインストールされるUbuntuのファイルシステムはext3である。世の中的にはフラッシュメモリ用のファイルシステムならext4がいいんじゃね?って話なので変換してみる。また、ext4でも&...

std::tupleと構造体の相互変換(任意の型でのget<i>の実現)

08.23.2011 · Posted in C++, C++11, プログラミング

メタプログラミングの練習をかねて。 既存の構造体とstd::tupleを非侵襲的に相互変換するスマートな方法を考えてみる。ちなみにboostは使わない派。 とりあえずコード。 #include <iostream> #include <tuple> #include <typeinfo> // 構造体をget<>に対応させるための準備 template<typename T0, typename H0, typename ...Args0&g...

C++0xのtupleを使って関数から複数の戻り値を返す

12.05.2010 · Posted in C++, プログラミング

C++0xのSTLにはtupleテンプレートクラスが導入され、任意の型の任意の要素数の組を必要に応じて定義できるようになった。これを関数の戻り値とすることで複数のオブジェクトを返せないかというお話。ひどくいまさら感のある話題だとも思うし、自分は勉強の仕方がいい加減なので穴もあると思う。ただ、ここ最近、気になってしかたがなかった(使ってみたかった)機能ではあるのでまとめておく。

Matcha合宿、秩父でだらだらしている話

08.12.2010 · Posted in C++, Matcha, 日記

現在、秩父市の夢庵でこの日記を書いている。3泊4日でホテルに泊まり、一人勉強するという一人合宿である。今日は3日目。 勉強と言ってもやれたことはC++ Coding Standardsを読み直しただけだが。適当な場所がなくてほとんどドライブになってしまった。まあ休養も兼ねてるからいいんだけどさ。 Matchaの数学ライブラリに手をつけ始めていて、行列クラスの近代的なデザインに悩んでいた。上記の本を一通り読んで妥協すべきところと、実装できるところの落としどころが見えたのが収穫。 いわゆるC++の定...

Matchaの進捗と言語の話

06.30.2010 · Posted in C++, Matcha, プログラミング, ロボット

相変わらず週末だけのコーディング。先週末は本格的に体調を崩してキーバリュークラスのコピーコンストラクタを書いただけだった。 最近悩んでるのが言語とコンパイラ。現在はC++・GCC 4.4で開発している。 で、C++0xを使いたい。Matchaが形になるのは今年の秋か冬だし、そのころにはC++0xの仕様も確定してるだろう(?)。GCC 4.6ならかなりの仕様が実装されるだろうし。長期プレイで作っていくなら未来に普及する現在の最新を取り入れたいところではある。 フリーなコンパイラでいうとGCCとLL...

ROSの話・Matchaの話

06.25.2010 · Posted in Matcha, プログラミング

Willow GarageがROSというロボット開発用ミドルウェア(ROSではメタOSと呼んでいる)を去年から公開していて最近になって話題になりはじめている。俺も最近知って、ドキュメントを流し読みしたりしている。 RTMがコンポーネントのデータ仕様を規定しなかったのに対し、ROSでは規程しているのがアーキテクチャの面での大きな違い。さらに「ロボット作るならこのデータいるよね」っていうロボットのコンフィグなどについてもファイル仕様(XML)を決めたりしている。大きいのはそうやって規定したデータ仕様...

MatchaのIPCのフォーマットはMessagePack(多分)

06.25.2010 · Posted in Matcha, プログラミング, ロボット

ロードマップではIPCはまだ先なんだけど、実装方法はちまちま調べてる。 RAMディスク上のファイルで共有ロック・排他ロック・inotify・epollを活用してブリテンボードを作るというのもその一環。 で、そのブリテンボードにどんなフォーマットのデータを載せるかという話。RTMの場合、(ブリテンボードではなくデータポートという呼び名だが)データフォーマットに規定がないっぽい(流し読みしかしてないが)。データポートの設計者がバイトフォーマットを(多くはC/C++の構造体として)定義する。ROSの場...

MatchaのGUIはGTK+

06.21.2010 · Posted in Linux, Matcha, プログラミング

移動ロボットのプログラムをしていると動作中のセンサデータをモニタしたいというシチュエーションは多い。で、GUI。 Matchaはフレームワークなのでアプリケーションのモデルを縛ることになる。一方で低レベルの部分でIPCの実装を提供する。やろうと思えばMatchaアプリケーションのモデルを離れて自前でイベントループを回すことができる(ようになる予定)。 ここでGUIにからんで二つの選択肢がある。ひとつはMatchaフレームワークでGUIを提供する方法。もうひとつは既存のGUIフレームワークからMa...

Linuxでファイルをepoll?その2

06.21.2010 · Posted in Linux, Matcha, プログラミング

epollって時点でLinux限定だよな。 ってのはともかく方法が分かりました。inotifyを使用すればファイルへの変更などのファイルシステム上のイベントをselect系で監視することができます。当然read()でもできます。Linuxにどっぷりですが、どのOSでもファイルの監視くらいはできるだろうから採用してもいいでしょう。 inotifyはかなり便利でディレクトリを監視すればディレクトリ以下で起きるファイルの生成など多くのイベントを監視することができます。ちょろりと活用方法を企み中です。 ...

Linuxでファイルをepoll()?

06.19.2010 · Posted in Linux, Matcha, プログラミング

そろそろMatchaのIPC実装の目処をつけようかと、実験コードを書き始める。 Matchaの基本コンセプトとしてユーザスペースでのポーリングを極力抑えるというものがある。で、デバイス関係はデスクリプタをまとめてepoll()で待つという実装をしている。 IPCにはメッセージパッシングやブリテンボードなどいくつかのモデルがあるが、ブリテンボードについてはRAMディスク上のファイルで実装しようかと思ってた。epoll()のトリガでflock()でRCUなら楽勝だろうと。 で、実験コードを書いたが動...

Matchaの進捗

06.13.2010 · Posted in C++, Matcha, プログラミング, ロボット

相変わらず週末に数時間という状況が続いている。そのうえ最近は週末にイベントが立て込んでてコーディングが進まない。 イベントクラスに乗せるデータはキーバリューベースで実装することにしたのは前に書いたっけ?とりあえずキーバリューのクラスを実装して、タイマイベントポートのイベントをキーバリューベースで取得するサンプルソースが書けるようになった。キーバリューのディープコピーが実装されていないところがバグとして残っている。スレッディングとスレッド間のイベント送受信まで実装するのがマイルストーンになるかな。...

Matchaを作る理由

06.06.2010 · Posted in Matcha, プログラミング, ロボット

徒然と書く。 趣味です。と、言ってしまえばそれまでなんだけど、センサドリブンな自律ロボットのフレームワークに必要な仕様を見極めたいという動機もある。それはつまり何かというと、センサドリブンな自律ロボットのソフトウェアの理想型を追求するという問題でもある。アプリケーションごとに問題は異なるし、異なる問題に対して最適な設計をするのがエンジニアリングなのかも知れないが、それでも何かしら問題に共通する設計の本質というものがあると思う。 もうひとつ実際的な面では2011年度のつくばチャレンジに参加するにあ...