タグ

Programmingとlinuxに関するjjzakのブックマーク (70)

  • Universalchardet - やる気向上作戦

    universalchardet / juniversalchardet Mozillaのエンコーディング判別ライブラリであるuniversalchardetを切り出して、Cライブラリ化してみた。さらにJavaにもポーティングしてみた。エンコーディング判別なのにcharacter set detectorとはこれいかに。 C版はLinux/Windowsに対応。Linuxでのインストールは make && make install で。autoconfなどという高尚なものは使っておりません。 文字コードの変換はこちら EncodingConversion Related Works jchardet (Java,旧バージョンのchardet) juniversalchardet(Java,universalchardetのJavaポート) Universal Encoding Dete

    jjzak
    jjzak 2007/01/24
    Mozillaのエンコーディング判別ライブラリであるuniversalchardetを切り出して、Cライブラリ化してみた。
  • Wizard Bible

    Wizard Bibleは2018年4月22日24時に閉鎖しました。 投稿者や読者の皆様、これまでの間当にありがとうございました。 【2021年6月27日更新】 Wizard Bibleの設立から閉鎖までに至る過程を詳細に述べたが出ることになりました。 『Wizard Bible事件から考えるサイバーセキュリティ』執筆プロジェクト 興味のある方は是非読んでみてください。 Security Akademeiaに戻る

  • WhirlwindTutorialOnCreatingReallyTeensyElfExecutablesForLinux -

    WhirlwindTutorialOnCreatingReallyTeensyElfExecutablesForLinux - 目次 Linux で動く極小 ELF 実行ファイルをつくる怒涛のチュートリアル (あるいは "Size Is Everything") コメント 以下の文章の日語訳です: http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html gcc の info の日語は以下のページから拝借しました: http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gcc-2.95.2/gcc_2.html#SEC13 Linux で動く極小 ELF 実行ファイルをつくる怒涛のチュートリアル (あるいは "Size Is Everything") She studied

    jjzak
    jjzak 2006/12/20
    Linux で動く極小 ELF 実行ファイルをつくる
  • システムコール概論

    プロセス プロセスについて考える プロセスの選択的なkillコマンド・zap システムコール 低レベル入出力 ファイル指定子 readとwrite 標準入出力と低レベル入出力 標準入出力と低レベル入出力---読みと書き 眠るシステムコール sleep 標準入出力以外のファイルのオープンとクローズ ファイルの作成とオープン ファイルを作成する。 creat システムコール ファイルのオープン---単純な形式 creat と open を使ったcopyのプログラム ファイルのオープン・オプションフラグ 前回のmycpの問題 オプションフラグでのファイルのオープン --- 様々なオープン mycp2 --- オーバーライトチェックの試作品 mycp3 --- UNIXの精神に反する親切なコピーツール オプションフラグの別の利用の仕方 C言語の復習 関数 function 制御 If-Else w

  • Linux で科学しよう!

    Linux にはアプリケーションが少ない」とお嘆きのあなた、 そんなことはありません。 もともと Unix には科学・工学用のフリーなアプリケーションが豊富にあります。 しかし、ソースのみで配布されているものも多く、インストールに苦労することもあるようです。 ここでは、メディアラボ が厳選した興味あるアプリケーションを、 LinuxMLD 7、 MLD 6 および MLD 5 用の RPM パッケージを用意して御紹介します (一部のパッケージは LinuxMLD 7 対応は作業中です)。 アプリケーションの機能紹介だけでなく、使い始め方、「はじめの一歩」を解説しています。 ご注意: 御紹介しているアプリケーションはすべて Linux あるいは Unix 用です。Microsoft Windows 用ではありません。 ただしアプリケーションによっては Windows 版や Macintos

  • Subversion

    バージョン管理ツールSubversionの基礎練習です。 Windows XPのコマンドプロンプトでSubversionの基的なコマンドを動かしていきます。 Subversionを学び始めるきっかけにどうぞ。 目次 はじめに ダウンロードとインストール リポジトリ用のディレクトリを作ります リポジトリを初期化します 新しいモジュールを作ってインポートします チェックアウトして作業開始 新しいファイルを追加します 新しいディレクトリを追加します 普段の作業はこんな風に進みます ファイル名を変更してみよう この文書に書かなかったこと 関連リンク 更新履歴 ぜひ、感想をお送りください はじめに Windows XPのコマンドプロンプトで、 バージョン管理ツールSubversionの基的なコマンドを動かしてみましょう。 この文書の通りに実行すると、 基的なSubversionのコマンドをひと

  • Jockey で Linux のプログラムの実行を記録・再生する - bkブログ

    Jockey で Linux のプログラムの実行を記録・再生する Jockey は Linux のプログラムの実行を記録・再生するツールです。システムコールと一部の CPU命令をフックして実行時の入出力をログに記録することによってプログラムの再生を実現しています。主にデバッグ用途に使います。 インストール Jockey は Debian パッケージになっていないため、ソースコードからビルド・インストールしました。事前に ruby, boost, zlib などをインストールしておく必要があります。 記事を執筆している時点で Jockey の最新版は 0.8.1 です。手元の Debian GNU/Linux の環境ではこのようなパッチを当てる必要がありました。ビルド・インストールは普通に ./configure && make && sudo make install を実行すれば OK

  • coLinux でウェブアプリケーション開発環境構築 : NDO::Weblog

    naoya.dyndns.org is currently offline. Please try again later. Questions about our services? Learn more at Dyn.com.

  • 普通のやつらの下を行け: C でバックトレース表示 - bkブログ

    普通のやつらの下を行け: C でバックトレース表示 普通のやつらの下を行けの第2回として、今回は glibc の関数を使って C でバックトレース (スタックトレース) の表示を行ってみます。 バックトレースとは バックトレースとは、大ざっぱに言うと、現在の関数に至るまでの道筋です。たとえば、次の Ruby プログラムを実行すると、 1 / 0 の行で例外が発生して、バックトレースの表示とともにプログラムは異常終了します。 def foo 1 / 0 end def main foo end main この例では main から foo を呼び foo の中の 1 / 0 の部分で例外が発生しています。 % ruby divide-by-zero.rb divide-by-zero.rb:2:in `/': divided by 0 (ZeroDivisionError) from div

  • ひげぽん OSとか作っちゃうかMona- - 共有ライブラリお作法まとめ

    ACさんから教えていただいた Program Library HOWTO: http://www.linux.or.jp/JF/JFdocs/Program-Library-HOWTO/ 非常によくまとまっていて疑問が氷解しました。 重要そうなところを引用します。 静的ライブラリ .aは静的ライブラリ。arコマンドでオブジェクトファイルをまとめたもの。 静的ライブラリは -l オプションでリンクを行う 共有ライブラリ すべての共有ライブラリは「soname」という特別な名前をもつ。 ディレクトリ名libxxx.so.バージョン番号 バージョン番号はインターフェースが変わったときに変わる。 すべての共有ライブラリは「realname」という特別な名前を持つ。 soname.マイナー番号.リリース番号 「linker name」 sonameからバージョン番号を除いたもの ldconfig は

    ひげぽん OSとか作っちゃうかMona- - 共有ライブラリお作法まとめ
  • ひげぽん OSとか作っちゃうかMona- - Emacs + GLOBALでソース読みを快適に

    ネットワークサーバー実装のためにuIPのソースを読もう。 NICドライバの移植のためにFreeBSDのソースを読もう。 ということで以前使っていた etags を使おうと思ったがキーバインド忘れた。 そして etags はなんだかいろいろ不満点があった気がするので GLOBALを使ってみることに。 以前GLOBALは出力をHTMLにして使ったことがあるのだが、最近EmacsにどっぷりなのでEmacsから使ってみることに。 0.GLOBALって何? GNU GLOBAL は、ソースコードに索引付けを行うことで、大規模システムのハックやレビューを効率化するソフトウエアです。 ソースファイル中の指定したシンボルを高速に見つけ出し、素早くその場所に移動することができます。多くのサブディレクトリからなり、#ifdef や main() 関数を沢山含んでいるような、いわゆる巨大なプロジェクトをハックす

    ひげぽん OSとか作っちゃうかMona- - Emacs + GLOBALでソース読みを快適に
  • Make と Makefile の説明

    まだ完成途中です back 注意: このページの内容には、おそらく多くの間違いがあります。 リンクされているので残しておきますが、利用には注意してください。(2008年3月、新山) ここではおもに make の使い方 と Makefile の書き方について 説明しています。じつは make の種類にはいろいろあり、ここでは GNU make (gmake というコマンド名のこともある) を 対象にしています (BSD の pmake でも基的な部分は同じですが、 マクロ定義などは違うところもあるので注意してください)。 わかりにくい箇所とか、まちがってる箇所がある場合はメールください。 Contents make はどんなときに使うか Makefile を作る make の実行 Makefile の文法リファレンス 多段 make について (未完成) Makefile の例 (未完成)

  • いやなブログ: Linux の共有ライブラリを作るとき PIC でコンパイルするのはなぜか

    Linux の共有ライブラリを作るとき PIC でコンパイルするのはなぜか 通常、Linux の共有ライブラリを作るときは各 .c ファイルを PIC (Position Independent Code) となるようコンパイルします。しかし、実は PIC でコンパイルしなくても共有ライブラリは作れます。それでは PIC にする意味はあるのでしょうか。 さっそく実験してみます。 int func () { printf(""); printf(""); printf(""); } PIC でコンパイルするには gcc に -fpic または -fPIC を渡します。-fpic の方が小さく高速なコードを生成する可能性がありますが、プロセッサによっては -fpic で生成できる GOT (Global Offset Table) のサイズに制限があります。一方、-fPIC はどのプロセッサで

  • メモリリーク調査方法(Linux編)

    まずはLinuxの環境変数の設定から... $> export MALLOC_TRACE="log file name" 次にソースコードの編集 ◆ ヘッダのインクルード #include <mcheck.h> 次にソースにメモリチェックする部分に以下のコードを追加 mtrace();←メモリチェック開始 muntrace();←メモリチェック終了 ◆ 実行 以下のようなコードを実行する int main () { mtrace(); char* test = new char[10]; test = new char[10]; delete[] test; Test t = new Test (); muntrace(); } ◆ 結果 これを実行すると以下のようなログが指定したログファイルに 記述されます。(実際には値などは違います) = Start @ /usr

  • プログラムはどう動くのか? 〜 ELFの黒魔術をかいまみる

    もう締切日なのにネタがない。というわけで簡単なプログラム "hello, world" がどのように起動され、どのように処理されて動くのかを無意味に詳しく解説してみよう。 #include <stdio.h> int main(int argc, char *argv[]) { printf("hello, world\n"); exit(0); } この hello.c をコンパイルすると次のようなhelloというバイナリができる % cc -g -o hello hello.c この hello というバイナリは % file hello hello: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs),

  • http://www.ccn.aitai.ne.jp/~ccc/linux.html

  • ライブラリの外に公開するシンボルを制限する - bkブログ

    ライブラリの外に公開するシンボルを制限する C言語にはファイル内 (コンパイル単位) からしかアクセスできない static 関数と、別のファイルからもアクセスできる非static 関数があります。しかし、ライブラリを作成する上では、この2つのスコープだけでは不十分なときがあります。 記事では GNUの開発環境において、ライブラリの外に公開するシンボルを制限する方法を紹介します。 次のような例を考えてみます。 % cat a.c // foo() は libfoo の主役の関数なので公開したい void foo() { bar(); } % cat b.c // bar() はライブラリの中だけで使われるべきなので当は公開 // したくない。しかし別のファイルに含まれる foo() から使われ // ているので、非staticにせざるをえない void bar() { } このようなコ

  • いやなブログ: 普通のやつらの下を行け: ptrace で実行中のプロセスにちょっかいを出す

    普通のやつらの下を行け: ptrace で実行中のプロセスにちょっかいを出す Linux などの多くの Unix 的なOS には ptrace というシステムコールがあります。 ptrace を使うと実行中のプロセスに対して、レジスタの書き換えやメモリ上のデータの書き換えといったさまざまな操作を行うことができます。 普通のやつらの下を行けの第6回として、今回は ptrace を使って実行中のプロセスにちょっかいを出す方法を取り上げたいと思います。 ptrace とは デバッガの理論と実装 に次のような記述があります。 Unix の ptrace() は物のデバッガ API (アプリケーションプログラムインターフェイス) の一例であり、商品に相応しい品質を持ったデバッガをサポートするために設計された、最初の専用 API の1つである。 ptrace はデバッガ用に作られた API のようで

  • patch/diff Tips

    Copyright (c) 2001 Koichi OKADA まず「取扱説明書」をお読みください。 はじめに diff/patch とは diff というのはファイルの差分を作成するツール、 patch というのはファイルの差分からファイルの変更を再現するツールです。 通常 diff で作った差分ファイルをパッチ(ばんそうこう)と呼びます。 ライセンス 多分、気にしなくて良いです。 準備 UNIX の場合 通常 UNIX には diff と patch は標準で入っています。 特に準備はいらないはずです。 Windows の場合 一番手っ取り早いのはcygwinを入れることです。 cygwin はでか過ぎるとか cygwin はちょっとって言う人は vector辺りで win32 native な rcs/diff と patch を 取って来る

  • スタックオーバーフローのハンドリング (Stack Overflow Handling)

    作成日:2004.04.12 更新日:2006.02.19 更新記録 (2004.04.12) 3/6、 3/11、 3/13 の日記をまとめて作成。 (2004.05.07) 文章を修正。サンプルコードを追加。 (2005.01.20) alternative → alterante に修正。 (2005.02.13) 追記を記述。 (2006.02.17) linux_stack_info.cpp の実装に誤りがあったので修正。 (2006.02.19) BSD 系OS でのスタック領域情報の取得の仕方を追加 初めに C/C++ でプログラムをしているとつい忘れてしまうのがスレッドのスタックオーバーフローの問題。 最近の OS はスレッド当たり 2〜8MB のスタック領域を持っているため、よほどのことがない限りスタックが溢れてしまうことはない。 だが、再帰や alloca を積極的に使