輝々凛々

ガンバるってことは、素晴らしい事だ。

上書きしますか?

フォルダを「上書き」は、ちょっと変。

Windowsでファイルやフォルダをコピペすると「上書きしますか? はい/いいえ」ってのがある。でもフォルダを「上書き」っていうのはどうも変。わかりにくい。

と思ってかどうか知らないですが、Windows Vista では「フォルダを統合しますか? はい/いいえ」になった。また同時に作成日時なんかも見れるようになった。

でも、なんか違う。わかりにくい。ファイルの上書き確認のときと、動作が違う。ファイルの上書き確認のときは「はい/いいえ」じゃない。こんな↓感じだ。

Vistaでのファイルの上書き

「はい/いいえ」ではなく、「コピーして置き換える/コピーしない/名前を変えてコピー」という3つの選択肢になっている。こちらの方がわかりやすい、と思う。フォルダもこうであって欲しい。

機能的デザイン、デザイン的デザイン

でも、ちょっと無駄にデカすぎる。機能的なデザインは良いのだけど、デザイン的なデザインがなってない。どれだけの文字を読まないとダメなんだよ?

仕事の優先度

社会人になって改めて思った。「優先度」は大事だと。

仕事の優先度

自分はスケジューリングが上手くない。計画を立てるのが不得手だ。計画通りに進ませるのも不得手だ。だけど、不得手だろうが社会人になれば、やらなきゃならん。計画をちゃんと立てて、優先度を決めて、ひとつずつ仕事をこなしていかなきゃならん。

仕事の優先度は、時と場合に左右される。自分ひとりが握っている情報だけでは決められないときもあるし、間違えるときもある。そこは経験だし、日頃の「なぜだろう」が活きてくるところでもあるので、すぐには養えないものである。

だから今からやるべきだ。優先度を決めること、考えること。

ある画像処理のプログラム

ある画像処理のプログラム中では処理速度の都合で、PPM (Portable Pixel Map) をベースに処理を書いているとする。こんなとき、このプログラムへの入力にBMPも対応したいなら、どうするだろう。

※ただしBMPとPGMは変換可能とする(ほんとは、結構違う)。

方法1~「BMPでも処理できるようにする」

方法1はBMPを読み込んで、処理するバージョンを書くことである。何をバカな、というのが率直な意見だろう。でも、これがもっとも安直な方法である。だが、しかしバグが入り込みやすい。たとえば今まで書いてきたPPM用の画像処理コードを横目で見ながらBMP用に変換していくのである。

これはもう、C言語をJavaで書き直すような作業に等しい。ひたすらバグを埋め込みやすく、なおかつ元ソースにバグがあったときに修正もしにくい。もうやたらめったら、面倒臭い。

方法2~「BMP→PPM変換モジュールを追加する。」

これもシンプル。入力としてBMPを読み込んだ後に、PPMへ内部データを変換してしまおうという方法。これだとコーディングするのは、BMP→PPMの部分だけであるし、画像処理コードにも手をつけずにいられる。そのため保守性も高い。

モジュールの設計

方法2がよさそうなので、方法2でいくことにする。さて、問題はどんな設計にするかである。もっとも保守性の高いプログラムは、抽象的になりすぎず、具体的になりすぎない、シンプルさをもったプログラムだと思うが、これが難しい。

たぶん簡単に済ませるなら、ちょちょいっとBMPファイルを読み込んでPPMデータを取り出すモジュール(関数)を作るだろう。非常に簡単だ。だけど、どうだろう。簡単にできる反面、本当に保守性が高いのだろうか。そもそもPPMベースで処理していること自体に問題はないだろうか。

そこまで考えて、自分が出した結論は今のところ、こう。

  • PPMで処理するのは問題ない。
  • 何ならもっと処理しやすい独自形式でもいい。
  • 画像処理モジュールは自分が処理しやすい形式に対応してさえいればいい。
  • 画像処理モジュールを使う人は、そのモジュールにあった形式を入力すべし。
  • 合わない形式はコンバートせよ。

つまり、「いつもPPM」っていう縛りを付けること自体が勿体ないという主張をしている。たいていのことは縛りをつけることで自由度が失われる半面、確固たる地位を確立できる。しかしいずれ自由度がなくなり、動けなくなるのは目に見えている。

その意味で、縛りをつけた上で、その縛りをいつも取り外し可能な状態にしておきたい。つまりPPMという縛りが各画像処理モジュールにはあるのだけど、いつでもBMPを処理するモジュールに変えられるようにしておく。

