AB × LinuxでWebアプリ開発は可能なのか!?
abdev AB × LinuxでWebアプリ開発は可能なのか!? はコメントを受け付けていません休日を過ごしています。はい。
地元にいて特にやることもない、ということで、いつもはABと関連性の薄いLinuxとWebサービスの方面に触れてみたいと思います。
以前、このブログでwine(※)についてキャプチャとかしていたのですが、今日はコマンドラインベースで色々と動かせるかどうかを検証してみました。結果をまとめてみます。
※wine … Linux上でWin32APIを再現してくれるソフト
まずはウチの開発用Linuxサーバ(dev.activebasic.com)にwineをインストールしてみます。ちなみに、wineはX Windowが入っていなくても動きます。コマンドベースだけでもいけるとは、頼もしいヤツです。
# yum -y install wine Loading "installonlyn" plugin Setting up Install Process Setting up repositories core [1/3] core 100% |=========================| 1.1 kB 00:00 updates [2/3] updates 100% |=========================| 1.2 kB 00:00 extras [3/3] extras 100% |=========================| 1.1 kB 00:00 Reading repository metadata in from local files primary.xml.gz 100% |=========================| 391 kB 00:01 updates : ################################################## 1070/1070 Added 66 new packages, deleted 61 old in 4.99 seconds primary.xml.gz 100% |=========================| 1.9 MB 00:25 extras : ################################################## 6348/6348 Added 337 new packages, deleted 197 old in 25.08 seconds Parsing package install arguments Resolving Dependencies --> Populating transaction set with selected packages. Please wait. ---> Downloading header for wine to pack into transaction set. wine-0.9.30-1.fc5.i386.rp 100% |=========================| 16 kB 00:00 ...省略 Complete! You have new mail in /var/spool/mail/root
これでwineインストールは完了。
ABで下記のようなプログラムを書いてみます。
#console Sub Output( text As String ) Print text + Ex"n"; End Sub Output( Ex"Content-type:text/htmln" ) Output( "<html>" ) Output( "<head>" ) Output( "<meta http-equiv='content-type' content='text/html; charset=shift_jis'>" ) Output( "</head>" ) Output( "<body>" ) Output( "<h1>Hello World!</h1>" ) Output( "</body>" ) Output( "</html>" )
早速コンパイル。残念ながら、コンパイルはX Window環境がないとできないので、手元のWindowsで行います。できあがったhello.exeをサーバにアップロード。で、hello.cgiにリネーム(あらかじめ、.cgiがCGIとして動作するようにApacheの設定をしておきます)。
これは妄想ですが、ABコンパイラを完全なコマンドラインベースのツールに書き直した暁には、”# abc hello.ab” などというコマンドでLinux + wineの環境でコンパイルができるようになるかもしれません。
ためしに、シェルから動かせるかをテストしてみます。
# ./hello.cgi Content-type:text/html <html> <head> <meta http-equiv='content-type' content='text/html; charset=sjis'> </head> <body> <h1>Hello World!</h1> </body> </html>
イッパツで動きました。問題Nothingです。では、これをWeb上からアクセスしてみましょう。期待する出力は得られるのでしょうか…。
Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request.
ここでエラーです。なにやら、サーバー側の問題らしいです。管理者へ連絡しろとのことです。ちなみに、管理者は私です。早速エラーログを拝見してみます。すると、下記のようなエラーが!
[Sat Feb 17 23:37:52 2007] [error] [client 192.168.24.230] wine: [Sat Feb 17 23:37:52 2007] [error] [client 192.168.24.230] can't get temp file name for /var/www/.wine [Sat Feb 17 23:37:52 2007] [error] [client 192.168.24.230] : Permission denied [Sat Feb 17 23:37:52 2007] [error] [client 192.168.24.230] Premature end of script headers: hello.cgi
ようは、.wineディレクトリがないよって話らしいです。ちなみに、.wineディレクトリはWindowsの構成そのものを管理するための非常に重要なデータを格納しています。たぶん、どこかのiniで場所を指定できると思うのですが、他の場所にあった.wineディレクトリを一旦 “/var/www” に丸ごとコピーします。これで動くでしょう…。たぶん…。
リロード。
できました~!成功!
というわけで、Linux上で動作するWebサービスの作成、ABでできそうです。肝になってくるのは、セキュリティ性やDBとの接続の手軽さ辺りでしょうか…。
Linux+wine上用のWebアプリを作ることを想定したIDEという発想、色々とできそうなことがありそうですね。
C++でforeach
abdev C++でforeach はコメントを受け付けていませんvectorに複数のオブジェクトを突っ込んだときにfor文ですべてのオブジェクトを舐めたいときってありますよね。大体、
vector<string> strings; //ここでstringsに何か突っ込む for( int i=0; i<num; i++ ){ cout << strings[i]; }
こんな感じのコードになると思うのですが、実は最近のboostはイテレートを自動的に処理してくれるBOOST_FOREACHなるものがあるのです。どうやってるのか分かっちゃいないんですが、とても便利で手放せなくなっている自分がいます(汗)。
vector<string> strings //ここでstringsに何か突っ込む BOOST_FOREACH( string str, strings ){ cout << str; }
“BOOST_FOREACH” ってのがちょっと長いし、タイプするのが大変そうなので、おいらは “#define BOOST_FOREACH foreach” などと定義してしまっています。もうC++が標準で提供しているかのような感じですね。
でも、このBOOST_FOREACHはまだboostのパッケージには含まれていないようなので、別途下記サイトからダウンロードする必要があるみたいです(最初ここでハマりました)。
http://boost-consulting.com/vault/index.php?directory=Algorithms
第2回AB開発チームミーティング
abdev 1 Comment »第2回AB開発チームミーティング、無事に終わりました~
一番遠い型は熊本から、続いて岐阜、愛知と、皆さん貴重な休日の時間を割いて参加していただき、本当にありがとうございました。もう少し早く終わるかなと思った今回のミーティングも、結局は時間ギリギリまでミッチリとやってしまいましたね。とても充実した時間を過ごすことができ、今後の開発に繋がる話し合いができたと思っています。
今回のミーティングに参加できなかった方はその様子をなかなか想像し辛いかもしれませんが、場所は今の職場の会議室。プロジェクター&飲み物(?)完備の贅沢な場所です。協力してくださった会社の方々、ありがとうございました。
内容のほうも、AB5の開発進捗報告から始まり、今後実装予定の言語仕様、バグ追跡管理システム「Trac」講義(by O隊長)、ライブラリ開発の方針という、今後のAB開発に直接的に関わる最重要な議題ばかりで、満腹感を味わっております。
ん~、これは早いところ一般公開向けのAB5 CP4リリースへ持っていきたいです。
P.S.
結局、大人組は22時頃まで飲んでいましたf(^^;;;今日はもう寝ます…
サーバ設定を変えました
その他 サーバ設定を変えました はコメントを受け付けていませんdev.activebasic.comが “重い” というご指摘を受けていたのですが、職場のエンジニアの力を借りて軽くすることができました。原因は、常駐させるApacheのプロセス数。まぁ、基本的なところでした。トホホ
これでTracとかWikiとか、バシバシ使っていけます。
もう一月終わりそうですね(汗
abdev もう一月終わりそうですね(汗 はコメントを受け付けていません忙しいです~。寝る時間も勿体無いくらい充実しております。
AB5ですが、作れば作りこむほど、リリースが延期になってしまいます。困ったものです。
できれば、Vista発売と同時期にCP4を出したいのですが、ウーン、できるといいな~
Recent Comments