サーバ機の組み直し

うちのサーバ機の組み直しをしてる。
コンパクトなMini-ITXのマザーボードだけど、組んでて一番感じるのは、電源ケーブルの取り回しの悪さ。
太くて固く、長さが合わない。
多分、多くの電源はATXやMicro-ATXを想定してケーブル長を設定しているのだろうけど、Mini-ITXだとケーブルが長すぎて余る。
余ったケーブルがケース内のスペースを圧迫する。
Mini-ITXは拡張性が低いけれど、ゲーム向けにディスクリートGPUカードを使う場合以外、つまりほとんどの場合はオンボードないしUSB増設だけで事足りるはず。
Mini-ITX向けにケーブルの取り回しをよくした電源があればいいのになって思う。

build-pc-1

build-pc-2

build-pc-3

プログラマー歴40年以上

この前、ある海外のニュースサイトの掲示板に、Stack OverflowのDeveloper Survey(stackoverflow.com/research/developer-survey-2016)についてのトピックがあった。
そのコメントの中に「私は40年以上プログラマーをしていて、私や私の知り合いはStack Overflowは一切利用しない。Q&Aでイチイチ調べなくても知っているから」みたいな書き込みを見つけた。
40年以上というのは本当ならすごいと思うけど、Stack Overflowを使わないというのはおかしい。
ひょっとするとCOBOLなど極めて古い言語やNDAが厳しいシステム環境についてはネット上に情報がないかもしれないけど、今の時代のほとんどのプログラマーにとって、Stack OverflowやQuora、Github、Hacker News辺りは必須の情報源だろう。
その人は.NET系の開発者でWPFのアプリを作ってるそうだけれど、MSDNしか見ないのだろうか?
今は新しいライブラリーやAPIが次々に出てきて、プログラマーはそれを使いこなす必要がある。
これらのソフトウェアは個人の開発者によるオープンソースも多く、未成熟で、仕様の記述がドキュメントにない事が良くある。
(だから、もしかすると、昔、ベンダー主体でソフトウェア開発していた時代はベンダーの提供する1次情報だけに頼れば良かったのかもしれない。)
そういう仕様を全部自分で検証するのは大変すぎる事で、適時Stack Overflowのようなサイトで他の人の検証結果だったり意見を参考にした方が良い。
確かにこういうサイトには間違った情報も多いと思うが、大量の情報の中から素早く正確な情報を探し当てる。
今、ソフトウェア開発の現場というのは、そういう能力が重要な時代だろう。

PHPの作者、ラスマス・ラードルフ

PHPの作者、ラスマス・ラードルフ氏が来日してるらしい。
技術評論社のサイトに掲載されているインタビューが凄く面白い。
gihyo.jp/news/report/2015/12/1401

