サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
rti7743.hatenadiary.org
オブジェクト思考とか手続き型とか、関数型とかの議論はまったく無価値だ。 こういう議論をしているお前らは、どうやら、プログラムで大切なことを理解していないのだろう。 const性も、オブジェクトも、ライブラリや部品の再利用、グローバル変数の禁止も、継承を避けることも、巨大な関数を避けることも、それはたった一つのことをやるためにあるといってもいい。 それは、読むべきコードを少なくすることだ。 コードを読むのはとにかく疲れる。 だから読むべきコードを少なくしないといけない。 コードがたくさんあると、どこにバグがあるのか、探すのが大変だ。 新しい機能を実装するべき場所を探すのが大変だし、 何を変更したときに他を間違えて、他を壊さないかのチェックも大変だ。 お前らは、printfを知っていますか? 画面に文字を表示する関数だ。 では、この関数がどのように実装されているか知っていますか? まあ知らない
ELF形式からシンボルデータを読み取って、アドレスから関数を求めよう。 バイナリのあるアドレスから、そのアドレスにある関数名を求めるにはどうすればいいだろうか? たとえば、クラッシュして落ちたときに、クラッシュしたアドレスのログを残したい場合だ。 アドレスだけではわけがわからないので、関数名も一緒にログに書きたいのだ。 libbfd libbfdを使えれば、bfd_openr や bfd_read_minisymbols といろいろ使って、アドレスから関数名を求めることができる。 ただ、もとまるのかもしれないが、libbfdはGPLである。 残念ながら LGPLではない。 ライセンスを気にする人は利用できないだろう。 Binary File Descriptor library https://en.wikipedia.org/wiki/Binary_File_Descriptor_lib
最近、サイトに侵入して、 クレカのフォームを改ざんし、自サイトにカード番号を送信するといういたずらが流行っているようです。 一見正しく動いているプログラムが、実は改ざんされていることになかなか気が付きにくいものです。 運営されている会社も、クレジットカード会社から連絡があったりして発覚しているようです。 一方で、最近の開発環境はソース管理が導入されています。 デプロイツールも導入されているところがあるでしょう。 正しいソースコードがあるならば、それと比較して改ざんを簡単に検知できるのではないだろうか? と、いうことで、ソース管理等を使った改ざん検知システムを作ってみた。 案1 ソース管理そのものを使った diff(ただしあまり安全ではない) とても簡単な改ざん検知 例えば、SVN とかのソース管理で、サーバを管理している場合 (たぶん GITでも同じことができるはず) #!/bin/sh
AIの発達で、コンピュータが仕事を奪うという人達がいる。 確かに、近年のAIの進化は素晴らしく、幾つかの分野で人間を超える成績を出すものがある。 だが、忘れてはいけない。はるか昔にコンピュータに仕事を奪われた人がいたことを。 はるか昔に、コンピュータに仕事を奪われた人たち、それはコンピュータだ。 何言っているんだお前と思うかもしれないが、weikipediaにもちゃんと載っている。 https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF 英語の 「computer(コンピューター)」は算術演算(数値計算)を行う人を指す言葉だった。computer というのは、もともとは計算をする人をさす言葉だった。 それが機械の方のコンピュータが発達して、驚異的な演算能力があったためだろうか、
python初心者が chainerのエラーに遭遇して、ひたすら苦労しながら解決していった記録。 無慈悲なエラーメッセージと、それがどういう意味で、何を言いたくて、どうしなければいけないのかを記録していきたいと思う。 エラーなんて原因がわかってしまえばなんてことはないんだけど、わかるまでが大変。。。 windowsでcudaを利用する場合インストール時 windowsでcudaを利用する場合に、 pip install chainer でインストールすると、以下のエラーが出る場合がある。 cupy\cuda\cudnn.cpp(3662) : error C3861: 'cudnnAddTensor_v3'githubにある新しいバージョンで修正されている。2016/12/31にpipで入れようとしたら、このバグ修正がまだpip版に反映されていなくてとても苦労した。 github版では修正
Linuxで、アプリケーションやユーザごとに、異なるデフォルトゲートウェイを割り当てたくなる時があります。 普通は、優先度とかで自動で切り替えとか、そーゆー感じですが、 そうではなくて、 ユーザAは、デフォルトゲートウェイ1を必ず使い、ユーザBは、デフォルトゲートウェイ2を絶対に使う。 プロセスAは、デフォルトゲートウェイ1を必ず使い、プロセスBは、デフォルトゲートウェイ2を絶対に使う。 そんな風にしたい時があります。 まあ、人生は長いですから、そういう時もあるのです。 ネッツ PC 192.168.0.10 ---> HUB -->gateway1 192.168.0.100 -->gateway2 192.168.0.200 ユーザ user_proxygw は、192.168.0.200 を使い、 それ以外は、 192.168.0.100(default gw) を使うというのを考え
ファイルを順番に7zにかけたいので、unixのxargsっぽい動作をするbatを作ってみた。 ↓これを xargs.bat として保存してください。 @echo off rem 引数が無いとき if "%~1"=="" ( echo Unixのxargs -0 -i と似たような動作をするプログラム. echo usage: echo. echo dir /b *.txt ^| %0 command echo dir /b *.txt ^| %0 command "{}" //{}が置換される。 echo dir /b *.txt ^| %0 command "{}.txt" "{}" //{}は複数回置換される。 echo. echo dir /b *.txt ^| %0 echo command "{}" //Unix xargs -t のかわりにどうぞ。 exit/b 1 ) set
wikipediaのデータから、「よみがな」と「類義」、「英語の読み」、「キャラの読み」、「カテゴリ一覧」を取得するプログラムを作りました。(誰も作ってくれないし、案件流れて暇なので。。。) ご自由にお使いください。(NYSL) 「よみがな」は、漢字混じりのページ名から、ページ内に書かれているよみがなを何とかして特定します。 「類義」は、リダイレクトや曖昧さの解決と、ページ内の項目とか本文から、なんとかして類義と思われるものを特定します。 「英語の読み」は、全部カタカナのタイトルから単語、全部英単語のタイトルから読みをなんとかして特定して表示します。日本人好みの読みができます。(例:こーふぃー、じゃなくてコーヒー) 「キャラの読み」は、架空のキャラクターのよみがなです。wikipediaだとページ内に埋もれているので掘り起こします。(高町なのは->たかまちなのは) 「カテゴリ一覧」は、ペー
VS2013 だけで ffmpeg をビルドしてみました。 (ffmpegは、C99を利用して書かれているため、古いVS2010とかじゃ無理です。) ダウンロード http://rtilabs.rti-giken.jp/files/2014_09_21/v2013_de_ffmpegtest.zip よく使われるffmpegの libavcodec libavformat libavutil libswscaleを VS2013 だけでビルドします。 includeが提示的に書かれていない部分を直して、 #ifdef の代わりに if で書かれている部分をすべて直しました。 また、外部ライブラリ libxxx が必要な部分は全て無効にして、 poll APIに依存する rtp とか rtsp とかのネットワークサポートも無効にしています。 アセンブラによるルーチンも MASM形式ではないの
ファイアーエムブレム 暗黒竜と光の剣のノルダの奴隷市場をAOC (Age of Empires II HD Edition) で強引に再現してみました。 AOCの英雄はむさいおっさんだらけで、女性キャラは、ジャンヌ・ダルク、女王、老婆とかしかいないので、マリアはでてきません。残念。 騎乗ジャンヌ・ダルクをシーダ、普通のジャンヌをリンダに割り当てました。 AOCの英雄はこんなかんじなので、キャラが全然似ていませんが、仕様です。あきらめてください。 これはひどいwww 英雄は、HP+1000 、攻撃力+20 〜 50 , 100ボーナスをつけています。超強いです。 無謀にも、単騎特攻とか、城に突撃でもさせないと死なないと思います。 ディフォルトの難易度は簡単ですが、難易度を普通以上にすると、新しい制約「英雄を誰一人として死なせてはいけない」が追加されます。 この制約が付いていると、いづれかの英
Age of Empires II HD Editionが面白すぎて何も手がつかない。 http://store.steampowered.com/app/221380/?l=japanese まだ460時間しか遊んでいないのに、これだけ中毒になるとか、こわれるなあ・・ 当然、追加のキャンペーンはすべてクリアしてしまっている。(と、いうよりも、初代AoE,RoR,AoE2,AoC,AoMと遊んでいるので、AoEとは、もう15年ぐらい付き合いか。) AoE2 HDでも、とても難しいに、地の利さえあれば1vs7でも勝てなくもない。地の利がないとボコボコにされるけど。 ユーザのカスタムシナリオは昔は公開されていたようだけど、geocitiesとともに消えているので遊べない、語学が苦手だから外人のシナリオでは遊びにくい・・・なら自分で作ればいいじゃないということで、シナリオを3つぐらい作ってみまし
TrueCrypt の開発が終わった? とかよくわかんないので、 最後のまともバージョン ver 7.1a のソースードをベースに、不満な点を修正してみた。 修正点 不満点1. パスワードに ASCII 文字列しか利用できない。 不満点2. パスワードは64文字しか利用できない とりあえず、LinuxのテキストUIからはこれらが動くようにしてみた。 もちろん、互換性もあるので、今まで作ったボリュームも使える。 (ただし結果は保証しないので、遊び場の砂場で遊んでね。) なぜ不満なのか? キーファイルを使えばいいんだろうけど、キーファイルを手元においておかないといけない。 キーファイルをDVDやUSBメディアに入れれば手元ではないかもしれないけど、それでも手持ちのファイルのいづれかと一致すればあたるかもしれない。 それならば、長いパスワードの方がまだ安心できる。 長いパスワードなんて覚えられな
スタートアップを始めるのに意外と重要ではない20の事柄と最も重要な2つの事【btrax】 http://media.looops.net/btrax/2013/09/24/startup/ なんかこんな記事があったので、終わらないC++のコンパイル時間の暇つぶしに、うちはこうだったということを書いてみる。 何やっているの? 弊社では、声でしゃべるだけで家電とかいろいろを操作することができる音声認識のホームコントロールハードウェアを作っています。 特徴は、マイクまで1m〜2mの範囲という広範囲で動作して、声でしゃべるだけで動くというところです。 http://rti-giken.jp/ これを使うと、手ぶら音声認識でホームコントロールできます。 こだわりの設定をしたい人のためにjavascriptエンジンを内蔵しているので、javascriptで家電を自在に制御できたりもします。 javas
windows xp でドメインの変更を行わないと行けなくなった。 既存の環境はユーザがカスタマイズしているため、それをそのまま移動先でも使いたいらしい。 #個人的には0クリアされて心機一転でいいじゃんと思うけど、世の中そうではないらしい。 参考 ユーザー環境をそのまま移行する方法をご存じありませんか? http://q.hatena.ne.jp/1159945602 まずはドメインに参加する a1. マイコンピュータのプロパティ a2. 「コンピュータ名」のタブの中にある、「ネットワークID」ボタンをクリック a3. ネットワークウイザードが起動するから「次へ」 a4. 「このコンピュータはビジネスネットとワークの一部です... 」を選択して次へ a5. 次へ a6. コンピュータ名とドメインを入れる。 a7. ドメインに参加させるために administrator のIDとパスとドメイ
Windows/Office武勇伝 <Surface Proが当たる! 開発者グループOPENキャンペーン> windowsのsocketには、LSPというドライバーとシステムフックの中間にあるようなフック層がある。 まー当時から長い年月がたったので、ちょっとLSPの話をしたいと思う。 とても、心があたたまる話だ。 LSPは、ネットワークをフックする手段の一つだ。 今は、ネットワークをフックする他のフック手段が潤沢にあるので、そう多様されることもない(?)、LSPは、windows 98SE(winsock2) から動作してくれるという、下位互換性最高な特典がある。 この広い下位互換性は、広く広めたいソフトウェアを書きたい人にとっては、とてもメリットがあるのだ。 そして、一度インストールさえしてしまえば、それ以降、特別な方法を使わずとも、すべてのネットワークを使うプロセスをフックすることが
コードは綺麗だけど儲からないプロジェクトと、 コードは糞汚いけど儲かるプロジェクトのどっちがいいですか? もちろん、コードは綺麗で儲かるプロジェクトがいいのは理想ですが、今回は、この2つです。 コードは糞汚いけど儲かるプロジェクトの場合、次期バージョンとかの予算を確保することができます。 そこで、汚い部分を捨てて書きなおすことだって出来ます。 コードは綺麗だけど儲からないプロジェクトは、次のバージョンの改修費用もでずにゴミ箱に送られる運命です。 プロジェクト解散、メンバーは散り散りです。 フリーソフトの場合は、儲かるをユーザに使ってもらえるソフトとか支持されるソフト、 ゲームの場合は、儲かるを面白いゲーム、支持されるゲームとかと適当に読み替えてください。 コードは綺麗に越したことはないです。 だけど、プロジェクトとして成立しないことには意味がありません。 コードは綺麗だけど、誰も遊んでくれ
今回、エープリルフールで作った、弊社社長の部屋を誰でも勝手に音声で操作できるようにするハックについて解説します。 http://rti-giken.jp/ chromeのブラウザからアクセスすると、ブラウザから誰でも音声で弊社社長の部屋の照明や扇風機をコントロールすることができます。(2013/4/1いっぱいまで有効です。) 簡単に説明すると、ブラウザの x-webkit-speech で javascriptで音声認識をやって、それをPHPを経由して、rti技研のC++で作った鯖に情報を書き込みます。 フューチャーホームコントローラーで、その情報を取得することで、ホームコントロールを行なっています。 フューチャーホームコントローラーは、C++で作った鯖に対して ロングポーリングしています。 なので、情報は高速に受け継がれます。(wimax回線でつないでいるUSTの遅延が多少あります。)
クロス開発をすると、問題になるのがライブラリです。 今回は、SSLを取り上げます。 めんどくさいwindowsのSSL SSLをwindowsで使おうとすると、結構めんどくさいことがあります。 windowsのcrypt32 secure32とかの使い方が複雑すぎて人間が理解できないぐらいになっているのです。 作った奴は何を考えてこんな設計にしたのか、1ヶ月ぐらい問い詰めたいところです。 で、これではあんまりだということで、 wininetという素晴らしいライブラリがありますが、 こちらはどちらかというと抽象化されすぎているように思えて、小回りがきかないところがあります。 それに、よく使われる手法だからいまさらやっても面白くありませんw linuxだとOpenSSL一択でしょう。 OSディフォルトで入っていたりして大変便利です。 windowsでも、OpenSSLのwindowsポーティン
フューチャーホームコントローラーの技術解説を書いてます。 フューチャーホームコントローラーは、声でしゃべるだけで様々な家電を操作できる未来的ガジェットです。(写真の手前にあるのは名刺のです。) http://rti-giken.jp/ 今回は、フューチャーホームコントローラー用に作ったのに、ハードウェアの制約で使えなかったボツルーチンについて解説して行きたいと思います。 USBコントロール フューチャーホームコントローラーは当初の構想ではUSBハブを積んで、そのUSBハブの先にある機材もjavascriptで操作できるようにしようと考えていました。 ですが、USBハブにつなげる機材によっては、電力不足に成ることがわかり、この構想は断念しました。 ただ、断念するまでは作る気マンマンだったわけで、 USB機器をwindows/linux両方で操作できるようにしたラッパークラスを作りました。 ち
http://rti-giken.jp/ 一年ぐらいの研究を経て、 ハンズフリーの音声認識で家電を操作する、未来的ガジェットのフューチャーホームコントローラーをリリースしました。 最初のロットの出荷が終わり、現在、2次出荷ロットの募集中です。 フューチャーホームコントローラーって何? ハンズフリーの音声認識でさまざまな家電を操作できるガジェットです。 2001年宇宙の旅とか、RPGとかにある魔法を現実のものに出来ます。 温度センサーや光センサーを搭載したり、スマホで操作できたり、 V8 engineを搭載しているので、 javascriptでの操作もできます。 ついでに、webapi機能もあるので、外部アプリとの連携もできます。 おまけに、実機はlinuxなので、ssh経由でrootアカウントを開放していますので、ハックし放題です。 万能すぎるデバイスです。 ここからオーダーすることができ
index から実体へのシークは mysqlの速度を大幅に下げることで有名です。 事実、indexから実体に対して30%のアクセスがある場合はオプティマイザがindexを利用するのをやめるぐらいです。 シークってそんなに遅いものなのか?って思いますが、とりあえずは受け入れることにします。 MySQL では利用可能な場合でもインデックスが使用されない場合があることに注意してください。この一例として、インデックスの使用によって、MySQL がテーブルの 30% を超えるレコードにアクセスする必要が生じる場合が挙げられます(この場合は、必要なシークが大幅に減少するため、テーブルスキャンのほうが高速になる可能性が高くなります)。 ただしこのクエリに、レコードの一部のみを取り出す LIMITが使用されている場合、結果で返される少数のレコードを迅速に検索できるため、MySQL はインデックスを使用しま
未来には、コンピュータ自らが、自分より賢いコンピュータを自動で作り出せるようになる。 そして、それによって、飛躍的に技術は進化するというSFの話を聞いたことがある。 これは可能なんだろうか? そもそも何を持って、自分より賢いか?とするかによるだろう。 たとえば、遺伝的アルゴリズムなどによって、生物の進化をシミュレートするようなことはできる。 そして、賢い種だけが次の世代に残るといったようなことができ、より環境に適応した賢い種だけが残るようになる。 ただ、問題なのは、何を持って、賢い種かどうかを決定する評価関数はプログラマが作っているわけだ。 決め打ち評価関数では、あらかじめ与えられた範囲での、より賢いというのは作れるだろう。 だけど、今回の問題は、未知の世界の話だ。 人間の知能を持ってしても及ばないぐらい賢いコンピュータというのをどう定義するだろう? テストの点数や、勝負の勝ち負けなどのと
音声認識を利用した未来のホームコントロールのティザーを作りました。 「1月に作った未来な部屋を作ってみた」を実際に、事業化するプロジェクトです。 ティザーサイトを作りました。 自分の部屋にこのガジェットを設置すると、 今の部屋を音声認識で動く未来の部屋にアップグレードできるデバイスです。 10月中ぐらいにはお届けしたいと考えています。 メールアドレスを登録いただけると進展がありましたら、メールで通知させて頂きます。 よろしくお願いします。 https://rti-giken.jp/
MOVIDA Scholarshipに選出されました。 6月のことですが、MOVIDAというベンチャーキャピタルがやっているシードアクセラレーションプログラムで、「音声認識を利用した未来のホームコントロール」というのでプレゼンをしたところ、出資も含めて支援してくれるプランである Scholarship に選出されました。 (まだ実際に出資を受けたわけではない) 「音声認識を利用した未来のホームコントロール」っていうのは、「1月に作った未来な部屋を作ってみた」を実際に、事業化するプロジェクトです。 現在開発している未来の部屋ガジェットを部屋に設置すると、誰でも普通の部屋を音声認識で動く未来の部屋にアップグレードさせることができるようになります。 音声認識を生活の一部にします。今どき電気や水道がない家がないように、未来では音声認識がない家はないぐらいまで持って行きたいですね。 その時やったプレ
みんな大好きSVM の liblinear における solver_type と C ってどんな関係なの? って思って、総当たりをしてみた。 参考: “algorithm - SVM - hard or soft margins? - Stack Overflow” http://stackoverflow.com/questions/4629505/svm-hard-or-soft-margins solver_type C 教師データを再分離した時 テスト用データを分離した時 備考 L2R_L2LOSS_SVC_DUAL 1 92.23000% 99.54700% ディフォルトはこれ L2R_L2LOSS_SVC_DUAL 10 95.81600% 99.70800% L2R_L2LOSS_SVC_DUAL 50 91.13400% 99.89100% L2R_L2LOSS_SVC_D
google chrome とかにある、google音声認識を自由にプログラムから呼び出す方法を調べたので書いてみる。 Fiddler2 でごにごにしてぐるぐるした結果、こーなった。 音声データは、 16000hz 1channel の flac形式で送信している。 で、その結果を元に調べてみると、外人で何人か解析している人がいた。 だけど、日本語のやつがなかったんで作ってみた。 基本的には、lang=ja と lang=US の違いぐらいだけど。 まず、手元に 16000hz 1channel の test.flac を作る。 ffmpeg使うと簡単に作れる。 ffmpeg -i test.wma -vn -ac 1 -ar 16000 -acodec flac test.flac あとは、HTTPS通信してデータを取得する。 chrome がやっているとおりに投げてみた。 なので、サー
beagleboneで、arduinoみたいなことをやってみようということでいろいろ調べています。 よく、付属のLEDの点灯の記事を見かけるのですが、そんなのではなくて、arduinoみたいに外部のLEDをピカピカさせたいのです。 また、beaglebone付属のIDEを使って、webからやるのではなくて、せっかくlinuxが入っているのですから、コマンドラインやプログラムから、ピカピカさせたいものです。 beagleboneは名刺入れサイズの大きさのPCです。 中身はふつーのlinuxです。 gccやg++も最初から入っていますので、いろいろ遊べます。 boostなども入れることができます。(コンパイルに数時間かかりますけど) また、beagleboneのCPU Cortex-A8には、NEONというSIMD命令が搭載しています。 gccのオプションを設定すれば、高速に浮動小数点演算がで
少し前ですが、機械学習×プログラミング勉強会で、「音声認識の誤認識フィルタとしての機械学習」という発表してきました。 今まで、作ってきた音声認識の誤認識フィルタの内容とそこへいたる経緯をまとめたスライドになります。 持ち時間が20分だったので、後半巻き巻きでしたが、、、 結構うけていたと思いますw このスライドにも書きましたが、こーしたらもっとよくなるんじゃないかと意見がある方は、教えていただけると助かります。
x86 と x64 のマシン語は可変長です。 ふつーはそれほど意識する必要はないのですが、 トランポリンフックやライブパッチを作る人だと、マシン語コードの長さを取得したい時があります。 たとえば、トランポリンを作るときに、破壊するバイト数を計算したり、 破壊してしまったメモリをうまくつなぎあわせて処理の効率化を測る場合には、必要になります。 まぁ、まれによくある。といった感じでしょうか? まれによくある程度なので、あんまりライブラリが整備されていないように思えます。 逆アセンブラであれば、用途は満たしますが、ソースコードがやや大きくなってしまったり、 ライセンスがあまり自由でないライセンスだったりするみたいです。 で、 それなら俺が作ってやんよってことで作ってみました。 でけた oplen https://github.com/rti7743/oplen x86とx64のマシン語サイズを求
次のページ
このページを最初にブックマークしてみませんか?
『お前の血は何色だ!! 4』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く