たぶん、こういうふうに明確に分けておかないと、「このプログラムではPPMでだけ処理するんだね。拡大縮小は、PPMをベースに書くんだね。クロップも同じだね。じゃあ、拡大縮小と同時にクロップしたいんだけど、やっぱりPPMで書くの? BMPだったら拡大縮小のライブラリが使えるんだけど、使っちゃダメ? YUVに変換した後のデータを拡大縮小したいんだけど、どうすればいい?」とかなってくる。特に最後の要望は重症。

「YUVを一旦、RGBに戻してくれ」は、相当バカな感じだし、「YUVは『特別に』入力させてやろう。」は、そもそも最初に決めた「PPMベース」を守りきれていない点で破綻している。←いずれ他のモジュールもYUVに対応することになって、「当初の予定になかったから、基礎設計的にコーディングできません!」という羽目になる。

いや、なんかもっとありそうだけど、今はこんな感じ。

とりあえずメモ。

##後はどうだろう?

10年後を想像してみよう。

結婚して、子供がいて、普通に幸せで、電車の中で子供をあやす姿が親バカで、でも社会人らしくなっていて、そんな10年後を想像しよう。それが良い目標にもなる。

20年後を想像しよう。

同じようにもう10年、歳をくう。子供も大きくなって生意気にも反抗期。でも可愛い。素敵な嫁さんも素敵に歳をくう。小学校の運動会に参加してみて、年甲斐あって、腰痛に見舞われる。それも幸せに感じられる20年後は、どうだろう。

では、1年後を想像しよう。

1年経ったときに何かが変わっているだろうか。1年後の自分が素敵に成長できているだろうか。それを今、想像できるだろうか。

1時間後の自分を想像できるか。

もっと短いスパンで、たとえば1時間後の自分を想像できるだろうか。今から1時間だけ未来の自分。その自分が今の自分と何も変わらないのは少し悲しい。10年経っても何も成長していない自分を悟ることと同じに、悲しい。1時間だって、1秒だって、未来の自分が今と同じなのは、とっても悲しい。

無駄に生きてる暇はない。脈打つ数が同じなら、どれだけ強く脈打って、どれだけ強く輝くか、どれだけしぶとく脈打つか。脈打つ数より小刻みに、脈打つ先を見つめておこう。

テンプレートを変えてみた。

テンプレートを変えてみた。毎度の事ながら、ひとつのテンプレートの存命期間(?)が短いけど、今回のはかなりピッタリ。

とりあえずプログラムのソースコードでも書いてみる。

#include <iostream>
#include "../FileReader/FileReader.h"
using namespace std;

int main()
{
	CFileReader cfr("test.cpp");
	cout << cfr.GetFileName() << " (" << cfr.GetFileSize() << " bytes)" << endl;

	printf("16BE: 0x%04Xn", cfr.GetUint16BE());
	printf("16BE: 0x%04Xn", cfr.GetUint16BE());
	printf("16BE: 0x%04Xn", cfr.GetUint16BE());
	printf("16BE: 0x%04Xn", cfr.GetUint16BE());
	printf("16BE: 0x%04Xn", cfr.GetUint16BE());

	return 0;
}

捏造(ねつぞう)

世の中で一番さびしいことは、する仕事がないことです。

世の中で一番尊いことは、人のために奉仕し、決して恩にきせないことです。

世の中で一番悲しいことは、嘘をつくことです。

福沢諭吉「心訓」

加納朋子「ぐるぐる猿と歌う鳥」、読了

加納朋子さんの「ぐるぐる猿と歌う鳥」を読みました。子供向けでもあるので、非常に読みやすいです。いつも加納さんの本は読みやすいのですが、いつにも増して読みやすかったです。

内容は、子供の視点で考えたドキドキわくわく冒険談、かな。それこそ龍や怪物なんてものが出てくる素人くさいファンタジーではなく、子供のころ、日常にありふれていたファンタジーがこの本にはあります。なぜ、あんなに一所懸命、小石を集めてたんだろうとか、ビー玉が宝物だったときのこととか、色々思い出します。

そんなこんなで、この夏も終わりかけで、読書の宿題もしていないお子さんがいたら、ぜひお勧めの一冊です。感想文を書くのは、こりゃまた才能がいりそうだけど。

本当にWiiが販売台数世界一なのか?

昨日のニュースで、GIGAZINE「任天堂のWii、ついに販売台数でXbox360を抜き世界一へ」というのがありました。情報源は、いつものVGChartzなのですが・・・・・。

ちょっと待って、ちょっと前の記事、Engadget Japanese「Engadgetインタビュー:Xbox 360のボス ピーター・ムーア」で、こんなの↓書いてありましたよ?

