投稿

3月, 2010の投稿を表示しています

makeに代わるツール

makeに代わるツールでクロスプラットフォームに強いビルドツールが欲しいところだ。 Javaの場合は、 ant maven があり、なかなか充実した環境に発展している。 それ以外の言語で目立、とくにクロスプラットフォームとなると。 gyp と scons の組み合わせが実用であろうか?  Windows向けにはVisualStudio(.vcproj/.sln)、MacOSX向けにはXCode(.pbxproj),Linux向けにはディフォルトのsconsを出力する。 現在はHammerというコマンドで GoogleのブラウザであるChromeのコンパイルで、   使われている 。 尚、個人的にはandroid,iPhone(MacOSX),Windowsのクロスプラットフォームで、利用できないかと調査しているところである。しかし、JAVAは他のC言語系とはプラットフォームの考えが大きく異なるため敷居が高いのではないかと思っている。 gypとsconsがeclipse向けのprojctファイルを出力してくれれば助かるのだが。。。

NSListはどこ?

 iPhone/MaxOSXのプログラミングを調べていて驚いたことはNSListがFoundationに存在しないこと。 代わりにListを自作するか、NSArray、NSEnumeratorを使うことになりそう。 PS MacBook ProをRAM 4Gにした。

コードスタイル

コードスタイル、コードを書くときに、その書式をグループ内で統一し、プログラムを読みやすくすることである。 少なくないプロジェクトに関わってきたボクからするととても大切なことだと思うし、このスタイルは時代とともに変化する。 Windowsだけの時代では、やはりマイクロソフト社のスタイルに合わせた方が仕事や勉強は進めやすかった。 しかし、今はオープンソース全盛期。 出来る限り、それに慣れた方が便利である。 自分でまとめてもよいのだが、そんな暇があれば創造部分に使いたい。そこで、Googleの規約に乗ることが、現時点では最良の選択だと思う。 (また10年後は変わっているだろう) Google コードスタイル規約 C++ 、 日本語訳 Objective C 、 日本語訳 Android ( JAVA言語 )、 日本語訳 Python 尚、各ドキュメントを読んで面白いのは、それぞれの言語の欠点が書かれている点である。 移植性を重視する者にとってはタメになる。

今日はGAEとデバック

朝はGAEを徹底的に勉強し、 午後はユーザからの報告のバグを1FIX その他、前からあったバグ4つほど修正

冪等(べきとう) idempotent

プログラムで重要な概念。 idempotent 1回おこなっても、複数行っても結果が同じ。 s*s=s ということであり、HTTPのGETとDELETEは、この冪等性が求められる。 そのため、キャッシュには有効である。 尚、POSTは冪等性がないため、キャッシュできない。 C++の#pragma once(Google規約では使用禁だが)も冪等性のためであるといえなくもない。 JavaのHttpServlet.doGet()のインプリメントはは冪等性が求められる。   参考: wikipedia

Ubuntu 9.1 Tomcat native コンパイル

