サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
猫
firewood.hatenadiary.jp
WindowsでNode.js(+Express)とRedisとMongoDBを動かしてみた。 MongoDBのインストール 10genの公式リンク http://www.mongodb.org/downloads からダウンロードする。Recommendedになっているもので良いと思います。 実行ファイルとデータの置き場所を決める。 データの置き場所は、コマンドラインから指定しない場合はC:\data\dbとなる。 以下は実行ファイルをC:\MongoDB\bin、ログをC:\MongoDB\logs、データをC:\MongoDB\dataに置く場合。 管理者権限でコマンドプロンプトを開く。(スタートメニュー→コマンドプロンプトのアイコンを右クリック→管理者として実行) C:\MongoDBの用意 c: cd \ md MongoDB cd MongoDB md bin md data
これはCompetitive Programming Advent Calendarの11日目の記事です。 Advent Calendarには入門記事が意外となさそうなのと、自分自身初心者なので、紹介記事を書きます。 きっかけ 今年の4月から競技プログラミングをはじめました。「人材獲得作戦」や「コーディングスキル判定」をやってみたらめちゃくちゃ時間がかかったりして漠然とどうにかしたいなと思っていたところ、Google Code Jam勉強会というのを取引先の人から教えてもらい参加しました。問題が面白いし、あまりにもコードが書けないのでTopCoderに登録してそれ以来はまっています。 TopCoderとは 競技プログラミングは文字通りプログラミング能力を競うものです。TopCoderは競技プログラミング環境を提供する会員制サービスで、要は、コーディングの速さと正確さを競うオンラインゲームで
良い記事 http://d.hatena.ne.jp/takuya_1st/20111121/1321865738 http://d.hatena.ne.jp/takuya_1st/20111123/1322068116 そんな私はPutty + VMware Workstation派。 Cygwinだと困ること ビルドできないものがあるのと、web開発だと、リリース環境との違いを意識するのが面倒。 ビルド速度については、coLinuxより速いケースもあるし、個人的にはCygwinを導入しない主因ではない。 それよりも色々気をつけないといけないという気がして、安心感がいまいち足りない。 なんだかんだでVMwareは楽。電車の中でもデバッグできるしスナップショットもある。 サスペンドすると接続切れる問題 これは重大。うろ覚えだが、Windows XP + VMware Workstation
Visual C++ 2005でMessagePackとProtocol Buffersを試してみた。 MessagePack インストール http://msgpack.sourceforge.jp/ から最新版(3/10の時点ではmsgpack-0.4.2.tar.gz)をダウンロードし、適当な場所に展開する。 プロジェクトファイルは付属してないので作成した。 http://github.com/firewood/test/blob/master/msgpack_vc8.sln http://github.com/firewood/test/blob/master/msgpack_vc8.vcproj c/msgpack/zone.hに以下の部分がある場合は削る。(msgpack/sysdep.hで吸収しているので不要) #include #include プロジェクトファイルを開き、
ThinkPadはBIOSで内蔵無線LANカードのベンダチェック(特定のカードのホワイトリストを持っていてそれ以外を拒否する)をしていて、純正品でないと1802というPOSTエラーが発生して起動しないようになっている。 ある世代(X31とか)はno-1802.comというプログラムでBIOSのCMOSデータを書き換えることでこのエラーを回避できるのだが、そのあとの世代(T60とか)ではプログラムを書き換えれば可能という感じ。で、解析してる人とかツールを開発している人がいたので試してみた。 手順としては Phoenixのサイトからデモ版のPhoenix BIOS Editorをダウンロードしてインストールする(上記サイトにリンクあり)。 Cygwinを入れる。 上のサイトからphcompなどのツールをダウンロードする。 phcomp /D $01A3000.FL1 で圧縮を解除する。$01A
なんか世紀のイベントっぽい感じだったので見学してきた。すごかった。 真っ黒Scheme Schemeで書かれたSchemeにより、処理系を(かなり自由に)書き換えられるようにする。 部分評価(結果が不変の部分をコンパイルしておく)により、数倍〜数十倍の高速化が可能。 使い道が思いつかないので用途募集中とのこと。 SICP読書会を3年やってるのはすばらしい持続力。 ハードウェア記述言語について SystemVerilogは言語仕様に乱数が入ってる。重みづけと周期が指定可能。解が存在する場合は必ず乱数の組を返すように処理系に求めている(!)。 SystemCはZ(ハイインピーダンス)とX(不定)が削られていてソフト寄り。検証系が充実している。 FPGA速いよという例としてOpenSPARCのSoraris起動時間 VCS:15年、FPGA:19分 Cynthesizer: SystemC→Ve
「Windowsのフィルタドライバ入門」というお題で発表してきました。 なんか反応がいまいちだった気もしますが、飲み会が盛り上がったので良かったのではないかと。 Alpha用のWindows XPがbeta版すら出ていないという渾身のギャグが滑ったのでまだまだ修行が足りないなと思いました。 飲み会は、割り込みハンドラとI/O入出力とインラインアセンブラを実装すればPHPでもデバイスドライバ書けるんじゃね?というような内容でした。 資料はgoogleグループ上にあるので、興味のある方はグループに参加していただければ。 http://groups.google.com/group/lowlayer?hl=ja か http://groups.google.co.jp/group/lowlayer?hl=ja からどうぞ。 egggarden氏から使い方がわからんという突っ込みを受けたので、イン
個人的にはてなブックマークやdeliciousなどのソーシャルブックマークサービスは「あるURLに関するひとことミニblog」だと思っている。 (中略) さて。「はてブコメントに反論するのが難しい・コストが高い」という意見がはてなブックマーク - 「はてブには反論できない!卑怯だ!!」問題 - インターネットくださいにチラホラあったのだが、その客観的根拠が分からない。 はてなブックマークコメントにはPermalinkもidコールもあるのに、なぜ「反論するコストが高い・面倒」と思えるのがとても不思議なので、その根拠を教えてほしい ブログは個人空間というイメージがあるけど、ソーシャルブックマークサービスだと(ブックマークの)各ページは運営側が所有する共有スペースなので、私はブログっぽくないなあと思っている。 で、はてなブックマークは自分のブログじゃないし、制限字数が少ない上にコメントをいつでも
制度は、中国で生産・販売する外国製の情報技術(IT)製品について、製品を制御するソフトウエアの設計図である「ソースコード」の開示をメーカーに強制するものだ。中国当局の職員が日本を訪れ製品をチェックする手続きも含まれる。拒否すれば、その製品の現地生産・販売や対中輸出ができなくなる。 どの先進国も採用していない異例の制度で、非接触ICカードやデジタル複写機、金融機関向けの現金自動預け払い機(ATM)システムなど、日本企業が得意な製品も幅広く開示対象になる可能性がある。 中国側は、ソフトの欠陥を狙ったコンピューターウイルスの侵入防止などを制度導入の目的に挙げる。しかし、ソースコードが分かればICカードやATMなどの暗号情報を解読するきっかけとなる。企業の損失につながるだけでなく、国家機密の漏洩(ろうえい)につながる可能性もあるため日米欧の政府が強く反発。日本の経済界も昨秋、中国側に強い懸念を伝え
Shibuya.pm #11「no Perl; use x86;」鑑賞してきた。 常々PerlはLLじゃないんじゃないかと思っていたのだが、LLの皮をかぶったアセンブラであることを再確認したのであった。 1. catcher in the int 80h; inside lleval FreeBSD::i386::Ptraceの実装について。 pt_to_sce()でsystemcallを実行直前にフックできる。スタックに積まれた引数を書き換えることができるので、実行したくないオペレーションであればSEGVで死ぬような引数に書き換えることでsandboxを実現。 forkは引数がないのだが、EIPを0に変更することはできるので、それで殺す。アドレス0にmmapされるとSEGVで死ななくなってしまうのでそれも抑止する。 2. Perl sandbox for Linux fork() sys
このへんについて。 わたしがprintf()デバッグをしない理由 デバッグ方法論 デバッグのこつ バグとどうつきあっていくか Debugging hyoshiok氏の 場当たり的なprintfはよろしくない デバッガを活用しよう というのは、個別にはそれぞれ同意なのだけど、 printfデバッグの延長線上は、まともなロギング デバッガが使えるシチュエーションは限られる のではと思う。 そもデバッグとは何ぞやという話なのだが上のDebuggingにもあるが、デバッグとはバグを除去するプロセスである。ソフトウェア開発の流れとしては 設計 コーディング バグ発見(不具合の有無をテストによって調べる) バグ再現(不具合の発生条件をテストやデバッガで調べる) バグ調査(不具合の原因や場所をログやデバッガで調べる) バグ修正 という感じで、狭義ではバグ修正の部分のみ、広義では発見から修正までがデバッグ
GPLはわかりやすいが、LGPLは色々条件がついていてよくわからないので自分用メモ作成。 元々GNU Libary General Public Licenseだったが、GNU Lesser General Public Licenseに改称 条件を満たせば、GPL/LGPLでないソフトウェアから利用できる LGPL範囲内・範囲外 利用時には「ライブラリを含む」と「ライブラリを利用する」の違いに注意する ライブラリを含む(work based on the library)=ライブラリのソースコードを含むもの。ソースコードを含めてLGPLに従う ライブラリを利用する(work that uses the library)=ライブラリのソースコードを含まないもの。ソースコードはLGPL外だが、バイナリはLGPL第6節に従う わずかな部分(数値パラメータ、データレイアウト、小さいマクロ、小さい
「完全削除ソフト」と「完全復活ソフト」を売っていたその男が、「完全削除したファイルを完全復活させたいのだが」と問われ、とっさにメモリダンプから復活させて事なきを得た。
まず、いきなりですが、どう読んでも、江島さんは、「受託開発がつまらない(うんこ)」とは言ってなくて、むしろ、受託開発それ自体は、やり方次第ではけっこう楽しいものだ、と言っています。しかしそれが余計問題だ、とも。 なぜなら、そこには未来がない、と。ここで論じられているのは未来ですよ、未来。まさにエンジニアの未来サミットとかにはこういうテーマこそふさわしい。いまは楽しいかも知らん、けど、この先、受託開発は行き詰まるよ、と言っているわけです。 じゃあなんで受託開発は早晩行き詰まるのか。何とかそこの所を読み解いてみようとしたのですが、肝心のその部分の理解がちょっと難しかったので引用のみにとどめます。 受託開発に花束を - duck75の日記 受託開発ってドラクエに例えると最初のクエストみたいなもんで、スライム倒してるだけで経験値もらえるとかそういう感じだと思う。 んで江島さんは、他の勇者も見てみろ
PCがたまに0.5秒くらい固まるので原因を調べていたら、DPC latency問題ってのがあるらしい。 ネットワークのDPCが大量に発行されて固まるときには、レジストリキー HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NDIS\Parameters\ のProcessorAffinityMaskの値を変えると負荷が下がるケースがあるようだ。 というところまではいいのだが、これの値の意味がいまいち不明。 The 0x0 or 0xFFFFFFFF values are used to disable the ProcessorAffinityMask entry. The processor load is not distributed across multiple processors on a computer that
大手SIerでは、社内人件費単価が外注の単価と比べて、べらぼうに高いことが多い。だから、プロジェクトマネージャも利益を出すために、社員の数を抑え、できるだけ外注しようとするのです。 下請け構造がなくならないのは大手SIerの社内人件費単価が高いから - ひがやすを blog 社内人件費単価が高いのは最初の前提条件としては正しくないと思います。 外注する→利益が出る→給与が上がる→社内人件費単価が高くなる→重要な部分以外は外注する→ というスパイラルなわけで。 社内人件費単価が高いから外注するのではなくて、外注すると社内人件費単価が上がるということでしょう。 一般的には製品やサービスから得られる利益の方が初期コスト(≒外注費)よりも圧倒的に大きいので、外注しても十分おつりがくるわけです。外注して利益が出せるのであれば正しいビジネスでしょう。 問題は薄利の受託開発を請け負う下請け側が存在してい
以下,UNICODE ビルドで試した SystemParametersInfo/SPI_GETNONCLIENTMETRICS のパラメータと,Windows XP SP2 及び Windows Vista SP1 での API 成否の関係.uiParam が無視されていて,NONCLIENTMETRICS::cbSize のみで互換性判定を行っているらしいことが分かる. だからといってドキュメントを無視すべきではない. uiParam cbSize XP SP2 (x86) Vista SP1 (x86) 0 500 success success 500 500 success success 504 500 success success 0 504 fail success 500 504 fail success 504 504 fail success 504 0 fail f
戀塚氏 開発力=モチベーション×知識×集中できる時間 コミュニケーションパスは少ないほうがいい 松野氏 毎日一時間勉強会 あまの氏 習慣にする秘訣は、名前をつける、ゆるくやる、グランドルールを設定する 一日の最後に一時間目標を決めてなんかやる、というのはぜひまねしたい。
VistaでDbgViewを起動すると大変なことになる(デバッグ情報の出力レベルが最大になり画面が埋め尽くされた挙句ハングアップ)という記憶があって、今は違うだろうと思いDbgView(DebugView)の最新版を取りに行ったら、なんとSysInternalsがMicrosoftに買収されていた。 非公開のAPIでもがんがん解析してやるぜ的なイメージがあったので、良い子ちゃんになってしまって少しさびしかったり。 でVista(x64)で試してみたらdbgv.sysにアクセスできませんと言われてカーネルのデバッグ出力が取れなかった。ちなみに大量にメッセージが出たのはたぶんRC1の時点の話で、正式版では違うようだ。 昨日のプレゼンで「OutputDebugStringとDbgPrintは同じI/F」とてきとーな書いたのだけど、どうやらあまり正確ではなかった。 仕組みとしては「\device\
Matz氏の「ソフトウェア開発における初心者」が私の感覚とは乖離しているのでそのずれについて考えてみる。 Matz氏はソフトウェア開発は建築と同じだとは言っていないが、あるコスト(例えば家一軒分)を払った場合に、建築の場合はある一定の水準が期待できるのに対して、ソフトウェア開発はそうではなく、「初心者」と「顧客の意識」に大きな問題があると述べている。 アーキテクチャ(architecture)とかビルド(build)など、ソフトウェア開発は建築由来の言葉が多い。符合する部分もいくらかはあるが、挙げていくと一致しないことの方が多い気がしてくる。例えば、 (1)工程。建築は調査→設計→建築確認→基礎工事→...とウォーターフォールで進む。ソフトウェア開発も昔はそうだったが、今はプロトタイプやスパイラルなど、ウォーターフォール以外も検討する。 (2)新規性。建築では「家を建てる」といった場合に、
サイボウズ・ラボを訪問してきた。オフィス超きれい。近未来空間。怖い人すごい人がいっぱい。そしてid:amachangはイケメンでした。 連射ドライバ(http://d.hatena.ne.jp/firewood/20061209/1165592012)の話をしてきました。肝心のジョイパッドを忘れるという失態。 「俺もデバドラ書いてみたい」と言っている人がいたのでサイボウズ・ラボも組み込み系まっしぐらですよ! amachangがはちろく世代だというのでそれはldとかstですかというボケをかましたんだけど見事に伝わらなくて(ちなみに、それは86じゃなくてZ80とかCASLだろうというつっこみが必要)x86世代と86世代は断絶しているようでした。 有名なネタになぞらえると 「動的に関数を生成しろ」と言われ、x86世代は動的なアセンブラを開発した。 一方86世代はクロージャを使った。 こんな感じで
Linux のスリープ処理、タイマ処理の詳細を見る これに触発されてWindowsだとどんなもんなのか、自分の記憶があやふやだったので確認してみた。 処理1(低精度) DWORD Timestamp[256]; int i; for ( i = 0; i < 256; ++i ) { Timestamp[i] = ::timeGetTime(); // ここに処理を入れる Sleep(1); } これの結果は 15, 31, 47, 62, 78, 93 という感じになる。 OSや機種など環境に依存するが、XPだと15msのことが多いようだ。 単に待てばいい処理ならこれでOK。 処理2(精度向上) timeBeginPeriod( 1 ); Sleep( 1000 ); // 精度向上が反映されるのを待つ DWORD Timestamp[256]; int i; for ( i = 0;
64bit環境下で64bitアプリを開発するには、正式には製品版のVS2005を購入する必要があるが、設定を書き換えればExpress Editionでもある程度は可能だ。 手順は以下の通り。 install Visual C++ 2005 Express Edition install Platform SDK 「Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う」のうち、[Visual C++ フォルダ]以外の部分を適用 実行ファイルのパスを「C:\Program Files\Microsoft Platform SDK\Bin\win64\x86\AMD64」に ライブラリのパスを「C:\Program Files\Microsoft Platform SDK\Lib\AMD64」に インクルードパスを「C:
デバッグ文を埋め込むとき、 ほげ発生 at function_x:nみたいに、「関数名:行番号」を付加したいと思うことはよくある。 GCCには__FUNCTION__という組み込みマクロがあり、Linuxでは__FUNC__という名前で定義されている。これがこの用途に使えるのだが標準化されておらず、他のコンパイラ(VC++など)では使えない。そんなときは仕方なく #ifndef __FUNC__ #define __FILE__ #endifという感じで代替しておく。 で、先ほどのデバッグ文だが、いちいち debug_printf("fatal error at %s, %d", __FUNC__, __LINE__)とは書きたくない。debug_printf("fatal error")と書いたらat以下を付加してくれるのがよい。 まず考えるのは、以下のように文字列と数値を関数_debu
また転職してとうとう10社目に到達した。平均勤続年数は3年くらいなのでUSだったらそれなりにいそう。とはいえこの前高校の同窓会に行ったら7人中5人が一度も転職していなくて(=勤続25年以上)それはそれでちょっと驚いた。 面接で過去の転職理由をそれぞれ説明してくださいと言われたときに、そういえばキャリア観と転職理由が少しずつ変化していっている気がしたのでメモに残す。 25才: 何でもやる とにかく仕事を任せてほしくて、中小メーカーで組み込みからWindowsアプリまで、目の前の技術的なタスクは何でもやった。大手企業に入れなかったこともあって給料が不満で、尖った技術力で給与を上げようとしていた。 30才: 技術志向 シリコンバレースタイルのベンチャーに入ることができた。チームの幸せになる方向なのか? というのが口癖が同僚がいて、自分のキャリア観に決定的な影響を与えた。スーツ着用の会社が選択肢に
各ライブラリに速度差があるのかどうか調べてみた。 とあるブログをソースとして、テキストの一致判定を行った。一部を削ってみて4パターンで実行した結果は以下の通り。ビルド環境はPentiumM 1.8GHz、Visual C++ 6.0 SP5。単位はmicrosec、sizeは被検索文字列の大きさである。 sizePCRE 6.6Boost 1.33.1BREGEXP.DLL 2.0.4.29 1KB2168 4KB116351042 15KB3641522223 100KB2503960失敗 なおnakka氏のregexとラング・エッジのlei_jregexは、4KB以上のテキストでは実行できなかったので載せていない。 PCREはそこそこの性能が出ている。 Boostはサイズが大きくなってもそれほど遅くならず、優秀である。 BREGEXPはサイズが小さいと高速だが、サイズが大きくなるに従っ
クロスプラットフォームというか、プラットフォーム依存というか、そういうことをよく扱っているのでメモ。基本的にC/C++。 メモ プリプロセッサは、未定義の識別子を0として扱う。 従って、#if __GNUC__ >= 3はGCC3以上として使えるが、GCC2系かどうかを#if __GNUC__ < 3で判定しようとすると、GCCでないものも含まれるので注意が必要。 コンパイラ GCCかどうか #ifdef __GNUC__ #if __GNUC__ >= 3 // GCC3.0以上 Visual C++かどうか #ifdef _MSC_VER(VC++以外でも定義されている場合あり) #if _MSC_VER >=1000 // VC++4.0以降 #if _MSC_VER >=1100 // VC++5.0以降 #if _MSC_VER >=1200 // VC++6.0以降 #if _
このページを最初にブックマークしてみませんか?
『firewood's diary』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く