タグ

ブックマーク / shyouhei.tumblr.com (10)

  • テストのめどい話

    最初にめどい言い訳をせねばならぬ俺は江島氏ともきょん氏とも面識はないですが、お二人ともが俺のことを知ってることを俺も知ってる程度には狭い業界であり。どちらかに肩入れしたいわけではないです。喧嘩したいわけでもないです。普段あまりここでは言及しないですが俺は今の仕事としてはテストを書いたりテストを実施したりする係をしてノリクチをしのいでおり、いわばテストは業ですので、テストに言及することは今現在の同僚に対して意図しない受け取られ方をする可能性があるので困るので、それもあって普段はここではあまりテストの話はしないわけだが、だからと言って沈黙を破ってテストの話をするのが同僚に対して含みがあるというわけでもないです。とはいえ俺は大学等で真面目にソフトウエア工学の講義を受講したことがなく、経験と勘と昔取った杵柄だけでってるので、そういう意味では若干の後ろめたい気持ちもある。で、テストって何なん俺が

    テストのめどい話
    retlet
    retlet 2014/01/14
  • 卜部昌平のあまりreblogしないtumblr

    前回の続き。 前回の時点では「git blameが密になっているところはきっと活発に編集されていたに違いない」という仮説があったわけですが、これは当のところは、よくわからない。なぜかというと、blameというのは地層のように降り積もったコミットの表面に露頭してるところしか見せてくれないわけです。当に活発に更新されていたかを知るには、ようするに地質平面図じゃなくて地質断面図が必要なわけ。分かりますよね。 で、それはどうやって作ればいいかというと、gitには便利なgit log -pという、こういうとき便利だけど普段は使い道のなさそーなコマンドがあって、これは生のdiffをすべてだらだらと表示してくれるわけですよ。で、diffからblameを再構成するにはdiffの+行をひたすら集めてくればいいわけだけど、その時-行も一緒に覚えておいて、あるコミットでどのコミットが上書きされたかを覚えてお

    卜部昌平のあまりreblogしないtumblr
    retlet
    retlet 2013/11/20
  • バックアップ考

    というわけでPCを買ってバックアップをセットアップしたので考えてみるわけだけども、やはりバックアップはどちらかというとバックアップのしやすさよりもリストアのしやすさが重要と思うわけだ。ZFS send/recvだとかiSCSIでネットワーク越しにLVM論理ボリュームを構築してミラーさせたりとか、原理的には可能かもしれないが、リストアの面倒臭さの面でぜんぜんダメと言わざるを得ない。ZFSはそれはそれでよいものだが、だからといってそれだけではバックアップとして成立しない。RAIDがバックアップではないのと同程度には、ZFSもバックアップではないのだ。バックアップは基的に、奇をてらわないコンサバティブな技術が要求されている分野。すなわち、 バックアップ先メディアは大容量低速回転HDDのRAID1クラスタを使うということ(次点テープ)。容量と入手性の観点からHDD以外のバックアップメディアの選択

    バックアップ考
    retlet
    retlet 2012/06/26
  • どうも周知徹底が不足しているようなので再度のお願いとなりますが、C死ね。

    確かにCでしか書けない類のプログラムは存在する(例を挙げるならKernel)が、それはCの存在を赦す理由にはならない。確かにCに輪をかけてさらにダメな類のプログラミング言語は存在する(例を挙げるならC++)が、それはCの存在を赦す理由にはならない。確かにCでしか書けないダメプログラマは存在する(例を挙げてほしければここにおまえの名前を入れろ)が、それはCの存在を赦す理由にはならない。結論:C死ね。 そもそも計算機にできて算盤にできないことなど存在しない。存在しないんだぞ。なのに何故人はプログラムを書くのか。それはオートメーションのためなのであり、奴隷的使役から人類の尊厳を開放して、この地上に楽園を築くためである。まあそこまで大上段に振りかぶって普段から書いてる輩はいないにせよ、プログラミングとは楽をするため、豊かな人生を実現するため、誰かの幸福のために行うものだ。違うか?じゃあなぜプログラ

    どうも周知徹底が不足しているようなので再度のお願いとなりますが、C死ね。
    retlet
    retlet 2011/05/17
  • 今回のiPhoneの件は要するにAtariショックを避けようとしてるんだと思うと色々と腑に落ちてくるものがある

    今回のiPhoneの件は要するにAtariショックを避けようとしてるんだと思うと色々と腑に落ちてくるものがある つまりAppleがやってるのは露骨な任天堂の猿真似ってわけね。DSでFlashが動くかよって話。 いやもちろん、我等が偉大なる任天堂様のなさる審査とAppleの杜撰な検閲を一緒にしないで頂戴、とかの質的な議論はありうると思うんだけども、じゃあといってDS向け同人ゲーをコミケで頒布させろとかの声がマジョリティとかには絶対ならないというのは、やっぱゲーム業界は痛い目見た経験を生かしてるからなんじゃないの。 だからさ、実はAppleはおまえらプログラマを切り捨てているように見えるけど、当は逆で、あれはおまえらを保護しようとしてるんじゃないか? クソゲーとかから。そう思うとあながち逆噴射な発想じゃないとおもうんだよなー 以上まったく根拠のないチラシの裏でした。

    今回のiPhoneの件は要するにAtariショックを避けようとしてるんだと思うと色々と腑に落ちてくるものがある
    retlet
    retlet 2010/04/14
    つまりAppleがやってるのは露骨な任天堂の猿真似ってわけね。DSでFlashが動くかよって話。 いやもちろん、我等が偉大なる任天堂様のなさる審査とAppleの杜撰な検閲を一緒にしないで頂戴、とかの質的な議論はありうると思
  • lxcについてくるlxc-execute(1)がお手軽すぎてヤバい

    lxcは普段は仮想マシンみたいなのを作る用途で使うわけだけども、そんな大規模の必要ないよプロセスが一個ぽつんと隔離されて起動してくれればいいよ、というありがちなケースをカバーしてくれるのがlxc-execute(1)で、つまりこれはsudo(1)とかchroot(1)とかfreebsdのjail(1)みたいな使い方をするわけだ。特徴としては、 まずpid/uidの名前空間が他と分離されるので、仮にrootが奪取されても他のプロセスをkillしたりできないネットワークも他と分離されるので、仮にrootが奪取されてもパケットスニファとかからは何も見えないもちろんファイルシステムも分離されてるので、仮にroot奪取されてもファイル弄られたりしないデバイスへのアクセスも禁止なので、仮にroot奪取されても/dev/sda1をmknodして適当なマウントポイントにマウントとか不可、/dev/kmem

    lxcについてくるlxc-execute(1)がお手軽すぎてヤバい
    retlet
    retlet 2010/03/23
    lxcは普段は仮想マシンみたいなのを作る用途で使うわけだけども、そんな大規模の必要ないよプロセスが一個ぽつんと隔離されて起動してくれればいいよ、というありがちなケースをカバーしてくれるのがlxc-execute(1)で、つ
  • 独身者よ洗濯機は買うな

    ご注意: 女性の場合、盗難のリスクがぜんぜん違うので、以下の議論はそのままはあてはまりません。ご了承ください。 今、冷静に考えて、なくても困らない耐久消費財トップスリーが自動車、洗濯機テレビである俺は、独身の人をみつけては「テレビって見ます?」とか独自に調査しているんだが、テレビ見ない人とか自動車持ってない人とかは結構いるのに洗濯機はみんな持ってる!おかしい!無駄! というわけで俺の考える洗濯機不要論を広く公開して議論を喚起したい。 その経済性 買った洗濯機を何回動かすんだろうか? 洗濯機は冷蔵庫なとと違い、デフォルトではそのへんに放置されてる存在である。常時通電されてる意味は正直ほとんどない。ちなみに家庭用洗濯機の法定耐用年数は6年である。月に何回洗濯するか考えて72倍してみよう。んでそれで洗濯機買った値段を割ると「洗濯一回あたりの償却費」が分かる。 ところでコインランドリーってあるよ

    独身者よ洗濯機は買うな
    retlet
    retlet 2010/02/09
  • 卜部昌平のあまりreblogしないtumblr

    昔と違って今は{PostNotes}がテーマに入ってるから、wgetでページぶっこ抜いてきてawkかperlでちょろっと整形してgraphvizに突っ込むだけでこういう画像が簡単に。 zsh % export target="http://shyouhei.tumblr.com/post/339223403/tumblr-tumblr"; \ zsh -c 'wget -O - $target | tidy -i -w 0 -utf8 | ruby -n <(cat) | neato -Tpng -o tmp.png' <<'EOF' BEGIN { require 'open-uri' require 'thread' $h = Hash.new $q = Queue.new $th = Thread.start { loop { url = $q.deq $th.exit unless

    卜部昌平のあまりreblogしないtumblr
    retlet
    retlet 2010/01/20
  • 俺の .screenrc が火を吹くぜ

    たまにはこういう生産性のない話題もいいよね! さて、まあおまえらも GNU Screen くらいは使ってるとおもうわけだが。こいつがまたひどいバッドノウハウでさあ。ほとんどの人が他人の .screenrc をコピペしてきて済ませちゃうんだよね。俺くらいカスタマイズして使ってるやつとか見かけないわけよ。当に。CodeRepos 見ても俺に比肩する規模の .screenrc 書いてる奴はいないもん。で、たまーにプロジェクタに表示して見せたりすると「それどうなってるんですか」とか。まあ一般人のおまえらは info なんか読まないよね。そうだよね。 でも今日は気が向いたから line-by-line で何が起こってるか解説しちゃうよ。 .screenrc の前にスクリーンショットの解説をちょっとだけ これが普段俺が使ってるノート PC の画面である。これで全画面。OS は普通の Ubuntu で

    俺の .screenrc が火を吹くぜ
    retlet
    retlet 2010/01/03
  • 検索と挿入がともにO(1)であるようなHashを作るにはコツがいる

    このところ立て続けに表記の事実を理解していない俺実装のHash(しかもCで!)を見かけたので、おそらく知られていないんだと思う。以降、同じ轍を踏む人が少なくなればと思い、啓蒙のために公開しておく。 先に言っておくがおまえらはHashを再発明するんじゃねよボケが。おとなしくありもののライブラリ使えよ。つうかHashのある言語使えよ。Cとかマゾかよ。 言葉と前提とりあえずHashが何であるかとか、どういう作りになっているかとか、そういうことは既知とする。リストの配列ってことね。←これで何言ってるか分からないおまえらにはこの文章はちょっとはやい。先にデータ構造の教科書を読むことをおすすめ。以下ではHashに登録されるキーとデータのペアのことをentryと呼び、リストの配列と言ったときのリストのほうをbin、配列のほうをbucketと呼ぶ。つまり、 class Hash { typedef lis

    検索と挿入がともにO(1)であるようなHashを作るにはコツがいる
    retlet
    retlet 2009/07/21
  • 1