先日マイクロソフトは前四半期の業績を発表しましたが、Xbox 360は1200万台の目標を達成できませんでした。しかも1200万というのは一度下方修正した数字です。結局は1160万台に留まりましたが、理由はなぜだと考えますか。

変だよ。このインタビュー記事の数字は販売台数じゃなくて出荷台数なのかな? それにVGChartzでXbox360が販売台数1000万越えたのは、もうずいぶん前、6月13日の話。そこから、何でほとんど販売台数伸びてないの? 変じゃない。まるでWiiだけが売れたみたいじゃん。

何か、作為的なものを感じなくもないけど、はい、好きにしてって感じ。

ちなみに、Engadgetの英語の原文は、これ→「Engadget & Joystiq interview: Peter Moore, head of Xbox

Xbox360のタイレシオ(装着率)が5.9だったとは、すげえな。タイレシオは、1台のマシンに、何本のソフトが売れていったかってもの。ようは、Xbox360ユーザーは、平均的にソフトを何本持っているのかってことになる。iNSIDE「タイレシオは「Wiiが3、PS3が1.5」―米GameStopが明らかに 」なわけだから、ある意味異常。

きたきたきた、ビューティフル塊魂、体験版配信中!!

私、お待ちかね、ビューティフル塊魂の体験版が、Xbox Live マーケットプレースで無料配信中ですよ!

イェーイ、今から遊ぶぜ・・・・・、・・・・・、・・・・、時間が・・・・・、会社行かねば。

今日は会社説明会

つっても、他社向けの技術説明会。今後も同様に他社さんの社内で開催させていただくようになるようだ。

FC2が高速化・・?

なにやらFC2がリニューアル、ということです。

まず「管理画面」の「ヘルプ」から「新管理画面へ」移行してくれ、とのこと。この新管理画面へ移行すると、なぜかブログ自体の表示スピードも速くなるそうだ。

で、実際、いま新管理画面とやらで記事を書いているんだが、自動プレビューが勝手についてきて、人によってはウザいだろうな(→新しく増えた「Pre」ボタンでOFFに設定可能。このボタン、どう見ても「Pre」タグにしか見えなかったけど。)。けど自分は好きだ。それに確かに表示スピードも上がっているような印象だ。

けど、本当に残念なことがひとつ。

3万行のコードが最適化で半分になった・・・・、なんて恥ずかしいことを自慢するなよ。

その他

その他は、まぁ、いいなぁ。結構、記事が書きやすくなったかもしれない。あぁ、でもテキストエリアの大きさは、設定できるといいのに。自分の場合、「追記」の部分は表示しないでいいし、テキストエリアの下じゃなくて、横に表示しておいて欲しいし。

あとは・・、アクセス解析が重過ぎるから今ははずしているんだけど、どうにかならんかな?

Hey! みんな元気かい?!

ふと振り返っては思い出しています。

楽しさや悲しさ、さみしさ、苦しさ、嬉しさを教えてくれた人たちを。

生きることや死ぬことについて考えさせてくれた人たちを。

みんな覚えてる。

情報

情報が武器だという。 知っていることが武器だという。 そうじゃない。 知らないことが弱さではない。 知らないならば知ればいい。 そうだから、情報は武器じゃない。 情報から産み出されるモノが武器であり、 無知から産み出されるモノこそが武器である。 そう思う。

エンディアンとの闘争2(補足)

昨日のエントリの補足

理論上の話

普通、数値は左に行くほど桁が大きい。たとえば、「78」とかけば「ななじゅう・はち」です。「7 * (9 + 1) + 8」の計算結果と同じです(「9 + 1」は当然「じゅう」ですが、「10」と書くと桁の話が帰結しないので、これで勘弁」)。

16進数も同様に、理論上は「0x78」と書けば、普通、7の方が8よりも桁は大きいです。つまり「7 * (9 + 7) + 8」の計算結果に等しいです。

普通、エンディアンの話を出さずに16進数を表記したときは、理論上での並びに等しいと思います。基本情報の参考書なども理論上での並びを前提としていることがほとんどです。

物理的な話

ところがいま書いた理論上の並びが必ずしも実際ではないことがあります。それがエンディアンです。おそらく理論上では問題にならないけれど、物理的に電子回路を作り上げる際に何かの都合があったのでしょう。理論上の並びとは逆に並ぶことがあります。

ただ基本的に1バイト以下の数値を扱うことはないので、1バイトの数値に関しては、その並びが変わることはないようです。しかし2バイト以上の数値を扱う場合、理論上「0x1122」だったものが「0x2211」と並ぶ環境があります。理論上「0x11223344」ならば物理的には「0x44332211」と並ぶことがありますし、理論通りの並びになる環境があります。

