プログラミング所感 - 前へ 目次 次へ


09/01/05(月)

囲碁で、半コウは 出入りで何目だろうか? 「碁の計算学入門」p175では1/3目だが、正しくない。 手数から2/3目としてされることが多いが、説明不足だろう。


図で黒番のとき黒地を x目としよう。 白が打てば0目。黒が打った状態はアゲハマ除いて白地が x目なので、黒地1-x目。 権利は半々とすると、x=(0+(1-x))/2 なので、x=1/3目。出入りで(1-x)-0=2/3目となる。


09/01/09(金)

「金融のしくみは全部ロスチャイルドが作った」は、 銀行に対する見方を180度変える。特に気になるのが、アメリカの6000兆円の財政赤字の デフォルトと新通貨アメロ発行の下りだろう。現在の状況では説得力がある。

09/01/16(金)

去年は、.Net Frameworkの 3.5でLINQやら、いろいろやっていた。また、Vista対象だと3.0にしたりしていた。 最近は、2.0も多い。理由は、3.0以上のインストーラがでかい(2.0の10倍ぐらい)からだ。 client profileも、ほとんど意味がなさそうだし。たぶん、ユーザがほぼVistaになれば、 3.0にするだろうが、そのときまでには、4.0が出ている気がする。

2.0でもvarとか使えるのは、リビジョンが上がったせいなのか。


09/01/19(月)

電車で停車時に 後方に引っ張られるような感じになることがある。 物理的には、停車時には前方に引っ張られる(つんのめる)感じになるはずである。 このように感じるのは、停車時に電車の前方を持ち上げているからである。 おそらく、つんのめる感じを緩和するためにわざとやっているのだろう。 しかし、ちょっと強すぎるときは、逆に後方に引っ張られるように感じるのだろう。

09/02/06(金)

社内サーバを立てた。 気をつけたこと。アクセス制限。MIMEタイプ。一定時間後のスリープオフ。自動WindowsUpdateオフ。 ファイヤーウォール。

09/02/18(水)

花粉症で、 くしゃみ連発で明け方目が覚める。鼻で息ができず口が閉じれない。絶不調だ。

09/02/24(火)

問題
A<B、BC<ACのときCとは?

恋より愛の方がよく、愛人より恋人の方がよい。
解答
Cとは恋愛を狂わす人である。座布団くれ。


09/03/09(月)

Bindingでおかしくなった。
ファイル名を入力するための参照ボタン付きのテキストボックスで、入力した値が消えるバグがあった。 原因は、テキストボックスをデータとバインディングしていたのだが、参照ボタンのコードからは、 直接設定したためだった。Bindingを使うときは、注意。

09/03/11(水)

世界金融恐慌 isbn:4822808807。まだ、最初の方しか読んでいないが紹介。 p33「もともと証券化はリスクを分散し、それを回避するために開発されたのだが、 しかし結果としてそれはリスクを拡大し、それが金融危機を世界中に拡大することになった。」 p42「(中略)金融工学がその犯人であるというサムエルソンの指摘はまさにその通りである。」

石田晴久氏死去。 ご冥福をお祈りします。


09/04/02(木)

今年の新人は、国際色豊かだった。

作成するソフトから保存するファイルは基本的にXMLにしている。 しかし、貧乏性のせいか、複数のデータを1つの文字列(1つのタグ)にまとめてしまうことが多い。 XSLTで解析する分には不便なのだが、メモ帳では読みやすいし、(ただの文字列なので)フォーマット変更にも強いことがある。XMLの解析もXSLTよりは正規表現でする方が多いし。


09/04/09(木)

コピペ

「物事がうまくいかないと思ったら、まず最初にあなたがこれまで何人の人を幸せにしてきたかを考えなさい」(H. Duane Black)

「成功とは目的ではなく過程である。成した事そのもの(プロセス)こそが大抵において結果よりも尊いことに他ならない」(Arthur Ashe Jr)

