タグ

ProgrammingとLinuxに関するagwのブックマーク (90)

  • 怒りのLinus――メンテナにかんしゃく玉爆発(1/2) - @IT

    11月版 怒りのLinus――メンテナにかんしゃく玉爆発 小崎資広 2009/12/10 お久しぶりです。10月はKernel Summit、Japan Linux Symposium、OSS貢献者賞受賞講演と欠席不可のイベントが連続で並んでいたところに、Summitの参加者から悪性の風邪をうつされて、気で死にそうでした。というか当に倒れました。 おかげで11月は、たまった仕事の挽回(ばんかい)が大変で大変で……。もうKernel Summitから1カ月もたったなんて信じられませんが、気を取り直して今月もいってみましょう。それでは、どうぞ。 スケジューラ改善、その後 前回大騒ぎになったスケジューラ・レイテンシですが、Kernel Summit(注1)でその後の進ちょくが報告されたので後日談をば。 その後もスケジューラ開発者の改善活動により、レイテンシはどんどん改善されていったわけですが

  • 宇宙線実験の覚え書き (大学院生版):ranlib

    研究室の先輩が書いたMakefileでmakeすると、 ld: table of contents for archive: ../lib/libAnalysis.a is out of date; rerun ranlib(1) (can't load from it) というerrorを吐くことがある。 これはLinuxでは起きずOS Xで発生する。 makeするときのどこで発生するかというと、 compile済みobject fileをlibrary(この場合はlibAnalysis.a)にlinkしたいとき。 g++ aho.o libAnalysis.a これを解決するためには、 ranlib libAnalysis.a と打てば良い。 このblack box的な解決方法はwebで探せば見つかるんだが、 なんだかおまじないのようで気持ち悪い。 で、なんでこんなことをOS Xではし

  • 30万個ぐらいの静的ファイルを配信するサーバーの選び方 – cyano

    naoyaさんが公開されてるInside Hatena Bookmark’s Backend の資料などを読むと、mod_perlなサーバーやMySQLサーバーの選び方の参考になったりするわけですが、世の中を見渡してみても、静的コンテンツ(画像とか)を配信するサーバーの指南書らしきものはなかなか見あたりませんでした。 なので、経験を元に書いてみることにします。 弊社の画像配信サーバーには、平均10kbぐらい(たぶん)の画像が30万個ぐらいあって、それをDell PowerEdge 1750+lighttpdを使って配信してます。 以前は搭載メモリ1GBのサーバーを使っていたのですが、その時のvmstatがこのような感じ。 procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r b sw

  • Linus「C++ はひどい言語だ。これは、多くの平均以下のプログラマーが使ってるために さらに輪をかけてゲロゲロになっていて、どうしようもないゴミが 簡単に生産されるようになってる」

    /15 [4] (21:54) 原文: http://lwn.net/Articles/249460/ From: xxx To: xxx Subject: Re: [RFC] builin-mailinfo.c をマシな文字列ライブラリを使うようにすること Date: Thu, 6 Sep 2007 18:50:28 +0100 (BST) Message-ID: <alpine.LFD.0.999.0709061839510.5626@evo.linux-foundation.org> On Wed, 5 Sep 2007, Dmitry Kakurin wrote: > > Git のソースコードを最初に見たとき、ヘンだと思ったこと: > 1. C++ じゃなくてただの C を使ってる。理由は謎。移植性がどうとか言わないで、 > そんなのウソに決まってるから。 *あんた* のほうこそ

  • Linux でプロセスごとのメモリー使用量を調べる

    メモリ使用量を比べると Fluxbox=6~7MB に対して、WindowLab=300~600KB なので、リソースが乏しいザウルスには最適。 徒然な覚書 : WindowLab より 2006 年 7 月 29 日に引用 があったので、自分の使ってる sawfish についても調べてみようとして、ハタと困った。プロセスごとのメモリー使用量の調べ方が分かんない。 というわけで、メモリー使用量を調べる方法をメモ。 ps alx 調べ方は、分かってしまえば簡単。次のコマンドを実行する。 $ ps alx すると、ズラーと次のような結果が表示される。 F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 4 0 1 0 16 0 1896 464 - S ? 0:06 init [5] 1 0 2 1 34 19 0 0 - SWN

  • 環境変数 LD_PRELOAD - 技術メモ帳

    LD_PRELOAD という環境変数に、共有オブジェクトを指定すると 任意のプログラムを実行する時にその共有オブジェクトを読み込ませる事が出来るらしい。 そして、もし読み込ませたときに シンボル名 が衝突していたときは、 先に定義されたシンボル名が優先されるという仕様になっているらしい。 そこから考えられるのが、 LD_PRELOAD でわざと同じ名前のラッパー関数を作成して、 ロギング処理を注入するという事だ。(アスペクト指向だ!!) (今度やってみよう。) とりあえず、以下は LD_PRELOAD で同名関数を上書きできる例です。 まず、main.c 1 #include <stdio.h> 2 3 int main() { 4 puts("hello world!!"); 5 return 0; 6 } ただ単に、puts 関数を呼び出しています。 実行すると、当然のように hell

  • Binutils - GNU Project - Free Software Foundation

    The GNU Binutils are a collection of binary tools. The main ones are: ld - the GNU linker. as - the GNU assembler. gold - a new, faster, ELF only linker. But they also include: addr2line - Converts addresses into filenames and line numbers. ar - A utility for creating, modifying and extracting from archives. c++filt - Filter to demangle encoded C++ symbols. dlltool - Creates files for building and

  • 狐の王国 64bit kernel with 32bit userland

    #2 64bit kernel with 32bit userland せっかくAthlon64を買ったのに32bitのままで使い続けるのももったいない、というか、違いを確認するための64bitバイナリ実行環境が欲しいというのもあって、いろいろ試行錯誤してみた。 debianのi386 portにも実はlib64*とかlibc6-amd64とかがあって、userland的には64bitバイナリが実行可能だったりする。あとはカーネルが64bit化されれば、64bitバイナリを実行できるはず。 ということでIRCでその筋のエロい人に教えてもらったり、ウェブを検索したりして実際にやってみた。 まずは # apt-get install libc6-amd64 libc6-dev-amd64 lib64* で、64bitライブラリを揃える。 それから64bitカーネルをコンパイルするために、クロス

  • mixi Engineers’ Blog » Tokyo Tyrantによる耐高負荷DBの構築

    連休中はWiiのマリオカートをやりまくってやっとVR7000越えたmikioです。愛車はマッハ・バイクとインターセプターです。さて今回は、分散ハッシュデータベースサーバTokyo Tyrantでmixiの最終ログイン時刻を管理するようにした時の苦労話を書きます。 ログイン処理は負荷地獄 mixiでは、全てのユーザについて、各々の最終ログイン時刻を管理しています。「マイミクシィ一覧」や「お気に入り」などの画面で、友人が近い時間にログインしていてコミュニケーションがとりやすい状態にあるかどうか確認できるようにするためです。 mixiのほぼ全てのページはログインしないと見られないページなので、ほぼ全てのページにアクセスされるたびにログイン確認が行われます。したがって、最終ログイン時刻はほぼ全てのページにアクセスされる度に更新されることになります。mixiの中で最も重いデータベースのひとつとして「

    mixi Engineers’ Blog » Tokyo Tyrantによる耐高負荷DBの構築
  • Linuxカーネルの読み方 - 伊藤直也

    2008-08-09 サーバ/インフラ Tech Meetingsm4227345 このを書いたわけ - ひろせまさあきsm4578460 Linuxカーネルの読み方 - 伊藤直也sm4227381 はてなのインフラ,いまむかし - 田中慎司sm4227415 DSASのこれから - 安井真伸http://gihyo.jp/event/2008/24svr-tech-meeting

    Linuxカーネルの読み方 - 伊藤直也
  • Linuxカーネルの作り出す世界 − @IT自分戦略研究所

    連載は、ソフトバンククリエイティブ刊行の『ふつうのLinuxプログラミング』のうち第1部「Linuxの仕組み」の中から「第2章 Linuxカーネルの正解」と「第3章 Linuxを描き出す3つの概念」を、同社の許可を得て転載するものです。 書は、LinuxにおけるC言語プログラミングの入門書です。「Linuxの世界が何でできているのか」に着目し、「ファイルシステム」「プロセス」「ストリーム」という3つの概念を紹介しています。 なお、連載は転載を行っているため@IT自分戦略研究所の表記とは一部異なる点があります。ただし、Webで掲載するに当たり、(例えば「書は」としている部分は「連載は」としていること、図版などの省略など)、表現を若干変更している点がありますが、その点ご了承ください。 ■オペレーティングシステム 今どきのコンピュータにはオペレーティングシステム(OS:Operatin

  • LINUXシステムプログラミング - bkブログ

    LINUXシステムプログラミング 発売後すぐに入手したものの長らく積読状態が続いていた『LINUXシステムプログラミング』をようやく読みました。 書はその名の通り、Linux のシステムプログラミングについての解説書です。システムプログラミングの定義は明確ではありませんが、システムコールを用いて OS に近いレイヤーで行うプログラミングのことと考えて差し支えないと思います。 UNIX一般のシステムプログラミングについては『詳解UNIXプログラミング』という決定版がありますが、書は Linux 固有の話題や POSIX の比較的新しい API が載っているところが異なります。 たとえば、前者になく書にだけ載っている話題としては以下のようなものがあります。知らなかった話も多くて勉強になりました。 posix_fadvise で I/Oのアクセスパターンのヒントを与える epoll でI/

  • はてなブログ | 無料ブログを作成しよう

    仲春はゆっくりと通り過ぎる 寝て起きたら3月である。今日の東京の最高気温は20度を超えている。正月のインフルエンザが完治して、これでやっと健康で文化的な年度を始められるぞ、と意気込んだのも束の間、今度は原因不明の高熱を出して1週間寝込んだ。 脳がグツグツ煮える音が聴こえそうなほど…

    はてなブログ | 無料ブログを作成しよう
  • Linusのクリスマスプレゼントが引き起こした問題(2/2) - @IT

    1月版 Linusのクリスマスプレゼントが引き起こした問題 上川純一 日ヒューレット・パッカード株式会社 コンサルティング・インテグレーション統括部 2008/1/31 /dev/randomと/dev/urandomのエントロピー Linuxカーネルには、環境ノイズをエントロピー源として利用し、乱数生成に活用する機能があります。具体的には人間の利用するキーボードなどの入力デバイスのタイミングの「ぶれ」などを活用します。 /dev/randomで提供されている乱数生成の仕組みは、この機能を活用していますが、サーバ運用の場合に問題が発生します。サーバは、人間が入力デバイスで直接操作しない場合が多いため、エントロピーが足りなくなり、十分にランダムな乱数が生成できなくなるのです。 このように十分なエントロピーが得られない場合、/dev/urandomは妥協して疑似乱数を返しますが、/dev/

  • sqlite3をwindowsで利用する | ぶろゲ

    sqliteをコンパイルしてスタティックライブラリつくるのめんどくせーと思ってたら意外と簡単にできた。 debianでの作業 SQLite Download Pageのhttp://www.sqlite.org/sqlite-3.5.0.tar.gzを/tmpあたりに落とす。 mingw入れる。 [code] ./configure –host=i586-mingw32msvc make [/code] そうすると.libsにlibsqlite3.aがあるので持ってくる。ついでにsqlite3.hも持ってくる。 [code] #include “sqlite3.h” void main() { printf(“V: %s\n”, sqlite3_libversion()); } [/code] で、libsqlite3.aと混ぜてコンパイル。 [code] noch@debian:~$ w

  • フィボナッチ数列を計算するデバイスドライバ - naoyaのはてなダイアリー

    Amazon から プログラミング言語Erlang入門 が届きました。 どんな構成だろうね、と会社で同僚数人とわいわいやっていたら、「フィボナッチ数列を計算するサーバー」という例があって、みんなのツボに入りました。Erlang の並列計算処理能力とネットワークプログラミングのしやすさを示すという上で良い例だと思うのですが、「フィボナッチ数列を計算する」というのと「ネットワークサーバーを書く」、という二つのテーマの不思議なギャップが面白いのでしょう。 そういえば関数型言語が得意な id:maoe は、はてなの採用面接の際に、はてなのボーナス計算を計算するシステムを作ってきたのですが、なぜかクライアント/サーバシステム、ネットワークサーバーを Haskell で、クライアントを Scheme で書き、プロトコルが S 式という実装をみんなの前で披露して、周囲の笑いを誘っていました。 ちょっとし

    フィボナッチ数列を計算するデバイスドライバ - naoyaのはてなダイアリー
  • 低水準ファイル入出力関数を使おう - 68user's page

    低水準ファイル入出力関数 perl でプログラミングするにしても、 基礎知識としてC言語のファイルディスクリプタの概念を知っておくにこしたことはありません。 特に 4引数 select を使うときには、 ファイルディスクリプタの知識があると理解が早いでしょう。 C言語でファイルを扱うときは、一般的に fopen・fread・fwrite・fclose などの ライブラリ関数を使います。これらは stdio.h で宣言されており、 標準入出力ライブラリ (標準入出力関数) と呼ばれます。 ファイルをオープンするときは FILE *fp; fp = fopen("file.dat", "r"); として FILE 構造体を得ます。それに対して fread・fwrite を実行します。 しかし、これら fopen・fread などのライブラリ関数も、 内部では open・read・write・c

  • inetd の仕組みを見てみる - naoyaのはてなダイアリー

    inetd や xinetd (以下 inetd) はインターネットサービスをデーモン化するのに共通している処理を担い、ほとんどの時間をアイドル状態で過ごすその手のサービスに必要なリソースを節約する役割を果たします。 inetd のひとつ面白いところは、inetd でサービス化したいプログラムの標準入力/標準出力がクライアントソケットの入出力に接続されるところです。例えば daytime 相当のサービスを自分で作ろうと思った場合 #!/usr/local/bin/perl # daytime.pl use strict; use warnings; use DateTime; use IO::Handle; STDOUT->autoflush(1); STDOUT->printf( "%s\n", DateTime->now(time_zone => 'Asia/Tokyo') ); と標

    inetd の仕組みを見てみる - naoyaのはてなダイアリー
  • Linuxカーネル開発最新事情 ― @IT

    Linuxカーネルはリーナス・トーバルズが1991年に個人的に書き始めたもの。以来、多くの開発者を巻き込みLinuxカーネルは成長し、今も新機能を取り込み続けている。もともと趣味の延長やアカデミックな好奇心から開発に関わった人が多かったことから、かつては「Linuxカーネルの開発はボランティアによって支えられている」と言われたが、それは、現状のLinuxカーネルの開発には、まったく当てはまらない。そう話すのは、7月10日に東京で開催された第5回The Linux Foundation Japan Symposiumで講演した米LWN.netのジョナサン・コーベット(Jonathan Corbet)氏だ。 「最新のカーネルに対して機能を加えたり、変更したりするパッチを送った開発者は2006年6月のバージョン2.6.17以降、全部で2100人。このうち、少なくとも3分の2以上の人々がレッドハッ

  • IBM リダイレクト - Japan

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM リダイレクト - Japan