gdb hacks 第 6 回。前回は IA-32 で gdb がデバッグレジスタをどのように活用しているかを見ました。今回はデバッグレジスタをプロセスが自分自身で利用する方法について考えてみます。
† [1] Summary: Name: examplespec Version: Release: 1 License: Group: URL: Source0: %{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot %description [2] %prep %setup -q [3] %build [4] %install rm -rf $RPM_BUILD_ROOT [5] %clean rm -rf $RPM_BUILD_ROOT [6] %files %defattr(-,root,root,-) %doc [7] %changelog * Sat Jul 3 2004 root <root@localhost.localdomain> - Initia
キーボードを、持ち歩く。 久しぶりに、スマホ用のキーボードを使ってブログを書いている。 いくつかキーが壊れてしまっているので買い替えないといけないのだが、壊れるくらいには使い込んでいたんだなと思った。 当時は、今のようにPCを普段から持ち歩くことが少なかったので、出先でもブログ…
PapercutはWindows向けのフリーウェア(ソースコードは公開されている)。システム開発を行っている時に最も厄介なのがメールの取り扱いだ。メールサーバがなければエラーが起きるし、かといってサーバを立てて本当にメールが出てしまっても困る。本物に近いデータを使っていて、間違ってメールを送ってしまったなんて経験は誰しもがあるのではないだろうか。 ローカルで立てる開発用メールサーバ そのような時に便利なのがローカルコンピュータ上で立てるメールサーバだ。開発環境の設定さえ行えば、これでメールの送信ができるようになる。Windowsの環境であればPapercutを使うのが手軽で良さそうだ。 Papercutを起動するとタスクトレイに常駐する。後は任意のプログラムからメール送信を行うとPapercutが受信してくれるようになる。もちろんlocalhost:25でプログラム側のメールサーバの設定を
JavaScriptがWebアプリケーションを構築する上で欠かせない技術になっている以上、そのデバッグ方法も洗練される必要がある。Firefoxの場合は有名なFirebugがあるが、他のブラウザになるとそれぞれのやり方があったり、そもそも使い勝手が悪かったりと開発効率が落ちてしまう。 多数のブラウザに対応したJavaScriptデバッガ そんな中、Javascript Debug Toolkitでは多数のブラウザをサポートしたJavaScriptのデバッグが可能なようだ。 今回紹介するオープンソース・ソフトウェアはJavascript Debug Toolkit、WindowsやLinuxに対応したJavaScriptデバッグツールだ。 Javascript Debug Toolkitはスタンドアローン版とEclipseプラグイン版が提供されている。Eclipse版であればMac OSXで
2009年6月10日 物体認識に使える特徴ベクトル Histograms of Oriented Gradients Histogram of Oriented Gradients(HOG)は、大まかに形状を捉えられる特徴ベクトルで、画像の物体認識などに使用されます。 Dalal, N., Triggs, B., Histograms of Oriented Gradients for Human Detection, IEEE Conputer Vision and Pattern Recognition, 886-893, 2005. HOGはその名のとおり、輝度の勾配方向のヒストグラムです。 まず、画像を小さなセルに分割します。 分割したセル上の座標 (x, y) の輝度 I(x, y)から、勾配強度 m と勾配方向 θ
時々、Webサイトで入力している内容をその場で判定するものがある。入力必須の項目やメールアドレス、パスワードの一致などでエラーがあればすぐに表示してくれるので、送信してから修正すると言った二度手間がなくて便利だ。 Webブラウザ上で入力チェックを実行する サーバ側でも入力チェックは行うが、ユーザビリティを考えるとオンラインでも検証したい。そんな検証システムを簡単に作れるのがyavだ。 今回紹介するオープンソース・ソフトウェアはyav、JavaScriptの入力チェックライブラリだ。 yavは入力必須はもちろん、数字のみや文字のみといったチェックもできる。メールや日付、文字の長さなどといったフォーマットによるチェックや、「and」と「or」による他の項目の値によって入力チェック内容を変更する機能もある。多言語にも対応している。 設定はこのようになる 入力フォーマットを規定することも可能で、予
クローキーのような技術を使えば、人がまるで別な空間にいるような映像を作り出すことができる。だがこれは一部を投影するのが精一杯だ。体の一部を別なものに置き換えて表示してしまうような技術があればもっと面白い映像が作れそうだ。 左に映し出された映像から右側の映像が出来上がる そのような操作を行うのに特別な機器は必要ない。Webカムとコンピュータ、それにehciがあれば良い。 今回紹介するオープンソース・ソフトウェアはehci、リアルタイム顔認識ライブラリだ。 ehciはWebカムを通して映し出される顔を認識し、その部分を3Dポリゴンに置き換えて表示することができる。Windows向けのデモアプリケーション(0.4)では顔のモデリングが限度だったが、最新版の0.6では顔以外の映像をそのまま投影できるようになっている。 Windows版 まるで石仮面を被ったような映像がehciによって映し出される。
ようやく一段落したので公開。 ソースコードのレビューをするとどういったメリットがあるのか。お互いに人にソースを見てもらう、逆に見ることは知識の共有化や勉強材料として非常にためになる。プロジェクトチーム内でのレビューは、中長期的にみた時のシステム把握や標準化で役立つことが多い。 問題の表示 そんなソースコードレビューを手軽に導入できるシステムを開発したのでご紹介。Google App Engine上で動作するRietveldクローンだ。 今回紹介するオープンソース・ソフトウェアは宍道湖(しんじこ)、Ruby on Rails製のソースコードレビューシステムだ。 宍道湖は、Rietveldクローンとして、見た目をほぼそのまま踏襲して開発している。ただし認証周りや、メール周りの処理は異なるものになっている。パッチファイルの表示やダウンロード、旧版と新版を横並べにした差分表示が可能だ。 差分表示
ソースコードのレビューはシステムの品質を高めるのに大切な作業だ。GoogleやVMWareでも使われており、ブラウザを使って差分を確認してコメントができるようになっている。社内向けには拙作のSubversionソースコードレビューシステムの宍道湖がある(Rails製)。 Git向けソースコードレビューシステム この手のツールはSubversion向けのものが多かったが、Gitでも使いたいならGerritに挑戦してみよう。 今回紹介するオープンソース・ソフトウェアはGerrit、Git向けソースコードレビューシステムだ。 GerritはGoogleが大々的に発表している訳ではないが、Google社員が開発しておりAndroidのオープンソースプロジェクトにおけるソースコードレビューにも利用されている。他のシステム同様に差分を見て、そこにコメントすることが可能だ。 差分を見てコメントする 差分
プログラミングをコピー&ペーストで作ったものはスパゲティーになりやすい。コピー&ペースト自体には問題がなく、それを行うプログラマーのレベルに問題があるという話もあるが、大抵そうなる。 ソースコードを検索して類似ポイントを洗い出す コピー&ペーストに限らないが、修正などによって徐々に肥大化したソースコードは適切にリファクタリングしてやれば可読性が高まり、システムとしての寿命も延び、さらなる機能追加が素早くできるようになる。その手助けになるのがUniqueだ。 今回紹介するオープンソース・ソフトウェアはUnique、ソースコード類似ポイント検索ソフトウェアだ。 Uniqueは指定したファイルまたはディレクトリ以下にあるプログラミングソースについて検索を行い、類似ポイントをスコア評価してくれるソフトウェアだ。もちろんスコアの高い部分は似ていると思われる場所になるのでリファクタリングの対象になるだ
LinuxカーネルやRuby on Rails、Perlなど、近年多くの大規模プロジェクトで採用されているバージョン管理システムが「Git」だ。Gitには非常に多数のコマンドが用意されているが、日常的に使用するコマンドは20個程度と言われている。本記事では、Gitを使いこなすために覚えるべき20個のGit基本コマンドを紹介する。 LinuxカーネルやRuby on Rails、Perlなど、近年多くの大規模プロジェクトで採用されているバージョン管理システムが「Git」だ。Gitには非常に多数のコマンドが用意されているが、日常的に使用するコマンドは20個程度と言われている。本記事では、Gitを使いこなすために覚えるべき20個のGit基本コマンドを紹介する。 なお、Gitの基本的な考え方や使い方については分散バージョン管理システムGit入門でも紹介しているので、そちらも参照してほしい。
金曜日は サーバー/インフラを支える技術出版記念イベント サーバ/インフラ Tech Meeting の日でした。自分は「Linuxカーネルの読み方」と題して、自分なりにまとめたカーネルのソースコードを読むコツについてお話させていただきました。 発表資料を以下にアップロードしました。 http://bloghackers.net/~naoya/ppt/08080924svr_techmeeting.ppt (ppt) http://www.slideshare.net/naoya1977/how-to-read-linux-kernel/ (Slide Share) 同じく著者のひろせさんからはなぜこの本を書いたか、どういう本なのかという概論 (One more thing もありました)。Klab の安井さんは DSAS について、特に「ダイナミック」をキーワードにした幾つかのインフラ構
make/makefileは,大きいプログラムのどの断片が再コンパイルされる必要があるかという事と,それらを再コンパイルする発行コマンドを自動的に決定するユーティリティ/設定ファイルです. コンピュータサイエンスの基本的な考え方のひとつに冗長性をなくして効率化する構成を追及するというのがあります. 情報理論(bitの理論),HTMLとブラウザ,高級言語と機械語など,ひとつの仕様(表現)から環境や状況にあわせて実装(記述)をつくりだす構成が好まれます. ひとつのファイルでさまざまなコマンドを制御するmake/makefileを制することはコンピュータサイエンスを制することになります. makeのあれこれ もっとも単純な例 Makefile は以下のようなルールからなる.
バージョン管理システムと言うとSubversionやCVSが有名だが、近年急速にユーザーを増やしているバージョン管理システムに「Git」 がある。GitはLinuxカーネルの開発リーダーとして知られるLinus Torvalds氏が中心となって、Linuxカーネルの開発に使用する目的で開発した分散型バージョン管理システムである。2005年に開発が開始されて以来さまざまなプロジェクトでの採用が進み、現在ではPerl 5やRuby on Rails、Android、Wine、X.orgなど、有名な大規模プロジェクトで採用されるに至っている。 本記事では、このGitを使用するのに必要な「分散型バージョン管理システム」の基本的な考え方を紹介するとともに、Gitの導入方法や基本的なGitの使い方について解説する。 分散バージョン管理システムとは? GitはLinuxカーネル開発で用いられることを前提
UAIdentifier - JavaScript によるユーザエージェント判別 © 2006-2007 Magicant / 1.9.2 (2007-02-02) JavaScript を実行しているブラウザの種類およびそのレンダリングエンジン・オペレーティングシステムの種類を判別します。 テストページで実際に試すことができます。 uai.js は自由に使用していただいて構いません。 目次 uai.js の使い方 uai.js の API 仕様 UAIdentifier コンストラクタ toString メソッド 各プロパティ 判別機能の詳細 判定結果の使い方 uai.js の使い方 実装ファイルは uai.js です。 このファイルは単独では実行しても意味がありません。 uai.js には UAIdentifier オブジェクトの定義が含まれ
UNIXドメインのプロセス間通信プログラムの例 いきなり、ネットワークを使って離れたマシン間で通信を行う (INETドメインのソケットを使う)ようなプログラムを書くのはちょっと難しいので、 まずは一つのマシンの中で起動されているプロセス同士で通信を 行う(UNIXドメインのソケットを使う)方法を説明します。 では、早速プロセス間通信を行うプログラムを書いてみましょう。 プロセス間通信を行うには当然、メッセージを送信する側と受信する側の二つのプログラム を書く必要があります。 まず最初は簡単なサーバークライアント型のプログラムを作ってみましょう。 クライアント側ではユーザーからのキー入力を受け付け、入力された文字列をサーバーに 送ります。サーバーは、受け取った文字列のアルファベットの部分を大文字に変換して クライアントに送り返します。 サーバープログラムの例(server.c) クライアント
Introductionメッセージキューは、メッセージのリンク構造と考えることが出来る 各メッセージはレコードであり、各メッセージには送信側が指定した優先度が付いている。 メッセージの書き込みに際しては、そのキューにおいて何らかのプロセスがメッセージの到着を待っていることが要求されない。(パイプと対照的) メッセージキューはパイプと異なり、カーネル持続性(kernel persistence)を持つ。(パイプ、FIFOでは、それらが最後にクローズされる際に、残っているデータは破棄される。) PosixメッセージキューとSystem V メッセージキューの違いPosixメッセージキューからの読み出しは、常に最も高い優先度の最も古いメッセージを返す。System V メッセージキューでは、任意の優先度のメッセージを読み出すことが出来る。 Posixメッセージキューでは、空のキューにメッセージが
コンピューター:C言語講座:FIFO(名前付きパイプ)について 概要 FIFOは本来、First In First Outというデータ形式の名称で、はじめに入ったデータがはじめに取り出されるという意味で、STACK形式のように最後に入ったデータがはじめに取り出されるのに対比するものですが、ここではプロセス間の通信に使用するFIFOを取り上げます。 TCP/IPプログラムでプロセス間で通信を行なう説明を行ないましたし、fork,exec,pipeでも同様にプロセス間で通信を行なえました。今回の話題のFIFOはPIPEによく似た感じのものですが、パイプは親があらかじめ準備してから子を起動して通信するのですが、FIFOはお互いに勝手に通信をはじめることが出来ます。ファイルのように名前をつけたパイプというイメージで、実際にUNIXではファイルのようにディレクトリ中に作成します。したがって、FIFO
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く