タグ

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

  • 一から自分でコードをバリバリ書くという幻想 #21

    友人からこんなコメントをもらった。「最近 bk ノートが、何か困ると同僚に聞きに行くキャラになりつつありますよ。もっと上から目線で書かないと。するとカコイイ! とか言ってくれる人が出てきますよ」 そんなことを言われても、困ったら助けてもらうというのは事実なんだからしょうがない。そもそも、自分の弱さを認めるが強さの始まりというものだ、うんぬん。こんなことを書けば上から目線っぽい?。。が、やっぱりやめておこう。 話を変える。既存のコードをちまちまリファクタリングして、少しだけ新しいコードを追加して、デバッグして、なんてことを年がら年中やっていると、一から自分でコードをバリバリ書けたらどんなに楽しいだろう、なんてことを考えることがある。大きなプロジェクトの中で何かをやっていると、そういう機会は滅多にない。ぶつぶつ言いながら既存のコードをいじくりまわしていることの方が多いのだ。 が、あるとき、ひと

  • 横着プログラミング 第3回: 履歴マニア

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

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

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

  • Best Software Writing - bkブログ

    Best Software Writing 正月休みに何か気楽なものでも、と思い『Best Software Writing』を読みました。 このは『Joel on Software』で知られる Joel Spolsky 氏が編纂した、ソフトウエアに関するエッセイ集です。20数名の著者による 30以上のエッセイがまとめられています。 エッセイの選択は2004年に行われたため、今となっては目新しくないものもありましたが(Python は動的型付けで楽ちん。テストを書けば安心、みたいな)、今読んでも十分におもしろいエッセイが多くありました。なかでも次のエッセイが特におもしろいと思いました。 なぜ、アンドキュメンテッドな振る舞いに依存するアプリケーションを単に締め出さないのか by レイモンド・チェン 文書化されていない Windows の挙動に依存している行儀の悪いアプリをなぜ締め出さない

  • split の研究 - bkブログ

    split の研究 split 関数の挙動が言語ごとに微妙に異なると知人と話題になったので調べてみました。結果はまとめをどうぞ。 Ruby まずはRubyから調べてみます。irb を使って調べました。 % irb ... まずは普通に分割 >> "a,b,c".split(",") => ["a", "b", "c"] 末尾に空要素があると、省略されてしまう >> "a,,c,,".split(",") => ["a", "", "c"] 末尾の空要素を省略しないためには -1 が必要 >> "a,,c,,".split(",", -1) => ["a", "", "c", "", ""] 空文字列だと結果も空 >> "".split(",") => [] -1 をつけても同様 >> "".split(",", -1) => [] 分割パターンを指定しない場合も同様 >> "".split

  • プログラミングの力を生み出す本 - bkブログ

    プログラミングの力を生み出す 知人がお勧めしていた『プログラミングの力を生み出す』を読みました。 読みはじめてすぐに、このは異色なプログラミングの入門書であることがわかりました。普通のプログラミングの入門書は「プログラミングとは」という序論が終わったら hello, world 的なものからコードを書き始めるものが多いと思うのですが、書の導入はまるっきり異なります。1章の目次は以下の通りです(カッコ内は私のコメント)。 1章 プログラミングへの導入 プログラミングことはじめ(なぜか例が x-y プロッタ) プログラミングの構造(なぜかフローチャート登場) データ(整数、文字列、論理型など) プログラミング言語の構造(コンパイラ、リンカの説明とか) x86 CPU の概要(レジスタの説明とか) GCC と GNUPLOT(なぜか GNUPLOT が導入に登場...) GNU アセンブ

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

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

  • yak shaving で人生の問題の80%が説明できる問題 - bkブログ

    yak shaving で人生の問題の80%が説明できる問題 つい最近、 yak shaving (ヤクの毛を刈る)、という言葉を知りました (原典)。これは「一見無関係に見えるけど、真の問題を解くのに必要な問題を解くのに必要な(これが何段階も続く)問題を解くのに必要な活動」という意味の言葉です。 yak shaving は、ようするに「ある問題を解こうと思ったら別の問題が出てきて、それを解こうと思ったらさらに別の問題が出てきて…」ということが延々と続く状況を表しています。ちなみに、ヤクとは毛が長い、牛の一種です。 yak shaving は、以前に覚えた bikeshed と同じくらい便利そうな表現です。というもの、プログラムを書いていると yak shaving 的な状況がすぐに発生するためです。 たとえば、「Amazon のほしい物リストを CSV 形式に変換して Excel で読み

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

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

  • pdumpfs: a daily backup system similar to Plan9's dumpfs

    What's pdumpfs? pdumpfs is a simple daily backup system similar to Plan9's dumpfs which preserves every daily snapshot. pdumpfs is written in Ruby. You can access the past snapshots at any time for retrieving a certain day's file. Let's backup your home directory with pdumpfs! pdumpfs constructs the snapshot YYYY/MM/DD in the destination directory. All source files are copied to the snapshot direc

  • カメラのしくみ - bkブログ

    このは日カメラ博物館の売店で見つけました。売店の限られたスペースの中で並んでいるには何か理由があると思い、著者略歴を見ると、ニコンに長年勤めた後、現在は大学で教えているという豊田堅二さんという方でした。 もともと、なぜカメラのしくみに興味を持つようになったかといえば、 デジイチを使うようになってから、絞りやシャッター速度といったパラメータに気を使うようになった割に、そのしくみをちっとも理解していないのはいかがなものか、と思い始めたためです。 これはちょうど、プログラミングで「a() という関数を使えば A という結果が得られるが、そのしくみはわからない」という状態でプログラムを書いているのと似ているかもしれません。求める結果が得られればそのしくみを知らなくても多くの場合、困りませんが、しくみを知っているのと知らないのでは大違い、という場合もあります。 というわけで、『カメラのしくみ』を

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

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

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

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

  • いやなブログ - PuTTYのフォントを「モトヤシーダ1等幅」に設定する

    PuTTYのフォントを「モトヤシーダ1等幅」に設定する PuTTY のフォントを「モトヤシーダ1等幅」に設定してみました。小さいサイズでの視認性は MSゴシックと同等に高く、文字を大きくしたときに断然きれいなのがいい感じです。 PuTTY (私は日語版を使っています) のフォントはデフォルトでは Terminal に設定されています。これは視認性の高いビットマップフォントです。 しかしながら、ビットマップフォントゆえに、私がよく使う「最大化されたときだけフォントの大きさを変更する」という機能と相性が良くありません。この機能はウィンドウを最大化したときに、端末の桁と行を増やす代わりにフォントを大きくするもので、PuTTYの設定の「ウィンドウ」の欄にあります。

  • JavaScript 第3版 - bkブログ

    JavaScript 第3版 ひさびさに JavaScript をいじろうと思い、以前に購入して長らく放置していた『JavaScript 第3版』を読みました。これまで見よう見真似でしか触ってこなかった JavaScript をちょっとまじめに勉強しよう、というのが狙いです。 もともと、このはプログラミング言語としての JavaScript が詳しく解説されている、という話をどこかで読んだのがきっかけで購入しました。たしかに全体の半分を占める第I部「コア JavaScript」では字句構造、データ型にはじまり、変数、式、演算子、文、関数、オブジェクト、配列と、言語仕様のオーソドックスな解説が続いています。 一方、第II部の「クライアントサイド JavaScript」 ではブラウザ上での JavaScript についての各種話題が取り上げられています。しかし、この第3版の日語版が出たのが

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

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

  • いやなブログ - JavaScript ではてなブックマーク数を表示

    JavaScriptはてなブックマーク数を表示 はてなブックマークのブックマーク数は人気の指標として参考になります。このブログでは各エントリの末尾に、ブックマーク数を画像で取得する API を使って、ブックマーク数を表示するように設定しています。 ブログシステムのようにテンプレートを使える場合は、ブックマーク数を表示する HTML をたくさんのページに貼り付けるのは簡単ですが、そうでない場合はなかなか面倒です。そこで、ここでは JavaScript を使ってはてなブックマーク数を表示する方法を紹介します。 やり方 まず、次のような JavaScripthatena-bookmark.js として保存してウェブに置きます。 function makeHatenaBookmarkLinks() { return ("<a href='http://b.hatena.ne.jp/ent

  • cdbiff: メールの到着を CD-ROMドライブでお知らせ

    What's cdbiff? cdbiff is a tool for notifying you of mail arrival using a CD-ROM drive. cdbiff execute `eject' command to eject a CD-ROM tray when mail arrives. Usage cdbiff is written in Ruby. It works with Linux. Usage: cdbiff [OPTION] -f, --file=FILE Monitor FILE [/var/mail/$USER] -c, --command=COMMAND Execute COMMAND when mail arrives [eject] -i, --interval=SECONDS Monitor at intervals of SECO

  • Write Great Code - bkブログ

    Write Great Code 『Write Great Code』を読みました。「グレートコード」を書く上で必要となるコンピュータの基礎的な知識を幅広く扱った内容となっています。 書でいうグレートコードとは「高速・コンパクトかつ、リソースを無駄使いせず、可読性に優れ、保守が容易で、一貫したスタイルに従った、系統的に設計され、拡張性に富む、十分にテストされ、確実に動作し、ドキュメントが整備されている」コードです。 「ハードウェアを知り、ソフトウェアを書く」という副題の通り、書は CPU、キャッシュ、メモリ、ストレージ、周辺機器といったハードウェアの話題に多くの紙面が割かれています。グレートコードを書くにはこれらのアーキテクチャの理解が欠かせない、というのが書の主張です。 一方で、書では、2進数に始まり、ブール代数や浮動小数点、文字列、配列の表現といった、コンピュータでデータをどの

  • 1