投稿

2009の投稿を表示しています

さよなら2009

イメージ
年末は雪国の実家でコーディング。 *MFC*   MFCにどっぷりつかったSMTP,POP3を低水準関数への移行とリファクタリング。  理由はセキュリティ強化のため。 *さらばソースセーフ,こんにちはギット*    会社のソース管理はGitへ移行開始した。    いつも触っているコード(少なめに見てコード・ファイル数600程度、50万行)は移行終了した。 ただし、Gitは日本語に弱いのが欠点。 コード以外のファイルはVSSを使い続ける。 *職業病対策*   プログラマの職業病ともいえる運動不足のため、登山やランニングをはじめてもう5年以上になるが、忙しいとなかなかできないという欠点がある。 そこで立ったままプログラミング出来る机を探している。       

Ubuntu 8.04 LTS SMTP Authの設定メモ

ubuntu 8.04 LTSの設定 https://help.ubuntu.com/8.04/serverguide/C/index.html postfixの項目で多少古くなっている部分があるが、 注意深く読みながら設定すると動作する。 問題があった場合、どこか勘違いしている可能性が高い。 dovecotのSMTP Authの設定 http://wiki.dovecot.org/HowTo/CRAM-MD5?action=show&redirect=CRAM-MD5

構文解析器(パーサー/Parser)の生成

ボクが構文解析器を一番使うのは、自作のアプリにマクロ言語機能を組み込みたいときである。 いままではC++で作成してきたが、Javaがenumやジェネリック機能などを追加してきたのとコンピュータ全体のパフォーマンス上がりVM上でもC++並みに使える環境となってきた(うれしいことにfor eachも追加)。 そこでマクロ機能をJAVAへ移植しようと思っている。 そのためJAVAの構文解析器を調べたところ、以下のものがヒットした。  JavaCC/Java Sable ついでにC/C++では。。。 boost: s pirit 古いのものでは yacc/lex などがある。

JAVAとメモリリーク

C++と違って、JAVAはメモリ管理をしており、自動ガーベッジコレクションをするので起きないと思っていましたが、そんなことはありません。 ハンドル先の廃棄などで簡単に起きます。 そして、自分で管理しないぶん、発見が非常に難しい。。。 それを警戒しなければなりません。

Android Dev Phone 1を注文

遅まきながら、Android Dev Phone1を注文。 今は2種類が発売されており、Phone2というのもある。が、 どうも開発するものにとっては「1」のほうが、キーボードがあって何かと便利らしい。 尚、わざわざ1年前に登場したものを買わず、新しいソニエリの登場を待って買えばいいのでは、と思うかもしれませんが、実は一番始めに登場した機種というのは互換性を検証するのにとても重要なのです。 これは過去に任天堂の開発をしていた教訓なのです。例えば初代ファミコンとはいえ、実はいくつかの内部バージョンがあり、テスト時には、その一番古いもので動作確認をしなければリリース出来なかったのです。そのため、それを探すのに苦心していたことがあったのですw

乱数を発生する関数を疑え!

そして、簡単なループでテストするべし。

GAE For J,Androidのために読んでおきたい本

Effective JAVA 第2版 Google Androidプログラミング入門

Eclipseメモ

便利機能メモ VisualStadio2005で欲しかった機能は、Eclipseにはほぼ存在。 Link with Editorボタン Navigate>Go to>Resource... VS2005にもあるのかもしれないが、何度探してもみつからない。   古いバージョンにはあったので、その気になれば見つかるのかもしれないが。。。

MacOSXキーストロークを表示

MacOSXのキーストロークを表示するツール KeyCastr なかなか便利。

GAEのレコード作成時にschema version

Google App Engineのバージョンアップに備え,Schema Versionを作っておくのは重要 その他、 1レコードは1M。 BlobStore 50MB Text 無限データ長さだが検索対象にはならない。 slim3はなかなか便利である。 MacOSX10.5.* ではバージョンがちょと古いため、Eclipse3.5 (Galileo)の設定に苦労する #とある勉強会で教えていただきました。

VSSをanalyze

Visual Soucesafeのメンテ analyze -D -F -V4 path で行う。 推奨では1ヶ月に一度となっているが、 2ヶ月に1度のペース。 しばらく日本語ファイル名などの事務的なファイルやデザイナーのファイルはVSSで管理する予定なので疎かにできない。 

MacOSXにDjango

