サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
デスク環境を整える
blog-ja.intransient.info
そこそこの大きさのソフトウェアを作った場合、メモリリークが問題になることがよくあります。(初期にメモリ管理についてしっかり設計し、エンジニアの合意を取れば、テストフェーズでメモリリークを気にすることはなくなるのかもしれませんが、残念ながらそのような素晴らしいプロジェクトを見たことがありません。) 普通の環境 (i386, amd64, ppc32, ppc64) ではValgrindを使ってメモリリークを検出するのが定石ですが、Valgrindが動かない環境ではどうしよう、という悩みがあります。 とりあえず、「glibcをdynamic linkして動作するアプリケーション」という仮定で、メモリリークの検出方法を考えました。この仮定はそんなに非現実的ではないはずです。 方針としては、愚直ですが、 malloc/freeをすべて記録し、対応するfreeが存在しないmallocを検出するとなり
Block chain についての Lightning Talk を聞く機会があったので、このとても解りやすい記事を読んで、サンプルコードを書き始めてみた。 価値あるモノ(例えば貨幣)をデジタル化した時に問題になるのが double spend (二重支払い)で、Block chain はこの問題を解決しようとしている。例えば、私が $100 のデジタル貨幣(適当なバイナリデータで表現されているとする)を持っていたとして、バイナリデータは簡単に複製可能なので、この $100 を同時に 2 人(以上)に送ることができてしまう。これを P2P の世界で、中央集権的なサーバなしでどのように解決するか、というのがテーマだ。 もし参加者全員が信頼できるならば、これはいわゆる leader election 問題なので、Paxos/Raft で解決できる。しかしここでは参加者が信頼できることを仮定しな
はじめに 初めての子どもが生まれてから 3 週間が経ちました。これまでの育児の感想は、「予想どおりに大変」です。楽でもないけど予想以上に大変でもないです。 これは、日本では長い方であろう 3 週間の育児休暇を取って、育児に集中できたことが大きいと思います。おかげで、いろいろ気づいたこともあるので、買ったものリストをまとめました。 なお、パパ・ママ向けの「Amazon ファミリー」 というサービスに登録すると、お急ぎ便が使い放題になる Amazon プライムが 3 ヶ月間無料になるのでとても便利です。履歴を見たところ、3 週間で 19 件注文してました。クロネコヤマトの人に「なんだこの家? 毎日注文しやがって」と思われていることでしょう。 基本方針 基本的な方針は次の 2 点です。 「数千円のものはどんどん買う(結果的に無駄になっても気にしない)」 育児の機会は一生に 1, 2 回(日本の出
というような言葉を今までに2, 3人から聞いたので、実体験に照らして書いてみます。結論から言うと、これは自分の経験と合ってます。 まず前提として、私は今まで 2 つのアメリカ系会社で働いたけど、どちらも「働きやすい会社ランキング」みたいので 1 位、2 位に入るようなホワイト企業です。こういう会社は、大抵 diversity を重視してるし、社員の教育レベルも高いので、英語が下手というだけでマイナスになることは(少なくとも目に見える範囲では)ありません。まぁ、そうではないブラック企業に英語が苦手な日本人が入社することは考えにくいので、これはそれほど無謀な前提ではないでしょう。 あ、あとソフトウェアエンジニアであることが前提です。英語が苦手な人がアメリカで弁護士として働くのは無理でしょう(どうだか知りませんが)。 英語が苦手でも働ける これについては、2 つの理由が考えられます。 コードが共
(原文は "Three Myths on the World's Poor") どのような基準で見ても、世界は今までのどの時代よりも豊かになっている。極度の貧困はここ 25 年で半分に減ったし、子供の死亡率は急落しているし、海外からの援助に依存していた多くの国は今や自給自足できている。 それなのに、世の中は悪くなっていると考える人が多いのはなぜだろう? 多くの人々が、世界の貧困と開発についての 3 つの有害な都市伝説に捉われているからだ。都市伝説に騙されないように! 都市伝説 1: 貧しい国は貧しいままの運命にある そんなことは全くない。所得をはじめ社会福祉を測る指標は、ほとんど至る所で向上している。もちろんアフリカでも。 メキシコシティを例にとってみよう。1987 年に私たちが初めて訪れたとき、ほとんどの家には水道水が無かったし、いっぱいにした水おけを徒歩で運んでいる人をたくさん見た。ア
Haskell の文法とか理論的なところとかは少しわかったので、具体的なアプリケーションを書いてみようと思ったのだが、今どき具体的なアプリケーションと言ったらウェブアプリに決まってるので、Yesod を触ってみた。 初心者が言うのも何だが、Yesod book は内容が足りないと思う。書籍版では内容が追加されていることを期待したいが、Amazon.com の Look Inside を見る限り、ウェブと同じ内容のようだ。残念。 Yesod book の Examples は、1 アプリケーションが 1 ファイルに記述されていて、読みやすいのかもしれないけど、全く実用的ではない。あと、せっかく scaffold があるんだから、そのサンプルも欲しいところだ。 ということで、"scaffold を使って何か作る" という目的でとりあえず Wiki、というと Wiki ファンに怒られるようなもの
まえがき こないだ衝動にかられてThinkpad X121e (Core i3モデル)を買ってしまった。IBM時代からのThinkpadファンだったのだが、iPhoneを買ったのを機に、にわかMacユーザーになっていたので、久しぶりにPCに復帰した形だ。キーボードがMacBook Proと同じタイプ(セパレート型というのだろうか)だが、MacBook Proよりもタイプ感が良い気がする。・・・というように、5万円(MacBook Proの1/3)の割にかなり満足度の高い買い物であった。Windows要らないので、そのぶん1000円でもいいから安くして欲しいとは思うが、まぁしょうがない。Windows 7さまは一度も起動されることなくFedora 16で上書きされた。さようなら。 さて新しいマシンで何をしようかと思っていたが、あれこれ記事を見ていると、KVMで動かしたLinux kernel
( The newbie's guide to hacking the Linux kernelがとても素晴らしい記事だったので翻訳しました。 ) ( 2010-09-28 LinuxCon Japan にて、口頭ですが、Greg K-H から翻訳・公開の許可をもらいました。Thanks! ) カーネルをハックするのに、コンピュータサイエンスの博士号や下積み期間は必要ないよ。もちろんそういうことは役には立つ。でもLinux開発の重要な点は、誰にでもオープンだってことだ。とにかく取り組むことが必要。あなたは毎日何らかの形でLinuxカーネルを使ってるでしょ? どんな小さいことでもいいから、カーネル開発を少しでも手伝えば、それを誇りに思えるはずだ。 多くの貢献をしていて (そして Linux Format の読者でもある) Greg Kroah-Hartman に聞いてみた。初心者が Linu
[原文: What Every C Programmer Should Know About Undefined Behavior #3/3] このシリーズのPart 1では、Cにおける未定義な振る舞いと、未定義な振る舞いによって"安全な"言語よりもCのパフォーマンスがよくなることがある事例を示した。Part 2では、未定義な振る舞いが引き起こす驚くようなバグと、多くのプログラマがCに対して持っている誤解を見てきた。この記事では、これらに対して警告を出すためにコンパイラが直面する困難と、いくつかの驚かされる問題を取り除きつつパフォーマンスの優位を保つために、LLVMとClangが提供する特長とツールについて説明したい。 未定義な振る舞いを使って最適化するときにどうして警告してくれないの? 「コンパイラが未定義な振る舞いを使って最適化するときに、どうしてコンパイラは警告を出さないのか? ユー
[原文: What Every C Programmer Should Know About Undefined Behavior #2/3] 連載のpart 1では、未定義な振る舞いとは何か、未定義な振る舞いを利用して、「安全な」言語よりもハイパフォーマンスなアプリケーションを生成するためにCとC++コンパイラが未定義な振る舞いをどのように利用しているのかを議論した。この記事では、未定義な振る舞いが引き起こす全く驚くような結果を説明し、Cがどんなに"安全でない"かを話したい。part 3では、この驚くような結果をやわらげるために、親切なコンパイラは何が出来るのか (それが必須の機能でないとしても) について話したいと思う。 今回の記事は「Cプログラマにとって、未定義な振る舞いが怖くて恐ろしいことがあるのはなぜなのか」と呼びたい。:-) コンパイラの最適化は驚くような結果を引き起こす 近年
[What Every C Programmer Should Know About Undefined Behavior #1/3 の翻訳です。] LLVMでコンパイルしたコードは、最適化を有効にしているとたまにSIGTRAPシグナルを生成するのはなぜなのか、と聞かれることがある。いろいろ調べたあと、(X86での話だが) Clangは "ud2" インストラクションを生成していたことがわかった。"ud2" は__builtin_trap()が生成するインストラクションと同じものだ。[訳注: #UD例外を発生させる命令。ソフトウェアが#UD例外をハンドルできているかテストするために使われる。つまり、ソースコードが未定義な振る舞いを使っていたから、LLVMはud2インストラクションを生成したのであって、LLVMのバグではない、ということ] こういう問題は幾つかあって、すべて、Cの未定義な振る
このページを最初にブックマークしてみませんか?
『Success is a Journey, not a Destination』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く