このように理論通りに並ぶ環境をビッグエンディアン環境、理論とは逆順で並ぶ環境をリトルエンディアン環境と呼んだりします。

補足のまとめ

昨日のエントリは、誤解をまねく書き方でした。

メモリ上で「メモリ上では 0x2211」と書いているのは、メモリ番地の若い方(0番地に近いほう)に「0x22」があり、次に「0x11」が格納されている、という意味でした。

ハードウェアな話は不勉強でよくわかっていないですが、全部ビッグエンディアンにしておいてくれたら、苦労しなかったのに。。

思ったのですけど、苦労は早いうちに摘んでおいた方がいいですね。自分の都合で誰かに苦労をさせるのではなく、自分の都合を押し殺してでも簡単に扱える道を作るほうが良いのではないかと思いました。

ま、でもその苦労を押し付ける代わりに、物凄いメリットがあるなら、また別の話ですけど。

エンディアンとの闘争2

昨日に引き続き、エンディアンの話。

リトルエンディアンでビットシフト

リトルエンディアン環境の場合、16進数 0x1122 はメモリ上では 0x2211 と格納されています。さて、ここで 16進数 0x1122 を8ビット右シフトすると、結果は 0x0011 となりますが、当然メモリ上では 0x1100 となります。

つまり右ビットシフトした場合、リトルエンディアン環境のメモリ上では、あたかも左ビットシフトしているかのように見えます。これを確認するには、Visual Studioなどのデバッガが必要となります。

リトルエンディアンでマスク

ここで不思議になったのが、リトルエンディアンでのマスク。マスク・・、つまり「0x1122 & 0xff」とやったときの挙動が気になりました。結果はもちろん「0x0022」となるのですが・・・

まず16ビット型(short/__int32)の変数valueに0x1122を入れておきます。リトルエンディアン環境でのvalueのメモリ状態は0x2211となっています。

このvalueと0xffとのマスクをとります。

value = value & 0xff;

こうすると、結果はもちろん「0x0022」です。が、、よくよく考えると、C言語では定数を直書きした場合、int型として扱われます。そのため単に「0xff」と書いたものは、int型(32ビット)として扱われているはずです。

ということは、、0xffのメモリ上の配置は「0xff000000」となっているはずです。これでマスクを取ったら、結果は0x00になりそうなものです。

ところが、C言語では、整数型は必要に応じてビット数を昇格してもいいという決まりがあります。つまり「0xff000000」とマスクを取るshort型の変数valueは、マスク値が32ビットの整数型だから、一時的にvalueを32ビットに昇格することができます。

つまり、結局「value & mask」を行うときは、メモリ上では「0x22110000 & 0xff000000」という計算を行っています。この結果は、当然「0x22000000」になります。

そして昇格していたビット幅を元に戻して「0x2200」となり、それが最終的にvalueに代入されるようです。

まとめ

そんなこんなで、ビットシフトとマスクにおけるエンディアンの状態を考えてみました。普段はメモリ上にしか現れないので気にしなくても良いです。まぁメモリ上のデータをデバッグするような機会があれば参考になるかもしれません。

という程度のメモで以上。

エンディアンとの闘争

エンディアンってあるじゃない。インディアンじゃないよ。エンディアン。語源はどうあれ、エンディアン。あれって、どうなってんのって感じなので、書いてみた。

エンディアンはメモリの中に。

普通、エンディアンはCPUに依存してますが、それはCPUが都合の良いエンディアンで処理するからです。たとえば、泣きたい話ですけど、エンディアンはCPUによってまちまちです(以下、Wikipedia「エンディアン」より引用)

IBM系のメインフレーム/汎用機、SunのSPARC、MotorolaのMC68000等は「ビッグエンディアン」を採用し、インテルのx86系などは「リトルエンディアン」を採用している。ARMアーキテクチャのCPU、Transmeta社のCrusoe、Hewlett-Packard社のPA-RISC、PowerPCなど、エンディアンを切り替えられるバイエンディアン (bi-endian) のものも存在する。

あぁぁん?! なめてんのか!! って感じですよね。現役バリバリのCPUで食い違っているのですから。あ、AMDはリトルエンディアンですよ。GPUの場合は、DirectX/OpenGLかドライバかハードかでCPUとの差異を吸収してくれてるっぽいです。

で、CPUはレジスタ上のデータを自分の処理しやすいエンディアンで持っているわけで、これは当然CPUのキャッシュにもメモリにも同じエンディアンで乗っているわけです。