ボクは開発には、Windows, MacOSX, Ubuntuを使っているが、 出来るだけ環境を同じにすることを心得ている。 ただでさえ、違うことが多いので混乱を少しでも防ぐためである。 というわけで先日、Ubuntuに入れたDjangoをMacOSX10.5.8にインストールした。 Djangoはスムーズにインストールできたのだが、その準備にMacPortをインストールするするほうが手間がかかった。 なお、日本語サイトにあるインストール方法よりも本家のほうが新しいのでそちらを利用することを薦める。 なお、ついでにgeditをMacPortを使ってインストールした。

Visual Studio2005/2008にGit plugin

Git用の便利なプラグイン。 Exploreの拡張もある。   http://sourceforge.net/projects/gitextensions/ なお、この中には。。。 KDiff3 msysgit 1.6.5.1(20091022)  が含まれる。

Typepad motion APIs

six-apartの新しいブログシステムはマイクロブログ、 Typepad Motion 。 そのAPIはAJAXなどでメジャーになったJSONであり、atomやxml-rpcよりも、標準的なインターフェースになったことになる。 とりあえず、そのためパーサー、json spriteを自分のソフトウェアに組み込むことにした。  JSON sprite は boost:sprite を利用した高機能なパーサーであるらしい、unicodeやマルチスレッドにも対応しているのが選択理由である。 とりあえず使ってみて採用するかを決める予定。

UbuntuにDjango

まずは現在Ubuntu9.10にインストールされているpythonのバージョン Python 2.6.4 (r264:75706, Nov  2 2009, 14:38:03) であった。気がつかなかったがUbuntu9.10リリース日よりも新しいバージョンに、 アップデートされていた。 Ver2.5以降。したがってSqliteが入っているため、このままでDB機能は使える。 Djangoは...そこはubuntu。 Debianのものを使えるのでー sudo apt-get install python-django とする。これでインストール終了。

左クリックでターミナル起動

sudo apt-get install nautilus-open-terminalによってインストールできる。 使い方はWindowsのDos prompt hereとほぼ同じ。
Typepadが「T ypepad Motion 」を始めた。 短いブログで、今まで以上に気軽にポストできることを狙ったものだ。

コード管理はgitへ

コード管理は年末にかけてgitへ移行することとした。 いままではVSS中心であったがクラウドコンピューティングへ軸足が移ってきたためである。 なお、ソースコード以外は多くの日本語ファイル名が存在するため、しばらくはVSSを使い、 gitのUTF-8が個人的にロバストと感じたら、そちらも移行する予定である。 ただ、ソフトウェアエンジニア以外のスタッフにgitになれてもらうのに少々時間がかかりそうである。 git

本日のChromiumOS

10日経過したので、新しくコンパイルし直した。 Chrome 4.0.268.0 (前回:4.0.261.0) Linuxカーネル 2.6.31.4 パッと使ってみての気がついたことを書く。 Chromeのテーマが変更可能。 アプリケーションのショートカットをディスクトップやアプリケーションメニューにおける。が、まだ何もおきない。 他のOS Chormeと同じくExtensionsが使える。 MaxOSXやLinuxでは使えないBookマークシンクが使える(これは前回から) Under the Hood(高度な設定) Downloadのフォルダ名が変更 Chromos Web Contentの設定で日本語が選択可能に。目立った変化はない。 オフラインは他のOSのChromeと同じく使えない。  

Google Chrome For MacOSX

Google Chrome For MacOSがBeta版(4.0.249.30)になった。 2週間ほど前から開発版を使っていた。 やはり、BookMark Syncが見当たらない(?)   今日は(といってももう4:40*)だが、 Win用ソフトの大幅な設計のインプリメント終了。 ��年ぶりの改良だった。  朝からDEBUGのスタート予定。 ちょと無理しすぎかも。。。 最新のChromeOSの日本語入力デモは ココ (googleから)

Ubuntu9.10,Google App Engine Plug-ins,Eclipse Libstdc++6非対応

最新のUbuntu9.10で、Google App Engine PluginsをEclipse3.5でインストールできなかった。 Sun JDKもlibstdc++5を使うため、9.10では6にかわったためbinファイルを実行することが出来なかった。 もう少し、待つしかないのだろうか?

Chromium OSで日本語入力が可能に