「成功への秘けつなど何も無い。準備、キツい努力、そして失敗から学んだことによる積み重ねの結果に過ぎない」(Colin Powell)

「成功の秘けつは知らないが、失敗のカギなら知っている。それはすべての人を喜ばせようとすることだ」(Bill Cosby)

「想像力さえあればどんな力でも発揮できる」(John Muir)

「失敗こそがよりよいやり直しを得るための機会になる」(Henry Ford)

「すべての反論に打ち勝った上で物事をやろうとすると、何もできなくなる」(Samuel Johnson)

「失敗すると失望するかもしれない。しかし何もしなければ必ず失敗する」(Beverly Sills)

「誰からも信用を得ずに何かを達成できるとしたら、それは驚くべきものだ」(Harry S. Truman)

「ちょっとでも周囲に気をかけると、それなりの結果を得られるだろう。そして十分に気をかければ素晴らしい結果を得られるに違いない」(Jim Rohn)

「誰だって最初は初心者さ」(Ralph Waldo Emerson)

「人生の中で何かを成し遂げたいと考えてる人にとって欠かせないことは、『自分が欲しいものを確定する』ことに他ならない」(Ben Stein)

「壁にぶち当たっても止まる必要は無い。振り向かず、あきらめるな。その壁を登る方法を考えるか、潜り抜けるか、迂回する方法を探し出せ」(Michael Jordan)

「成功は幸福のカギではない。しかし幸福は成功の秘けつである。もしあなたがしていることが好きなことなら、きっと成功を導くことだろう」(Herman Cain)

「人生において失敗した人の多くは、自分がいかに成功に近づいていたのか、そしてそれにも関わらずあきらめてしまったのかを知らなかった人だ」(Thomas Edison)

「想像力は知識よりも重要である」(Albert Einstein)

「可能と不可能の違いなどその人の決意次第でしかない」(Tommy Lasorda)

「ハイリスクなチャレンジをする人だけが、とてつもない成果を成し遂げることができる」(T. S. Elliot)

「目的地までの距離など問題ではない。はじめの一歩が難しいんだ」(Marquise du Deffand)

「熱意無しには何も素晴らしいものは創生されない」(Ralph Waldo Emerson)

「人生で最もうれしいことは、他人からできるわけが無いと言われたことをやり遂げたことだ」(Walter Gagehot)

「本当に何かを成し遂げたいと思ったら、やり方を見つけることだ。さもなくば言い訳を見つけねばならなくなる」(Frank Banks)

「あることを夢見る人もいれば、やりたいと思う人もいる。そしてそれを実現する人もいるんだ」(Michael Jordan)

「成功も失敗も、永久には続かない」(Dell Crossword)


09/04/13(月)

ProgramFilesの下に ファイルを置いて使おうとしたらおかしくなった。 あるファイルをメモ帳やワードパッドやブラウザやVSで開くと 結果が異なる。どうやら同じパス、同じ名前で2つ存在しており、 アプリケーションによりどちらが開くか変わるようだ。 教訓「Program Filesにファイルを置かない」(それでいいのか?)

09/04/17(金)

VirtualStoreに2度もはまったので、 UACは切ることにした。正直、トラップとしか思えない。

09/04/24(金)