んで、困ったことに、メモリ上のデータをファイルに書き出すときとか、ネットワーク上に流すときは、メモリ上のデータがナニエンディアンなのかを気にしないとだめ何です。

自分がリトルエンディアンで作ったデータを、ビッグエンディアンとして解釈されては困ってしまうので、結果ファイルにもエンディアンの影響が出てしまいます(でも、普通はビッグエンディアンかな? 基本情報の勉強とかで出てくる16進数表記はビッグエンディアンだよね・・?)。

どのタイミングでエンディアンが発生する?

逆にファイルからデータを読み込むとき、どのタイミングでエンディアンが発生するのでしょうか。それがわかれば、どこでエンディアン変換をすれば良いかがわかります。

つうわけで、答えは「メモリにのったとき」です。つまり「fread」などをしたときです。もちろんエンディアンというからには、2バイト以上のデータをfreadしたときに限ります。でも、こんな場合↓は大丈夫だったりします。。

fread(buf, sizeof(char), 2, fp);

これだと「1バイト」を2回読んでいるだけなので、エンディアンは関係ありませんです。逆に、、

fread(buf, sizeof(short), 1, fp);

これだと「2バイト」のデータをメモリに格納しちゃうので、ここでエンディアンが発生しちゃいます。

というわけで、エンディアンを気にしなくちゃいけないタイミングは、freadなどで2バイト以上のデータを一気に読み取ったとき・・です。

たとえば、こんなのも危険。

fread(buf, sizeof(KOUZOUTAI), 1, fp);

本題はここから

で、なかなか面倒なエンディアン。これを考慮したファイルリーダー/ライターを作ろうかと思ったんですけど、なかなかこれが面倒。アセンブラでエンディアン変換できることは新しい発見だったのですけど、テンプレートを使ってスマートに書けそうな気がして調べたら、やたらとややこしいテンプレートが某所に書かれていて、ちゅょおーっと、嫌気が・・。

まぁ、テンプレートなぞ使わずに「わかりやすさ」重視で書いても良さそうですけど、まぁ、後学のためと興学のためにテンプレートを読解しようかと思っています。

と、これだけを書きたかったのですけど、長々と、もう2時です。さよならー

しまりがねぇ、ブログだぜ。

Windows 98/98SE/Me/NT/2000/XP/Vista対応? 7つの極意

とまぁ、大仰なタイトルをつけつつ書き初めますは、Windowsを使っていて、どんなバージョンのWindowsでも使える(かもしれない)、Windowsチップスで御座います。主にキーボード操作が楽になる、かもしれない、どっぷり使って手放せないチップスを紹介したいな、と思います。

よろしくお願いします。

1. キーボード・ショートカット

たとえばファイル・エクスプローラで「すべて選択」というメニューは、メニューバーの「編集」中にありますが、よく見てみると「すべて選択」の横に「Ctrl+A」と書いてあるかと思います。

これはファイル・エクスプローラ中でキーボードの「Ctrl」を押しながら「A」を押すと、「すべて選択」ができるということを示しています。

他にもMicrosoft Word XP でいえば、「上書き保存」が「Ctrl + S」だったり、「コピー」が「Ctrl + C」だったりします。

これらは別にメニューバーだけに限らず、右クリックして出てくるコンテキストメニューにも書いてあることもありますし、書いてないからといって、キーボードショートカットがないというわけでもありません。

たとえば、Microsoft Wordで単語を太字にしたいと思ったら、その単語を選択したうえで「Ctrl + B」すればいいですし、ファイル・エクスプローラ上でファイルやフォルダの名前を変えたいときは「F2」キーを押すことで名前を変更できます。

まぁ、そんなこんなで色んなアプリで使えるキーボードショートカットは、それこそ星の数ほどあるのですけど、本日は、Windowsで覚えておきたいキーボードショートカットをまとめておきます。
リスト中の「ミ田」はWindowsキーを表しています。

F6
アプリ中の各項目を巡回する。たとえばツールバーとメイン画面とか。
F11
「最大化」よりも広い画面(全画面表示)になる。ファイルエクスプローラやインターネットエクスプローラで使用可能。使えないアプリもあるが、たいていは「F11」か「Alt + Enter」で全画面表示になる。
Alt + Enter
Alt + F4
アプリを閉じる。
Alt + Tab
アプリ切り替え(窓表示あり)
Alt + Shift + Tab
アプリ切り替え(窓表示あり)、逆順
Alt + Esc
アプリ切り替え(窓表示なし)
Alt + Shit + Esc
アプリ切り替え(窓表示なし、逆順)
ミ田 + Tab
アプリ切り替え(Vistaのみ)
ミ田 + Shift + Tab
アプリ切り替え(Vistaのみ、逆順)
ミ田 + E
ファイルエクスプローラを開く。
ミ田 + R
「ファイル名を指定して実行」を開く。→超便利(後述)。
ミ田 + D
すべてのアプリを最小化(一時的、もう一度押すと戻る)
ミ田 + M
すべてのアプリを最小化(本当に最小化)
ミ田 + U
ユーザー補助アプリの起動。拡大鏡とかが使えます。
ミ田 + Break
システムのプロパティを表示する。
ミ田 + Space
サイドバーを最前面に表示する。(Vistaのみ)
Ctrl + Shift + Esc
タスクマネージャの表示

