最近オープンしたネコカフェですが、ぼちぼちやていますが、多くの道行く人が猫の呼び込みをみて「あら~かわいい~」と立ち止まるところをみていると、この国は相当病んでいるのか・・・と変な邪推をしてみたり、病んでいるといえば、とあるSNSゲームを知人から誘われはまり、少し課金アイテムを買ってみたりしたり、そういえば前回リリースから誕生日を過ぎたとか、その前回リリースからあまり間が空いていませんが、ADPのVer0.81をリリースします。
変更点は以下のとおりです、
・バグフィックス(DBライブラリ、~演算子、他)
・式のコンパイルの改善
・テンプレート機能の変更(ヒアドキュメント化)
・インクルード機能の変更(インクルードキーワードの変更)
・コマンドラインオプションの追加と変更(ワーニング、構文チェックの追加と引数のコード実行のオプション値の変更)
式のコンパイルの改善ですが、以前のバージョンではハッシュ検索のコンパイルがちょっと不完全でしたので、きちんと木構造をたどるようなコードに変更しました。おかげで、
$hash['key1']['key2']
というようにハッシュ検索の戻り値からさらにハッシュ検索ができるようになりました。
テンプレート機能をヒアドキュメントのように文字列として扱えるように変更しました。このおかげでWEBページモードの実装が単純かつ一貫性を持つようになりました。
テンプレートの開始ですが、
%>
となります。終了は
<%
となります。
JSPやASPのように<%がコードの始まりで、%>がコードの終わりになりますが、ADPも同様になります。ただし、ADPの場合は<%でコードが始まる時は、式の中になっていますので、それを抜ける為に、
<%;
という具合に、;を追加します。
なぜわざわざこのようにしたのかといいますと、テンプレートの機能をヒアドキュメントのようにして、統一的に使えるように言語仕様の中に入れてしまいたかったからですが、そのおかげでADPにはテンプレートライブラリを別に用意することが不要になります。
例えば、メール送信のようにテンプレートを用意してその中に値を張り付けるということがWEBページを作ることと同じようにできます。
ちなみにテンプレート(ヒアドキュメント)の開始、終了について他のテンプレートライブラリからの移行を考慮して将来的には変更可能なように実装しようかと考えております。
この変更に伴い、インクルードキーワードが合わせて変更になりました。
ちなみにインクルードは、トップレベル(ホーン節やゴール節の定義場所)で、
@includeファイル名@
で行います。
ちなみに、このあたりは仕様変更があるかと思いドキュメント化していませんでしたが、しばらく様子をみて特に変更の必要がなければドキュメント化します。
そのほか地味なところでは、コンパイルエラーやワーニング、ランタイムエラーの見直しを行っています。
不親切な言語仕様を改めてよりエラーやワーニングを出すようにしています。ワーニングは今回のバージョンから追加になります。
これで、いよいよ次はリソースの解放機能を追加しようかと思ってますが、実現できるかな?
「しゃべってコンシェルジュ」に『楽して儲ける方法を教えて!』と聞きたい衝動を抑えていたり、TopCoderは何とかRound2へ進んだが多分このあたりで敗退だろうと弱気になっているとか、その癒しをもとめて何気にネコカフェ始めたり、そのネコが今日は客が来ないとわめいていたり、ネコと言えば、ここ2か月程ブログがネコネタ2件とさびしい限りでしたが、やっとこさ ADP の Ver0.80 をリリースします。
上司からオークションサイトを作成せよと言われ、ADPでぼちぼち作っていたのですが、Ver0.79のリリース以降バグが出るわ出るわで、たくさんのバグを修正しました。
以前にだじゃれクラウドのAPIもADPで作成しその時もデバッグが進んだのですが、この手のソフトは実践が大事というのを実感しました。
ちなみに変更点も以下のとおりそこそこあります。
・バグフィックス
・例外発生時にスタックトレースを出力
・合わせてcatch述語の仕様を変更
・HTMLのファイルのアップロード(マルチパート)に対応
・configureの試験的導入
・erase_global / erase_session述語の追加
・コマンドライン引数の変更
・CentOS6.2のバイナリ版の追加
アプリを開発して実感したのですが、エラー関連の処理が不親切で、それに合わせて従来falseとしていたものをいくつかランタイムエラーにしました。
また、間違い易い文法があり、その部分についてはワーニングを出したいところです。これについては今後の課題です。
続いて別のWEBアプリケーションの開発を行う予定ですので、今後、もう少し品質が上がるかもしれません。
機能的な追加は今回も行えていないので次期バージョンでは何か実装したいところです。
今年、一発目のリリースになります。
ちょっと間が開いたせいでもないですが、結構な修正が入りました。
・Mac OS X 対応
Mac OS X上で、platfome述語は"MAC OS X"の文字列を返す。
・eval,sandbox述語の追加
文字列のコンパイル実行(eval)
コンパイル実行を制限モードで行う(sandbox)
・一括取得の述語、selecta,sqla述語の追加
結果を全て取得する場合、selectやsqlよりメモリ効率がよい。
・goal節の開始の,(カンマ)が不要になった。
・Linux上でのpipe述語のパフォーマンス改善
大きなところで、Mac OS Xの対応があります。
今年の初売りでMac Book Airを買ったのですが、しばらく放置していましたが、もったいないので少しずつ使うようになりました。
OS Xですが、開発環境構築に結構苦労しました。以下、愚痴がてら簡単な覚書ということで、
私が使ったのは現在の最新の開発環境Xcode4.3とMacPortsの組み合わせなのですが、Xcode4.3をApple Store経由でインストールしたのですが、コマンドラインツールに関しては別途インストールする必要があり、ネットを探し回って、
このページにたどり着きました。
要するにXcodeの統合開発環境からPreferencesをたどり、Command Line ToolsをダウンロードすればOKとのことでした。
ネットをみる限りMacの開発環境はよく変わっているらしくそれはそれで良いのでしょうが、コンパイル環境に関して変更するのも如何なものかと思います。ちなみにWindowsの場合、Visual C/C++はコマンドラインツールに関して言えばDOS時代から変わっていませんし、Linuxにしてもgccを使う上では同様かと思います。
また、Xcode4.3の付属のコンパイラはLLVM-GCCと呼ばれるもので、GCCとは別のコンパイラになります。ADPのコンパイル程度でしたら結構互換性は高いようですが、1点苦労したのが、TLS(Thread Local Storage)が未サポートということで自分で、pthread_setspecificを使って実装しました。
『いや・・・オレもTLS使うのはじめてだが、TLSって20世紀から存在したかと思うのだが・・・gccといいながらunsupported target とか言われても・・・。』
と愚痴りながらpthread_setspecificのマニュアルと格闘しました。いやgccなら __thread 一発で終わるのに・・・。
その他、ADPは、unixODBCを使っているのですが、とりあえずバージョン0.79ではMacPortsからunixODBCをインストールしています。
ただ、MAC OS Xの場合、iODBCを使用しているらしくこのあたりはひょっとしたら将来変更があるかもしれません。
MAC OS Xの場合、32ビットOSでも64ビットバイナリが動作可能のようで、実際に試したところ32ビットOS上で64ビットのバイナリが動作したので、64ビットバイナリのみ用意しています。これについては他のプラットフォームにはない長所ですごいと思いました(どうやっているんだろうという疑問があるのですが・・・)。
とまぁこんな感じでまだまだ実験的にサポートした感は否めませんが取り合えず OS Xもサポートするようになりました。
2012年も6日が過ぎようとしていますが、いまさらながらあけましておめでとうございます。
初売りのMac Book Airを買ったり、ニッチンを大人買いしたり、色々書くことはあるのですが、ADP関連の報告を。
去年、だじゃれクラウド開発していたメンバから『今年はADPを広めましょう』ということで、今年は少し活動の幅を広げます。
■ ロゴ
ロゴを作って頂きました。
新しいロゴは、
になります。個人的には結構気に入っております。
というわけで、ADPの正式名称は、大文字でも小文字でも良いということになりました。
■ SNSの作成
露出度を上げる為にtwitterとfacebookに登録しました。
・ twitterアカウント
http://twitter.com/#!/adp_la
・ facebookページ
https://www.facebook.com/adp.la
■ sandoboxプロジェクト(仮)
今年の目玉の1つですが、ADPが使えるフリーのレンタルサーバーを立ち上げます。
とにかく使ってもらわなければ意味がないので、ADPを試す機会を増やそうということでやってみます。
■ 分散環境対応
これは元々ロードマップにあったものですが、去年の年末頃にVer1.0ではやめにしたのですが、別の人から『分散コンピューティング環境が欲しい』との要望を受けてやっぱり開発をしようかと思いました。
利用者が付いて貰えるのはありがたいので、こちらもなるべく実現するようにがんばります。
iPhoneを買ったとか、T1028のメモリ4GB計画は失敗したとか、書くことはあるのですが、
ADPの0.78をリリースしましたのでその告知を。
今回のリリースですが、env述語のバグFIXのみで、今までの中でもっとも変更点が少ないリリースになります。
公にはしていませんでしたが、月1でリリースしようと決めていましたので、1点だけの変更ですがリリースします。
ちなみに、今回のリリースでは間に合いませんでしたが、対応マシン(コンパイル済みのバイナリ)にMAC(intel Mac)を追加しようかと思っています。iPhoneも買ったことだしこれで私も一人前のAppleユーザとして旅立とうかと思とります。
また、とある人から『はやくバージョン1を出せ。」と言われましたので、若干ですが方針変更をします。今まではマルチスレッド対応を優先しようかと思っていましたが、リソース開放機能を優先して開発します。で、このリソース開放機能の実装をもって バージョン1.0としようかと思ってます。
まぁ、バージョン番号自体にこだわりは無かったので、ユーザというかプロジェクト関係者というか関わる人が増えたのでその意向を取り入れる形になってます。ちなみにリソース開放機能についてはADPの構文が変更になる可能性があるのでこれについては外せないということで実装します。