2012年12月30日日曜日

ログは結構繊細なんです

ログのローテーションが失敗して困っている人を見かけました。

それで話を聞いてみると、
書き込み中のログに対して監視を行なっているというではありませんか。

監視中にログをローテートさせれば失敗するのは自明と言えます。

分からないという方は、
以下のコードをお試しください。


適当なファイルをログファイルに見立て、
このスクリプトの第一引数につっこんでください。

メッセージボックスが表示されている間に、
ログファイルに見立てたファイルの名前を変更してみてください。

その操作は失敗するはずです。

読み込みロック中は名前の変更ができないからこうなるのですが、
意外と知らない人が多いみたいなので口にしてみました。

ちなみに常時監視とまでいかなくても、
アンチウイルスのスキャンなどでも起こる可能性があります。

だからアホな監視の設定はしないようにお願いします。

意外な相性問題?

Ubuntuにeclipseと入れたら、
奇妙な現象に出くわしました。

PropertiesのInstalled JREsのページがエラーで表示できないのです。

調べてみると、
どうやらOpenJDK7を入れているときに起こる現象のようです。

手っ取り早い解決方法は、
eclipse.iniに以下の設定を加えることです。


-Dcom.ibm.icu.util.TimeZone.DefaultTimeZoneType=ICU

情報の出処はこちらです。

…つまり、OpenJDK7のTimeZoneになんかあるってことですかね?


第5回 Java7はここが違う!


前回<>次回

登場人物
  • NRT
    猪突猛進なプログラマー
    考える前に体力勝負でプログラミングするタイプ。
    たまに鋭い洞察力を見せるため、
    周囲からは落ち着いてさえいれば…と言われている。
  • SSK
    冷静沈着なプログラマー
    20:80の法則に習い、実は仕事の一部分を学習に当てている。
    他の人はそれに気がついていない。
    Java7についても以前からチェックはしていた。
  • SKR
    紅一点なプログラマー
    暗算は早いけど、プログラミングはそこそこ。
※登場人物は忍者ではありません。架空のプログラマーです。

新機能:Improved Compiler Warnings and Errors When Using Non-Reifiable Formal Parameters with Varargs Methods


~~~ 社内 - 会議室 ~~~


SSK「どうして…こうなった…」

SKR「仕方ないわね、本当にJava 7を使うことになっちゃったんだし。」

NRT「へへっ!腕が鳴るってばよ!」

SSK「とりあえず、構文のみに絞るからな。
       クラスの変更や追加は流すくらいにしかやらない。
       せっかくだし新しいJavadocにでも慣れればいい。」

SKR「新しいJavadoc?Java 6とどう違うの?」

SSK「ハッキリ言って別物に見えるくらい違う。
       …そんなことよりも、今回の本題を始めるぞ。」

NRT「よっしゃー!どんとこい!」

SSK「今回は強化された警告について説明する。
       とりあえず、この2つのソースを見てくれ。」

*ひとつめ*
List fooList = new ArrayList<number>();
List<string> barList = fooList;

*ふたつめ*
public static <t> void foo(List<t> list, T... elements) {
    // 何かの処理
}

public static void bar(List<string>... l) {
    // 何かの処理
}

SSK「Java7では、こいつらは警告扱いになる。」

NRT「ど、どういうことだってばよ!?」

SKR「ひとつめは分かるわ。…というより、今まで警告が無かったの?」

SSK「そうらしいな。
       ひとつめは総称型が違うものへの代入、
       ふたつめは…可変長引数の使い方だな。」

NRT「あ!俺もひとつめは分かったってばよ!
       でもふたつめがぜんぜんわかんねぇぇ…」

SKR「もしかして、可変長引数にListを使っているのがいけないのかしら?」

SSK「そう思っていてだいだい間違いはないと思う。
       具体例が出せなくて悪いが、
       この実装を避けるように組んでくれればそれでいい。」

NRT「なら簡単だってばよ!」

SSK「おまえにこんな処理が必要な箇所は任せないから安心しろ。」

NRT「な、なにお〜!」

前回<>次回

ドット絵描くならWindows?

そろそろ気の抜けたアイコンを変更しようかと思い、
Ubuntuでドット絵を描くためのツールを調べました。

まぁ〜ったり☆ブレンドで紹介されているmtPaintを試してみましたが、
ドラッグ中に右クリックで中断できない事や、
すぐに色スポイトが見つからない事などから諦めました。

自分のドット絵はiDraw2が基盤となっているせいかもしれませんが…
素直にWindowsでEDGEを使うことにしましょう。

Macはどうなんでしょうか?
やっぱり充実したツールがあるんでしょうか?

