2007年3月24日
マルチコアCPUのための並列プログラミング 読了
2/20の日記で書いた本を読み終わりました。途中、忙しくて中断したりもしましたが、知っている内容も多かったので最後までサクサク読めました。実際に試したりはしていないので、あとでやってみたいと思います。実は、高速化したい画像処理プログラムがあるのです(^^;)
また、前回はMac OS X向けのソースがなくて残念みたいなことを書きましたが、考えてみればMac OS XではPOSIXスレッドが使えるので(というかそっちがメイン?)この本のLinux向けのソースはMacでもほとんど通用するはずですね。
ちなみに、個人的にはまだPOSIXスレッドを使ったことがありません。Mac OS 7.5で採用された古のスレッドマネージャーをいまだに使っています。スレッドマネージャーはMac OS Xで使うと全てコオペレーティブなスレッドになってしまうので、将来プリエンプティブなスレッドが必要なときはPOSIXスレッドを使うことになるはずですが、実際にはあまり機会がありません。コオペレーティブで十分だし、排他制御も楽ですからね(^^;) ただ、マルチCPU(マルチコアCPU)での高速化を狙うなら、コオペレーティブじゃだめかもしれませんね。これも実際に試して確認してみたいです。
2007年3月20日
.plistファイルってバイナリだっけ?
Mac OS XでOSやアプリケーションの設定などを記録するプロパティリスト(.plist)ファイルって、以前はXMLだったのに、いつの間にかバイナリファイルになっていますね。Xcodeがインストールされた環境にはProperty List Editorが入っていて、いつもそれで開いていたので今まで気づきませんでした。調べてみると10.4からみたいですね。そんな前からだったのか(^^;)
これって何で変更したんですかね。テキストファイルのほうが客先でデバッグするときとか便利なのに。これからはUSBメモリにProperty List Editorを入れて持ち歩くようにしないといけませんね(笑)
2007年3月13日
Mighty Mouse Back and Forward
1/14の日記で書いたプログラムをリリースしました。自分用のカスタマイズ機能は外して「戻る」「進む」のみ行える汎用版としました。もう長いこと使っていますが、カーソルの位置で「戻る」と「進む」が使い分けられるというのは慣れると非常に便利です。
プログラムもドキュメントもかなり前からできていたのですが、アイコンが描けずになかなかリリースできませんでした(^^;) 仕方ないので暫定アイコンのまま、PR版として出すことにしました。ベータ版でも良かったんですが、ベータというと未完成で不安定な印象があるため避けました。プログラムの動作については問題ない(問題が出るほど複雑なシロモノじゃない(^^;) )と思います。
それにしてもMac OS Xになってアイコンはいつも苦労しますね。128x128のフルカラーなんて、素人の手には余ります。誰か描いてくださいとここで募集する手もあるんですが、それをやっちゃうと、もし私がその絵を気に入らなかったとき非常に断りづらいという問題があるんですよね。ご厚意で描いてくださったものに「気に入らないので使いません」とはなかなか言えませんからね(^^;)
2007年3月 1日
PSP Movie Utility 1.0の転送エラーについて
昨年3/29の日記へのコメントで、何人かのユーザーさんから、PSP Movie Utilityで正常にコピーができないという質問がありました。今までは私の環境で全く再現せず原因が分からなかったのですが、先日、あるユーザーさんにご協力いただいて調べたところ、原因をつきとめることができました。少し混み入った話になるので、ここにまとめて書いておきたいと思います。
結論から言うと、ムービーファイルの形式によってコピーできないものがあるようです。そのユーザーさんはムービーのエンコードにiSquintを使用されていたのですが、これはどうやら汎用の(iPod用の?)MPEGファイルを作成するソフトで(特にPSP用ということではないため)PSP Movie Utilityで正常にファイルの種類(MEPG-4かAVCか)の判別が行えず、転送に失敗していました。
種類が判別できるように修正するか、ユーザーに選択してもらうようにすれば解決と思ったのですが、調べていて意外な事実が分かりました。このソフトで作られたムービーはVIDEOフォルダでは再生可能ですが、MP_ROOTフォルダでは再生できないのです。これでは例え判別に成功したとしても意味がありません。PSP Movie Utility側でどうにかできる問題ではなくなってしまいました。
上記の内容を補足するために、少し歴史的な話を書きますが、PSPでは元々MP_ROOTというフォルダの中に、小難しいルールに基づいてムービーファイルをコピーする必要がありました。種類がMPEG-4かAVCかによってもコピー先が違うため、判別してコピーしなければなりませんでした。
PSP Movie Utility 1.0の公開後しばらくして、PSPファームウェア2.8がリリースされました。このバージョンではムービーの保存先として新たにVIDEOフォルダができました。今までのMP_ROOTフォルダとは違い、どんな種類のムービーファイルも好きな名前でコピーするだけでOKとなりました。ただ、VIDEOフォルダには1つ残念な仕様があります。サムネイルファイルに対応していないのです。
サムネイル作成機能はPSP Movie Utilityのウリの1つなので、今後どう対応していくか考えてみました。まず、PSP Movie UtilityでMPEG-4かAVCか判別できたファイルは、従来どおりMP_ROOTフォルダにコピーします。判別できなかったものについては、ユーザーに確認を出した上で、VIDEOフォルダにコピーします。
実際、VIDEOフォルダは便利ですし、再生できるムービーの種類も多いようなので、特にサムネイルが必要ないという方は、PSP Movie Utilityは使わず、手動でVIDEOフォルダにコピーすることをお勧めします。そのほうが手っ取り早いと思います。逆に、やはりサムネイルが欲しいという方は、この際ムービーファイルの作成に使用するソフトをPSP用の動画が作れるものに乗り換えてはいかがでしょうか。私は携帯動画変換ちゃんを愛用しています。
・3月28日 追記
本日、PSPファームウエア3.30がリリースされ、VIDEOフォルダもサムネイルに対応しました。PSP Movie Utilityで作られたサムネイルファイルも、拡張子を.THMから.JPGに変更することで有効になるようです。PSP Movie Utilityの今後の方針は改めて考え直したいと思っています。
関連リンク
・PSP システムソフトウェア3.30 (2007年03月28日)
・PSP Movie Utility 開発終了 (2007年04月01日)
2007年2月20日
マルチコアCPUのための並列プログラミング
「マルチコアCPUのための並列プログラミング」という本を買いました。「最近コンピューターの本を買ってないなぁ」と思いながら本屋を眺めていて、目に付いたのがこれでした。衝動買いです(^^;)
いちおう大雑把な知識はあったつもりですが、読めば得られるものも少なからずあるでしょう。うちも先日WindowsマシンがCore 2 Duoになって、普段よく使うマシンは全てマルチCPUもしくはマルチコアCPUになりました。せっかくなので、どんな処理にどれだけ効果があるのか実感してみたいですね。
ちょっとだけ読んでみましたが、かなり丁寧に説明してあって難しい本ではありません。サクサク読み進められて良いですね。ソースはWindows(Win32 API)とLinux用がそれぞれ載っています。Mac OS Xがないのが残念ですが、まあ仕方ないか(笑)
関連リンク
・マルチコアCPUのための並列プログラミング 読了 (2007年03月24日)
2007年1月14日
Mighty Mouseをちょっとだけ使いやすく
私はメインマシンのPower Mac G5ではマイクロソフトのIntelliMouse Explorerを、サブマシンのMacBookではアップルのワイヤレス Mighty Mouseを使用しています。後から買ったMight Mouseの操作感はかなり気に入っていて、G5用にもワイヤードのタイプを買おうかと思っているのですが、Mighty MouseのドライバはMSのドライバに比べると機能的に不満な点があります。特に、サイドボタンにWebブラウザの「戻る」などの操作を割り当てられないのが不便です。他は我慢できますが、これだけは慣れると手放せません。
シェアウェアの汎用マウスドライバなどを使えばそういったことも可能になるようですが、このためだけにドライバごと入れ替えるというのは少し嫌な感じがしています。そこで、現在の純正ドライバにある、サイドボタンを押したときに任意のアプリケーションを起動する機能を使って、同じことが実現できないか実験してみました。ブラウザの「戻る」はショートカットキーでも操作できるので、起動したら cmd+[ のキーストロークを送信して終了するプログラムを作れば実現できそうです。
さっそくやってみましたが、ちゃんと期待どおり動きます。最初はアプリケーションを起動する方法だとタイムラグがあってレスポンスが悪いのではないかと心配でしたが、実用上まったく問題ありません。サイドボタンを押せばすぐに「戻る」が実行されます。
面白くなってきたので、少し高機能化してみました。まず、マウスカーソルを画面の右のほうに寄せて押したときには「戻る」ではなく「進む」になるようにしてみました。これは便利! もうMSのマウスはいらないかもしれません(^^;)
更に、アプリケーション毎に別々の処理を割り当てられるようにしました。例えばMail.appでは上矢印キーを割り当てました。私はメールの一覧は新しいものが上になるようソートしているので、これで未読メールを古いほうから順々に閲覧できるようになります。例えばメーリングリストを斜め読みするときなどに重宝します。
また、Finderには cmd+F1 を割り当てました。開いているウィンドウを順々に最前面に出すショートカットです。これも便利。アイデア次第ではいろいろ便利に使えそうですね。
ただ、現状のプログラムはまだ自分で使うことしか考えていないので、設定変更などはプログラムのソースを書き換えてビルドし直さなければなりません(笑) 設定ファイルを外部に持って、GUIで設定できるような普通のアプリケーションとして仕上げるのは結構大変ですよね。ここまでのプログラムは1時間くらいで作れましたが、この先そういった設定画面を作るとなると、その何倍、もしくは何十倍もの時間がかかるかもしれません。便利なので公開したいのですが、どうしたものですかね。とりあえず「戻る」「進む」専用版を出そうかな。
関連リンク
・Mighty Mouse Back and Forward (2007年03月13日)
2007年1月 6日
プログラムからシステム環境設定を開く
ちょっと前に、自作のプログラムからシステム環境設定を開く処理を実装しました。役に立ちそうなのでメモがわりに書いておきたいと思います。なお、これはCarbon用です。Cocoaは分かりません(^^;)
まず、単純に「システム環境設定.app」を開く方法。普通にアプリケーションとしてラウンチするだけです。エラー処理などは省いてあります。
OSStatus result; CFURLRef url; url = CFURLCreateWithFileSystemPath( kCFAllocatorDefault, CFSTR( "/Applications/System Preferences.app" ), kCFURLPOSIXPathStyle, false ); result = LSOpenCFURLRef( url, NULL );
こんな感じです。試した限り、Mac OS X 10.0以降、全てのOSバージョンで動作しました。
次に、直接システム環境設定の中身のパネルを開く方法。これも同じやり方で、パネルを直接ラウンチしています。正しい方法なのかどうか分かりませんが、試した限りでは問題なさそうです。以下は“ディスプレイ”パネルを開く例です。
OSStatus result; CFURLRef url; long version; result = Gestalt( gestaltSystemVersion, &version ); if( version < 0x1010 ) { url = CFURLCreateWithFileSystemPath( kCFAllocatorDefault, CFSTR( "/System/Library/Preferences/Displays.preference" ), kCFURLPOSIXPathStyle, false ); } else { url = CFURLCreateWithFileSystemPath( kCFAllocatorDefault, CFSTR( "/System/Library/PreferencePanes/Displays.prefPane" ), kCFURLPOSIXPathStyle, false ); } result = LSOpenCFURLRef( url, NULL );
こっちはOSバージョンによって少し処理が変わります。10.1以降は同じですが、10.0.xだけはパネルの置き場所や名前が違うので、対応するなら切り分ける必要があります。パネルの名前は10.0環境を持っていないと調べられないかもしれませんね。リクエストがあれば列挙しますが、もう必要ないかな(^^;)
また、システム標準のパネル以外は他の場所に保存されている可能性もありますね。それについては割愛します。
それにしても、Mac OS 9までに比べて、こういうの作るのは楽になりましたね。
2007年1月 4日
PSP Movie Utility 急にどうした?
昨年3月にPSP Movie Utilityというフリーウェアをリリースしました。ダウンロード数はそれなりにあったのですが、実際に感想や要望ということになると、ほとんど反応がありませんでした。あまり使われていないのかなと思っていたのですが、ここ1週間ほどの短期間で複数の方から質問や要望などのコメントが付いています。これは急にどうしたことでしょう?(^^;) どこかのサイトからリンクでもされたのかと思ったのですが、リファラーを見る限りそういうわけではなさそうです。雑誌か何かに載ったりしたのでしょうか。それとも正月休みで、新しいことに挑戦する方が増えてるのかな?(^^;)
予告していた追加機能も暇を見つけては実装しているのですが、ちょっと欲張りすぎてしまって、なかなかリリースできずにいます。不具合もいくつか見つかっているので、今やってる機能は後回しにして、近いうちに次のバージョンを出そうかなとも思ってます。やはり反応が多いとやる気が出ますよね(笑)
関連リンク
・PSP Movie Utility 1.0 (2006年03月29日)
2006年10月11日
PDFで保存するプログラム
私は仕事で画像処理のプログラムを作ることが多いのですが、先日あるアプリの追加機能として「画像を複数ページのPDFとして保存することは可能か」という問い合わせを受けました。PDFを開くアプリは作ったことがあるけど、保存するほうはやったことがありません。でもきっとOS側にAPIが用意されているだろうと思って調べてみると、予想以上に簡単そうです。もちろん複数ページのPDFもOKです。これって結構、夢が広がりますよね(^^;)
実は個人的にも以前から、単ページのPDFを複数ページのPDFにまとめるソフトが欲しいなと思っていました。例えばMac OS Xでは、どんなアプリで作った文書も印刷が可能ならPDF化することができます。これは他人に資料を渡すときに凄く便利なんですが、残念ながら複数ページのPDFにはできません。(長い文書が勝手に複数ページに分けられることはある)シェアウェアならそういうツールもあるようですが、お金を払ってまで欲しいわけでもないんですよね(^^;)
単純に、ドラッグ&ドロップしたPDFを名前順にマージするだけのプログラムならGUIも必要ないし、わりとすぐに作れそうです。時間のあるときにやってみようかな。自由にページ順を指定できたらとか言い出すと大変ですけどね(^^;)
2006年10月 5日
CodeWarrior ML 閉鎖
CodeWarrior メーリングリストが閉鎖されるそうですね。一時期は単に開発環境のMLというだけでなく、Macプログラミングの話題全般を扱う場として貴重な存在でした。私は何度か投稿したことがあるくらいの、ほとんどROM(Read Only Member)・・・いや、読んですらいなかった時期もありますが、それなりにお世話になったように思います。
調べてみると、私がこのMLに参加したのは95年の11月です。いやあ、11年ですか。歳を取るわけだよなぁ(笑)
2006年8月23日
メタル調に似合うボタン
最近やっとXcodeでの開発にも慣れてきて、GUIもInterface Builderで作るようになってきたのですが、1つだけ不満があります。以前にもちょっと書きましたが、ウィンドウをメタル調にした場合、それに似合うボタンがないことです。まあ、リソースで作ったって同じなんですが、Aquaのボタンは合わないんですよね。例えばFinderやSafari、Mailなどのアップル製アプリも独自のボタンデザインになっています。こういうのが基本パーツとして欲しいですね。とはいえ、今から用意してもらっても動作環境が10.5以上とかいうんじゃ、当分は使えないけど・・・。
Cocoaならできるのかなと思ってアップル製のアプリをいくつか調べてみると、なんとボタンは1つ1つ画像で用意されています。それぞれ通常時、押したとき、非アクティブの3枚の絵が入っていました。プログラムで描画までやっているわけじゃないんですね。そういえばアプリによってデザインも違うし、統一感もありません。
こんな力業でいいならCarbonでも全然OKですが、逆に素材を用意するのが大変。絵心のない私では同じような綺麗なデザインを作るのは難しいです。マネして描こうにもコレはちょっと無理。こういうのって3D CGソフトとかで作るのでしょうか? フルカラーの巨大なアイコンもそうだけど、Mac OS Xになっていろんな面で敷居が高くなりましたね(^^;)
2006年5月31日
Classic版シェアウェアのフリーウェア化 その後
一昨年6/9の日記のその後です。あれから2年もたってしまいましたが、ついに古いCodeWarriorのCD-ROMを引っ張り出してきました(^^;) ゆきさんにいただいたコメントどおり、CodeWarrior 6.0が最後の68K対応バージョンでした。
CW6から68K関連のプラグインやライブラリをCW9(CW10は買ってない)にコピーしたところ、ちゃんとCW9のIDEでビルドすることができました。唯一、MacHeaders.hはCW6のものに差し替えましたが、他はファイルを追加するだけなので、PowerPC環境のほうへの悪影響もないと思います。まだテストしてないので68Kマシンでちゃんと動くかどうかは分かりませんが、最新のバージョンで開発できるのは嬉しいですね。
Classic版シェアウェアのフリーウェア化は本当にやろうと思っています。もう送金も全くないですしね。宣伝も必要ないので、こっそり直して、こっそり公開しようかと(^^;)
2006年3月30日
Mac OS X付属の計算機
びっくりしたのが,MacOS X標準の計算機。
いつの間にかプログラマモードがついてるのね。
10.3にはなかったのでTigerからなんかな。
私も知りませんでした(^^;) 試してみましたが、凄い便利ですね。基数変換だけでなく、文字コードを入れるとその文字まで表示できます。さすがにShift JISは無理みたいですが、Unicodeなら日本語もちゃんと出ます。2進数が常に出ているのも良いですね。なかなか痒いところに手が届く計算機じゃないでしょうか。
今まではHexCalculatorというウィジェットを使っていたのですが、使用頻度が減りそうです(^^;)
2006年3月29日
PSP Movie Utility 1.0
ここでも何度か予告していたPSPへ動画を転送するプログラム、PSP Movie Utilityを公開しました。最初はベータ版として公開するつもりだったのですが、大きな問題はなさそうなので正式版としました。不具合など見つけられたらご一報いただけると嬉しいです。アプリの名前やアイコンも仮のつもりだったのにノーアイデアでそのままです。ま、これはいつものことですが(^^;)
このバージョンで実装できなかった機能もたくさんあります。今のところ将来のバージョンで対応したいと思っているのは以下の項目です。必ず作ると断言はできませんが、気分が乗ったもの(自分が欲しい機能)からやっていきたいと思っています。
- PSPが接続されたときにPSP Movie Utilityを自動的に起動できるようにする
- ファイルリストにエイリアスファイルをドラッグ&ドロップできるようにする
- PSP側に同じタイトルのムービーが存在した場合に上書きできるようにする
- サムネイル作成時にキーストローク(矢印キーなど)でフレーム移動ができるようにする
- リストのダブルクリックで実行される処理を選択可能にする(*1)
- PSP側のファイルリストを作り削除などが行えるようにする (*2)
*1 現状でも初期設定ファイルの項目doubleClickActionを書き換えれば可能。値は、1=何もしない、2=開く、3=サムネイル作成。デフォルトは2です。この説明で理解できない方はやらないほうが安全です(^^;)
*2 個人的にはPSP側で削除するのであまり必要性を感じません。要望が多ければ・・・。
他に要望やアイデアなどあれば、ぜひコメントしてください。
ちなみに、このプログラムを作ることになった経緯は以下のリンクからたどれます。いただいたコメントまで含めると全て読むのは大変だと思いますが(^^;)
PSPで動画再生 その1 (2006年02月03日)
2006年3月 4日
WeblocToURL 1.1
WeblocToURLのバージョン1.1をリリースしました。IntelベースのMacにネイティブ対応したバージョン(Universalアプリケーション)です。機能などに変更はありません。
なお、最近のMac(10.4以降?)にはStuffIt Expanderが付属していないようなので、解凍するには事前に入手(無料です)してインストールしていただく必要があります。 今後、配布形態の変更も検討したいと思っています。Mac OS X 10.0から最新のIntelベースMacまで、どの環境でも不便がなく効率の良い配布形態ってないですかね。互換性だけ考えれば無圧縮のディスクイメージなんですが、さすがにそれは(^^;)
・2009年10月18日 追記
Stuffit形式ではなくディスクイメージ形式で配布するように変更しました。
2006年2月22日
ドラッグ&ドロップとソート順
昨日の日記でも書いたとおり、このところPSPにファイルを転送するプログラムを作っているのですが、その作業中に1つ気になることを見つけました。Finderから複数のファイルをドラッグ&ドロップで開いたときに得られるファイルリストのソート順がバラバラなのです。以前は少なくともこんなバラバラではなかったような気がするんですが、私の気のせいでしょうか?(^^;)
今回のアプリでは連番を振りながらPSPにコピーする必要がある(PSP上ではその番号順で表示される)ので、これでは問題です。自分でソートするように修正するのはたいした手間ではありませんが(実際もうやってしまった)過去に作ったアプリケーションの動作が気になります。ソート順に依存するプログラムはなかったように思いますが、ここまでバラバラなのは格好悪いですよね。OSのバージョンによって微妙に違うのかもしれませんし、時間があるときにMac OS 9くらいまでさかのぼって調べてみたいと思います。
それにしても、いま私は10.4で開発しているわけですが、これを古いOSに持って行ってテストすると、細かい問題(違い)がいっぱい出ますね。特に、メタル調のウィンドウを10.2で見たら背景が真っ白だったのにはがっかりでした(^^;) 例のアクアの縞々になるかと思ったんですが・・・。テストは必須ですね。
2006年2月14日
FSFileOperation
Mac OS XのCarbon APIを使ったプログラミングでファイルコピーなどを行う場合、アップルが提供しているMoreFilesXやFSCopyObjectなどを使うのが定番ですが、先日FSFileOperationというサンプルプログラムがあるのを見つけました。どうやらMac OS X 10.4では新しいファイル処理の(?)ルーチンが追加されていて、それを利用したもののようです。
さっそく試してみましたが、シンプルで実装しやすいし非同期コピーなども簡単に実現できます。前述の2つより使いやすいですね。ただ、残念なのはやはりMac OS X 10.4以降でしか動作しない(らしい)こと。ドキュメントがほとんどないので簡単に試した限りですが、MacOSX10.4u.sdkより古いSDKではコンパイルも通りませんでした。さすがに現時点で作るアプリケーションの動作環境が10.4以降というわけにはいかないので、しばらく熟成ですね(笑)
2006年2月12日
'STR#'リソースからLocalizable.stringsへ
Macのプログラミングでは昔から、アプリケーションの中で使用する文字列を'STR#'リソースなどに書いておいて、それを読み込んで使うのが一般的でした。この方法は今でも有効ですし、Mac OS 9以前のOSをサポートするにはまだまだ必要ですが、Mac OS Xのみの新しいプロジェクトでは、そろそろリソースは廃止したいと考えています。いや、以前から考えていたんですが、面倒でなかなかその気にならなかたっというのが本当のところです(^^;)
先日、ついに重い腰を上げてやってみました。やり方はInside Mac OS X: System Overview(←PDFです)というドキュメントに詳しく書いてありますが、覚え書きを兼ねてまとめておきたいと思います。
Mac OS Xでは、アプリケーションのパッケージ(バンドル)の中のLocalizable.stringsファイルを使うのが定石のようです。ファイルの構造も上記のドキュメントに書いてあります。Carbonアプリケーションの場合、このファイルから読み込むにはCFCopyLocalizedString()というAPIを使います。CFString関連の処理は個人的にまだ馴染めないものが多いのですが、とりあえず読み込むだけなら簡単ですね。ただ、この関数の第2引数の意味はよく分かりません。NULLにしておいて問題ないようですが、どういう用途で使うんだろう?(^^;)
また、Localizable.stringsから読み込んだ文字列はCFStringになるので、実際にその文字列を使用する部分も手直しが必要です。CFStringをPascal文字列に変換して使うのでは芸がなさすぎるので、ここもCFStringのまま使用するようにしたいものです。いちばん多いのはエラーメッセージなどのアラート表示ですが、これは従来のStandardAlert()のかわりに、CreateStandardAlert()とRunStandardAlert()のペアを使えばOKです。パラメーターなどもほとんどそのまま使えるので簡単ですね。試してはいませんが、CreateStandardSheet()というシートウィンドウタイプもあるようです。
こういう古いやり方をやっている部分は他にもまだまだあると思うので、徐々に新しいやり方を覚えていきたいですね。1/19の日記で書いた警告も減らしたいし(^^;)
2006年2月 1日
MAMP
先日、PHPを覚えようと書籍を購入したわけですが、どうせならMacでやりたいと思って情報収集していたところ、MAMPというソフトウェアを見つけました。MAMPとは“Macintosh, Apache, Mysql, PHP”の略だそうで、つまりよくあるソフトウェア集ですね。ただ、付属のツールで各ソフトをまとめて起動したり終了したりできて、これがなかなか良くできています。最近あまり見なくなった、とてもMacらしいソフトだなと感じました。気に入ったので、これでやっていきたいと思います。何かを学ぼうとしたときに意外とこういうのがモチベーションになったりしますよね(^^;)
2006年1月30日
はじめてのPHP5プログラミング 基本編
本屋でコンピュータ書籍のコーナーを眺めていたら、ふと「PHPでも覚えようかな」と思いたって、入門書を買ってきました。あまりコンピュータ書籍が多くない本屋でしたが、それでもさすがに人気の言語ですね、選択肢は5冊くらいありました。ざっと中身をチェックして「はじめてのPHP5プログラミング 基本編」という本にしました。安かったというのも決め手の1つです(^^;)
ホントはプログラミングの経験者向けの、要点だけを押さえたような本があると良かったんですが、まあ仕事じゃないので楽しみながらのんびり読もうと思っています。でも新しいものを覚えても実際に使わないと身に付かないし、忘れちゃうんですよね。使うネタを考えねば・・・。
ページ: << < 1 2 3 4 5 6 7 > >>