楽天の在庫 API を Python でつかう方法
楽天の店舗が商品データにアクセスするために SOAP による Web サービスがつかわれている. それが RMS API だ. そのなかで商品 API は有料だが,他の API は店舗関係者は無料でつかえる. 在庫 API をつかう必要が生じて,Python でそれをアクセスするプログラムをつくった. 在庫をよみだすにはわずか 10 数行でよい.
楽天の店舗が商品データにアクセスするために SOAP による Web サービスがつかわれている. それが RMS API だ. そのなかで商品 API は有料だが,他の API は店舗関係者は無料でつかえる. 在庫 API をつかう必要が生じて,Python でそれをアクセスするプログラムをつくった. 在庫をよみだすにはわずか 10 数行でよい.
量子アニーリングによる 4 クウィーンのプログラムを書いてみた. もうすこしで N クウィーンへの拡張ができるが,いまのところは N = 4 に固定されている.
画像認識などで使用するビデオのサイズをかえて,画面の一部をとりのぞきたいときがある. そういうときにつかえるプログラムを掲載する. 使用法はつぎのとおりである.
clip(inFile, outFile, options...)
inFile が入力ファイル名,outFile が出力ファイル名である. outHeightMin および outHeightMax は出力画面の垂直方向の範囲を指定する. outWidth は出力画面の幅である.
Caltech 歩行者データセットは特殊なフォーマットになっている. これを通常のビデオ・ファイル に変換するプログラムをのせる. ファイル名につく拡張子は .avi となっているが,.mpg にすることもできる.
GPU のメモリは貴重だ. 12 GB のメモリをもつ NVIDIA TITAN X は高価だが,12 GB ではまだたりないことがある. 下位機種ではなおさらだ. 本来 1 バイトですむ値なら 8 bit 整数のかたちで GPU メモリにつめこめばそれを有効につかうことができるので,そのための方法を記述する.
コンピュータ・ビジョンのベンチマークとして最近では Caltech の歩行者データセットがよくつかわれる. しかし,このデータセットは特殊なフォーマットになっていて,あつかいにくい. Matlab があればある程度容易にあつかえるが,深層学習などのために Python にとりこもうとすると,やっかいだ. ようやく変換ツールをととのえたので,ここで公開する.
これまでグチャグチャなプログラムしかなかったので 3D 印刷関係のプログラムは公開してこなかった. Python による 3D タートル・グラフィクスのライブラリはほかのひとでもつかえるとおもうので,これをまず公開することにした.
C でプログラムを書くのはつかれる,Python のほうが楽だとおもって,Python による raw socket 通信のデモ・プログラムを書いた. おもったほど容易ではなかったが,ほぼ 1 秒ごとに Ethernet のパケットを送受信するプログラムをしめす. (この項目全体は通常の Creative Commons ライセンスによるが,プログラムは public domain とする. つまり,無制限にコピーしてよい.)
工学院大学で学生につかってもらうことを第一の目的として Python で Ethernet シミュレータをつくった. このプログラムは public domain としている.
よのなかには Ethernet を正確にシミュレートするプログラムはあるが,概略動作をみせるための教育的なシミュレータがみつけられなかったので,自分でつくることにした. このシミュレータではコマンド・ウィンドウを複数ひらいて,それぞれでスイッチや端末をシミュレートするプログラムをはしらせることができる. さぼったプログラムなのでボート番号が制約されたりはするが,Ethernet のおよその動作をみせることができる.
ip コマンドをつかって,コンピュータ間で GRE トンネルをはることができる. すこしコマンドをかえるだけで IP/GRE でも (IP/)Ethernet/GRE でも実現できる.
高性能の Ethernet スイッチが 1000 円くらいで買える時代になっているが,学習のようすを観察するなどの実験用としてはプログラマブルなスイッチがほしいこともある. Ethernet の標準にきっちり対応しているわけではないが,学習機能をもち,かんたんなスイッチングができるプログラムをつくったので,ここに掲載する.
IP ネットワークにおいては導通テストのためには ping をつかうことがおおい. しかし,IP がつかえない環境,あるいはネットワーク・インタフェースを直接あつかいたいときには,ping はつかえないか,または便利でない. こういうときにつかうためのかんたんなツールを掲載する. もちろん Ethernet でもつかえるが,Ethernet がつかえないときでも Linux の promiscuous mode がつかえれば,このツールをつかうことができる.
Linux の promiscuous mode をつかって,VLAN タグつきのパケットをためしに送受信するプログラムをつくった. VLAN スイッチであそぶためのものだ. プログラム上のスイッチ (#define VLAN) をきりかえてコンパイルするとタグなしつまり通常の Ethernet のパケットの送受信をすることができる.
UTF-8 のフォームによっておくられたデータのなかから日本語文字をとりだすことは,日本の Perl CGI プログラマならたいてい必要になることである. ところが,その方法は意外に確立されていないようにみえる. ここでは私が試行錯誤したうえ確立した方法を書く.
ストリーム・データ処理は通常はデータベースの処理と同様にインタプリタ的に実行される. しかし,ここではクエリの実行のしくみをみるために,あえてそれを Perl のプログラム (“コンパイル・コード”) でシミュレートしてみる. とりあげる例題は STREAM (Stanford Stream Data Manager) や ATLaS (Aggregate & Table Language and System) でも使用されているオンライン・オークションである. なお,このページでは構造的な Perl に翻訳するやりかたをしめす. 「ストリーム・データ処理によるオンライン・オークションのシミュレーション (非構造化版)」 においては goto 文をつかった非構造的な版のプログラムをしめす.
ストリーム・データ処理は通常はデータベースの処理と同様にインタプリタ的に実行される. しかし,ここではクエリの実行のしくみをみるために,あえてそれを Perl のプログラム (“コンパイル・コード”) でシミュレートしてみる. とりあげる例題は STREAM (Stanford Stream Data Manager) や ATLaS (Aggregate & Table Language and System) でも使用されているオンライン・オークションである. なお,このページでは非構造的な Perl に翻訳するやりかたをしめす. 「ストリーム・データ処理によるオンライン・オークションのシミュレーション (構造化版)」 において,構造化されたプログラムをしめす.
螺旋 3D 印刷技術を使用してつくったこのような「3D デザインランプ」を 3d-dl.com で売っています.