とりあえず、
LinuxとWindowsではWindowsの方が有利だと判断しましたとさ。

ドッターはまだまだ死なんよ!


2012年12月22日土曜日

レイアウトを変更しました

マイリンクに色々集約させて、
右側の見た目をすっきりさせました。

本当はソースコードの表示も改善したかったのですが、
Bloggerに簡単に導入できるのが少なかったので見送りました。

しかし、思ったよりも色々なサービスを利用していたんですね。
…Pixivとか何か描かないと。


2012年12月13日木曜日

理解できないことを否定する理由

(当てはまる人物が多すぎて)誰とは言いませんが、
理解していないのにも関わらず、
むやみやたらにその理解できない物事を否定する人がいます。

例えば、
「関数で共通化すると読みにくくなるから使うな」
とか、
「オブジェクト指向なんて業務には使わないから無駄なものだ」
とか、
「ユーザーインターフェースなんて飾りでしかない」
あたりが良く聞くやつでしょうか?

それぞれ分からないことを前置きした上での発言です。

もし論理的に考えるのであれば、
分からないことは不定なので、
評価できないが答えなはずです。

学習を続けることで誤解が解ける人もいるんですが、
大半の場合は罵り、蔑み、学習しようという意欲すら見せません。

自分にはむしろそこが理解できません。

なぜ「分からない」と言う事ができないのでしょうか?

…と最近まで思っていましたが、
ファンタジーものを読んでいてひとつの仮説が思い浮びました。

未知なるものに対し、
無意識に恐れているのではないでしょうか。

ほら、異端な能力を持った人を排斥する村人Aみたいな人物です。

それのスケールダウンだと思えば、
いくつか符号する点が見えてきませんか?

つまり彼らを説得するのは、
排他的な村社会の住人を意識改革させるのと似た難易度なわけです!

これって、
つんでない?

2012年12月7日金曜日

意志の強さと頑固さは、多分見分けがつかない

自分が小学校のときでしょうか。

町内のレクリエーションか何かで、
小学校の校庭の○☓クイズがありました。

最初の1問目が何だったのか思い出せませんが、
自分が選んだほうは自分一人だけしか居ませんでした。

小さな子供が、
大きなマスに一人ぼっちで立っている状態です。

自分はそれでも、
少数派という理由で答えを曲げることはありませんでした。

まあ当然間違っていて、
自分は唯一の1問目失格者となってしまいました。

問題はこれをどう評価するかです。

意志が強いと見るべきなのか、
ただの頑固さと見るべきなのか…
自分はこれに明確な回答を持ち合わせていません。

きっと意志の強さと頑固さは、
そんなに違わないのではないでしょうか。

周りの大勢から見て、
正しい選択を貫いているように見えれば意志が強いと言い、
間違った選択を死守しているように見えれば頑固だと言うのではないでしょうか。

貴方の周りの方に頑固者と評価している方がいるなら、
ちょっとだけ考えてみていただけませんか?

もしかしたら、
貴方の方が意志の通そうとする人を邪魔する悪者なのではないかと。

その上で頑固者だと評価するだけの意志の強さがありますか?


2012年12月5日水曜日

評価方法を評価しよう

自分は目標設定型の評価を、
自立性を阻害する評価方法として嫌っています。

いえ、厳密に言えば違います。
自分自身の目標を目標設定型の評価に当てはめるのが嫌いです。

目標を決めること自体には何の異論もありませんが、
評価が上がるというニンジンをぶら下げていることに強い危機感を覚えるのです。

自律的であったはずの行動を、
飴とムチの世界に引きずり下ろしている可能性があるからです。

自律的なモチベーションと言うのは、
一度喪うと森林を丸々焼き払うのと似た状態になります。

つまり復旧するには膨大な努力が必要で、
もしかしたら元に戻らないかもしれないのです。

少なくとも、
強力な反証が無いうちにおいそれと飛び込むことはできません。

それでどうでも良い目標を設定し、
どうでも良いため達成していない日々です。

それは自己責任なので置いておくとしましょう。

問題は本当に評価方法が間違っているかどうかです。

自分にしかマイナスで無いのであれば、
自分を例外扱いとして評価方法を継続するのは正しい選択です。

もしも多くの人に効果が見られないのであれば、
動機付けとして問題を抱えていると言っても良いでしょう。

…あれ?

今の評価方法って評価されてるの?

そういえば、
こういう統計がでたから評価方法をうんぬんとか聞いたことがありません。

測定されてないのは大問題ですし、
幹部クラスにしか知られていないならぜひとも公開して欲しいです。

自分の会社で採用した評価方法なんですから、
自分の手で正しさを証明して欲しいです。

2012年12月4日火曜日

