でかいソフトウェアの、大量のソースコードを短時間で読む必要が生じたので、その補助ツールとしてptrace(2)ベースのLinux用関数トレーサを自作しました。こういうツール上でまずソフトウェアを実行してみて、どのファイルのどの関数がどういう順で呼ばれるか把握おけば、いきなりソースコードの山と格闘を始めるより楽かなーと思いまして。せっかく作ったので公開します。 http://binary.nahi.to/hogetrace/ straceはシステムコールだけ、ltraceは共有ライブラリ(DSO)の関数呼び出しだけ*1をトレースしますが、このツールは、実行バイナリ中の自作関数の呼び出しもトレースします。例えば再帰で1から10まで足し算するソースコードを用意して % cat recursion.c #include <stdio.h> int sum(int n) { return n ==
デジカメ画像のExif情報を詳細に表示する画像ファイル解析ソフト JpegAnalyzer Plus Kamisaka's Homepage へ戻る 概要 JpegAnalyzer PlusはJPEGファイルの破損修復といった用途から、デジタルカメラの撮影情報(Exif)を表示する用途など、多目的に使用出来る多機能画像ファイル解析ソフトです。 特にExif表示では、メーカーノートと呼ばれるメーカー独自形式で記録される部分のデータ表示に優れ、デジタルカメラの画像ファイルから、詳細なカメラ設定などを読み取る事が出来ます。 ソフト区分 フリーソフトウェア (著作:かみさか) 動作環境 CPU インテル及びインテル互換 OS Windows 32bit版各種 対応ファイル形式 (オンラインヘルプの解析サンプルにリンクしていますので、個々の解析画面を確認できます) JPEGファイル(J
Last Updated: 2002/03/26 Perl で、16進文字列、10進整数、2進文字列、バイナリー文字列の相互変換を行うための、スクリプトメモです。 特に断っていない限り、Perl 5.001 以上で動作します。 目次 16進文字列からの変換 10進整数からの変換 2進文字列からの変換 バイナリー文字列からの変換 16進文字列→10進整数への変換 hex() 関数は、16進文字列を整数値に、手軽に変換できます。 $num10 = hex("4A"); # $num10 には 74 が入る $num10 = hex("FFFFFF"); # $num10 には 16777215 が入る 余談ですが、数値リテラル中では 0x に続けて 16 進数で記述することで、数値を表すことができます。 $num10 = 0x4A; # 74 $num10 = 0xFFFFFF; # 1677
はじめに これまで我が国において、積極的な技術開発が行われてきたことにより、我が国の産業はすばらしい活力を得て、世界経済において重要な地位を占めるまでになりました。現在我が国はグローバルな競争の中で困難な状況下にありますが、このような状況を克服して引き続き21世糸己においても持続的な発展を遂げるには、各々が入手できる膨大な技術や市場等の情報を収集・分析・検討し、さらなる技術開発や新サービスを提供していくことが不可欠であります。 このため、特許庁は技術情報をより多くの皆様が利用できるよう、明治以来の技術情報である特許情報を特許電子図書館として、平成11年3月からインターネットを通じて無料で提供しております。 しかしながら、この特許情報は4000万件にも上る膨大な量であるため、この中から必要とする情報を取り出し、分析することにより事業判断の材料とすることが、誰にでもすぐに可能であるとはいえませ
イングリッシュガーデンに憧れ、自宅を芝生とレンガと花で飾った手作りのガーデンとカントリーグッズの紹介。誰にでも出来る手抜きの芝生管理方法の紹介。
次のページ 前のページ 目次へ 6. プロセス間通信の仕組み プロセスは、他のプロセスやカーネルと相互に通信することで、自らの作業の調整 を図っている。Linux では、いくつかのプロセス間通信(Inter-Process Communication, IPC)のメカニズムがサポートされている。シグナルとパイプは その典型であるが、Linux は System V IPC メカニズムもサポートしている。System V IPC という名称は、Unix の当該リリースで初めて登場したことからその名が付けられ ている。 6.1 シグナル シグナルは、Unix システムで使用される最も古いプロセス間通信の方法である。 シグナルは、ひとつ以上のプロセスに対して非同期イベント(asynchronous events)を 伝達するために使用される。シグナルが生成されるのは、キーボード割り込みがあっ
日経Linux 2003年8月号掲載 ※掲載記事の内容とは若干異なります。 これまで Linux でできなかったこと GDB での動的 core ファイル生成 gcore.sh の使用方法 core ファイルの解析 まとめ これまで Linux でできなかったこと 様々なプログラムを開発する際、どうしても問題となるのがバグである。 プログラムの開発規模が大きくなればなるほど、また、開発者の人数が多くなればなるほど、プログラム中にバグの混入する可能性は高くなる。 何らかのソフトウェア開発を行う際には、工程として、設計、開発、そして品質を確保するための評価。という工程があるはずである。 この評価工程である程度のバグは取り除かれるが、中には取りこぼされたまま世の中にでてくるバグも存在する。 開発者としては、この取りこぼされたバグ(障害)ほど厄介なものはない。評価工程で発見できなかったため、その原
うちも玄箱を入手しました。早速Debian化して、 120GB宅内ファイルサーバとして使用しています。 HDDはそのとき一緒に売っていた日立のHDS722512VLAT20を入れています。 しかし、適当に買ったのが悪いのか玄箱が悪いのか動作中の音がかなり響いてます。 せっかくのサーバなのにうるさくてとめたくなってしまうぐらいです。 HDDを止める そこで、動作していないときはHDDの回転を止めるようにhdparmというソフトを導入しました。 hdparm -S 12 /dev/hda とやると、12かける5秒で、1分のアイドリング後にHDDが停止します。これを起動時に実行するように設定してOKです。 ただしこのままだと、ディスクのフラッシュやログ記録などですぐにに動作してしまうので、もう少し設定と、ソフトの導入をします。 noflushd noflushdというデーモンを常駐させます。これ
ブート時の自動設定 ファイル編集 # vi /etc/init.d/hdparm 内容(-S 180は15分) #!/bin/sh # # HDD setting scripts # # chkconfig: 345 96 15 # description: hdparm # # See how we were called. case "$1" in start) echo "Starting hdparm: " /sbin/hdparm -S 180 /dev/hda ;; stop) echo "Shutting down hdparm: " /sbin/hdparm -S 0 /dev/hda ;; restart) $0 stop $0 start ;; *) echo -n "Usage: $0 {start|stop|restart" exit 1 esac exit 0
仮想デバイスドライバを利用したプロセス間通信について September 11, 2006 Posted by butcher in : C, Operating System , trackback 仮想デバイスドライバを利用したプロセス間通信について説明します。といってもよくわからないと思うので、ちゃんと説明します。 Unixでプロセス間通信というと、ソケットを使ったもの、パイプを使ったもの、共有メモリを使ったもの等がありますが、それぞれ長所・短所があると思います。 ものすごく簡単に言うと、 ソケットでは、 複数マシン間での通信が可能 通信処理のオーバーヘッドが大きい(コネクション開始・終了処理も含め) パイプでは、 ソケットより通信処理のオーバーヘッドが少ない 親子関係のプロセスに限定される 共有メモリでは、 シンプルで高速 書き込み・読み取りの同期をとるのが難しい 等が
少し前に Varnish という逆プロキシサーバが紹介されていた: 【レポート】高速化プログラミングの参照実装としても活用される「Varnish」 (2) vanishが採用している実装技術 : エンタープライズ : マイコミジャーナル. 気になったので資料を眺めてみる. プロジェクトの Wiki にある記事 Notes from the Architect, あとは 講演のスライド(PDF) などが概略には良さそうだ. 中味は仮想記憶やキャッシュ, SMP を有効活用して高速化しましょうという話. 仮想記憶の活用方法は二つ紹介されている. 一つ目は, "サイズに合わせて realloc() するかわりに最初からでかいサイズを malloc() しろ" というもの. 確保してもアクセスしなければ物理メモリにはコミットされないから, 拡張のたびにコピーの必要な realloc() より この
お久しぶりです、初めての日本の夏に圧倒されているトールマエサカです。 今日はLinuxにおけるネットワークプログラミング関連のネタです。分散データベースサーバの開発過程で最近よくLinuxのepollというイベントハンドリング機能を使っています。これがまた優秀な機能なので紹介します。 このContextでいうイベントハンドラーはサーバがクライエントのリクエストを処理するためのメカニズムです。イベントの感知と通知は大雑把にいうと以下の三つの処理で構成されています: 一つもしくは複数のディスクリプタを監視 ディスクリプタの準備が整うまでハチ公のごとくひたすら待ち続ける 準備が整ったディスクリプタの通知 アプリケーションでの実装は一昔までselect(2)、もしくはpoll(2)というシステムコールで行われていました。二つとも役目は同じですがselect(2)の場合、kernelをいじらない限り
この文書は、Linux および Unix システム上で安全なプログラムを書く際に必要と なる設計や実装について、そのガイドラインを提供します。 遠隔のデータを見るためのビューアーや Web アプリケーション(CGI スクリプト を含む)、ネットワーク・サーバ、setuid や setgid してあるプログラムが対象です。 C や C++、Java、Perl、PHP、Python、TCL、Ada95 個別のガイドラインも掲載します。 Table of Contents1. はじめに2. 背景2.1. Unix や Linux、オープンソースもしくは フリーソフトウェアについて2.2. セキュリティの原則2.3. なぜプログラマは危ないコードを書いてしまうのか2.4. オープンソースはセキュリティに効果があるのか2.5. 安全なプログラムの種類2.6. 疑い深く、こだわりが強いことに価値がある
Fedora Core 6 がリリースされたので早速試す。いつも自機にガッツリインストールして泣きを見ているので今回はVMware Playerにてw以前トライした時はうまくいかなかったのでリベンジの意味も・・無いことは無い。仮想マシンがうまくできなかったんだ!とか言い訳を言ってみる。実際、イメージはここからダウンロードして使ってたw(初めてVMwareをインストールしたときはこんなん気づかなかったんだよ。英語読まねえから) ってことで、実際した作業とか。覚書とか。(長いから続きに) ということで続きです :) VMwareの概要説明はVMware(Wikipedia)より。 実際にはVMware Playerをインストールする。本当に無償で使える「VMware Player」(Weboo! Returns)を参考にした。 まずはVMware Playerをダウンロード。ここ(http:/
The Linux Kernel Module Programming GuidePeter Jay Salzman Michael Burian Ori Pomerantz Copyright © 2001 Peter Jay Salzman 2007-05-18 ver 2.6.4 Table of ContentsForeword1. Authorship2. Versioning and Notes3. Acknowledgements1. Introduction1.1. What Is A Kernel Module?1.2. How Do Modules Get Into The Kernel?2. Hello World2.1. Hello, World (part 1): The Simplest Module2.2. Compiling Kernel Modules2.
LinuxのLoadable Kernel Moduleの作り方のHowTo。対象のカーネルバージョンは2.6。 1. SourceとMakefile カーネルにLoad/Unloadできるだけの小モジュールを作ってみる。何処か適当なディレクトリに以下のようにソースとMakefileを作る。ソースとMakefileの中身は以下を参照。.tar.gzにまとめたファイルはこちらから。 xxxxxx/ Makefile - Makefile small.c - モジュールのソース 1.1 Source モジュールのソースコードのサンプルを以下に示す。 最低限必要なのは、モジュールがLoadされた時に呼び出される初期化ルーチン(smallmod_init_module())とモジュールがUnloadされる時に呼び出される後処理用ルーチン(smallmod_init_module())。これらのルー
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く