イメージ
12月1日のビルド(ChromiumOS 2.6.31.4)の詳細を調査したところ、 日本語が入力可能になっていました。 ctrl+alt+tでターミナルを開き、 ibus-setupを実行するとIMの設定ウインドウが表示されます。 Input methdタブでJapaneseを選びAnthyを選択。 +Addボタンを押せばOKです。 この操作以後、再起動しても日本語入力がONになっています。 尚、ロケールなどを日本語にすれば、はじめからONになっている可能性がありますが、 そこまで確かめていません。 ついでですが、日本語キーボードは、.bashrcに以下の行を追加すれば、 変更可能ですが毎回ターミナルを開かなければなりません。 setxkbmap -rules xfree86 -model jp106 -layout jp 恐らく、OS-Imageを作成する前に/etc内でX-Windowsを日本語キーボードに設定すれば、 動作すると思います。 暇なときに確かめる予定です。 うまく動作した方がいらっしゃいましたら教えてください。 追記   この サイト に日本語キーボード設定方法がありました。 ありがとう。

Google Chrome Source code V8の意味

Google Chromiumのソースコードを散歩しているとよくみかけるV8というフォルダ。 V8 JavaScript Engineのことらしい。 C++でかかれたオープンソースのJavaScriptエンジンになる。 参考リンク: http://code.google.com/p/v8/ また、ついでに書いておくが、gypという拡張子がついたファイルはプロジェクトファイルを生成するPython  data structerのスクリプト(?)のようだ。 Mac用Xcode, Windows用VisualStudio,Linux用SConsのプロジェクトファイルを生成する。 Xcode .pbxproj Visual Studio .vcproj, .sln Linux SCons .scons 参考リンク: http://code.google.com/p/gyp/

Chromium OS 本日のビルド

12月になったのでgclient syncしたものをビルドしたので、 そのメモ的なポストです。 カッコは公開日のリポジトリからのバージョン。 Chromium OS 2.6.31.4 (2.6.30) Chromium Browser  4.0.261.0 (4.0.253) ./build_chrom.shがerrorのため、バイナリをダウンロードしているので、2,3日古い。 ブラウザのBookmark同期が成功した(以前はうまくいかなかった) reviewでもあったように日本語入力はまだできず。 出来ました。 ctrl+alt+tでターミナルをオープンし、ibus-setupを実行。 Input methdタブでJapaneseを選びAnthyを選択。 +Addボタンを押せばOKです。 詳細は ココ

BootChampとWindowsの時刻同期について

ご存じのようにBootChamp(ここではV3.00)によってMaxOSXとWindowsXPのデュアルブートがMacで可能になります。 ただ素直には環境は良くなりません。 キーボードがその代表です。 しかし、幸いなことにCapsをControlキーに割り当てたりその他の方法でキーはカスタマイズできるのです。が、うまくいかないのが時刻設定です。 ・MaxOSXはハード返す時刻をUTCとして理解 ・Windowsはハード返す時刻を地域時刻として理解 この差があるため、9時間のずれが生じてしまいます。 そこでWindowsもUTC基準にするには。。。 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]"RealTimeIsUniversal"=dword:00000001 をubuntuのように追加すればよいのですが、実はここには大きな穴があります。 BootChampにはWindowsで以下のサービスを動作させています。 ・Apple OS switch Manager ・Apple Timeサービス これが勝手に(数時間使っていたりすると)補正をしています。そこで一番わかりやすいApple Timeサービスを管理ツール内のサービスから、止めるのですが、実はこれでも補正が止まりません。(もちろん、Windows自身のインターネット時刻補正はOFFにして確かめている) どうも、Apple OS switch Managerのほうで補正を行っているようなのです。 では、これを止める。。。と実はMacOSXの再起動がタスクバーのBootChampから切りが替えが出来なくなってしまいます。 と、いうわけで実際はレジストリを修正しては駄目で、はじめからAppleが言っているようにMaxOSXからWindowsへ切り替えた後、すぐには時計が正確にならないことがあるが自動補正するにまかせる。というのがボクなりの結論です。 AppleにはWindows7対応のBootChampで、もう少しスマートな方法を用意してほしいものです。

Google nativeclient

ご存知のようにGoogleテクノロジーの中に native client というX86のマシン語がそのまま動作するWEB用テクノロジーがあります。 発表されてから1年ほど経ちますが、個人的にはじめてのプロとしていちばん作成したのがアセンブラ言語(6502系)になるので、素でプログラミングできることに注目しています。 実際には極小部での使用になると思いますがアニメーションのエンジンなどに力を発揮しそうです。 また、いままで作成してきたプログラムのほとんどがC++になるのでこの点も移植性が高く期待しています。 欠点としてはx86のコンピュータ以外、特に携帯やスマートフォンなどに動作しないことです。 できればAndroidとiPhoneで動作すれば僕としては満足するでしょう。