その言葉、言い換えてみようよ

「ITは文系領域も多いからコンピュータサイエンスなんて知らなくていいんだよ」的な言説が蔓延ることが業界の現状を招いているのだが
を読んでいて、
ふと思ったことがあります。

この記事では“文芸センス”という言葉が使われていますが、
もっと分かりやすい言葉で言い換えた方が良いのではないかという話です。

そこで“文芸センス”を発揮するために必要な知識やスキルの集合を、
“アート”と読み替えることを提唱したいと思います。

用例はこんな感じ、
「おまえのプログラミングは“スキル”であって“アート”ではない。」

なんて、どこかのラノベで見たような表現を使えます。

こんなタイトルの本だってあるんですし、
そこまで中二病ってわけじゃないと思います。

というわけで、
“アート”と呼べるプログラミングをしていきましょう!


ソフトウェア会社以外でも最高の開発環境を手に入れるべきか

ソフトウェア会社ではない企業へ面接へ行ってきました。

そこであまりに開発環境について質問しようとしてしまったので、
「ソフトウェア会社じゃないんだから…」
という返答をいただいてしまいました…

ああ、これで面接はダメだったな…と思いながらの帰り道、
「本当にそうなのだろうか?」
とも考えてしまったわけです。

終わったものは仕方ないにしても、
今後のことを踏まえればまとめておく価値があると判断しました。

まず自分としての結論は、
「最高の開発環境が必要とは限らないが、
 規模が大きくなるほど必要になる確率が上昇する。」
と考えています。

大きな企業であればあるほど、
良いシステムであることの効果がスケールするからです。



「社内システムのGUIがきれいだからって何になる?」
確かに、何にもなりません。

でもUIは見た目だけではありません。

UIで誤操作率や作業時間を半減させることができたなら、
それは生産性の向上へ貢献しています。



UIはバカにできませんが、
内部の動作はもっとバカにできません。

バッチ処理に必要な時間が10分の1にできれば、
余ったリソースを別のことに割くなりコスト削減することもできます。

BIの情報収集であれば、
経営判断の速度も向上します。



例えERP導入していたとしても話は違います。

ソフトウェアに使われるのではなく、
ソフトウェアを従えるためには、
高度なスキルが要求されます。

経営的に言えば、
お金に使われるかお金を従えるかと言い換えた方が良いでしょうか。



紙に書いてやり取りした方が早いパターンなんていくらでもあります。

自分だってシステム手帳は未だに紙ベースです。

しかし、本当に電子化に不向きであると言い切れるでしょうか。

電子化のメリット・デメリットは?
導入のコストは?
何も考えずに無条件で紙を選択していませんか?

最新のOCRを導入すれば和洋折衷も可能なのでは?

おっと、その場合の連携プログラムはどうするの?



要は大きくなればなるほど、
システムが経営の根深いところまで影響を与える確率が上がるのです。

そして良いシステムを生み出すためには、
最高の開発環境が必要で、
最高のプログラマーやプログラムマネージャーが必要なんじゃないかと考えました。

というより、
転職先が良い開発環境なのか気になるのは普通じゃないの?



なんだかんだ言ってますが。

今回の面接先では杞憂の問題かと思います。

私服OKかと質問したときに、
「ネクタイで生産性が上がりますか?」
と返されました。

そのことを理解しているのであれば、
自分の企業に最適な環境は自然と追求できているはずです。



それが分かっていない企業が星の数だけあるんです。

変な質問をして、
申し訳ありませんでした。


2012年12月2日日曜日

管理者権限に隠し事は難しい

何の話かはあえて語りませんが、
やっぱりどうやっても隠すには難しいです。

実行中のメモリダンプを取ってしまえば、
よほど工夫していない限り中の文字列は筒抜けなんです。

実はメモリダンプを想定していないソフトウェアって多いんじゃないでしょうか?

え~あ~、
もしもソフトウェア中に操作者から隠したいデータが入っているなら、
それはバレると思ってください。

まあパーミションまで見てないので、
管理者権限で無ければなんとかなるかもしれませんが…

逆に言えば、
管理者権限があったらアウトです。

少年ハッカーに破られて恥をかいても、
自分は知りません。


stackoverflowのTシャツは大事にするべき

stackoverflowのTシャツが気に入ったので、
追加注文しようとしました。

しかしオンラインショップがもう閉店していたのです!

閉店理由を日本語訳(適当)してみると、
思ったよりも売れすぎててんやわんやな上に、
税金もかかってさあ大変。
だから閉店しました!う~☆

…のように読めました。

どうやら今の手持ちを大事にしないといけないようです。

というよりも、
日本でこのTシャツ持っている人どんだけいるんでしょうね?