Tomcat6 native をコンパイル eclipseでtomcat使って開発する際、ubuntuではtomcat6がバラバラに任意のディレクトリへインストールされる。 Ubuntu標準に沿って行われていると思われるが、 Sysdeo tomcat plugin 利用者からは不便 である。 そこでapt-get等ではtomcatを取得せずに、直接取得して、plug-inへパスを設定すると、 動作する。 しかし、UnixではNativeが含まれていない(Windows版は有)ため、 パフォーマンスを必要な方はコンパイルする必要がある。 ソースを取得して、 以下の方法でコンパイルできる。 ./configure --with-apr=/usr/bin/apr-config --with-ssl=/usr/lib/ssl make ./libs/*を /usr/lib/jniへコピーした。 eclipseでtomcat-pluginを実行すると。。。 情報: Loaded APR based Apache Tomcat Native library 1.1.20 とConsoleに表示され、Native Libraryが動作していることを確認できる。

ubuntu 8.04 LTSへTomcat

Tomcat5.5インストールメモ $ sudo apt-get install sun-java6-bin sun-java6-jre $ sudo update-alternatives --config java $ sudo apt-get instal tomcat5.5 $ sudo apt-get install tomcat5.5-admin tomcat5.5-webapps /etc/default/tomcat5.5を設定 JAVA_HOME=/usr/lib/jvm/java-6-sun/jre CATALINA_BASE=/var/lib/tomcat5.5 メモリ 256に。 JAVA_OPTS="-Djava.awt.headless=true -Xmx256M" その他、ユーザー名など設定 $ sudo /etc/init.d/tomcat5.5 restart :8180/">http://<host>:8180/

git The remote end hung up unexpectedly

うちの開発ではgitを中心に使っているが、 Windowsでエラーが出て使い物にならないPCが2台ある。 git clone をする際、  The remote end hung up unexpectedlyが連発するのだ。 PCの性能は WindowsXP SP3(クリーンインストール状態で、アンチウィルスは入れていない) 2GRAM Pentium4 2.80GHz HDD500G 10%使っているのみ。 cygwin 1.7.1 git 1.6.6.1 が動作しない。 そこで。。。 msysgit 版(Git-1.7.0.2-preview20100309)を、 使ってみたところ、 一発でCloneが成功 した。 理由は不明であるが、 どうもPCとの相性が悪ようである。   参考: cygwin(1.7.1)上git(1.6.6.1)で問題なく動作しているPCのリスト これよりもパフィーマンスが悪い、 WindowsXP Atom EeePC(時々、同じエラーがでるが、5回も実行すれば動作) MacOSX MacBook Pro Ubuntu 9.10 Dual Core NotePC 性能が上のPCであるが。。。 Windows7 Dual Core NotePC、 WindowsVista Desktop Dual Core PC WindowsXP Desktop Dual Core PC 尚、全PCとも40GB以上HDDが空いており、 2GRAM以上搭載している。    

Ubuntu標準Javaをsun-java6へ

  標準インストール Ubuntu(9.10)で Android plug-in(ADT Plugin for eclipse) を使う場合、 Plug-inのインストールに失敗する。 理由は標準JAVAはOpenjavaになっているため。 確かめるには以下のコマンドを実行 $sudo update-alternatives --config java 結果がopenjdkになっていれば× sun-java6-sdkをインストールして、 # aptitude install sun-java6-jdk (sdk?) 上のコマンドで指定する。 参考サイト

Ubuntu カーネルをアンインストール(Grub2)

以前のubutuでは、apt-get autoremoveで消えたようだが、 ubuntu9.10現在、以下の理由でやめている。 KernelTeam/removing-old-kernels ということで、危険が伴うので消す必要がない。 といっても、Net-pcの小さな画面ではGrub2のメニューが増えていって、 使い辛い。 そこで/boot内のファイルを手動で消す。 とても危険な作業なので慎重に行うことは書くまでもないだろう。(自己責任) 例: Sysytem.map-2.6.31-17~ abi-2.6.31-17~ config-2.6.31-17~ initrd.img-2.6.31-17~ vmcoreinfo-2.6.31-17~ vmlinuz-2.6.31-17~ これで17が消える。  過去の1,2個のカーネルは残しておくのが賢明である。 最後にgrub2のメニューを生成させる。 # sudo update-grub を実行。 grab2のカスタマイズは 過去の記事 を参考

cygwin git diffを日本語表示

$ git diff | nkf -w で表示された。 cygwin(1.7.1)上で。

ロングマン

* i の英英辞書* iAppの英英辞書、Longman Dictionary of Contemporary English (LDOCE5)を購入。 かなり使いやすくて、いままで購入した辞書ではナンバー1。 これで資料が、少しでも、 楽に読むことができれば嬉しいのですがw

技術力のないプログラマ作ったソースを...

技術力のないプログラマ作ったソースを自分のものにするのは、 まず大げさにわかりやすいフォルダ名、ファイル名、クラス名、 メンバー名に徹底的にする。 ASSERT等できるだけ入れる。 理由のないコメントを削除する。 トレース実行する。 理由がわかればコメントを書く、動作確認したら、 修正し、必要ならば設計し直し、作り直す、動作確認、デバック。 そして、リファクタリング。。。 上記でわかりやすく、長く書いたフォルダ名、ファイル名、クラス名、 メンバー名を速読しやすくシンプルにしてメンテや拡張しやすくする。 これを機能単位(単位が滅茶苦茶ということが多い)ごとに行う。 この5年間ぐらいはこれをやっていた気がする。  時間がかかるわけだ!

Cygwin 1.7.1 rxvtよりXtermか?

Cygwin1.7.1になり、標準のプロンプトは、 正常にファイル名などが表示できるようになった。 しかし、カット&ペーストやemacsで便利なrxvt.exeは、 古いままで、どうも日本語があやしい。 そこでXウインドウ版cygwinを試すことにした。 setup.exeにてxinitをインストール インストール終了後、cygwin上で $ startxwin xtermが立ち上がるので、その中でemacsを試すと正常に動作した。 しばらく、これを試してみたい。 詳細は http://x.cygwin.com/

Cygwin 1.7.1 nkf istall

Cygwin 1.7.1から日本語対応がさらに強化された。が、 古くからあるnkfをinstallしたい。 残念がらnkfはsetup.exeに、 現時点では含まれていないようなので以下からダウンロード http://sourceforge.jp/projects/nkf/releases/ $tar zxvf nkf-2.1.0.tar.gz $cd nkf-2.1.0 $make test $make install 以上でインストール完了、詳細はINSTALLを参照 $ nkf -v Network Kanji Filter Version 2.1.0 (2009-11-17) Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa). Copyright (C) 1996-2009, The nkf Project. $  

容赦のないテスト

昨日は作成しているソフトウェアのベータリリースだった。 精神的に余裕ができたので以下の本を読んだ。 「Maven2.0入門」 「達人プログラマー」 前者はJavaプログラムのベースを知ることができ、 後者はプログラマーとして、いつも悩んでいることに関して、いくつかの回答が書いてある。 WEBが優れた知識を提供してくれているのは間違いないのだが、本という汚せるメディアで勉強するのはやはり心地よいものがある。

Eclipse プラグイン制作初心者

自作コンパイラを#eclipseで使いたいのですが、どのplug-inのサンプルが参考になるのでしょうか?