PHPは他の言語ユーザから批判される事多いけど、個人的にはスクリプト言語の中では一番好きだ。
(コンパイル型の言語も含めれば、C#だけど。)
PHPに、HTTPリクエストデータ(クエリパラメータとか)を参照する為の変数$_REQUEST、セッション情報を管理する為の変数$_SESSIONが導入されたのは、PHP4.0やPHP4.1からだったはず。
凄いのは$_REQUESTや$_SESSIONを単なる連想配列にしたという事。しかも、何の手続きも宣言もなしに、プログラム内のどこからも呼べるスーパーグローバル変数。
普通の言語作者なら$_REQUESTや$_SESSIONをオブジェクトにしていたはず。
PHP4.0がリリースされた2000年位にはすでに「オブジェクト指向=格好いい、正義」という風潮が存在していたから。これをきっぱり拒絶してる。凄い。
もしPHPが$_REQUESTや$_SESSIONをオブジェクトにしていたら、現在のPHPの成功はなかったろうと思う。
困ったらprint_r($_REQUEST)すればいい。それで問題はたいていの場合、解決する。
もし、それで解決しないような難しい問題なら、そもそもスクリプト言語みたいなアドホックな手段を選択した事こそが間違いと思う。
ラスマス・ラードルフ氏のプログラミングに対するアプローチ。大いに共感する。

古い光学ディスクを処分する (1)

家の整理をする為、古い光学ディスクを処分する事にした。

1枚目は、VineLinuxのインストールCD-ROM。2000年に多分5000円位で、多分秋葉原で購入。
当時は国産のLinuxディストリビューションがいくつもあり、中でもVineLinuxは日本語対応に優れていると評判だった。
lessやviが日本語対応してるとか、manが日本語で読めるとか。当時はこの程度でも貴重な存在だった。
VineLinuxは無償のディストリビューションだったと記憶しているけれど、そういう無償ディストリビューションでもインストールディスクはPCショップで有料で販売されてた。
まだブロードバンドなインターネット回線が普及する前、ISOファイルをダウンロードしてCDを作るのが大変で、インストールディスクに需要があった。
多分、このインストールディスクはカーネルバージョンが2.0だったと思うけど、その後、どんどんバージョンアップしていって陳腐化してしまい、使わなくなった。
買わなければ良かった。

2枚目は、多分、1997-8年位に購入したLinuxの解説本の付録だったもの。
当時、Macにインストール出来るMkLinuxというLinuxの亜種があった。
今のMacはWindows PCとほぼ同じハードウェアアーキテクチャだけれど、この頃のMacはCPUはPowerPCで、拡張スロットや各種IOがPCとは大きく異なっていた。まだ68kなMacを使っている人も多かったかも。
RedhatやDebianはすでに存在していたと思うけど、Macにインストール出来たのはMkLinuxだけだったはず。当時家にPCがなく、Macしか持ってなかったので貴重なOSだった。
自分の場合、MkLinuxで初めてUNIX系OSにまともに触れた。シェル操作やブートの仕組み、プロセス管理だとか。Apacheなんかも、これで動かしてみたかもしれない。もう覚えてないけど。
そうすると、今の仕事に繋がる重大な1枚だったんだなと思えてくる。

old-optical-discs1old-optical-discs2


VIA C3

押入れに眠っていた古いPCを処分した。
多分、2001-2年位、秋葉原の名前は忘れたけど、すでに無くなかったショップで購入したはず。
VIA C3というCPUを搭載したマザーボード。
ACアダプタ駆動の低消費電力、静かでコンパクトなので、自宅サーバにしていた。
PS2のキーボードとマウスポート、プリンタポート、DSUBポートと並び、USBポートが2つだけ。メモリは256MBが2枚。
ケースファンはなく、CPUファンは夏の時期だけ動かして、夏が終わるとCPUファンの配線を抜いてファンを止めていた。
当時、レンタルサーバは高価で、仮想OS環境も今ほど簡単には導入出来なかったので、これにLinuxやFreeBSDを入れて随分勉強したなと思う。

via-c3-1

via-c3-2

カレーの作り方とプログラミング

昔、NHKのためしてガッテンで美味しいカレーの作り方の回があり、結論として市販のカレールウのパッケージに書いてある通りに作るのが一番という事だったそうだ。
余計な工夫を加えるのは味を損なうだけ。
全くプログラミングにも同じ事が言えると思う。
ライブラリやフレームワークは極力そのまま使わないといけない。その場の思いつきでカスタマイズを加えると、そこでは動いていても、いずれ破綻する。
高機能なフレームワークは優秀な開発者がコストを掛けて汎用性と機能性のバランスを維持してるわけで、1度異物が混入するとそれが破壊される。
カレーが辛すぎるなと思ったら、口直しにコーンスープだったりデザートに杏仁豆腐を用意すべきであって、カレーに砂糖を加えるのは愚かな選択。

Windowsのセットアップ

最近、Windowsをセットアップして、インストールしたアプリケーション。

● Chocolateyでインストール
・ choco install 7zip
・ choco install autohotkey
・ choco install clink
・ choco install ConEmu
・ choco install git
・ choco install skype
・ choco instlal tortoisesvn
・ choco install virtuawin
・ choco install winmerge-jp
・ choco install WinSplitRevolution
・ choco install wizmouse

● MSIなんかのインストーラーでインストール
・ Dropbox
・ Chrome
・ Rapid Environment Editor
・ Sumatra PDF
・ WinSCP

● マニュアルでインストール
・ PuTTY(d2ddw)
・ Vim(kaoriya)
・ PsGet
・ Mery
・ jvgrep
・ patched ctags

以上。

golang

Goの勉強をしているのだけれど、2文字のコマンド名、どうです?短くて便利でしょう?という。hgとかagとかgitとか、コマンド汚染だと感じる。
みんなが2文字や3文字のコマンド名を主張すれば世界は滅茶苦茶になるのに、自分だけは良いだろうみたいに図々しい。

go-version

ReSharper

最近ASP.NET MVCでプログラムを書いていて、必然的にVisual Studio 2013を使っている。
そこでVisual StudioにReShaperをインストールしてみたいんだけど、…凄くない?
取り敢えずALT+ENTERで何とかなるっていう。
パソコンのアプリケーションで感動を覚えたのは近年記憶にないくらい。
もっと早くから使っておくべきだった自分の不明を恥じる。
ReShaperって凄い。

resharper

Scott Hanselman’s 2014 Ultimate Developer and Power Users Tool List for Windows

Scott Hanselmanの開発者・パワーユーザー向けツールリスト2014年バージョンの記事が公開された
Windows用アプリがメインだけれど、ウェブサイトの紹介もある。
自分が知らないツールも多く、ちょっと見てみたけどどれも良さそうなのが多い。
よく厳選されてる。さすがScott Hanselman。
Hacker Newsにもポストされてて、リストにないアプリも追加紹介されてる。

Markdownの記法について

Pukiwikiで公開している技術メモをブログのWordPressにまとめてしまおうかと検討している。
そこで問題なのがWiki記法。
WordPressにはPukiwki記法のプラグインはあまり良い物が存在しない。
Markdown記法プラグインは幾つかあるけれど、PukiwkiとMarkdownを比較して、Pukiwikiが優れた記法に思える。
Markdownで特に嫌なのがWikipediaに書いてある、

* 順序無しリストのアイテム
  * サブアイテムは4つのスペースでインデントする
* 順序無しリストの別のアイテム

<!– dummy comment line for breaking list –>

1. 順序付きリストのアイテム
2. 順序付きリストの別のアイテム

のように、リストの次に別のリスト(または段落)を続ける場合はコメントタグを挿入する必要がある、という仕様。
これは本当にイケてないと思う。
Pukiwikiは改行を入れるだけでリストは終了したと見なされる。
また、リストのサブアイテムにはスペースを4つも入力する必要があり面倒。Pukiwikiはインデントの深さに応じて-を重ねるだけで良い。
順序付きリストはいちいち、1. 2. 3.と連番を振る必要があるので、後からリストにアイテムを追加・削除すると順番が狂う。連番でなく、1. 1. 1.と同じ番号で続けても良いのだけれど(ウェブで見る場合は連番に変換される)、プレーンテキストで見る場合は奇妙な見た目になりスッキリしない。
Pukiwkiはマーカーが+ならウェブで見る場合は連番に変換される。
他にも、リンクはPukiwkiのようにhttp://から始まる文字列を書けば勝手にURLに解釈してくれる方が楽だと思う。

Markdown記法はRedmineやTracのWiki記法に比べればマシだと思うし、プレーンテキストで見るなら良いと思うけれども、ウェブで見るのが前提ならPukiwiki記法の方が優れてると思う。

PuTTY 0.63

PuTTY 0.63がリリースされたので、自分のWindowsマシンのPuTTYを入れ替えました。
PuTTYのようなSSHターミナルソフトは脆弱性を放置すると重大な被害を受けうるので、常に最新版を使用するべきでしょう。
(マルウェアが常駐しているpagent.exeを勝手に利用したら?)
PuTTYはいろんな派生版が存在しますが、いくつかはメンテナンスされてなく、そのようなソフトの利用は止めた方良いでしょう。
WinSCPやTortoiseSVN等のSSHプロトコルの処理に内部でPuTTYファミリを使っているソフトも同様に最新版を使った方が良いです。

個人的にPuTTYは派生版のiceiv+puttyのDirectWrite版を使ってますが、こまめにメンテナンスされ素早く本家PuTTYに追随してくれてます。
このPuTTYはDirectWriteを採用しているので、フォントが綺麗で行間の微調整が出来、非常に重宝します。
とても良いソフトで、有り難いです。

putty063

APPキー

先日、Windowsのコンソールソフト、ConEmuのマニュアルを読んでいると、キーボード設定の項に

Apps+F | Search text in the console

と書いてあった。Apps+FのAppsって何だろう?
調べてみると、通常はキーボードの右下にある、右クリックをする為のキーをAPPキーと呼ぶようだ。
知らなかった。
ConEmuはショートカットキー設定が大量にあり、CTRLキー、ALTキー、WINキーでは足りず、APPキーも利用しているようだ。
実際、私もWindows上ではAutoHotKeyやその他ユーティリティソフトで多くのショートカットキー設定をしていて、キーコンビネーションが重複してしまう事が良くある。
キーボード中心の操作体系を目指すと、キーの種類って多ければ多い程いいなと思う。

appkey

LEAP MOTION (2) – ちょっと使ってみた印象

LEAP MOTIONが手を認識する範囲は本体上方の40cm位まで、左右は本体から離れて10cm位まで。
追従速度は十分で割と速く手を動かしても追ってくる。
けれど、画面上の何か小さい物、例えばウィンドウの閉じるボタンだとかを狙ってカーソルをポイントするのはかなり難しい。
狙った物をクリックする、ダブルクリックするのはさらに難しく、相当練習しても無理だと思う。
クリックは手を前に突き出す動作で行うのだけれど、手を突き出す動きによって指がぶれてポインタがずれる。
ウィンドウをポイントしてアクティブに切り替える程度(それなら大雑把なポイント操作とクリックで構わないから)が限界で、それでもかなり神経を集中して行う必要がある。
PCを操作するポインティングディバイス、つまりマウスやトラックパッド、タッチパネルの代わりにはならないと思う。

leap-motion