また、たいていのアプリで共通して使えるキーボードショートカットには、以下のようなものがあります。ある意味、アプリ製作者はこれくらい対応して欲しいというリストかもしれない。

Ctrl + C
選択項目のコピー。文字列のコピーとか、ファイルのコピーとかいろいろ。
Ctrl + X
選択項目の切り取り。文字列の切り取りとか、ファイルの切り取りなどいろいろ。
Ctrl + V
選択項目の貼り付け。文字列の貼り付けとか、ファイルの貼り付けなどいろいろ。
Ctrl + S
上書き保存。
Ctrl + Shift + S
名前を付けて保存。(実は、あまり見かけないものの、「名前を付けて保存」にショートカットがついていると、たいていコレ)
Ctrl + F
検索。
Ctrl + H
検索置換。
Ctrl + P
印刷。
Ctrl + W
閉じる。何かを閉じる。アプリ自体が閉じるかも。
Ctrl + Q
終わる。何かが終わる。アプリ自体が終了するかも。
Ctrl + →
次の単語開始位置へカーソルを移動。
Ctrl + ←
自身の単語開始位置へカーソルを移動。
Ctrl + Tab
タブページを切り替える。
Home
行頭へカーソルを移動。
End
行末へカーソルを移動。
Ctrl + Home
文頭へカーソルを移動。
Ctrl + End
文末へカーソルを移動。
Shift + 矢印
選択
Shift + Home / End
行頭/行末まで選択。
Shift + Page Up/Down
1ページ分選択。
Alt + Shift + 矢印
矩形選択
Alt + マウス選択
矩形選択。(マウスかよ!)
Esc
なかったことに。アプリが閉じたり、変換中の文字が元に戻ったり、とにかく途中でやめたくなったときは、これ。
F1
ヘルプを表示。
F2
選択項目の名前を変更。
Alt
メニューバーに移動。

他にもいっぱいあります。もっと知りたい方は、Windowsのヘルプで「キーボードショートカット」の項目を見るか、インターネットで検索してください。

2. 必殺、Windows Explorer

そんなわけで、ファイルエクスプローラあらため、Windows Explorerでの便利機能を紹介したいなと思います。つか、ひとつだけ。

ファイルやフォルダがいっぱいあるフォルダで、特定の名前を持ったファイルあるいはフォルダをみつけるのは、大変です。かといって、いちいち「Ctrl + F」で検索などしてるのも面倒です。そこで、ファイルやフォルダにフォーカスがある状態で目的のファイル名・フォルダ名の最初の1文字をキーボードで打ってみましょう。

たとえば「fujii_kun.jpg」なんてファイルを探したいなら、「F」をうちます。すると・・、「F」から始まるファイル・フォルダが選択されることと思います。さらに「F」とうてば、次に「F」から始まるファイル・フォルダに選択が移ります。で、目的の「fujii_kun.jpg」を簡単に見つけることが可能です。

でも「f」から始まるファイルが大量にあると、これも面倒になります。そこで、「F」と打つ代わりに、すばやく「FU」と打ってみましょう。これで「FU」から始まるファイル・フォルダに選択が移ります。もっとすばやく「FUJII」と打てば、「FUJII」から始まるファイルしか選択されませんから、より一層すばやく目的のファイル・フォルダを見つけることができます。

って、いっても、この方法だと名前の間に「FUJII」とあるようなファイル・フォルダは見つけられないのですけど。「I_LOVE_FUJII_KUN.JPEG」とか。

あとついでに、F4でアドレスバーに移動できることも追記してみる。

3. Windows + R 最強伝説。

実は、これが最強なのではと思っています。WindowsキーとRで呼び出せる「ファイル名を指定して実行」。これがすごい。