ChromiumOS ショートカット表

  キー   状態 内容  F12  Running  ウィンドオーバービューの切り替え  F8  Running  キーボード(ショートカット)レイアウトオーバーレイ表示  ESC  Window Overview  ウインドウオーバービューの終了  F2  起動時  スタートアップ・オプション  Ctrl + Alt + T  Running  ターミナル・ウインドウを開く  Ctrl + Alt + N              Chrome          クロームウインドウを開く  Ctrl + Alt + L  Running  スクリーンロック  Ctrl + Alt + M  Running  外部モニターを有効にする  Ctrl + ,  Chrome  バッテリとネットワーク設定画面へ行く(localhost:8080)  Ctrl + Tab  Chrome  次のタブへ  Ctrl + Shift + Tab  Chrome  前のタブへ  Ctrl + 1 through Ctrl + 8  Chrome   押されたキー番号のタブ・ポジション・ウインドウへ移動  Alt + Tab  Running  次のウインドウへ移動  Alt + Shift + Tab  Running  前のウインドウへ移動  Close Lid  Running  スリープ  Power-Key  Running  シャットダウン その他、Ctrl+P 印刷、 Crtl+O ファイルブラウザ、Ctrl+W ウインドウを閉じる、Ctrl+B ブックマークON、OFF Ctrl+D ブックマークへ追加、Ctrl+F 検索、Ctrl+H 履歴、Ctrl+J ダウンロードウインドウなどあります。 Chromeos 2.6.30現在、原文は ココ 尚、キー配列の変更は、sudo -sによってrootに移った後、 日本語キー setxkbmap -rules xfree86 -model jp106 -layout jp 英語キー setxkbmap -rules xfree86 -model us -layout us 注意:この設定はシャットダウンすると失われます。 /etc/X11の中身は保存できないといわれるので、 簡単は方法はボクの知識ではみつかっていません。

Google Chromium OS

イメージ
登場しましたね。 今年一番の目玉かもしれない、 Google Chromium OS が発表になりました。 正直な話、ちょとワクワクしています。 尚、試すのにはUbuntu( Karmic 9.10 recommended)が、 必要なようですが、Linuxはこのディストリビューションを、 使っているので慣れた環境は助かります。 現在は仕事の手をやすめ、 このOSのソースコードをリポジトリから取得している最中です。 で、以下がEeePC900HAでUSB Bootで起動した写真。 ワイヤレスLANやサウンドも動作しています。 本当にブラウザだけのOSです。尚、ぱっと使った感じは、 日本語が入力できませんでしたが、それ以外は、 普通のブラウザを使っている感覚と変わりません。 起動時間はUSBメモリで約20秒程度でした。 EeePC900HAとChromium OS

Ubuntu9.10 Grub2 MENUからVaioノート回復パーティションを取り除く

