2008年12月29日月曜日

我が家の守護神たち



我が家のPCを守る守護神たちです。

左がEXレッドキング。ハンドルネームの由来になったやつです。
右がプレデターです。最近今更のようにはまってます。。

生後7ヶ月の息子が不思議そうに見ています。

ちなみに、昨日急にアクセス数が増えました。何があったんでしょうか。
bloggerのリンクから来ている人が多いですね。更新頻度が高くなってきたので目に触れやすくなったのかな?
役立つ情報がなくてごめんよ。。

Lazarusで検索してきている方がそこそこいますが、気長に待っててください。
いずれまたLazarus関係の更新をします。

Lazarusに関心を持っている人はきっと仲間なので、仲良くなりたいなあとは思いますね。

2008年12月27日土曜日

ちょこっとだけPython

Lazarusの方は会社で実践してみることにしたので、しばらく置いておく。
只今、会社にLinuxPCの持ち込みを申請中。
これが通れば、会社でLazarusを使ってうちの製品をコンパイルできるか(そのままじゃ絶対できないけど)、試してみようと思う。
それで分かったことやおもしろいことがあれば、このブログで公開していこうと思う。公開できる範囲で。

で、趣味でPythonをちょこっとやってみた。

関数も値として扱えるということで、下記のようなコードを書いて実行。


def square(x):
return x*x
def nosquare(x):
return x
x=2
foo = square
print "The square of that number is", foo(x)
square = nosquare
foo = square
print "The square of that number is", foo(x)
print "The square of that number is", square(x)


引数として与えられた値を二乗して返すという単純なもの。
途中で関数の中身を書き換えているのだが。。
結果は下記。

The square of that number is 4
The square of that number is 2
The square of that number is 2


元々定義していたsquareの中身も上書き出来ちゃうのね。
きもいなあ。

これって要するに関数ポインタを隠蔽してるってことなんだよね? きっと。
…っと思い、下記のように少し書き換えて実行。

def square(x):
return x*x
def nosquare(x,y):
return x+y
x=2
y=1
foo = square
print "The square of that number is", foo(x)
square = nosquare
foo = square
print "The square of that number is", foo(x,y)
print "The square of that number is", square(x,y)


結果。

The square of that number is 4
The square of that number is 3
The square of that number is 3


引数と返り値を合わせなくても代入できるところが強力なのかな。
型チェックもゆるいし、なんとなく書くにはいい感じ。楽だ。。
でも、遅そー。。

今日から始めたばかりなので、まだ分からないことばかりだが、ちょっとおもしろい。

2008年12月24日水曜日

ドラゴンボール



どうだ!



どうだあああ!

2008年12月22日月曜日

ロジクールからトラックボール3製品新発売って本当?

http://pc.watch.impress.co.jp/docs/2008/1219/logicool.htm

TM-250ってTrackMan Wheelじゃん。
TM-150ってMarble Mouseじゃん..

もう生産終了だと思って、まさに今日、妥協してこれ買っちゃったよ。
サンワサプライのForce。

あー待てばよかった。



でも、最近トラックボールの新製品発表が多いな。何があったんだろう。
トラックボーラーとしてはうれしい限りだけど。

2008年12月21日日曜日

Linuxのリッチなアニメーション

Introduction to Linuxです。(Linuxを見たことない方向けの記事)

パソコンといえばWinしかさわったことない方向けに、一番わかりやすい動画を紹介します。

下記のようなリッチなアニメーションが、XPがギリギリ動くか動かないかのスペックのPCで余裕で実現できています。



まるでMacOSXや最近のiPod、Vistaのようですよね。

敷居を高く感じている人は、こういうところから親しんでみるのもいいのではないかと思います。

お使いのPCの余ったHDDや、2台め以降のPC、あるいは昔使っていて今は押入れの中にしまったきりになっているPCがもしあれば、ぜひ導入にチャレンジしてみてください。
簡単ですよ。なんたって無料ですし。

Winからの移行でOfficeが使えなくなることを迷っている人も、OpenOfficeはかなりのレベルまできているから安心ですよ、と伝えて置きます。
知らない人のために書いておくと、OpenOfficeというのはMSOfficeライクな(というかほぼそのもの)Officeスイートで、オープンソースソフトウェアとして配布されています。(つまり無料です)
乗り換えてみれば分かりますが、よほどマニアックな関数、マクロを仕込んでいない限り、問題なく使えますよ。

分からないことは日本語フォーラムで質問することもできます。Ubuntuであれば。

興味を持った人はぜひコメントくださいね。

【Ubuntu】起動・終了時のスプラッシュフォームを変更する

Ubuntuを導入後、同じUbuntu系でルック&フィールの違うKubuntuとXubuntuもインストールして遊んでみた。

ログインの度にGNOMEを選んだり(Ubuntu)、KDEを選んだり(Kubuntu)、Xfceを選んだり(Xubuntu)、気分によって変えられるのが気に入ったんだけど、何回か変更を繰り返しているうちに、起動・終了時に表示されるスプラッシュフォームが常にKubuntu固定になっていることに気づいた。。。

Ubuntu日本語フォーラムで質問したところ、30分でそのものずばりな回答をいただけました。
有志によるサポートが厚いのがいいね。ますます気に入ってきました。
僕も早く初心者を脱してフォーラムに貢献できるようになりたいですなあ。

一応、同じ問題で困ってこのサイトにたどり着いた人のために下記に引用しておきます。

$sudo update-alternatives --config usplash-artwork.so

これで現在のスプラッシュフォームの一覧が表示されるので、適切なものを選択

$sudo dpkg-reconfigure linux-image-`uname -r`

