タグ

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

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

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

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

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

    hiroomi
    hiroomi 2016/11/29
  • 横着プログラミング 第11回: 小粒なツールたち

    最終更新日: 2003-03-18 (公開日: 2003-03-18) Unix Magazine 誌に 2002年1月号から 2003年2月号にかけて連載し ていた記事の元の原稿です。 僕は偉大なプログラマなんかじゃない。 偉大な習慣を身につけたプログラマなんだ -- Kent Beck *1 プログラミングにしても他のことにしても、何かを効果的に行うに は、よい習慣を身につけるのが大切とされている。プログラミング について言えば、面倒くさがらずにしっかりテストをしたり、新しい 技術を日々、覚えたりすることが大切なようである。しかしながら、 急いでプログラミングしているときは、テストをなおざりにしたり、 デバッガを使った方がよい場面でも「printf デバッグ」に固執し たりと、悪い方の習慣に従ってしまいがちである。 一方、原稿やレポートなどの締め切りが迫って急いでいるときにか ぎって、

    hiroomi
    hiroomi 2016/11/09
    ”投 稿者ランキングを自動集計するためのワンライナー*7が紹介されていて、ずいぶん感心した記憶が”
  • 横着プログラミング 第1回: Unixのメモ技術

    最終更新日: 2002-03-18 (公開日: 2002-03-18) Unix Magazine 誌に 2002年1月号から 2003年2月号にかけて連載し ていた記事の元の原稿です。 横着プログラミングとは 私は必要が発明の母だとは思わない。私の意見では、発明とは怠惰 から、おそらくはまた、まさに無精から生じるものである。面倒を 省くために。 -- アガサ・クリスティ この言葉によると、どうも発明とは横着したいがために生まれるも のらしい。そう考えてみると確かに、私がプログラミングをする動 機は、横着するためのソフトウェアを作るため、という要素が大き い。突然、「うげー、面倒くせー」と叫んでプログラムを書き始め るのである。 そんなわけで、横着するためにプログラミングすることを私は勝手 に「横着プログラミング」と呼んでいる。連載では横着プログラ ミングをテーマに、横着のコツや私が作っ

    hiroomi
    hiroomi 2014/12/31
  • バッドノウハウと「奥が深い症候群」

    計算機を使っていると、何でこんなことを覚えないといけないのだ ろうか、とストレスを感じつつも、それを覚えないとソフトウェア を使いこなすことができないためにしぶしぶ覚えなければならない、 といった類いのノウハウは多い。そうした雑多なノウハウのことを、 来は知りたくもないノウハウという意味で、私はバッドノウハウ と呼んでいる。 バッドノウハウは、ソフトウェアの複雑怪奇な仕様が歴史的に引き ずられ、根的な改善は行われないまま、そのノウハウが文書によっ て受け継がれることによって蓄積が進行する。Unix 上で広く使わ れているツールとしてはTeX, Emacs, sendmail, bind, perl, gnuplot, procmail などは、役に立つツールであると同時に、その 複雑怪奇な仕様によって長年に渡ってユーザを苦しめ続け、バッド ノウハウの温床として悪名が名高い。こうしたツー

    hiroomi
    hiroomi 2013/01/08
  • シンプル=バッドシグナル説 - bkブログ

    シンプル=バッドシグナル説 知人と話していて、シンプルという言葉は手抜きの言い訳として使われることがあまりに多いので、シンプル=バッドシグナル(バッドな兆候)なのではないか、という話になりました。 シンプルが言い訳としてよく使われるのは以下のような場面です。 必要な機能が足りていない デザインがださい そこらじゅう手を抜いている プログラミングにおいてよくあるのが、まじめに実装していないクラスに Simple なんとかという名前をつけるパターンです。自らシンプルと名乗っているものには疑ってかかったほうがいいのかもしれません。 以上、シンプルな考察でした。

    hiroomi
    hiroomi 2012/03/12
    「そこらじゅう手を抜いている」これが、瞬時に思いつくから説ではなさそ。/「必要な機能が足りていない デザインがださい そこらじゅう手を抜いている」独りよがり、視野欠損にありがち。
  • JavaScript で複数箇所のキーワードをハイライト - bkブログ

    JavaScript で複数箇所のキーワードをハイライト JavaScript で複数箇所の キーワード をハイライトさせるいい方法ないすかーと miyagawa氏に訊いたところ、 次のようなコードをさらっと書いてくれた。 キーワードにマウスカーソルを載せると、複数箇所に出現するキーワードが一斉に ハイライトされるというもの。 <script> function hlclass(name, flag) { var t = document.getElementsByTagName('span'); for (var i = 0; i < t.length; i++) { if (t[i].className == name) { t[i].style.backgroundColor = (flag ? "yellow" : "white"); } } return true; } </sc

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

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

    hiroomi
    hiroomi 2010/10/18
    どこかのSCMな話で、「「計画在庫」なのか、意図せずに結果として生み出された「出来ちゃった在庫」」なんって表現があったけど。どちらにしろ意図してればよいんじゃないのと。
  • ソフトウエアの肥大化について、の続き - bkブログ

    ソフトウエアの肥大化について、の続き 前回の記事について Shiro さんから鋭いコメントをもらったので、返信してみようと思います。 Shiro さんの指摘する、現状ではそうかもしれないけど来的に肥大化が不可避なものかはわからない、という点はまったく仰る通りです。将来、肥大化の問題を解決する変化がやってくる可能性はあります。が、もし当にやってきたら大半のプログラマは不要になりそうなので(肥大化しないなら少人数で作れそうですから)、個人的にはそれが早くやってこられるのは困ったことですが、それはさておき。 ソフトウェアの複雑さが人間の扱える範囲を超えるという点では、個人というレベルではとっくに破綻しているので、集団として扱える範囲を超えるのはいつかという話になると思います。これについては複雑さの限界より、製品や組織の寿命の方が早くやってくるような気がします。現在、広く使われているソフトウェ

    hiroomi
    hiroomi 2010/10/18
    「これは必ずしも悪いことではないと認めた方が精神衛生上よいなと」
  • ある程度の年齢を迎えたプログラマが抱える悩み - bkブログ

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

    hiroomi
    hiroomi 2010/09/22
    組み合わせ。と思ったのだが、中途半端になりそ。
  • LINUXシステムプログラミング - bkブログ

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

  • 横着プログラミング 第5回: QuickML: 超お手軽なメーリングリスト

    最終更新日: 2002-07-18 (公開日: 2002-07-18) Unix Magazine 誌に 2002年1月号から 2003年2月号にかけて連載し ていた記事の元の原稿です。 わたしは、インターフェイスの研究においては、試験と評価という 方法がそれほど役に立つものだとは思っていない。傲慢な考え方か もしれないが、わたしがそう判断する根拠はこうである。つまり、 注意深く試験しなければ見つからない程度の違いならば、そもそも そこに大した違いはないということなのだ。 -- Nicholas Negroponte *1 年がら年中メールを書いている。以前は計算機に向かっているとき だけだったが、最近では携帯電話でメールを打つことも多くなった。 当然ながら、年がら年中メールを読むことになる。1日に受け取る メールのほとんどはメーリングリストからのものである。 「インターネットはメーリング

  • quickml server: an easy-to-use mailing list system

    quickml server is an easy-to-use mailing list system. What's New 2004-06-09: quickml 0.7 released! Some bugs were fixed. 2002-02-12: quickml 0.1 released! Characteristics You can create mailing lists just by sending usual a mail (not a complicated ``command mail''). You can create mailing lists of any names you like very easily. You can create mailing lists with any subdomains you like. quickml se

  • 自転車置場の議論 - bkブログ

    自転車置場の議論 人が集まると、なぜかどうでもいいようなことほど議論が紛糾してしまう傾向がありますが、このような現象のことを、FreeBSD のコミュニティでは自転車置場の議論 (bikeshed discussion) と呼んでいることを知りました。 この、「瑣末なことほど議論が紛糾する現象」はパーキンソンの法則というの「議題の一項目の審議に要する時間は、その項目についての支出の額に反比例する」という法則として知られています。 このの中で著者は、原子炉の建設のような莫大な予算のかかる議題については誰も理解できないためにあっさり承認が通る一方で、市庁舎の自転車置場の屋根の費用や、果ては福祉委員会の会合の茶菓となると、誰もが口をはさみ始めて議論が延々と紛糾するというストーリーを紹介しています。 このように、「瑣末なことほど議論が紛糾する現象」はパーキンソン氏によって見事に説明されているの

  • wxWidgets でクロスプラットフォーム GUIアプリを作ろう

    最終更新日: 2004-10-08 (公開日: 2004-10-08) UNIX USER誌 2004年8月号 に掲載された記事の元の原稿です。 文中の「原稿執筆時点」は「2004年 6月半ば」を指します。 wxWidgets は Linux, Windows, Mac OS X など多くのプラットフォー ムに対応したオープンソースの GUI ツールキットである。稿で は wxWidgets を用いてクロスプラットフォーム対応の GUI アプリ ケーションを開発する方法を紹介する。 はじめに Unix の大きな魅力のひとつに、強力なコマンドライン処理がある。 zsh などのシェルと perl などのワンライナーを組み合せて、大量 のファイルを一気に処理するときなどは、「これぞコマンドライン の醍醐味」と感じる瞬間である。 一方、Unix の大きな不満のひとつに、凶悪なコマンドライン書法

    hiroomi
    hiroomi 2009/11/18
  • 横着プログラミング 第8回: pdumpfs: 毎日のスナップショットを保存する

    最終更新日: 2002-11-18 (公開日: 2002-11-18) Unix Magazine 誌に 2002年1月号から 2003年2月号にかけて連載し ていた記事の元の原稿です。 The steady state of disks is full. (ディスクの定常状態はフルだ) -- Ken Thompson *1 ハードディスクの容量がどんなに増えても、ディスクがいっぱいに なるまで必ず消費される、という法則がある。実際、私はつい 3年 ほど前までは 4Gバイトのハードディスクで間に合っていたが、現 在は 70 Gバイトのディスクをほぼフルに使っている。 70Gバイトも何に使っているか改めて調べてみると、 MP3音楽データ MP3で録音したラジオ講座 Linux ディストリビューションなどのアーカイブ 英和や国語などの電子辞書 論文などの文書アーカイブ ホームディレクトリ以下

    hiroomi
    hiroomi 2009/06/08
    あいさつ文を読んで、アーカイブと日々のファイル差、属性などの差を思ってみたが。
  • いやなブログ: 配列操作の比較表: Ruby, Python, JavaScript, Perl, C++

    配列操作の比較表: Ruby, Python, JavaScript, Perl, C++ プログラムを書いていると、他のプログラミング言語の記憶とごっちゃになって、「配列の後ろに要素を追加するのは push だっけ、 append だっけ」などと混乱することがあります。特に Ruby, Python, JavaScript はコードの書き方が似ているので、この問題が起きがちです。 そこで、備忘録として、 Ruby, Python, JavaScript, Perl, C++ の配列操作の比較表を作りました。一番慣れている Ruby を基準にしています。間違いなどがあったらご指摘いただけると助かります。他の言語のもあるといいなあ。 Ruby (Array) Python (list) JavaScript (Array) Perl (@) C++ (std::vector)

    hiroomi
    hiroomi 2009/04/13
  • GNU diff の地味だけど便利な機能 - bkブログ

    GNU diff の地味だけど便利な機能 最近になって GNU diff の地味だけど便利な機能を2つ知りました。調べてみると、いずれも昔からある機能でした。 --side-by-side は2段組で結果を表示するオプションです。変更されていない行を含めて2つのファイルの内容全体と変更点が表示されるのがポイントです。変更された行の前後数行だけでなくファイル全体をまとめて読みたいときに使えます。デフォルトの表示の横幅は130文字です。必要に応じて --width オプションで変更できます。 こういった用途には meld などの GUI の diff ツールを使えばいいのですが、 ssh 端末しかないような状況で重宝します。 --strip-trailing-cr は行末の CR を無視する機能です。改行コードが CRLF と LF でい違っているけど、中身はほぼ同じ、というファイルを比較す

    hiroomi
    hiroomi 2009/02/21
  • JavaScript でソートアルゴリズムを可視化 - bkブログ

    JavaScript でソートアルゴリズムを可視化 JavaScript でソートアルゴリズムを可視化するプログラムを書いてみました。元ネタは Jon Bentley による ソートアルゴリズムを可視化する Java アプレットです。 アルゴリズム 要素数 動作確認は Firefox 2, IE 7, Opera 9 で行いました。要素数は最大で200まで選べますが、かなり重くなるので遅いマシンで実行すると危険です。 English version is also available. ソースコード: sort-animation.js 解説 X軸が配列の添え字、Y軸が配列の要素の値を示しています。最初に要素がランダムに並んでいる配列 (値に重複なし) を作って、それを各種のソートアルゴリズムでソートする様子をアニメーションで表示します。 ただし、要素のあらゆる変更に対して毎回表示を更新し

    hiroomi
    hiroomi 2009/02/17
  • スルカン開催中止 - bkブログ

    スルカン開催中止 昨日に開催決定とお知らせしたスルー力カンファレンス (通称スルカン) ですが、講演を依頼していたスピーカ候補の全員にスルーされてしまったため、大変残念ながら、開催中止の運びとなりました。 …というのはうそで、最初から、「事前仮登録」をすると次のようなポップアップウィンドウが表示される仕組みになっていました。 あなたのスルー力は 0点です。こんな釣り記事はスルーしましょう(カンファレンスは開催されません)。なお、このフォームは JavaScript ゆえ個人情報はどこにも送信されません。 元々、ほんの小ネタのつもりだったのですが、スラッシュドットに取り上げられるなど思わぬ反響を呼び、ITエンジニアにはスルー力が欠けている、ということを改めて思い知らされる結果となりました。お騒がせしました。

    hiroomi
    hiroomi 2006/10/06
    なるほど。って、この手の登録もするなってことだな。(結果に対してなので、問題ないか…)