VAIOノート(VGN-SZ)から回復パーティション(リカバリ・パーティション)のメニューをとり省くTweaksです。 GRUB2は以下の2つの設定ファイルを編集し、sudo update-grubによって変更します。 /boot/grub/grub.cfgは触ってはならないことになっています。 /etc/default/grub  ここでカーソルの振る舞いや、「Linux」のリカバリメニューをカットすることができます。 /etc/grub.d/* この中のファイルの順序によって、メニューの表示順を決めています。 xの実行権限があるもののみ有効で、 ファイルの中身はスクリプトになっています。 参考ページは ココ ( Grub 2 Title Tweaks ) です。 ちなみにメモリチェックをメニューを外すには。。。 sudo chmod -x /etc/grub.d/20_memtest86+ と実行権限をはずせば可能です。 上の参考ページになかった本題です。 Vaioノートに存在する「リカバリ・パーティション」メニューを消すには以下の手順です。 まずは無効にしたい「リカバリ・パーティション」のデバイスをチェックします。 ~$ sudo cat /boot/grub/grub.cfg | grep "menuentry" | cut -d '"' -f2 結果はh/dev/sda1でした。 その後、以下の赤い部分スクリプトを/etc/grub.d/ 30_os_prober 内、 94行周辺に追加すればOKです。  前後のスクリプトを注意深くみて挿入してください。   .....  if [ -z "$(LONGNAME)" ] ; then     LONGINAME="${LONGNAME}"  fi  if[ "${DEVICE}" = "/dev/sda1" ] ; then     continue  fi  echo "Found ${LONGNAME} on ${DEVICE}" >&2  found_other_os=1   ..... 後は sudo update-grub を実行するのみで

Windows7をVAIO type SZ(VGN-SZ93S)へ Fnキーも動作

VGN-SZ93SへWindows 7をクリーン・インストール出来たのでメモしておく。 ついでにUbuntu9.10もインストールし、デュアルブート可能とした。 条件としては、必ず行うことは、リカバリDVDを作成しておくこと。 もし、作成していない。 もしくは復活パーティションを消してしまったのなら、 難しいことになる。 が、方法はあるかもしれない。(後述*) とくに作成した2枚目は必要になる。 あと、CドライブになるDriverフォルダをバックアップ、そして、書くまでもないが、 自分のデータもバックアップする。 Windows7をクリーンインストールした後、VIDEOや指紋認証(**)のドライバーを、 デバイスマネージャから\Driverをしていしてインストールする。 尚、VIDEOはSTAMINAとSPEEDに切り替えその都度、ドライバーをインストールする。 以下のドライバーをDVDからインストールする。 \VAIO\Applications\Sony Shared Library \VAIO\Applications\Sony Utilites DLL \VAIO\Applications\Vaio Event Service \VAIO\Applications\Vaio Power Management 以上で、とりあえずFnキーは動作する。 この後、 サポート・サイトにある最新ドライバー(Vaio Power Managementなど) をアップデートした。 尚、S1,S2キーはまだ動作していない。 理由は使ったことがないためである(タイプが遅くなるため)。 気が向けば調査する予定。 *リカバリーDVDがない場合は。。。(ただ、違法性ありかも?) USサイトは、ほぼ全ドライバーがサイトからダウンロード可能だ。 そのため2007ぐらいのVGN-SZ機種(例えば670番台)のドライバーを、 ダウンロードする手がありそう。 それをUnuversal Extractorという無料ツールで、 分解し、利用する手だ。 尚、ドライバー側で機種や国が違うといって動作しない可能性もあるかもしれないし、 成功しても英文である。 実は上の方法でうまくいなかければ試す予定だった。 そのため、確かめていない。。。 **指紋認証はドライバーはUPEKのサイトから、最新のものがダウン

WiX3.0, CRTとMFCのMerge Modules記述例

以下はWix3.0向けに書いたC Run time ライブラリとMFC ライブラリのmsmをwsxへ含めるサンプルです。 VS2005用に書いていますがVS2008はファイル名を変えるだけです。 <directory id="TARGETDIR" name="SourceDir">の子供として記述します。 <directory id="SystemFolder" sourcename="System"> <merge id="CRT.msm" language="0" diskid="1" sourcefile="$(env.CommonProgramFiles)\Merge Modules\Microsoft_VC80_CRT_x86.msm"> <merge id="CRTPolicy.msm" language="0" diskid="1" sourcefile="$(env.CommonProgramFiles)\Merge Modules\policy_8_0_Microsoft_VC80_CRT_x86.msm"> <merge id="MFC.msm" language="0" diskid="1" sourcefile="$(env.CommonProgramFiles)\Merge Modules\Microsoft_VC80_MFC_x86.msm"> <merge id="MFCPolicy.msm" language="0" diskid="1" sourcefile="$(env.CommonProgramFiles)\Merge Modules\policy_8_0_Microsoft_VC80_MFC_x86.msm"> </directory> Feature

WiX3.0、misコンパイル時Merge modulesの警告文について

こんにちは、このブログはコーディングで、悩みいろいろなサイトを探しまわっても、 なかなか回答が見つからなかったことを記述したり、自分なりのコーディング時のメモを、 書き込んでいきます。 よろしくお願いします。 Wix3とVisual Stadio 2005を使っているときに、 マージモジュール(msm)をwsxファイルへ含めると以下の警告文が出力されます。 Warning LGHT1055 Warning LGHT1076 ココの開発者のブログ記事 によると無視してもよい内容なので、 上の警告文をSuppress specific warningsに 1076;1055 と書き込んでおくと、 他の無視してはいけない警告やエラーを見落とさなくなり便利です。