タグ

ブックマーク / yaneurao.hatenadiary.com (55)

  • Dropboxの使い道 - やねうらおブログ(移転しました)

    Dropboxの容量がこのブログの読者様のご慈悲により10GBになったので(→ http://d.hatena.ne.jp/yaneurao/20100531 )、これが何の役に立つのか考えてみた。 まず、Dropboxはいわずと知れた複数のコンピュータ間でフォルダ同期を取るソフトだ。 ファイルはサーバー側にも保存され、Webブラウザでファイルをダウンロードすることも出来る。ファイルのバージョン管理もされており1ヶ月以内なら以前の状態に戻すことが出来る。また削除したDropboxフォルダ内のファイルの復活もできる。 無料アカウントの容量は2GBまで。有料アカウントは50GBが年99ドル、100GBが年199ドル。 (いまは、一人紹介するごとに250MBの容量が追加されるキャンペーンをやっていて、最大2GB+250MB×32人紹介=10GBまで増量できる。) みんなが便利だ便利だと言うのでD

    Dropboxの使い道 - やねうらおブログ(移転しました)
  • 夢と忘却のメカニズム - やねうらおブログ(移転しました)

    DRAMは電荷が完全になくならないうちに充電を繰り返すことによって記憶を保持している。この記憶を保持させるための充電のことをリフレッシュと呼ぶ。 人間の記憶も一定間隔ごとにリフレッシュ(この文脈では記憶を呼び戻すこと)しないと忘却する。使わない神経回路網は自然に淘汰される。これが、医学的に見てどれくらい真実なのかは知らないが、とりあえずそういう前提で話を進める。 私のサラリーマン時代に同期入社したA君が私にメールをしてきた。彼は、営業マンで、私の名前をフルネームで覚えていて、それでネットで検索してたまたま見つかったのだそうだ。失礼ながら私は彼の名前なんて頭の片隅にも無かった。彼からのメールを見て、ああそんな奴もいたかなぁと思った次第だ。 何故、彼は私のフルネームを覚えていたのだろう。営業職だから、人の名前を覚えなければならない機会は多く、有機的に関連付けて覚えるから、毎日のように記憶のリフ

    夢と忘却のメカニズム - やねうらおブログ(移転しました)
  • レベル255のプログラマになる方法 - やねうらおブログ(移転しました)

    KLab×はてな エンジニア応援ブログコンテストというのをやっているらしいので、私もちょっとした小話を書いてみる。 もうかれこれ10年近く前の話なのだが、そのことはいまでも鮮明に覚えている。 私は当時学生だったA君に、とあるプログラムの修正の仕事をお願いしたのだ。A君はとても優秀なプログラマだった。しかし正直に告白すると私は彼がどれくらい優秀なのか、その時点はあまり正しく理解していなかった。 A君はすぐさま与えられたソースコード上のバグをいくつか見付け出した。そのバグの一つは、私の部下のT君が書いたコードに存在していた。そのバグを修正したついでにA君は「なんでこんなことするんだ!こうなってると×××が○○○になったときにバグるじゃねーか!この大馬鹿野郎!」みたいな罵声混じりのコメントをプログラム上に追記した。 そのコメントを見て、その元のコードを書いたT君はいたく感情を害した。T君は「もう

    レベル255のプログラマになる方法 - やねうらおブログ(移転しました)
  • 例外は名前が悪すぎる件 - やねうらお-よっちゃんイカを食べながら、しばし休息しよう。

    そもそも、C#やJavaのようないまどきの言語で使う「例外」って言うのも一般人には理解不能である。名前からすると稀にしか発生しないような発生してはならないようなものに聞こえる。 ところがGCのある言語では例外を扱うコストは比較的に小さいので、大域ジャンプの代わりに気安く使ったりする。わざわざ「例外」を発生させてその例外をキャッチするのである。 これは、さながらキャッチボールである。キャッチする人がいないと、その例外がどこまでも遠くに飛んで行って画面に「ハンドルされない例外が発生しました。」とか出るわけである。 おお、この説明、わかりやすいな!誰か使っとくれ。

    例外は名前が悪すぎる件 - やねうらお-よっちゃんイカを食べながら、しばし休息しよう。
  • .NET Frameworkの悲劇 - やねうらおブログ(移転しました)

    以前から.NET Frameworkの"."(ドット)が見にくい(→ http://d.hatena.ne.jp/yaneurao/20081204 )と思っているのだが、私のお客さんは、ドットはもとより、NETも気に入らないらしく、「フレームワーク」と呼ぶ。「フレームワーク」なら、まだ私は理解可能なものの、最近はそれすら言うのが面倒なのか「フレーム」「フレーム」とおっしゃるのである。 昨日はお客さんから「フレームが壊れて動かないんです」とか電話がかかってきて、車を電柱にでもぶつけてフレームが壊れて車が動かないのかと思ったら、.NET Frameworkが例外を出してエラー表示が出たという話だった。なんだそりゃ。

    .NET Frameworkの悲劇 - やねうらおブログ(移転しました)
  • ステータスポイント - やねうらおブログ(移転しました)

    RPGはたいていレベルがあがるごとにステータスポイントを獲得して、それを知性や腕力など好きなステータスに割り振れるようになっている。 思うに人間のリソースにも一定のキャパシティがある。また、このキャパシティは人によって異なる。上のRPGの例になぞらえて言うなら、1年ごとにもらえるステータスポイントには個人差があるわけだ。 それで、例えば頭があまりよろしくない人がいるとして、その人がものすごくプログラミングに精通しているとする。 ということは、その人は、プログラミングにすべてのステータスポイントを振り続けた(RPGで言うところの)「極振りプログラミング」であって、他のことはさっぱり出来ない。礼儀作法も挨拶も言葉遣いも料理も自己管理も…。 例えば、世間の平均より給料がよろしくない会社でもの凄く優秀なプログラマを集めようとした場合、しばしばそういう「極振りプログラミング」な人が集まって、無断欠勤

    ステータスポイント - やねうらおブログ(移転しました)
  • tabは仮想化されるべき - やねうらおブログ(移転しました)

    まあ、2tabでも4tabでも良いのだが、これがソースファイル上のメタデータとして付与されていないので、開いてみないとわからないし、開いて違和感があれば2tabにしたり4tabにしたりするというのが実情である。 自分は4tabが好みだとしても2tabで書かれたファイルは、やはり2tabで編集していくべきだろう。2tabで書かれているプログラムは、たいてい深いインデントがされているので、4tabだと画面右端を遙かに超えてしまうからである。 結局のところ、このように2にも4にも8にも自由に解釈されるtabという文字コード自体に問題があると思うので、相手に渡すソースファイルには使用したくないのである。 だから、tabは保存するときにスペースに変換されるような設定でコードを書くのだが、そうすると読み込んだときにスペースになっている。スペースになって何が困るかというと、カーソルキーで移動させるときに

    tabは仮想化されるべき - やねうらおブログ(移転しました)
  • インデント不要論 - やねうらおブログ(移転しました)

    そもそもインデントは必要なのだろうか? 昨日、ちょっとしたスクリプト言語を作っていたのだが、(C#で言うところの)Mainメソッドしかないので、インデント不要なのである。それほどプログラムが長くなるわけでもないのでプログラムは行の左詰めで全然問題がないのである。 そもそも何故インデントが必要かというと、クラスや関数が見つけにくいからである。ところが、最近のコードエディタには、コードの折りたたみ機能があるのでわざわざインデントをしなくともコードを折りたたんでおけばいいのである。 あれ?ひょっとしてインデントっていらないんじゃね?

    インデント不要論 - やねうらおブログ(移転しました)
  • 時代は2tabへと - やねうらおブログ(移転しました)

    その昔「4tab邪道:p」とか言われることがよくあった。tabは8tab(= 半角スペース8個)と相場が決まっていて、4tabでプログラムを書いていると普通の環境(8tab)で見るとレイアウトが崩れて見えるからだ。 それがいまや4tabでもインデントが深くなると画面右まで占拠して見づらいので2tabを好む人すらいる。 これは、近年のプログラミング言語にはインデントが深くなる傾向があるからだ。 例えば、namespace。これで全体を囲うためこの時点でインデントがひとつ深くなる。そのあとclass。class内classだとさらにインデントされる。using (…) { } や try〜catch、delegateなど、何かにつけてインデントが必要になる。 いまどきは画面が大きいから問題にならないかというとそうでもない。ノートパソコンでコードを書いたりしたいのだ。そのときに画面の右端を超えて

    時代は2tabへと - やねうらおブログ(移転しました)
  • Apple Keyboardがお気に入り - やねうらおブログ(移転しました)

    私はiMacWindows 7をインストールして使っているのだが、iMacに付属していたApple Apple Keyboard (JIS) MB869J/Aがすごくお気に入りだ。 キーストロークが浅く、それでいて入力している感触自体はあるので、慣れるととても打ちやすい。いまではDOS/V機のキーボードもすべてこのApple Keyboardにしている。

    Apple Keyboardがお気に入り - やねうらおブログ(移転しました)
  • 僕はゲームセンターで暗記することの重要性を学んだ - やねうらおブログ(移転しました)

    「僕はドルアーガで頭がおかしくなった」(→ http://d.hatena.ne.jp/yaneurao/20090108 )のようなおかしなゲーム人生をスタートさせた私は、中学1年のとき(25年ぐらい前)には全国スコアラーの仲間入りをしていた。 当時の私の一ヶ月のお小遣いは、2,000円であり、1ゲーム100円ならば20回。50円でも40回しかプレイできない。1日2プレイが限度だ。学校は16時ごろに下校して、そこから24時までゲーセンに入り浸りなので、時間は8時間近くある。当時のゲームは1プレイ10分ぐらいが普通だったから、乏しい軍資金に対して、時間が圧倒的に有り余っていた。 当時といまとでは100円の(個人的な)価値は全然違っていて、当時の100円は、いまの私にとって、3万円か5万円ぐらいの価値があった。それはもう大金だった。100円を入れてゲームを1回プレイすると私は緊張のあまり手が

    僕はゲームセンターで暗記することの重要性を学んだ - やねうらおブログ(移転しました)
  • mixiアプリ グラディウス1000万点への道 - やねうらおブログ(移転しました)

    「僕はグラディウスで頭がさらにおかしくなった」(→ http://d.hatena.ne.jp/yaneurao/20100122 )で書いたように狂ったようにグラディウスをやった一人として、mixiのグラディウスも攻略しないわけにはいくまい。 とりあえず、1000万点(26周目)に達したので、編集して動画をいくつかアップする。 コツとしては、いかに安定してクリアできるかにある。JoyStickだとレスポンスが悪いので、キーボード操作を私は選んだ。フレームレートが低いので、SPEEDは1にしておかないと壁に激突しやすくなる。SPEED1でクリアするためには、敵の出現位置をすべて覚え、出現同時にやっつけるというのが基的な攻略方針である。あと、stage 1〜7のすべての箇所で安定して復活できる必要がある。すべてのstageのすべての場所の復活パターンが完成していなくてはならない。 また、安

    mixiアプリ グラディウス1000万点への道 - やねうらおブログ(移転しました)
  • 僕はグラディウスで頭がさらにおかしくなった - やねうらお−よっちゃんイカを食べながら、やねうら王を開発中。

    久々にmixiにログインしたら、懐かしのグラディウスがmixiアプリで登場していたので、私のグラディウスの思い出をつらつら書いてみたい。 「僕はドルアーガで頭がおかしくなった」(→ http://d.hatena.ne.jp/yaneurao/20090108 )のあと、私とその仲間のゲーマーを襲ったのはグラディウスショックだった。 グラディウスは、いまどきのシューティングからすれば、ぬるいタイプのゲームで、敵の出現位置を覚えておけば、あまり細かく弾をよける必要もなく、どちらかと言えば覚えゲーだった。 このゲームは、エンドレスになっていて、stage 7までクリアすると2周目のstage 1からはじまる。3周目以降はそれ以上難度が上がることはない。2周目以降は敵を倒したときに打ち返し弾がくる。結局のところ、1周目と2周目以降とで全く異なるパターンが要求されるが、覚えてしまえばそれまでだ。

    僕はグラディウスで頭がさらにおかしくなった - やねうらお−よっちゃんイカを食べながら、やねうら王を開発中。
  • 理解するってどういうことだろう? - やねうらおブログ(移転しました)

    「1,3,5,…と奇数の和をどこかで中断する場合を考える。例えば、1 + 3 = 4 , 1 + 3 + 5 = 9 , 1 + 3 + 5 + 7 = 16 , …。不思議なことに、それらはいつも平方数(自然数の2乗)になっている。」 ↑を証明せよというのが、高校数学でΣの計算を学んだときに書いてあったと思う。 ■ 理解のステップ1) Σの計算 よくは覚えていないが、解答はたぶん次のようなものだったと思う。なお、以下の"^" はべき乗を意味するとする。 S(n) = 1 + 2 + … + n = n(n+1)/2 全体を2倍して 2S(n) = 2 + 4 + … + 2n = n(n+1) いま求める関数を g(n) = 1 + 3 + … + (2n -1) とおくと、 g(n) = S(2n) - 2S(n) = 2n(2n+1)/2 - n(n+1) = n^2 で確かにn(整

    理解するってどういうことだろう? - やねうらおブログ(移転しました)
  • 降順insertion sortについて - やねうらおブログ(移転しました)

    昨日の記事で、世間で広く知られているinsertion sortのコードがいかにひどいかについて書いた。 私の提案したコードをWikipediaにも掲載(注記としてだろう)したほうがいいのではという意見をいくつか頂戴した。 Yuichirou 2009/11/26 02:03 私はyaneuraoさんのコードの方が可読性にも優れていると思います。むしろ日語版Wikipediaのコードは脱出条件が複雑な内側のループを無理にfor文で書いているため、可読性が落ちています。 yaneuraoさん、ぜひその最後のコードをWikipediaに掲載すべきだと思いますがいかがでしょうか。 上のYuichirouさんの意見は好意からだろうが、はてブでは、次のような否定的な意見も見られる。 shuji_w6e 「馬鹿すぎる」とか「駄目すぎる」とか何様なんだろ?調べて回ったついでに全部書き換えてくればいいの

    降順insertion sortについて - やねうらおブログ(移転しました)
  • 広く知られているinsertion sortのコードは駄目すぎる - やねうらお−よっちゃんイカを食べながら年収1億円稼げる(かも知れない)仕事術

    insertion sortは「挿入ソート」と訳される。(Wikipedia→ http://ja.wikipedia.org/wiki/%E6%8C%BF%E5%85%A5%E3%82%BD%E3%83%BC%E3%83%88 ) ■ 日語版 Wikipediaの日語のページのコードを引用すると次のようになっている。 for (i = 1; i < n; i++) { tmp = data[i]; for (j = i; j > 0 && data[j-1] > tmp; j--) { data[j] = data[j-1]; } data[j] = tmp; }上のコードでは、内側のループでinsertの必要がなかった場合でも最後にdata[j] = tmpでtmp変数をwrite backしており、しかも、insertの必要のなかった場合でもj=iが1回実行される。それらの意味に

    広く知られているinsertion sortのコードは駄目すぎる - やねうらお−よっちゃんイカを食べながら年収1億円稼げる(かも知れない)仕事術
  • 裁断機×ブックスキャナ新生活 - やねうらおブログ(移転しました)

    5年ほど前にfi-5110EOXを買い、そのあと、レゴで作った半自動ページスキャナ + デジカメでオンラインドキュメント化を進めた私であったが、結構、手間暇がかかるので、優先順位の低いは後回しになっていた。 もうどうせ残りのは売ってもたいしたお金にもならないし、それならばと残りのは全部裁断してドキュメントスキャナで取り込むことにした。 fi-5110EOXを久しぶりに物置から出してきた。WindowsVista用のドライバをWindows7に入れれば体自体は使えるようになったが、ローラーが摩耗していてページの重複送りが頻繁に発生する。ローラーを買い換えるぐらいなら、最新のドキュメントスキャナを買っちゃえ!とFUJITSU ScanSnap S1500 FI-S1500を買った。アマゾンで37,910円である。 あと、裁断機もいいやつを買おう!と思って、プラス 断裁機 裁断幅A4 P

    裁断機×ブックスキャナ新生活 - やねうらおブログ(移転しました)
  • 前提が偽の場合、式値は真 - やねうらおブログ(移転しました)

    ある会社の経理担当と「中小企業の会計に関する指針」の適用に関するチェックリスト*1のことで大喧嘩である。 「営業上の債権のうち破産債権等で1年以内に弁済を受けることができないものがある場合、これを投資その他の資産の部に表示したか。」という確認事項があって、○か×かでチェックを入れなければならない。 その会社には「営業上の債権のうち破産債権等で1年以内に弁済を受けることができないもの」が無かった。 元の文章は、 前提P : 「営業上の債権のうち破産債権等で1年以内に弁済を受けることができないものがある」 結論Q : 「これを投資その他の資産の部に表示したか。」 で、P→Qの式値を○(真),×(偽)で答えよという論理学の問題だと私は解釈したので、今回のように前提Pが偽ならば、この式値は当然、○(真)である。 だからここは「○」にするのが正しいと私はその会社の経理担当に言った。 そうすると、「あ

    前提が偽の場合、式値は真 - やねうらおブログ(移転しました)
  • LET OVER LAMBDA日本語版 - やねうらおブログ(移転しました)

    Common Lispの解説書であるLet Over Lambdaの日語版LET OVER LAMBDA Edition 1.0が発売された。Common Lispのマクロを活用して抽象的で生産性の高い効率的なコードを書くという話らしい。 Let Over Lambdaは世にある中でも最も過激なコンピュータプログラミング書籍の1つだ。基礎から始まり、最も高度な言語、すなわちCommon Lispの最も高度な機能を説明する。トップ1%のプログラマだけがLispを使う。そして書を理解すれば、そのLispプログラマのトップ1%になるのだ。 (中略) 書はあなたがたった今抱えている問題を解決する助けとなる有用なマクロ技能を教えるが、同時に読者を楽しませ、刺激するようにも設計されている。Lispとは、あるいはプログラミング自体がいったい何のためのものなのかを疑問に思ったことがあるなら、書こそ

    LET OVER LAMBDA日本語版 - やねうらおブログ(移転しました)
  • 計算の速い子供が数学者に向いているのではないという話 - やねうらお−よっちゃんイカを食べながら年収1億円稼げる(かも知れない)仕事術

    プロのピアニストは、たいてい幼少のころからピアノを始める。 しかし、習い始めて最初の1,2年にやるバイエル〜ブルクミュラーあたりは、音楽的な感性を養うというよりは、譜面通りに指を動かして音が鳴らせるかの勝負である。いわば、譜面に書かれた音符をモグラに見立てて、そのモグラを叩く、モグラ叩きゲームである。 それは人の音楽的才能や音楽的な素質とは何ら関係がない。モグラ叩きゲームがうまいか下手かというだけのことである。言うまでもなく頭の回転の速い子供や、ゲーム慣れしている子供はこういうゲームじみたことはすこぶる得意である。 そんな彼ら(彼女ら)は、たちまち、バイエル〜ブルクミュラーを終わらせるが、だからと言って、彼ら(彼女ら)が音楽家としての資質に恵まれているとは限らない。 逆に、バイエル〜ブルクミュラーを終わらせるのに時間がかかったからと言って、彼(彼女)に音楽家としての資質や才能が無いのかと

    計算の速い子供が数学者に向いているのではないという話 - やねうらお−よっちゃんイカを食べながら年収1億円稼げる(かも知れない)仕事術