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” に丸ごとコピーします。これで動くでしょう…。たぶん…。

リロード。

hello.PNG

できました~!成功!

というわけで、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(^^;;;今日はもう寝ます…

三連休突入!

その他 三連休突入! はコメントを受け付けていません。

久々のまとまった休日。早速夜更かししております。

ABの開発チームミーティングが日曜に迫っているので、今日は三連休初日というか、資料作成の日になりそうです…。

時間があったら服買いにいきたいな~ (><

サーバ設定を変えました

その他 サーバ設定を変えました はコメントを受け付けていません。

dev.activebasic.comが “重い” というご指摘を受けていたのですが、職場のエンジニアの力を借りて軽くすることができました。原因は、常駐させるApacheのプロセス数。まぁ、基本的なところでした。トホホ

これでTracとかWikiとか、バシバシ使っていけます。

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン