C++でWEBアプリが作れるフレームワーク
http://www.treefrogframework.org/ja/
ダウンロードからソースを取得
> wget http://www.treefrogframework.org/wp-content/uploads/2011/11/treefrog-0.80.tar.gz > tar zxvf treefrog-0.80.tar.gz > cd treefrog-0.80 > ./configure -h Usage: ./configure [OPTION]... [VAR=VALUE]... Configuration: -h, --help display this help and exit --enable-debug compile with debugging information --enable-gui-mod compile and link with QtGui module Fine tuning of the installation directories: --framework=PREFIX install framework files in PREFIX [/Library/Frameworks] --bindir=DIR user executables [/usr/bin] --datadir=DIR read-only architecture-independent data [/usr/share/treefrog] > ./configure qmake: command not found
http://qt.nokia.com/downloads-jp
http://qt.nokia.com/downloads/qt-for-open-source-cpp-development-on-mac-os-x
ここからosxのdmgファイルを取得してインストール
qt-mac-opensource-4.7.4.dmg
> which qmake /usr/bin/qmake > ./configure ... First, run "make" and "sudo make install" in src directory. Next, run "make" and "sudo make install" in tools directory. > cd src > make > sudo make install > cd ../tools > make > sudo make install
treefrogのドキュメントからチュートリアルをひと通りチェック
http://www.treefrogframework.org/ja/ドキュメント/チュートリアル
> tspawn new blogapp created blogapp created blogapp/controllers created blogapp/models created blogapp/models/sqlobjects created blogapp/views created blogapp/views/layouts created blogapp/views/mailer created blogapp/views/partial created blogapp/views/_src created blogapp/helpers created blogapp/config created blogapp/config/environments created blogapp/config/initializers created blogapp/public created blogapp/public/images created blogapp/public/js created blogapp/public/css created blogapp/db created blogapp/lib created blogapp/log created blogapp/plugin created blogapp/script created blogapp/sql created blogapp/test created blogapp/tmp created blogapp/blogapp.pro created blogapp/appbase.pri created blogapp/controllers/applicationcontroller.h created blogapp/controllers/applicationcontroller.cpp created blogapp/controllers/controllers.pro created blogapp/models/models.pro created blogapp/views/views.pro created blogapp/views/_src/_src.pro created blogapp/views/mailer/.trim_mode created blogapp/helpers/helpers.pro created blogapp/helpers/applicationhelper.h created blogapp/helpers/applicationhelper.cpp created blogapp/config/application.ini created blogapp/config/database.ini created blogapp/config/logger.ini created blogapp/config/routes.cfg created blogapp/config/validation.ini created blogapp/config/initializers/internet_media_types.ini created blogapp/public/404.html created blogapp/public/413.html created blogapp/public/500.html
mysqlもしくはsqliteデータベースの作成
> mysql -u root mysql> create database blogdb; mysql> use blogdb; mysql> create table blog (id int PRIMARY KEY, title varchar(20), body varchar(200), created_at timestamp, updated_at timestamp, lock_revision int); mysql> quit
> sqlite3 db/blogdb sqlite> create table blog (id int PRIMARY KEY, title varchar(20), body varchar(200), created_at timestamp, updated_at timestamp, lock_revision int); sqlite> .quit
lock_versionってなんだ?と思ったらドキュメントに書いてあった。
また、lock_revision フィールドは、楽観的ロックを実現するためのもので、integer 型で作っておきます。
楽観的ロック (Optimistic Lock)
レコードにはあらかじめロックリビジョンを記録しておき、ロックリビジョンが変わっていないことを検証しつつデータを保存すること。ロックはかけないので、処理速度の向上がちょっとだけ期待できるでしょう。
> cd blogapp
> tree
.
├── appbase.pri
├── blogapp.pro
├── config
│ ├── application.ini
│ ├── database.ini
│ ├── environments
│ ├── initializers
│ │ └── internet_media_types.ini
│ ├── logger.ini
│ ├── routes.cfg
│ └── validation.ini
├── controllers
│ ├── applicationcontroller.cpp
│ ├── applicationcontroller.h
│ └── controllers.pro
├── db
├── helpers
│ ├── applicationhelper.cpp
│ ├── applicationhelper.h
│ └── helpers.pro
├── lib
├── log
├── models
│ ├── models.pro
│ └── sqlobjects
├── plugin
├── public
│ ├── 404.html
│ ├── 413.html
│ ├── 500.html
│ ├── css
│ ├── images
│ └── js
├── script
├── sql
├── test
├── tmp
└── views
├── _src
│ └── _src.pro
├── layouts
├── mailer
├── partial
└── views.pro
※なんかmysql用のなにかが足りないようでDriverType=QMYSQLが失敗しているので、sqliteで試します
> vi config/database.ini [dev] DriverType=QSQLITE DatabaseName=db/blogdb HostName= Port= UserName= Password= ConnectOptions= > tspawn scaffold blog DriverType: QSQLITE DatabaseName: db/blogdb HostName: Database open successfully created controllers/blogcontroller.h created controllers/blogcontroller.cpp updated controllers/controllers.pro created models/sqlobjects/blogobject.h created models/blog.h created models/blog.cpp updated models/models.pro created views/blog/index.html created views/blog/index.otm created views/blog/show.html created views/blog/show.otm created views/blog/entry.html created views/blog/entry.otm created views/blog/edit.html created views/blog/edit.otm > qmake -spec macx-g++ (linuxならlinux-g++) #最初の一回だけ実行してMakefileを作成している > make
※ -spec オプションについては、Windows では win32-g++ を、Mac OS X では macx-g++ を指定すればよいでしょう。
ビルドが成功すると、4つの共有ライブラリ(controller, model, view, helper)が lib ディレクトリに作られます。
だそうです。
アプリケーションの起動
> treefrog -e dev
ブラウザでhttp://localhost:8800/Blog/indexにアクセスする
なんか見慣れたscaffoldの画面が出てくればOK
日本語もばっちりでした。