その後、このコマンドで変更を適用


尚、同じことをGUIでやりたい場合はSynapticでstartupmanagerをインストールすれば、「Usplashテーマ」というところで設定が可能です。
ただ、このGUIはちょこっと重いので結局コマンドでやった方が早くて簡単かもしれません。
お好みで。

2008年12月20日土曜日

Win32APIをLazarusでコンパイルできるか(1)

Lazarusが快適に動くようになったので、ちょっと実験。

Win32APIを直接コールしまくってるソースをLazarusでコンパイルできるだろうか。。

Delphiプログラマーには有名なここのサイトこのソースをLazarusでコンパイル。



まあ、コンパイルできない。

ここを見ながらUses句を書き換える。。


LazarusとDelphiの主要なユニットの違い

* Windows->Interfaces, LCLIntf, LCLType, LCLProc, VCLGlobals, ...)に置き換えます。

LCLはWindowsに限ったものではないので、DelphiのWin32APIに直接アクセスするためのWindowsユニットは、インターフェースに抽象化されてLCLIntfユニットからアクセスするようになります。覚えておいて頂きたいことは、Lazarusはwin32をエミュレートするのではないので、多くの関数が欠落していたり、Win32と同等な働きをしない関数があります。これらの関数はDelphiとの互換性だけのためにあり、とにかく移植するだけのためにあります。LCLは多くの型を利用し、 LCLTypeやVCLGlobalsを必要とします。LCLProcは、FreeThenNilのようなDelphi5以降で導入された便利ないくつかの関数や、コントロールのばめに余分なアンパーサンドを取り除くDeleteAmpersandsのようなものを含みます。 Interfacesユニットは、適切なwidgetsetを初期化するための.lprファイルをインクルードするために必要です。

* Messages->LMessagesに置き換えます。

Delphiでは、TControlメッセージ(Win32イベントコールバックでは、WM_CALLBACK形式になっています。)とそれらに関連するメッセージはMessageユニットにあります。 LCLでは、これらの型やメッセージ、構造体などの定義は、LMessagesユニットにあります。大抵の場合、WM_MOUSEENTER は LM_MOUSEENTER に、TWMMouse は TLMMouseに、といった具合に、WMをLMに変更されています。


うむ。上手くいかない。

問題は僕自身がWin32APIをあまり理解していないことだなあ。。
VCLばっかり使ってるからな。。
まあいい勉強になると思うので、しばらく格闘してみようと思います。

2008年12月19日金曜日

Lazarusやたら遅い

Lazarusが動くようになり、書き慣れたDelphiの感覚でちょろっとコーディングしてみたのだが、なんかやたら遅い。

Formの上のコンポーネントにフォーカスを合わせるだけで0.5秒くらいかかる。遅すぎるよ。

この原因は何だろう。PCのスペックではないはず。

…っというところでもしやとおもい、ウィンドウのグラフィック効果をOffにしてみた。(下図参照)



これだった。Offにしたらまったく問題ないレベルまでスピードが上がりました。やったね。

Lazarus動きました

結局、synapticを使ってfpcのソースをインストールするのが一番早かったみたい。
Subvirsionをインストールしたり、コマンド打ってソースをダウンロードする必要はなかった。。

しかし、synapticって便利だね。クリック1回で依存関係のあるパッケージを全部まとめてインストールしてくれる。

Eclipseの導入もしたんだけど、Winに導入する時よりずっと簡単だった。本当に1クリックだからね。

2008年12月18日木曜日

mixiとの連携テスト

bloggerからmixiへの連携テスト投稿です。

Lazarus上手くコンパイルできない

文字化けする問題は上手くいかないみたいなので、下記のような簡単なシェルスクリプトを書いて起動することにした。これで英語版で起動が出来るっぽい。
#!/bin/sh

env LANG=C startlazarus
ただ、コンパイルができない。
/tmp/project1.lpr(1,1) Fatal: Can't find unit URIParser used by XMLRead
っていうエラーが出る。

どうもFreePascalのソースをダウンロードできていないと出るらしいが、ちゃんとダウンロードしてるはずなんだがなあ。

ここを参考にしたのだが。
今日はもう遅いから、また明日やってみよう。

Lazarusを入れてみた


最近、自宅でメインにいじっているUbuntuマシンに、Lazarusを入れてみた。

僕は仕事ではDelphiをメインに開発しているので、PascalのRADツールということで使えそうなので入れてみたんだけど、メニューが化けてんジャン。
あれー。これどうすりゃいいの。

The Old New Thing

僕の仕事はパッケージソフトの開発です。

具体的にどんなことをしているかは書けることと書けないことがあるのでおいおい公開していきますが、ざっくりいうと、Raymond ChenのThe Old New Thingみたいな涙ぐましい話(後方互換性にひたすらこだわる泥臭い話)が色々あります。
Windowsほどの大した製品ではないのでスケール感は違いますが。
このサイトは翻訳本がASCIIから出ているので、Windows開発をやっている人や、パッケージ開発(今はやりのSaaSでもいいや)をやっていて過去のユーザーや過去のコードに悩まされている人にはいい励ましになります。ぜひ読んでみてください。

2008年12月16日火曜日

はじめまして

このブログはとあるパッケージソフト開発者が、堂々たるスパゲッティソースや、要求のきっついユーザーや、過去に自分を含む誰かが仕込んだややこしい(そして多分誤った仕様の)設定に悩まされながら、下位バージョンとの互換性を保ちつつ、新機能を仕込みつつ、リファクタリングをしつつ、カスタマサポートに忙殺されつつ、日々感じたことなどを記述していくものである。

みたいなね。