素人くさい報告
Twitter を始めるとブログの更新頻度が下がるといいますが、まさにそうのとおりですね。
さておき、最近私が腹を立てていること。というと言い過ぎですが、仮にもプロなんだから、こんなくだらない報告なんてするな!とよく思うことがあるんですよ。これは特定の個人ではなくて、同じ業界でよく見られる傾向です。それは
「Web ページが見れません」
と報告してくること。アホかと。
素人ならいい。でも、お前らこれで飯くってるんだろと。で、いちいち私から質問しなければならないのです。
- Web ブラウザが起動しないの?
- ホスト名の名前解決はできるの?
- 接続はする(コネクションは確立する)の?
- 想定しているページとは違うページが見えるの?(バーチャルホストの設定が違うっぽいの?)
- 表示が崩れてるの?
- JavaScript にバグがあるの?
その都度注意するのだけど、どうにも治らない。「この人にいっとけばなんとかしてくれるだろう」と当事者意識がないのか。まったく困ったものです。
1ポイントって結局何ピクセルなの?
ワープロソフト等を用いていて、フォントの大きさを「ポイント」で指定することがあるかと思います。このとき、「はて、1ポイントっていったい何mmなんだろう?」と思ったことはないでしょうか?
PC上で使われる「ポイント」のほとんどは「DTPポイント」というやつで、1ポイント=1/72インチと定義されています。1インチ=約25.4mmですから1ポイントは、約0.352778mmですね。
さて、java.awt.Fontなどでフォントのサイズを指定するとき、このポイントを使わなければならないのですが、画面に表示する際は結局何ピクセルになるのでしょうか? 画面が何インチあるかで大きさが変わったりするわけでは、もちろんないですよね。
これは画面の解像度の設定で、1インチを何ピクセルで表すかが設定されています。標準的なWindowsならば96dpiと設定されています。dpiとはdot per inchの略で、つまり1インチを96ドット(=ピクセル)であらわすと設定されているということです。1インチは72ポイントですから、72ポイント=96ピクセルということです。つまり1ポイントは0.75ピクセルということになりますね。例えば12ポイントは9ピクセルということになります。
ひさびさに C++ でゲームプログラミングをやって思ったこと
この年末年始に C++ でゲームプログラミングを少しやってみました。C++ 言語自体は、青春をかけて(笑)AT&T Release 時代から追いかけているのでほとんど問題なく使えるのですが、本格的にゲームプログラミングに使ったのは MS-DOS 時代以来。Windows でゲームプログラミングをするときはほとんど Delphi を使っていました(DirectXを叩いて遊んでたことはありますが、プレイできるぐらいのゲームにまで至っていない)。そして最近もっとも多く使っているプログラミング言語は Java です。
そんな私が C++ でゲームプログラミングをやってみて思ったことです。
DXライブラリ便利ですね
DXライブラリを試してみたのですが、いや、これ、便利ですねぇ。なんか青春時代「Master lib」使ってゲーム作っていたのを思い出しましたよ。別にDXライブラリとMaster libが似ているというわけじゃなくて、いいライブラリがモチベーションを牽引してくれてるってところに共通点を感じました。
コーディング規約どうすんの?
私がJavaを好む理由のひとつが、標準クラスライブラリをはじめとしてまっとうなサードパーティのほとんどすべてがひとつのコーディング規約(クラスやメソッドの命名規則)に則って作成されているということです。ところが Visual C++ ではそうはいきません。Microsoft提供のものは、だいたいなんでも大文字で始まっているようですが、C/C++ 標準の関数は小文字から始まっています。とても気持ち悪いです。
ドキュメンテーションコメントは?
これが私のモチベーションをもりもりと削ぐ原因となったものです。JavaだったらJavadocがあります。では、C++は? というか、Visual C++ では何を使えばいいのでしょうか? IDE(Visual Studio)とすんなりなじむようなものは私にはよくわかりませんでした。ちなみに私が UNIX/Linux で C++ をやるときは迷わず Doxygen を使います。Windows でも Doxygen を使えるようですが、DXライブラリの関係で日本語をシフトJISにしなければならず、そうすると日本語がDoxygenで化けてしまうのです。C#のようにXMLドキュメントも試してみましたが、うまくいきませんでした(型が.Netのものとして出力された)。
WZR-HP-G300NH 使えなさすぎワラタ
これまで自宅ではNTT東日本から借りていたPR-200NEというルータを使ってインターネットをしていました。しばらくして無線LANが欲しくなったので、これにコレガのアクセスポイントをつないで使っていたのです。しかし、またしばらくしてひかりTVをつなぐようになり無線LANがうまく動かなくなってしまいました。
そこでADSL時代に使っていた古いルータを引っ張り出してきてPR-200NE配下につなぎ、ひかりTVとは別の島を作ってしのいでいたのですがどうもネットがもっさりして使い物になりません。
さすがに我慢の限界だったので、これを機にルータを買い替えたのです。BAFFALOのWZR-HP-G300NHに。
ところがこれが微妙に使い物にならない。
私は自宅でいわゆる「自宅サーバ」というのを動かしているので、固定IPサービスを利用しています。なので、ルータがUnnumberedに対応しているかどうかは必ずチェックします。もちろんWZR-HP-G300NHも対応しています。
ところが、ローカルIPアドレスをもつ機器とグローバルIPアドレスをもつ機器間の通信ができない。PR-200NEに比べて明らかに退化。しかも静的NATも使えないときた。つまり、リモートメンテナンスをしたければ、メンテナンスに使うPCもグローバルIPアドレスにしなければならないという怖さ。でなければ、サーバに仮想NICかなんかでローカルIPアドレスも振らなきゃならない。怖すぎ。
なんとかならないの、BAFFALOさん!
これで良いのか「使用許諾」
インストーラを使ってソフトウェアをインストールするとき「使用許諾」というのが表示されることがよくあります。
大抵の人はよく読みもしないで「承諾する」をクリックしているのではないでしょうか?
それが問題だ!というのが今回の話ではありません。
今回言いたいのは、SIerのことです。いろんなソフトウェアを導入したPCやサーバなどを納入するということはSIerならよくある話ですが、「使用許諾」を承諾しているのはSIerですよね?
これっていいのでしょうか?
エンドユーザに代わって承諾することも含めてSIerに発注しているというのが一般的な見解になるのかなとも思いますが、契約書にそういうことは書いているでしょうか?
有名ソフトウェアメーカーによるソフトウェアに限ればそれほど問題ないかもしれませんが、「便利だから」と気を利かせて個人が趣味で作っているような「フリーソフト」を入れるSIerもたまにいるようです。その場合も使用許諾はちゃんと把握しているでしょうか? もしかしたら「無料で使用できるが、開発者の一存で遡って課金できる」なんてことが書いているかもしれません。それをよく読みもしないで「承諾する」をクリックした場合は誰の責任になるのでしょうか?
サブマリン特許とかの問題もありますし、ちゃんと考えたら軽々しいことはできませんね。
Slim3 にタグライブラリがない理由
Slim3 の Online Demo のソースなどを見てみると、input タグなどはナマで使っていることがわかります。代わりに EL 関数が使われています。
なんかごちゃごちゃしてて見にくいなぁと、脊髄反射的に Twitter でボヤいていたら id:higayasuo さんに返信をいただいたのでここでも紹介させてもらいます。
@itoasuka HTMLのtagにtaglibを使うとDWとかでプレビューできなくなるので基本使いません。表示系のtagでないなら、別にいいと思うけど #slim3
http://twitter.com/higayasuo/statuses/6228338500
なるほどー。
Twitter というインフラの存在と私のボヤきにすら返信をくれる id:higayasuo さんに感謝感謝です。
こういう記事の書き方はどうかと思うよ
Scalaから datastoreへアクセスする方法として...
とあげといて
enhancerがscalaのclassファイルをサポートするまで待つ。
と書くのはどうなんでしょうか。scala-tohoku に限らず「○○されるのを待つ」みたいな解決方法を提示しているところをたまに見かけますけど、それは解決方法じゃないでしょう。上記の場合ですと明らかに「アクセスする方法」じゃないですよね。待ってるだけで(なんの実装もせずに)アクセスできるのかと。もちろんできるわけがないです。
私だったら、
残念ながら今のところ○○以外の方法はありません。ですが、enhancerがscalaのclassファイルをサポートする動きがありますので時間が許せば待ってみてはどうでしょうか?
と別欄(別の段落)に書きます。
ちなみに上記のリンク先の記事にあるとおりすでにenhancerはscalaのclassファイルをサポートしたようです。