たとえば自分は特定のフォルダを開くときは「Windows + R」→「D:\Data」で開きますし、特定のアプリを起動するときは、「Windows + R」→「D:\App\internet.exe」で開きます。といっても、おそらく「キーボード打つの面倒」と思われるかと思います。でも、そこはそれ、Windows 98ではダメでしたが、ある程度までキーボードで打つと、ひょこっと今までの履歴が現れて、キーボードの上下でそれを選ぶことができます。特にファイルやフォルダなどは、履歴だけでなく「C:\」まで打てば、Cドライブ以下にあるフォルダの一覧を表示してくれます。

で、他にも「cmd」と打てばコマンドプロンプトが出ますし、「regedit」と打てばレジストリエディタが現れます。「calc」は電卓ですし、「notepad」はメモ帳です。そんなわけで、こちらは知らないと打てないので、簡単にまとめてみました。

calc
電卓
cmd
コマンドプロンプト
control
コントロールパネル
eventvwr
イベントビューア。パソコンに電源を入れた時間とか、切った時間を確認できます。
notepad
メモ帳
regedit
レジストリエディタ
wincal
カレンダー(Vistaのみ)
winver
Windowsのバージョン確認。(システムのプロパティとは違います)

ま、他にも色々あるんだけど「appwiz.cpl」とか常用しなさそうだし、紹介しないことにします。ま、winverもどうかと思うけど。

まとめ

というわけで、以上、最近きたインターンシップの人が知らなさそうで、不便そうな状況を見るに見かねてまとめてみました。こっそりまとめちゃったので、本人は知らぬことになってしまいましたけど。。

あ、表題はちょっとゴメンなさい。Windows 98/98SE/Me/NTとかで使えるかどうかは、ちゃんと確認してないです。。済みません。生まれて、済みません。

答えは自分と。

ある人に出会った。 そいつは、金さえ積めば時間を売ってくれる。 1分あたり1万円で売ってくれる。。 買った時間は、いつどこでも使える。 今から、その時間を足してもいい。 後でその時間を使ってもいい。 もちろん、過去に使った時間として使ってもいい。 そうすれば過去をやり直さずに修正できるだろう。 さて、どこに使おうか。 何分買って、どこに使おうか。

合計、10GBフラッシュメモリ。

技術の進歩は早いもので、手元のフラッシュメモリの合計容量を数えてみたら10GB越えてました。内訳は、4, 4, 1, 0.5, 0.5, 0.5GBです。4GBの1つは、今日買ったbuffaloのもので、もう1つの4GBは、iPod nanoで、1GBの1つはiPod shuffleです。

0.5GBの1つは、Vista購入時に特典としてついてきたもので、ほかの1つは、大学でもらったもの、最後の1つはデジカメ購入時に割り引いてもらって買ったものです。

実は、ほかにも128MBが2本、64MBが1本くらいあった気がしますが、忘れたことにします。

特にオチはないですが、いまだにフロッピーディスクドライブが売っている理由がわかりません。

圧縮アルゴリズム

んーー。さっき「Xbox360」を「X36」と略しちゃう・・という話を書いたんですけど、これって圧縮アルゴリズムに利用できない?

なんか人間だったら、特定条件下のみで通用するような圧縮ができるじゃないですか。さっきの「X36」だと回りに「PS3」とか「Wii」とかの情報があれば「Xbox360」だって復号化できるわけ・・・

んー。だけど、表記ゆれとかあるからなぁ・・・。

結局データベースの勝利か。世界中にあるデータベースに一意のIDでも振ってりゃ、結構効率的な圧縮ができる・・・・・・・・・・・・・・ないか。

ま、いいや。

Vista更新

今日、Vistaの更新が入った。自動更新じゃないけど、次のページからダウンロードできる。

で、さっそくインストール中・・・・

それぞれ1度の再起動で復帰。うむ。ぜんぜん体感できるほどのことはないな。つっても、ほとんどまだ何も試してないんだけど。具体的なレポートは、どこかの誰かが、きっとあげてくれるのだろうな。うんうん。

ゲームプログラムにおけるシンボル名

ゲーム機でマルチプラットフォームなプログラミングをすると物凄くシンボル名に悩む。

アルファベット順で、DC、DS、GC、PS、PSP、PS2、PS3、Wii、Win32、Win64、Xbox、Xbox360 ・・・・、主にマイクロソフト系のゲーム機、PCが省略できなくて困る。3文字以内におさまって欲しい・・・。

と、常々考えていたら、先日、こんなのを見た。

Win32→W32、Win64→W64、Xbox→Xbx、Xbox360→X36。

・・・。Xbox360、潔すぎ。

帰ってきた、360さん。

無事、360さんが福島県から帰ってきましたよ。日ごろの愛顧のおかげか、1ヶ月のゴールドメンバカードつきでしたよ。噂のHDMI付にはなってなかったけど、アルゴンボード(謎)とマザーボードが交換されてましたよ。

