タグ

ブックマーク / 0xcc.net (24)

  • ltrace で共有ライブラリの関数呼び出しをトレースする - bkブログ

    ltrace で共有ライブラリの関数呼び出しをトレースする ltrace は共有ライブラリの関数呼び出しをトレースする Linux 用のツールです。システムコールをトレースするstrace と同様に、デバッグに大変役立ちます。 ltrace は Debian GNU/Linux の場合は sudo apt-get install ltrace でインストールできます。 ltrace の使い方は簡単です。基的には ltrace コマンドの引数にトレースしたいコマンドとその引数を並べれば OK です。デフォルトでは ltrace のメッセージは標準エラーに出力されます。これをファイルに出力させるには -o オプションを用います。たとえば、次のように実行します。 % ltrace -o log.txt wget https://www.codeblog.org/ この例では wget が ht

    rin51
    rin51 2021/05/16
    > ltrace は共有ライブラリの関数呼び出しをトレースする Linux 用のツールです
  • 横着プログラミング 第3回: 履歴マニア

    最終更新日: 2002-05-18 (公開日: 2002-05-18) Unix Magazine 誌に 2002年1月号から 2003年2月号にかけて連載し ていた記事の元の原稿です。 コンピュータの方がうまくできることに人間を使うな。 -- Tom Duff *1 私の見る限り、プログラマという人種は決まって事務作業が嫌いな ようである。同じような書類を何枚も書かされたり、1つ誤字があ るから書き直せと言われたりすると、異常にストレスがたまる。 同様に、計算機を使っていても、同じような作業を何度も繰り返し たり、ちょっとでも間違えたら最初からやり直し、というのは耐え られない。そこで、今回は履歴を活用して作業の再利用をするノウ ハウを取り上げる。 シェルの履歴 Unixを使い始めて間もない初心者が作業しているところを見ると、 打ち間違えたコマンドを律儀に最初から打ち直しているのに気づく

    rin51
    rin51 2021/04/08
  • VPNの謎 #46

    ふたたび Chromium OS [1] のバグの話。VPN (Virtual Private Network) に接続するとChromium [2] がクラッシュするというバグが見つかった。つい最近発生したリグレッションらしい。スタックトレースによると、クラッシュは D-Bus [3] 関係のコードの中で起きている。Chromium の中の D-Bus といえば、私が以前にコードを書いた部分だ。というわけで、バグが私のところに回ってきた。 D-Bus 関係のバグは厄介なものであることが多く、以前の「風が吹けば(たまに)桶屋が儲かる式のバグ」 [4] ではえらい苦労した。今回もいやな予感がしつつスタックトレースを眺めてみると、どうもコネクションの切断処理のあたりでクラッシュしているらしい。 コネクションの切断といえば以前から処理がいまいちだった部分で、別のエンジニアが最近その辺のコードをい

  • いやなブログ: リンクと同名のシンボル

    リンクと同名のシンボル C や C++ のプログラムで同じ名前のグローバルなシンボルが 2つ以上存在するとどうなるでしょうか。 Debian GNU/Linux sarge + GCC 3.3.5 での動作を見てみます。 静的リンクの場合 まず、次のようなファイル a.c があります。 a.c ではグローバルな関数 func() を定義しています。 #include <stdio.h> void func() { printf("func() in a.c\n"); } 次に、 b.c でも同様に func() を定義しています。a.c のものとよく似ていますが、 printf で表示されるメッセージは異なります。 #include <stdio.h> void func() { printf("func() in b.c\n"); } 最後に、 main.c では func() を呼び出

  • 年を取ると環境設定がどうでもよくなる現象 - bkブログ

    年を取ると環境設定がどうでもよくなる現象 環境設定に関するエッセイを書きました。 もともとは、とあるメディア向けに書いたものですが、 諸事情により、ブログにて公開することにしました。 環境設定と老化 ソフトウェア開発を行う上で、プログラマはさまざまなツールを使います。そして、ツールをカスタマイズしたり、ときおり新たなツールを導入するなどして、開発環境を整えます。具体的には、テキストエディタの設定を変更したり、ブラウザに拡張機能をインストールしたり、といったことを行います。 私の場合、以前はこうした環境設定に情熱を燃やしていましたが、年をとるにつれて、その情熱は徐々に衰えてきました。周りのプログラマを見渡しても、多かれ少なかれ、同じ傾向が見られます。 というわけで、今回は「年を取ると環境設定がどうでもよくなる現象」がなぜ起きるかについて考察してみたいと思います。それではさっそく、思い当たる要

    rin51
    rin51 2017/11/29
  • 自然言語処理 悪魔の辞典

    言い換え (paraphrase) 都合の悪いことを別の表現でごまかすこと。物は言い様。 例: 「わがまま→自分の意思をしっかり持っている人」 「不潔→ワイルド系」「くだらない研究→興味深い研究」 「役に立たない研究→基礎研究」 意味論 (semantics) 意味論の意味は意味論の意味論によって定義される。 SVM (support vector machine) ポスト決定木の最右翼。決定木を参照のこと。 エラー率 (error rate) 精度の向上が芳しくないときに用いる。精度が 0.01 % 上がりま した、と言わずに、エラー率が 5%下がりました、と言うとよい。 機械学習 (machine learning) 自己の学習をあきらめた人間の最後のよりどころ。 形態素解析 (morphological analysis) 文を形態素に分割すること。形態素が何であるかは永遠の謎。 決

    rin51
    rin51 2013/02/22
    > ほとんどの文章は要約すると「、、、。」になる。
  • gonzui 0.3 公開 - bkブログ

    rin51
    rin51 2013/02/15
    > マルチバイト文字の検索は今のところ unigram という非常に安直な方法をとっています。茶筌やMeCabなどを用いた単語分割は行いません
  • 作れる、作る、作った - bkブログ

    作れる、作る、作った たまに「Namazu を作ったなんてすごいですね」と言われる。そう言われると、いつも違和感を感じる。同等のソフトウェアを作れる人ならざらにいるからだ。作れることは自体は全然すごくない。 では当は何が評価されているのかというと、何かを作って公開し、それが比較的広く使われたことだ。作れる人はざらにいるし、同じようなものを作ってみようと考える人もそこそこいるけど、実際に作ってくれる人はなかなかいない。だから、作った人が登場するとありがたがられる。それが広く使われれば、より評価される。案外、自分ではたいしたことないと思っているものでも好評を博したりする。 文章でも同じことが言える。誰でもうすうす分かっていて、誰かが日頃から考えているようなことでも、それを書いてくれる人はなかなかいない。だから、書いた人が登場するとやっぱりみんな喜ぶ。それが広く読まれれば、より評価が高まる。読

  • bkノート - bkブログ

    ブログよりもっと気軽に文章を書く方法はないかと思い、 Google+ にbkノートというページを実験的に作ってみました。すぐ飽きるかと思いきや、今のところ続いているので、もう少し続けてみたいと思います。

    rin51
    rin51 2012/01/24
  • いやなブログ - 文字列操作の比較表: Ruby, Python, JavaScript, P...

    文字列操作の比較表: Ruby, Python, JavaScript, Perl, C++ Ruby, Python, JavaScript, Perl, C++ の文字列操作の比較表を作りました。配列操作の比較表の続編です。間違いなどがあったらご指摘いただけると助かります。 Ruby (String) Python (str) JavaScript (String) Perl C++ (std::string)

  • いやなブログ: SpiderMonkey で JavaScript のインタラクティブシェル

    SpiderMonkey で JavaScript のインタラクティブシェル JavaScript のコードをインタラクティブに動かせるツール (Ruby における irb のようなもの) が欲しいと以前から思っていたのですが、今日になってようやく SpiderMonkey のインタラクティブシェルをインストールしました。 Debian GNU/Linux なら sudo apt-get install spidermonkey-bin を実行するだけでインストールできます。インストール後、 js コマンドを実行するとインタラクティブシェルが立ち上がります。 式を入力すると値が表示されます。 readline ライブラリがリンクされているので、コマンドライン編集は bash と同様にできます。 js> a = [1,2,3] 1,2,3 js> a.push(4) // 末尾に 4 を追加

  • マウンテンビューガイド - bkブログ

    マウンテンビューガイド 知人がマウンテンビューガイドなるサイトを作ったので紹介します。いわく、「日からのビジター向けにシリコンバレー、ベイエリア周辺の情報をまとめました」とのこと。 このサイト、地味で素っ気ない感じですが、内容はなかなか充実しています。私はたまにシリコンバレーに行く機会があるのですが、ここに書いてあることは、最初から知っていればよかったのに、と思うことばかりです。

    rin51
    rin51 2011/05/13
  • 誤った判定 - 学校では教えてくれないバッドノウハウ英語 #13 - bkブログ

    誤った判定 - 学校では教えてくれないバッドノウハウ英語 #13 学校では教えてくれないバッドノウハウ英語の13回は、誤った判定(間違った判定)に関する表現を取り上げたいと思います。 スパムフィルタによるスパムの判定や、メモリチェックツールによるメモリリークの判定など、コンピュータの世界では、ソフトウェアを用いて何かを自動で判定することがよくあります。 ここで問題となるのが、誤った判定です。スパムフィルタの例で言えば、「当はスパムじゃないのにスパムと判定された(大切なメールがスパムフォルダに行ってしまった)」と「当はスパムなのにスパムじゃないメールとして判別された(スパムが受信箱に入ってきた)」という2つの場合があります。 英語では前者の場合を false positive、後者の場合を false negative と呼びます。日語では偽陽性、偽陰性となりますが、基的に医学用語な

    rin51
    rin51 2010/11/28
  • ソフトウェアの肥大化について - bkブログ

    ソフトウェアの肥大化について 肥大化したソフトウェアというとリソースいでメンテナンスがしづらい厄介ものというイメージがあります。しかし、広く使われているソフトウェアは多かれ少なかれ肥大化しているように思えます。ソフトウェアの肥大化はよくないことなのでしょうか。 結論からいえば、必ずしも悪いことではありません。この話題は Joel Spolsky 氏がストラテジー・レターIV:ブロートウェアと80/20の神話で書いています。私が付け加えられることはあまりありませんが、最近、知人との間で話題になったので、少し書いてみたいと思います。 数年前、 Alan Kay 氏の Squaek についての講演を聞きにいったとき、途中でコードのサイズが話題になり、Squeak のコードはこんなに小さい(具体的な数字は忘れました)といって、何千万行もある Windows NT を引き合いに出して、Squaek

    rin51
    rin51 2010/10/17
  • ある程度の年齢を迎えたプログラマが抱える悩み - bkブログ

    ある程度の年齢を迎えたプログラマが抱える悩み ある程度の年齢を迎えたプログラマが抱える悩みに、「若手のプログラマと比べて、どうやって価値を出していくか」という問題があります。これは言い換えれば「同じような生産性であれば、相対的に給料の低い若手のプログラマに置き換えられてしまうのではないか」という悩みです。 この問題のひとつの解決策は、プログラマ以外の仕事のポジション(たとえば管理職など)に移ることですが、他のポジションには向いていない、まだまだ現役でプログラマをやりたいという場合にどんな戦略があるか考えてみました。なお、後述するように、以下に挙げた戦略は相反するものではなく、組み合わせが可能です。 エキスパート戦略 この分野ではトップクラス、というレベルの専門性を身につけ、その分野に特化してキャリアを築くという戦略です。たとえば、ネットワークやセキュリティといった分野で一流と認められる専門

  • いやなブログ: gdb の gcore コマンドを使う

    gdb の gcore コマンドを使う デバッガの理論と実装を読んで以来、デバッガをもっと活用しようという意欲がわいてきました。そこで、gdb について調べていると、 gcore (generate-core-file) というコマンドを見つけました。 gcore は実行中のプロセスの core を生成する gdb のコマンドです。通常、 core ファイルはプログラムが異常終了したときにカーネルによって生成されますが、gdb の gcore コマンドを使えば実行中のプロセスを終了させることなく core ファイルを生成できます。 gcore コマンドは次のように使います。 % gdb (gdb) attach PID (gdb) gcore core (gdb) detach まず attach コマンドで PID を指定して実行中のプロセスにアタッチします (gdb -p PID で起

  • リンクされているライブラリによってプログラムの動作を変える - bkブログ

    リンクされているライブラリによってプログラムの動作を変える weak シンボルを用いると、リンクされているライブラリによってプログラムの動作を変えることができます。ここでは GNU 拡張を用いて weak シンボルを利用する方法を紹介します。 それではさっそくサンプルコードを見てみましょう。このプログラムでは、libm に含まれる sqrt() 関数があるときは利用し、ない場合はその旨のメッセージを表示します。 weak.c #include <stdio.h> extern double sqrt(double x) __attribute__ ((weak)); void func () { if (sqrt) { printf("%f\n", sqrt(10.0)); } else { printf("sqrt isn't available\n"); } } weak-main.c

  • リンクと同名シンボル: weak シンボル編 - bkブログ

    リンクと同名シンボル: weak シンボル編 先日の記事では静的リンクの際に同名シンボルの衝突は検出されると書きました。しかし、 weak シンボルが存在すると話は変わります。 次のようなプログラム main.cpp があります。 #include <iostream> class Foo { public: Foo(int x) : x_(x) {} void func() { std::cout << x_ << std::endl; } private: int x_; }; int main () { Foo foo(256); foo.func(); return 0; } このプログラムをコンパイルして実行すると 256 と表示されます。 % g++ -c main.cpp % g++ -o main main.o % ./main 256 ここで、main.cpp とはまった

  • 研究さん (一休さんの偽物)

    偉い将軍: 暑いぞ。なんとかせい。 凡人さん: 暑ければうちわを使ったら? 研究さん: それは研究ではない! 喝! 研究さん: 拙者にお任せを。予算をください。 研究さん: (夏が終わった頃に) できました。 この方式で理論上、室温が0.00001 度、下がります。 実現するには氷が 1,000トン必要です。 それから、これが提出資料です。 厚さは 1m用意しました。 凡人さん: 僕なら 200g の氷で、かき氷を作ってべるね。 研究さん: それは研究ではない! 喝!

  • Doug Lea の malloc (dlmalloc) - bkブログ

    Doug Lea の malloc (dlmalloc) 小さなオブジェクトを大量に new しまくるプログラムを C++ で書いたところ、処理時間の多くが malloc() に費やされていることがわかりました。このような場合、自前でメモリ管理を行って最適化するという方法がありますが、なかなか大変です。 そこで、安易に高速な malloc に置き換えてみようということで、 Doug Lea の malloc (通称 dlmalloc) の最新版を試してみました。 dlmalloc の使い方 dlmalloc は 1ファイルをダウンロードしてビルドすれば使えます。次のように実行すると共有ライブラリ libdlmalloc.so を作れます。現時点でのバージョンは 2.8.3 でした。 % wget ftp://g.oswego.edu/pub/misc/malloc.c % gcc -O2