@acidlemonについて
|'-')/ acidlemonです。鎌倉市在住で、鎌倉で働く普通のITエンジニアです。
30年弱住んだ北海道を離れ、鎌倉でまったりぽわぽわしています。
2003冬モデルで気になったヤツを。
薄いっ。軽いっ。
でも、トラックポイントを採用とはいえパームレストないノートPCなんて…。膝の上では使えなさそうですがねぇ。そもそも、これ、うちのヤツよりも薄いわけですが(縦横も約3cmずつ小さい→キーピッチも1mm狭い)、正直なところ、これより薄くなると強度が非常に心配というか、折れそう。いや、折りそう。
ThinkPadといえば、国際標準ともいえるような強度とかがクローズアップされて語られる一方、それは裏返せば重厚ということも表してまして、つまり、重いと。「ThinkPadはたしかに重いが腕が鍛えられるからいいんだ」という話もよく出ますが、正直腕鍛えたければ腕立て伏せでもやって腕鍛えればいいわけで、ノートパソコンが重くてもいい理由にはならんだろう…。
と、ここまでは1、2年前までのイメージだったわけですが、最近のThinkPad(Centrino以降)は昔のThinkPadからみればびっくりするぐらい軽いんですよね(まぁ、周りから見れば普通ぐらいになったという話もありますが)。そんなわけで、1スピンドルサブノートのX40もX31からさらに小さく軽くなってしまい、うちのマシン(やっぱ比較対象はそれかよ)よりも軽いんですよ。
とはいえ、HDD20GBはサブノートにしても少ないなぁ(X505もですね)。そのへんはX505と違ってドッキングステーションで拡張可能なのでその辺毎度IBMはいい仕事してますね(今回小さくなったのでまたウルトラベースが新しくなってますが)。
結局の所、ThinkPadが一番ネックとなるのは値段のような気がする…なんていうのは貧乏学生のつぶやきでしょうか。
あまいものが大好きな私にはたまらないなぁ…。それだけですけども。
ちなみに、ThinkPadってT41とかX40とかR30とかみたいにアルファベット1文字+数字2桁ですけど、なんでこれは20Mなんだろう…と思った人もいるかと思いますが、答えは2000万台→20,000,000台→20メガ台→20Mです。へぇー。
やはり1年経つとマシンの性能って変わるもんですね…。とはいえ、B5のワンスピンドルサブノートは最近あんまりでないし、CPUもクロックだけ見ればほぼ成長が止まってますが、Centrino(というかPentium M+845/855チップセット)で実パフォーマンスが大幅に上がってるらしいですからねぇ…。
最近は家に光を引いたことでマシンを持ち歩くこともなくなったので正直サブノートなんかよりデスクトップマシンが欲しかったりしますが(とにかくリモートデスクトップでがんばる)、やはりPCを持ち歩くという行為には利便性だけでは割り切れないロマンが詰まっているような気がするので(なんだそりゃ)どうしてもB5サブノートの新製品のチェックは欠かせません。
A5サイズになると小さすぎるし(10.4インチでXGAとかは目が疲れそうです)、A4ファイルサイズはなんだこりゃ級にでかいし(ノートのくせに15インチ液晶搭載とか、絶対持ち歩く気無いんじゃないか…)、B5ジャストorB5ファイルサイズぐらいが現実的に考えて一番使いやすいサイズだと思うんですが、B5も2スピンドル化が進んできて1スピンドルのマーケットがなくなってパイの奪い合いみたいになるのは残念だなぁ、と。
ってなわけで、最近マクロをいじってみているわけですが、とりあえず「ん? プラグイン? なにそれ?」ぐらいしかかけないので、せこせことオレ用拡張コマンドとしてひたすら関数を作りまくる。
//ステータスバー切り替え
BOOL SwitchStatusbar(TX* text){
text->fDispStatusbar^=TRUE;
txConfigSet(text);
txFlushMenuCheckAll(text);
txFlush(text);
return TRUE;
}
//右端で折り返し切り替え
BOOL SwitchRightclip(TX* text){
if(text->fSetWidthByWindow){
text->fSetWidthByWindow=FALSE; // 右端を折り返す OFF
text->fWidthInfinity=TRUE; // 折り返ししないON
}else{
text->fSetWidthByWindow=TRUE; // 右端を折り返す ON
text->fWidthInfinity=FALSE; // 折り返ししない OFF
}
txConfigSet(text);
txDispAll(text);
txFlush(text);
return TRUE;
}
とりあえず、特定文字数で折り返すつもりがない人間なので、右端を折り返してないときは折り返ししないにしておかないと気が済みません。
TX* CopyAndNewFrame(TX* text){
if(txSelectGetMode(text)==0){
statprintf("CopyAndNewFrame: 範囲選択されていません");
return NULL;
}
txPrivatePush(text);
TX* NewFrame=textFrameOpen(NULL);
txPrivatePop(NewFrame);
return NewFrame;
}
Beside Bayside過去ログからh3単位で1個ずつdatとして切り出す必要があるので、とりあえず選択範囲を決めたらこれを実行して「コピー→新規EDITOR起動→そこに貼り付け」までをやるマクロ。ちなみに、汎用性を持たせるために新規EDITORのTX* NewFrameを戻して、実際に使うときはさらにtxConfigRead(NewFrame, "HTML文書")
してます。ここまで出来ていればあとはURIをチェックしてF12押して名前つけて保存するだけです。
//WZディレクトリを開く
BOOL OpenWzDirectory(TX* text){
shellExecute(text->szexedir, "open");
return TRUE;
}
この手の関数は標準のTXAPIにありそうだけど探すのが面倒なので自分で作ってしまえ、と。これ書いてて気がついたんですが、WZ ICONのメニューにマクロおいても実行出来ないのね…。マクロ引数のTX* textはNULLでもいいからマクロの実行が出来れば便利なのになぁ…。
//作業ディレクトリをファイルの存在場所にしてShellExcuteする
BOOL ShellExecuteWithDir(const mchar* szFile, const mchar* szOp, const mchar* szCmdline, int nCmdshow){
SHELLEXECUTEINFO sxi;
ZeroMemory(&sxi, sizeof(sxi));
sxi.cbSize=sizeof(sxi);
sxi.lpParameters=szCmdline;
sxi.nShow=nCmdshow;
sxi.lpVerb=szOp;
sxi.lpFile=szFile;
sxi.lpDirectory=szFile;
ShellExecuteEx(&sxi);
return TRUE;
}
WIN32APIのShellExecuteはShellExecuteを実行するプログラムの作業ディレクトリがデフォルトの作業ディレクトリなのでWZから呼び出そうとするとWZのディレクトリでやっちゃうはずなので、バッチファイルとかを実行するときに不便(バッチファイルの中に明示的に作業ディレクトリに移動するように書いておけばいいんだけどさ)。ってことでShellExecuteExで作業ディレクトリも明示した形でアプリケーション実行。SHELLEXECUTEINFO.lpDirectoryはディレクトリじゃなくてファイル自体のパスをつっこんだらそのファイルのあるディレクトリと解釈するのでlpFileとlpDirectoryに同じものつっこんでおけばいいです。
ShellExecuteWithDir("D:\\break.exe", "open", "/?", SW_SHOW)
みたいに呼び出せばいいわけですが、正直、第2引数以降はNULL, NULL, SW_SHOWとかでデフォルト値を指定しておきたいところです。しかしながら、TX-Cでは関数の引数のデフォルト値を指定できないっぽいのでおとなしく汎用性重視の4引数でがんばるぞ、と。
と、適当に駆け足で走ってきましたが、windows.hをインクルードできるんだからCのランタイムも使えるのかと思ってなんとなくstring.hとかをincludeしたらダメだったりしてちょっとがっかり(っていうか、そもそもライブラリディレクトリを自分で指定してないじゃん、オレ)とかおもいつつも、Cランタイム使えなくてもMSVCRT.DLLあたりを呼べばいい話なんですよね。
とまぁ、そろそろこのマクロの深さに気がついてきたような…。しかしながら、_WZ.hにはでてくるけどAPIリファレンスには載ってないもんだから何する関数なのか不明な関数群が多すぎです(ある程度は名前から想像付きますけど)。