追加のヒートシンクもついてるっぽく、アルゴンボード(謎)の交換が、これのことなのかしらん。わからん。

調べてみたら、電源とか、赤外線?とかのあのあたりのボードらしい。アルゴンボード交換したら、無線コントローラを認識しなくなったのは、これが原因らしい。コントローラ前面?上部?、とにかくLB/RBのある面の小さい丸っこいボタンをもう一度押す必要があるみたい。

そんなこんなで、無事に起動することまで確認して、明日からの夏休みを満喫です。

さよならー。

Xbox360版ガンダム無双、国内発売決定!

ガンダム無双 公式にこっそり、Xbox360版『ガンダム無双 インターナショナル』が発売決定したとのバナーが・・。

日本語音声と英語音声を切り替えられるだけのインターナショナルさなのかどうかは、定かではないですが、Xbox360ユーザーとしては喜ばしいことです、たとえ7800円が高くて買わないとしても。

きっと日本発売に対する費用はほとんどかかっていないでしょうが、まぁ、PS3だけで売ってても回収しきれなかったので、北米Xbox360版を出して、結果はどうだったのか知りませんが、きっと開発費を回収しきれたかどうかというよりも、日本のゲーム市場の拡大を図ったともとれる、今回のニュースかなと思いました。

See below

なか卯

会社帰り、代々木上原の駅ビルにある、なか卯に行ってきました!

なか卯の牛丼
うまうまでした!

が、交通費の方が高くついた感じなのが、残念。

プログラマになるために。

いま会社にインターンシップの人が何人か来ている。今年の4月に入った新人とあわせれば、6ニューフェイスだ。それぞれの特徴をまとめてみる。

新人A

すこし、おっちょこちょいなところはあるけど、それもまた良し。プロのプログラマとしては、十分やっていける(プロ=お金をかせげる)。

もう少し、プログラミングのことを研究すれば、幅が広がって良いかな。

新人B

んー。すこしタイミングに気をつけたほうがいい。間が悪い、というかバランスが悪いというか。気をつけるべきは、自分が何を知らないのかということを知ることだという印象。じ

十分な知識も意欲もあるのだけど、そこが残念なプログラマ。

新人C

何か違う。ズレている・・・、残念。

今まで、自分の考えをプログラミングしたことないんじゃないかって印象。予定を立てることが先にあり、それに従うことで満足できる・・・。そこに一切の変更は認めない・・・・。

きっと自分なら不満だらけだ。

インターン生A

うぬ。もう少し人の話を聞いた方がいい。聞き返すタイミングが早すぎるし、ちゃんと最後まで聞いたと思ったら、「わからないから最後まで聞き流した」だけだった・・、という印象。

自称「プログラミングを始めたのは4月から」だけど、よくよく聞くと、別に授業でなかったわけではなく、プログラミングを使って、何か自分でアルゴリズムを考えて、プログラミングを研究の道具として使い始めたのが、4月から・・・、だった。

プログラマを目指すなら、自ら自らのプログラムを作らなくてはならないと思う。

インターン生B

やる感じ。あっさり仕事を終わらせて、どんどん進ませていく感じ。新人を採用する立場なら、この人は是非採用したい。ちょっとオットリした部分があるものの、それはキャラクターとして完成度が高いので好印象。

独特の雰囲気がとっても素敵な、プログラマ。

インターン生C

エリート。いわゆる最高学府が代名詞。何でもやれちゃう可愛げのない人。有り得ない。営業のインターンなのに、なぜPerlが組めますか・・?

プログラマではないけど、二十歳にして立派な社会人。

総括

そもそも自分も社会人二年目なので、偉そうなことを言える立場にはないって思われるけど、事実そうだけど、何か、ホント人生ひとそれぞれだなぁ・・・って感じ。

とまぁ、こんな感じで日々、人の人生を夢想して重ねながら、自分の人生なんてものを見つめちゃったりして、たまにはピクニックでもして、散歩して、サイクリングして、息を吸い込んで、月を見上げて、花見して、自分の人生を振り返れば「プログラミング」なんて言葉は見つからない。私は、そんなプログラマ。

「開」さん、そんな文字、似合いませんよ。

kai1.png
そんな文字、似合いませんよ。
kai2.png

そう、その方がイイ。

See below

仇敵

未来における最大の敵は、いまの自分と判断した。

朝の挨拶

おはようございます!

行ってきます!

行ってらっしゃい!

え? まだ早い??

心ざし

心に刺して、指して、射す。