プロのプログラマの条件について 所感。
http://d.hatena.ne.jp/omaemona01/20090424
  • 「プログラマーであることに誇りを持たない」
    私はプログラマとしてかなりの誇りを持っている。
  • 「常に手抜きを考える」
    必須の資質ですね。「面倒」というのが口癖になっている。
  • 「リソースが足りないと言わない」
    ちょっと違うけど「できない」と言わない。金額と期間を言うだけ。
  • 「身辺を整理しておく」
    超絶に机が汚い。基本的に片付けないし。
  • 「勘を鍛える」
    プログラミング関係ないんじゃ。
  • 「美的センスを身につける」
    ないな。
  • 「忘却力を備える」
    いろんなことを片っ端から覚えるので、いろんな(都合の悪い)ことを忘れます。
  • 「車輪の再発明を厭わない」
    逆にDRY原則(Don't Repeat Yourself)はプログラマに必須でしょう。 http://ja.wikipedia.org/wiki/Don't_repeat_yourself

09/04/26(日)

子供の読書を記録している。 小学校入学時、月100冊ペースだったが、現在は10冊ぐらいだ。 しかし、ページ数でみると、それほど減ってはいない(月2000ページほど)。 このペースだと中学までに1000冊行きそうだ。

09/05/02(土)

スクロールが戻って しまう現象だが、StatusStrip の AutoSize をfalseにしたら直った。

09/05/10(日)

藤沢秀行先生 のご冥福をお祈りします。

09/05/13(水)

学校で確率統計を ちゃんと習わない人が多いと思う。 そのためか、たいていの人は確率計算が苦手に見受けられる。
例えば、以下の問題は解けるだろうか? 「52枚のトランプから無作為に3枚取り出した。この 3枚をよく切って1枚みたら、赤だった。さらにその3枚をよく切り1枚をみると赤、 さらによく切り1枚をみると赤だった。さて、さらによく切り1枚を見た時に 赤となる確率はいくらか?」 私は数分で計算し、数分で(C#でモンテカルロで)検証できた。

09/05/17(日)

C#だと再利用率が高い。 行数で、2割から6割、平均4割ほどか。再利用部分は対象プロジェクトに不要な部分も入っているが。 コントロールも再利用しやすいくていい。部内で標準ライブラリとしているので、 他の人も使えば生産性があがると思うが、使うのは専ら私だ。作ってるのも殆ど私だし。 機能は各種アルゴリズム、グラフ、シミュレーション、最適化、数値計算、数式処理、フレームワークなど数万行。

09/05/18(月)

「About Face3インタラクションデザインの極意」 isbn:4048672452 に衝撃を受けた。

09/05/27(水)

「リファクタリング・ウェットウェア」 isbn:4873114039 が面白い。p85では、夢の中で新聞の見出しなどが読めないとあるが、 私は、夢の中で新聞を読んだり、辞書を引いたりできる。Lモードで夢を見ているから? もしくは新聞の内容を視覚的にRモードでとらえている?
MR. BRAIN は、いいテーマを選んだが、初回は脚本がいまいち。

ここ7年の読書量は週1,2冊か。
学生時代⇔社会人

  • 古本が多い⇔買うか図書館
  • つまらなくても全部読む⇔積ん読も多い(妻が片付けてどこかに行ってしまいやすい)
  • 漫画は手塚治虫だけ⇔いろいろ
  • ビジネス本は読まない⇔よく読む
  • SFが多い⇔小説自体少ない

09/06/01(月)

フォーカスが移動するとAutoScroll==trueの パネルのスクロールバーが勝手に戻ってしまう現象だが、下記の様にしたら解決した。
private object preScrollPos = null;
private void pic_LocationChanged(object sender, EventArgs e)
{
  if (preScrollPos != null)
  {
    AutoScrollPosition = (Point)preScrollPos;
    preScrollPos = null;
  }
}
private void pic_MouseEnter(object sender, EventArgs e)
{
  preScrollPos = new Point(Math.Abs(AutoScrollPosition.X), Math.Abs(AutoScrollPosition.Y));
}

09/06/05(金)

あるときから、 VisualStudioでFormのデザインを開くと落ちるようになった。 原因は、タイマのハンドラでNullReferenceExceptionを起こしていたため。

C#問題2題
その1 下記の実行結果は?
string s1 = null;
string s2 = null;
string s = s1 + s2;
Console.WriteLine(s.Length);

  1. 0と出力
  2. 3行目でエラー
  3. 4行目でエラー
  4. その他
その2 下記の実行結果は?
class Program
{
  static object o = new object();
  static int Fac(int n)
  {
    lock (o)
    {
      Thread.Sleep(1000);
      if (n <= 1) return 1;
      return n * Fac(n - 1);
    }
  }
  static void Main(string[] args)
  {
    Thread th1 = new Thread(new ThreadStart(delegate
    {
      Console.WriteLine("th1 : Fac(2) = {0}", Fac(2));
    }));
    Thread th2 = new Thread(new ThreadStart(delegate
    {
      Console.WriteLine("th2 : Fac(2) = {0}", Fac(2));
    }));
    th1.Start();
    th2.Start();
  }
}
  1. 2秒後と4秒後にそれぞれ出力
  2. 2秒後に2行とも出力
  3. 何も出力されずに無限ループ
  4. その他

09/06/10(水)

ありがちな ミスだが、気づかないとわかりにくい。
状況に応じてメニューの Enabled を設定したい場合、DropDownOpening イベントでする。 しかし、それだけだとショートカットが効かなくなったりする。これを避けるには DropDownClosed で Enabled を true に戻して、各ハンドラで再度可否をチェックすればよい。

09/06/14(日)

仕事でも趣味でも、設計書を書いて プログラミングするということがあまりない。 そもそも、プログラミングに必要十分な設計書を書くには、コードを書くより時間がかかる。 理由は、コンピュータに必要な厳密さを記述するには、日本語よりプログラミング言語の方が効率的だからだ。 一般的に言っても、設計書は不完全な状態のまま、コードを書いた方が効率的だろう。 当然、不完全な設計書で設計が完了しているわけではない。 すなわち、効率的な開発において、コーディング作業とは、設計作業を含んでいる。 設計の細部を詰めることにより、(データ構造の変更など)基本方針が変わることもありうるが、 それをおそれていないし、むしろ(前進しているならば)楽しい。
チーム開発の場合でも、全体を私が作って細部を任せることが多い。その場合の設計に当たるのは、 書きかけのクラスと説明に使ったホワイトボードだ。

ソフト開発は工場で作成するようにはいかない。 誰でも部品を組み合わせて開発できるようになるのは、数年後か数十年後かには可能になるだろうが、今は無理だ。 実現するには、人間のように自分で考える部品が必要だ。知能を持って限りなく単純な必要がある。


09/06/25(木)

設定画面を作成するとき、 Loadでコントロールの値=変数とかき、OKボタンで変数=コントロールの値と書くことが多い。 OKボタンの方は、Loadで書いたものの反対なので、自動で作れるとうれしい。以下がその VS2008のアドインだ。
http://plaza.harmonix.ne.jp/~fakira/turedure/ExchangeEquation.zip

09/08/03(月)

アイの物語を 読んだ。「詩音が来た日」がよい。
AIに魂が持たせられない、ということはないと思う。 以下は私見。 魂は、人間だけではなく動物にもある生存本能(欲求)だ。 魂は、意識(大脳皮質)ではなく深無意識(脳幹に近い方)にある。 この深無意識が、浅無意識(大脳皮質)に働きかけ 両無意識が意識を支配している。 どちらの無意識も非言語(イメージみたいなもの)で動き、 深無意識は至極単純であり、浅無意識は並行して動ける。 AIに魂を持たせるには、いくつかの根源欲求を組み込めばよい。 魂を持ったAIが人間と共存できるかどうかはわからない。 あまりにも異質な場合、無理だと思うが。

09/08/13(木)

問題、 「System.Int32 の変数 i がある。i == -i が trueを返すとき、i は何か」

答えは、checked では 0、uncheckedでは 0 と int.MinValue。


09/08/18(火)

暗闇でもコンセントを差せる方法。 プラグとコンセント両方、置き換えないといけないけど。 まず、プラグは金属部分は最初はへっこんでいてちょっと丸くなっている。 コンセント部分も丸くへっこんでいて磁石がついている。これで、だいたい の位置に持って行くとぴったりつく。そこで、プラグのボタンを押すと 金属部分が伸びて接続。

09/09/25(金)

全然更新してない。 とりあえず、連休疲れた。

09/09/28(月)

VisualStudioのバグだと 思うけど、デザイン画面を開くと編集済みになってしまう画面があった。これは、ラベルのDockをTopにしているためだった。

09/10/02(金)

チェックリストに置いて、 「営業上の債権のうち破産債権等で1年以内に弁済を受けることができないものがある場合、これを投資その他の資産の部に表示したか。」でYes/Noを答える。「営業上の債権のうち破産債権等で1年以内に弁済を受けることができないものがない」ならばどう答えるか。数学的にはYesである。普通、違和感があるだろう。それは設問を「営業上の債権のうち破産債権等で1年以内に弁済を受けることができないものがあり、かつ、これを投資その他の資産の部に表示したか。」と読んでいるからだ。すなわち、設問は最初からそう書けばよい。
これを5分考えてわからない人は、裁判員を辞退してもらいたいものだ。

09/10/09(金)

VS2008で コントロール+ピリオドが便利だ。

09/11/11(水)

特に書くことはない のだが、ブログ歴12年目だ。

09/11/18(水)

サーバにOSのマスタを 置いて、複数のクライアントで使うときに、sysprepを適用しておくと、SIDの設定などができるらしい。 Windows7ではVHDをマウントしたりブートできたりするようだ。

09/12/18(金)

肌ラボの マネで、最適化研究所を立ち上げよう。合い言葉は「何かいいことサイラボ」だ。

09/12/21(月)

納税者番号制度を 検討中のようだが、提案を1つ。 納税者番号とともに(英数字12文字以上30字以内の)ニックネームも(1人100個まで)利用可能とする。 納税者番号とニックネームは国の機関が厳重に管理する。 国は、メールシステムも提供し、メールアドレスとしてニックネームが利用可能とする。 ニックネームは、納税者番号を用い、自由に登録変更削除が可能。 ニックネームは、全国民でユニークとする。 納税者番号を必要とするところでは、ニックネームが使える。 また、PKIとして利用できる。 1ニックネームごとに20まで利用者登録ができる。利用者登録すると、 ニックネーム変更時に変更通知を受け取れる。 このようにすると、普段わかりやすいニックネームを使え、しかも 複数使い分ければ、個人情報を特定されにくく万一もれても変更できる。 法人や外国人への発行も検討するといいかも。

09/12/22(火)

自作のSDI用ヘルパクラスが あるのだが、非常に便利だ。
  • Excelの簡易版みたいなものは、ほとんどコーディングせずに作れる。
  • ファイルメニューの新規、開く、保存、別名保存、印刷、ページ設定、プレビューなどが実装済みで拡張可能。
  • 編集メニューの元に戻す、やり直すも実装済み。編集済みかどうかを管理できる。 例えば、編集済みのときに終了すると保存するかどうかを尋ねる。
  • DataGridViewでの編集も自動でUndo/Redo/Cut/Copy/Paste/SelectAllが可能。
  • DataGridViewでインポート、エクスポート可能。
  • 拡張子でテンプレートかどうかを判断。テンプレートなら開いても新規扱い。
  • 計算するアプリなら自動実行などのバッチが実装済みで拡張可能。
  • 過去に開いたファイルの履歴を自動管理し、再度開ける。
  • ドラッグ&ドロップでファイルを開ける。
  • タイトルバーにアプリ名、ファイル名、編集状態を表示。(編集等で自動で更新)
  • 特定の起動方法で全画面のスナップショットやメニュー構成のテキストと図が自動作成。
  • 特定の起動方法で部品の名称一覧とリソースファイルを出力。翻訳して追加すれば、多言語で表示可能。
  • メニューのショートカットの一覧を自動生成。

プログラミング所感 - 前へ 目次 次へ