• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
 
 

CentOS上からgithubを使えるようにしたので作業内容をメモ。

まずはyumでgitをインストールします。ちなみにCentOSのバージョンは5.8です。

   1  # yum install git
   2  Loaded plugins: fastestmirror
   3  Loading mirror speeds from cached hostfile
   4   * base: rsync.atworks.co.jp
   5   * epel: ftp.iij.ad.jp
   6   * extras: rsync.atworks.co.jp
   7   * remi: rpms.famillecollet.com
   8   * updates: rsync.atworks.co.jp
   9  Setting up Install Process
  10  Resolving Dependencies
  11  --> Running transaction check
  12  ---> Package git.x86_64 0:1.7.4.1-1.el5 set to be updated
  13  --> Processing Dependency: perl-Git = 1.7.4.1-1.el5 for package: git
  14  --> Processing Dependency: rsync for package: git
  15  --> Processing Dependency: perl(Error) for package: git
  16  --> Processing Dependency: perl(Git) for package: git
  17  --> Running transaction check
  18  ---> Package perl-Error.noarch 1:0.17010-1.el5 set to be updated
  19  ---> Package perl-Git.x86_64 0:1.7.4.1-1.el5 set to be updated
  20  ---> Package rsync.x86_64 0:3.0.6-4.el5_7.1 set to be updated
  21  --> Finished Dependency Resolution
  22  
  23  Dependencies Resolved
  24  
  25  ========================================================================================================================
  26   Package                      Arch                     Version                             Repository              Size
  27  ========================================================================================================================
  28  Installing:
  29   git                          x86_64                   1.7.4.1-1.el5                       epel                   4.5 M
  30  Installing for dependencies:
  31   perl-Error                   noarch                   1:0.17010-1.el5                     epel                    26 k
  32   perl-Git                     x86_64                   1.7.4.1-1.el5                       epel                    28 k
  33   rsync                        x86_64                   3.0.6-4.el5_7.1                     base                   347 k
  34  
  35  Transaction Summary
  36  ========================================================================================================================
  37  Install       4 Package(s)
  38  Upgrade       0 Package(s)
  39  
  40  Total download size: 4.9 M
  41  Is this ok [y/N]: y
  42  Downloading Packages:
  43  (1/4): perl-Error-0.17010-1.el5.noarch.rpm                                                       |  26 kB     00:00
  44  (2/4): perl-Git-1.7.4.1-1.el5.x86_64.rpm                                                         |  28 kB     00:00
  45  (3/4): rsync-3.0.6-4.el5_7.1.x86_64.rpm                                                          | 347 kB     00:00
  46  (4/4): git-1.7.4.1-1.el5.x86_64.rpm                                                              | 4.5 MB     00:00
  47  ------------------------------------------------------------------------------------------------------------------------
  48  Total                                                                                   4.1 MB/s | 4.9 MB     00:01
  49  Running rpm_check_debug
  50  Running Transaction Test
  51  Finished Transaction Test
  52  Transaction Test Succeeded
  53  Running Transaction
  54    Installing     : perl-Error                                                                                       1/4
  55    Installing     : rsync                                                                                            2/4
  56    Installing     : git                                                                                              3/4
  57    Installing     : perl-Git                                                                                         4/4
  58  
  59  Installed:
  60    git.x86_64 0:1.7.4.1-1.el5
  61  
  62  Dependency Installed:
  63    perl-Error.noarch 1:0.17010-1.el5        perl-Git.x86_64 0:1.7.4.1-1.el5        rsync.x86_64 0:3.0.6-4.el5_7.1
  64  
  65  Complete!

続いてgithubのヘルプページを参考にして環境設定。 まずはコミット時に使うユーザ名とメールアドレスを設定します。

   1  $ git config --global user.name "h-akanuma"
   2  $ git config --global user.email "hiroaki.akanuma@gmail.com"

メールアドレスは正しいメールアドレスを設定する必要はなくて、コミットを識別するためのものなので、user@server のような形にしてどこからのコミットかを判別できるようにしても良いらしいです。

次はパスワードのキャッシュ設定。リモートサーバにアクセスするたびにパスワードを入力しなくても良いように、パスワードをキャッシュする設定をします。また、デフォルトのキャッシュの有効期限は15分間なので、とりあえず1時間に変更しておきます。

   1  $ git config --global credential.helper cache
   2  $ git config --global credential.helper 'cache --timeout=3600'

これだけでひとまず全体的な設定は終了なので、ブラウザでgithubにアクセスして新しくリポジトリを作成します。

そして再びCentOS上での作業です。バージョン管理対象にするディレクトリを作成して初期化します。

   1  $ mkdir PerlTools
   2  $ cd PerlTools/
   3  $ git init
   4  Initialized empty Git repository in /home/akanuma/scripts/PerlTools/.git/

バージョン管理したいファイルを作成し、ローカルリポジトリにコミットします。

   1  $ cp ../cut_time.pl .
   2  $ ls -la
   3  合計 16
   4  drwxrwxr-x 3 akanuma akanuma 4096  6月 10 00:29 .
   5  drwxrwxr-x 3 akanuma akanuma 4096  6月 10 00:28 ..
   6  drwxrwxr-x 7 akanuma akanuma 4096  6月 10 00:28 .git
   7  -rw-rw-r-- 1 akanuma akanuma 1336  6月 10 00:29 cut_time.pl
   8  $
   9  $ git add cut_time.pl
  10  $ git commit -m 'Script for cutting file content by time range'
  11  [master (root-commit) a677816] Script for cutting file content by time range
  12   1 files changed, 75 insertions(+), 0 deletions(-)
  13   create mode 100644 cut_time.pl

そしてローカルリポジトリへのコミット内容をgithubへpushします。

   1  $ git remote add origin https://github.com/h-akanuma/PerlTools.git
   2  $ git push origin master
   3  Username:
   4  Password:
   5  Counting objects: 3, done.
   6  Compressing objects: 100% (2/2), done.
   7  Writing objects: 100% (3/3), 757 bytes, done.
   8  Total 3 (delta 0), reused 0 (delta 0)
   9  To https://github.com/h-akanuma/PerlTools.git
  10   * [new branch]      master -> master

これでgithubへコミット内容が反映されました。 他のリポジトリのForkはまだやっていないのでまたそのうち。

posted by Png akanuma on Sun 10 Jun 2012 at 00:53

Linux上でファイル名が文字化けする場合があります。

   1  $ ls result.log.*
   2  result.log.Fri
   3  result.log.Thu
   4  result.log.??
   5  result.log.??
   6  result.log.??

こうなると普通にファイル名を指定して操作することができません。

   1  $ wc -l 'result.log.??'
   2  wc: result.log.??: No such file or directory

この場合はlsの出力結果をnkfで変換して正しいファイル名を確認します。

   1  $ ls result.log.* | nkf -e
   2  result.log.Fri
   3  result.log.Thu
   4  result.log.金
   5  result.log.土
   6  result.log.木

確認したファイル名を指定することでファイルが操作できます。

   1  $ wc -l result.log.金
   2  409 result.log.金

posted by Png akanuma on Fri 8 Jun 2012 at 09:12 with 1 comment

 CGI::Sessionを使うためにCPANでインストールしようとしたところ、「サーバの応答にエラーがあるので、接続を終了します。再試行しています。」となって最終的にインストールに失敗してしまいました。ネットで検索したところ、FTPサーバに接続できていないためのようで、CPANのシェルから下記コマンドでurllistに他のFTPサーバを追加しました。
 参考サイト cpanを利用したperlモジュールインストール不具合

   1  cpan> o conf urllist push ftp://ftp.u-aizu.ac.jp/pub/CPAN
   2  
   3  cpan> o conf urllist push ftp://ftp.kddilabs.jp/CPAN/
   4  
   5  cpan> o conf urllist push ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
   6  
   7  cpan> o conf urllist push http://ftp.cpan.jp/
   8  
   9  cpan> o conf urllist push ftp://ftp.dti.ad.jp/pub/lang/CPAN/
  10  
  11  cpan> o conf urllist push ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
  12  
  13  cpan>

 そして再度インストールを実行し、今度は成功しました。

   1  cpan> install CGI::Session
   2  Running install for module CGI::Session
   3  Running make for M/MA/MARKSTOS/CGI-Session-4.48.tar.gz
   4  ~~~ 中略 ~~~
   5  Writing /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/CGI/Session/.packlist
   6  Appending installation info to /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/perllocal.pod
   7    /usr/bin/make install  -- OK

posted by Png akanuma on Thu 24 May 2012 at 21:34

 CPANからDate::Simpleをインストールしようとすると、make testで失敗してインストールできませんでした。

   1  # perl -MCPAN -e 'install Date::Simple'
   2  CPAN: Storable loaded ok
   3  Going to read /root/.cpan/Metadata
   4    Database was generated on Tue, 22 May 2012 05:43:03 GMT
   5  Running install for module Date::Simple
   6  Running make for I/IZ/IZUT/Date-Simple-3.03.tar.gz
   7  ~~~ 中略 ~~~
   8  make: *** [test_dynamic] エラー 1
   9    /usr/bin/make test -- NOT OK
  10  Running make install
  11    make test had returned bad status, won't install without force

 この場合は環境変数LANG=Cに設定すれば成功するようです。
参考サイト Date::Simpleのインストール失敗と、その対応

   1  # echo $LANG
   2  ja_JP.UTF-8
   3  # export LANG=C
   4  # echo $LANG
   5  C

 再実行します。

   1  # perl -MCPAN -e 'install Date::Simple'
   2  CPAN: Storable loaded ok
   3  Going to read /root/.cpan/Metadata
   4    Database was generated on Tue, 22 May 2012 05:43:03 GMT
   5  Running install for module Date::Simple
   6  Running make for I/IZ/IZUT/Date-Simple-3.03.tar.gz
   7  ~~~ 中略 ~~~
   8  Writing /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/Date/Simple/.packlist
   9  Appending installation info to /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/perllocal.pod
  10    /usr/bin/make install  -- OK

posted by Png akanuma on Thu 24 May 2012 at 06:47

 Scalaのplayframework2.0を使って開発することになったので、ローカルのWindows環境の構築手順をメモ。

sbtインストール

  • 下記URLから sbt-launch.jar をダウンロードします。

http://typesafe.artifactoryonline.com/typesafe/ivy-releases/org.scala-tools.sbt/sbt-launch/0.11.2/sbt-launch.jar

  • 任意のディレクトリに sbt-launch.jar を置いて、同じディレクトリ内に下記の内容で sbt.bat を作成します。

   1  set SCRIPT_DIR=%~dp0
   2  java -Xmx512M -jar "%SCRIPT_DIR%sbt-launch.jar" %*

  • 上記ディレクトリにパスを通し、sbt コマンドで起動します。

   1  C:\Users\akanuma>sbt
   2  
   3  C:\Users\akanuma>set SCRIPT_DIR=C:\sbt\
   4  
   5  C:\Users\akanuma>java -Xmx512M -jar "C:\sbt\sbt-launch.jar"
   6  Getting net.java.dev.jna jna 3.2.3 ...
   7  downloading http://repo1.maven.org/maven2/net/java/dev/jna/jna/3.2.3/jna-3.2.3.jar ...
   8          [SUCCESSFUL ] net.java.dev.jna#jna;3.2.3!jna.jar (13985ms)
   9  :: retrieving :: org.scala-tools.sbt#boot-app
  10          confs: [default]
  11          1 artifacts copied, 0 already retrieved (838kB/106ms)
  12  Getting Scala 2.9.1 (for sbt)...
  13  ~~~ 中略 ~~~
  14  [info] Resolving org.scala-tools.sbt#precompiled-2_8_1;0.11.2 ...
  15  [info] Resolving org.scala-tools.sbt#precompiled-2_8_0;0.11.2 ...
  16  [info] Resolving org.scala-tools.sbt#precompiled-2_9_0;0.11.2 ...
  17  [info] Done updating.
  18  [info] Set current project to default-83bb15 (in build file:/C:/Users/akanuma/)
  19  >

Play2.0インストール

  • 下記サイトから play-2.0.zip をダウンロードします。

http://www.playframework.org/

  • 任意の場所で解凍してパスを通し、playコマンドでインストールします。

   1  C:\Users\akanuma>play
   2  Getting net.java.dev.jna jna 3.2.3 ...
   3  :: retrieving :: org.scala-tools.sbt#boot-app
   4          confs: [default]
   5          1 artifacts copied, 0 already retrieved (838kB/510ms)
   6  Getting Scala 2.9.1 (for console)...
   7  :: retrieving :: org.scala-tools.sbt#boot-scala
   8          confs: [default]
   9          4 artifacts copied, 0 already retrieved (19939kB/3195ms)
  10  Getting play console_2.9.1 2.0 ...
  11  :: retrieving :: org.scala-tools.sbt#boot-app
  12          confs: [default]
  13          4 artifacts copied, 0 already retrieved (1472kB/566ms)
  14         _            _
  15   _ __ | | __ _ _  _| |
  16  | '_ \| |/ _' | || |_|
  17  |  __/|_|\____|\__ (_)
  18  |_|            |__/
  19  
  20  play! 2.0, http://www.playframework.org
  21  
  22  This is not a play application!
  23  
  24  Use `play new` to create a new Play application in the current directory,
  25  or go to an existing application and launch the development console using `play`.
  26  
  27  You can also browse the complete documentation at http://www.playframework.org.

  • アプリケーション用の任意のディレクトリで play new コマンドでアプリケーションを作成します。ここでは play_new_sample ディレクトリで sample という名前のアプリケーションを作成します。

   1  C:\play_new_sample>play new sample
   2         _            _
   3   _ __ | | __ _ _  _| |
   4  | '_ \| |/ _' | || |_|
   5  |  __/|_|\____|\__ (_)
   6  |_|            |__/
   7  
   8  play! 2.0, http://www.playframework.org
   9  
  10  The new application will be created in C:\play_new_sample\sample
  11  
  12  What is the application name?
  13  > sample
  14  
  15  Which template do you want to use for this new application?
  16  
  17    1 - Create a simple Scala application
  18    2 - Create a simple Java application
  19    3 - Create an empty project
  20  
  21  > 1
  22  
  23  OK, application sample is created.
  24  
  25  Have fun!

  • コマンドを実行したディレクトリにアプリケーション名のディレクトリが作成されますので、その中に移動して play run コマンドでアプリケーションを起動します。

   1  C:\play_new_sample\sample>play run
   2  Getting org.scala-tools.sbt sbt_2.9.1 0.11.2 ...
   3  :: retrieving :: org.scala-tools.sbt#boot-app
   4          confs: [default]
   5          37 artifacts copied, 0 already retrieved (7324kB/3942ms)
   6  [info] Loading project definition from C:\play_new_sample\sample\project
   7  [info] Set current project to sample (in build file:/C:/play_new_sample/sample/)
   8  
   9  [info] Updating {file:/C:/play_new_sample/sample/}sample...
  10  [info] Done updating.
  11  --- (Running the application from SBT, auto-reloading is enabled) ---
  12  
  13  [info] play - Listening for HTTP on port 9000...
  14  
  15  (Server started, use Ctrl+D to stop and go back to the console...)
  16  

  • ブラウザでlocalhostの9000番ポートにアクセスして起動を確認します。

play.jpg

  • local に scala を直接インストールしていないせいか、sbt の run コマンドだとアクセス時に 「scala.tools.nsc.MissingRequirementError: object scala not found.」 が発生しました。

  • アプリケーションをEclipseプロジェクトにするには play eclipsify コマンドを実行します。

   1  C:\play_new_sample\sample>play eclipsify
   2  [info] Loading project definition from C:\play_new_sample\sample\project
   3  [info] Set current project to sample (in build file:/C:/play_new_sample/sample/)
   4  [info] About to create Eclipse project files for your project(s).
   5  [info] Successfully created Eclipse project files for project(s): sample

  • EclipseでScalaの開発をするためのプラグインとして、Scala IDE for Eclipse があります。Eclipse3.6(Helios)が正式サポート対象で、3.7(Indigo)では一部動作しない機能があります。

  • Eclipse の Helpメニュー > Install New Software から下記URL(Scala 2.9.x用)を指定してプラグインをインストールします。

http://download.scala-ide.org/releases-29/stable/site

  • Scala2.8.xの場合は下記URLになります。

http://download.scala-ide.org/releases-28/stable/site

  • これでひとまずアプリケーションの作成はできましたので、必要なロジックを作りこんでいくことになります。
posted by Png akanuma on Fri 16 Mar 2012 at 08:31

 今更ですがScalaをちゃんと勉強するために、まずは環境の準備ということでCloudCore環境にScalaをインストールしました。

JDK Install

  • まずはJavaの環境が必要なので、JDKのrpmパッケージをダウンロード。

   1  # wget http://download.oracle.com/otn-pub/java/jdk/7u2-b13/jdk-7u2-linux-x64.rpm
   2  --2012-01-22 22:41:18--  http://download.oracle.com/otn-pub/java/jdk/7u2-b13/jdk-7u2-linux-x64.rpm
   3  download.oracle.com をDNSに問いあわせています... 118.155.230.51, 118.155.230.26
   4  download.oracle.com|118.155.230.51|:80 に接続しています... 接続しました。
   5  HTTP による接続要求を送信しました、応答を待っています... 200 OK
   6  長さ: 67641623 (65M) [application/x-redhat-package-manager]
   7  `jdk-7u2-linux-x64.rpm' に保存中
   8  
   9  100%[======================================================================================================================>] 67,641,623  1.78M/s 時間 28s
  10  
  11  2012-01-22 22:41:47 (2.30 MB/s) - `jdk-7u2-linux-x64.rpm' へ保存完了 [67641623/67641623]

  • rpmコマンドでインストール

   1  # rpm -ivh jdk-7u2-linux-x64.rpm
   2  準備中...                ########################################### [100%]
   3     1:jdk                    ########################################### [100%]
   4  Unpacking JAR files...
   5          rt.jar...
   6          jsse.jar...
   7          charsets.jar...
   8          tools.jar...
   9          localedata.jar...
  10  #
  11  # which java
  12  /usr/bin/java
  13  #
  14  # java -version
  15  java version "1.7.0_02"
  16  Java(TM) SE Runtime Environment (build 1.7.0_02-b13)
  17  Java HotSpot(TM) 64-Bit Server VM (build 22.0-b10, mixed mode)

Scala Runtime インストール

  • まずはRuntimeをダウンロード

   1  $ wget http://www.scala-lang.org/downloads/distrib/files/scala-2.9.1.final.tgz
   2  --2012-01-22 22:47:37--  http://www.scala-lang.org/downloads/distrib/files/scala-2.9.1.final.tgz
   3  www.scala-lang.org をDNSに問いあわせています... 128.178.154.159
   4  www.scala-lang.org|128.178.154.159|:80 に接続しています... 接続しました。
   5  HTTP による接続要求を送信しました、応答を待っています... 200 OK
   6  長さ: 24993458 (24M) [application/x-gzip]
   7  `scala-2.9.1.final.tgz' に保存中
   8  
   9  100%[======================================================================================================================>] 24,993,458  4.10M/s 時間 10s
  10  
  11  2012-01-22 22:47:49 (2.33 MB/s) - `scala-2.9.1.final.tgz' へ保存完了 [24993458/24993458]

  • ダウンロードしたRuntimeを解凍して移動

   1  $ tar zxvf scala-2.9.1.final.tgz
   2  scala-2.9.1.final/
   3  ~~~中略~~~
   4  scala-2.9.1.final/meta/available
   5  $
   6  $ mv scala-2.9.1.final ../
   7  $

  • 環境変数SCALA_HOMEを設定してPATHを通します。

   1  $ cat .bashrc
   2  # .bashrc
   3  
   4  # Source global definitions
   5  if [ -f /etc/bashrc ]; then
   6          . /etc/bashrc
   7  fi
   8  
   9  # User specific aliases and functions
  10  export SCALA_HOME=/home/akanuma/scala-2.9.1.final
  11  export PATH=$PATH:$SCALA_HOME/bin

  • Runtimeの動作を確認します。

   1  $ scala
   2  Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_02).
   3  Type in expressions to have them evaluated.
   4  Type :help for more information.
   5  
   6  scala>

posted by Png akanuma on Sun 22 Jan 2012 at 23:10

 一つ前のエントリ([Spring Roo]横幅の変更)で横幅を変更する方法を書きましたが、それでも対応しきれない場合は、コンテンツエリアにスクロールバーが表示されるようにする方法が考えられます。

 standard.css に下記を追加することで、コンテンツエリアにスクロールバーが表示されるようになります。

   1  .dijitTitlePaneContentInner {
   2      overflow: scroll;
   3  }

posted by Png akanuma on Sat 14 Jan 2012 at 09:58

 Rooではデフォルトの横幅が800pxになっていますが、表示項目数が多い場合や文字数が多い場合は、もっと横幅を広げたいと思うときがあります。そういう場合は standard.css の下記項目を変更することで広げることが出来ます。

   1  #wrapper {
   2  	width:800px;
   3  	min-width: 800px;
   4  	max-width: 800px;
   5  	margin-right: auto;
   6  	margin-left: auto;
   7  
   8  	/* fix max-width incompatibility in IE6 */
   9  	width:expression(document.body.clientWidth > 800? "800px": "auto" );
  10  	
  11  	overflow:hidden;
  12  	display:block;
  13  }

 上記で800となっているところを例えば900に変更することで、横幅を900pxに変更できます。

posted by Png akanuma on Sat 14 Jan 2012 at 09:48

 Spring Rooの最もベーシックな使い方はroo shell上でentityコマンドを使ってEntityを作成していくやり方ですが、既にDB上にテーブルが存在していて、そのテーブルをEntityとして使用するアプリケーションを作ることもできます。

 Rooのインストール、プロジェクトの作成、DBの接続設定までは同様の手順で行います。

Spring Roo Install
[Spring Roo]プロジェクト作成, Logging&DB接続設定

 これ以降の手順は下記ページを参考に実施していきます。

Chapter 9. Incremental Database Reverse Engineering (DBRE) Add-On

 Database Reverse Engineering(DBRE)アドオンには database introspect と database reverse engineer の2つのコマンドがありますが、いずれかを初めて実行した場合にはJDBCドライバのインストールを促すプロンプトが表示されます。

   1  com.example roo> database introspect --schema no-schema-required
   2  Located add-ons that may offer this JDBC driver
   3  2 found, sorted by rank; T = trusted developer; R = Roo 1.1 compatible
   4  ID T R DESCRIPTION -------------------------------------------------------------
   5  01 - Y 9.0.0.801_jdbc4_0001 PostgreSQL #jdbcdriver...
   6  02 Y Y 9.0.801.0001 Postgres #jdbcdriver driverclass:org.postgresql.Driver....
   7  --------------------------------------------------------------------------------
   8  [HINT] use 'addon info id --searchResultId ..' to see details about a search result
   9  [HINT] use 'addon install id --searchResultId ..' to install a specific search result, or
  10  [HINT] use 'addon install bundle --bundleSymbolicName TAB' to install a specific add-on version
  11  JDBC driver not available for 'org.postgresql.Driver'

 ここで addon info コマンドを使うことで検出されたドライバの詳細情報を見ることが出来ます。

   1  com.example roo> addon info id --searchResultId 01
   2  Name.........: spring-roo-postgres-jdbc4-wrapper
   3  BSN..........: org.postgresql.roo.wrapper.postgresql
   4  Version......: 9.0.0.801_jdbc4_0001
   5  Roo Version..: 1.1
   6  Ranking......: 0.0
   7  JAR Size.....: 546943 bytes
   8  PGP Signature: 0x36673F56 signed by Ingo Thierack (ingothierack@googlemail.com)
   9  OBR URL......: http://spring-roo-postgres-jdbc4-wrapper.googlecode.com/svn/repo/
  10                 repository.xml
  11  JAR URL......: httppgp://spring-roo-postgres-jdbc4-wrapper.googlecode.com/svn/re
  12                 po/org/postgresql/roo/wrapper/org.postgresql.roo.wrapper.postgres
  13                 ql/9.0-801.jdbc4.0001/org.postgresql.roo.wrapper.postgresql-9.0-8
  14                 01.jdbc4.0001.jar
  15  Description..: PostgreSQL #jdbcdriver driverclass:org.postgresql.Driver. This
  16                 bundle wraps the standard Maven artifact:
  17                 postgresql-9.0-801.jdbc4.

 最新のドライバをインストールするために、下記コマンドを実行します。

   1  com.example roo> addon install id --searchResultId 01
   2  Download URL 'http://spring-roo-postgres-jdbc4-wrapper.googlecode.com/svn/repo/org/postgresql/roo/wrapper/org.postgresql
   3  .roo.wrapper.postgresql/9.0-801.jdbc4.0001/org.postgresql.roo.wrapper.postgresql-9.0-801.jdbc4.0001.jar' failed
   4  This resource was signed with PGP key ID '0x36673F56', which is not currently trusted
   5  Use 'pgp key view' to view this key, 'pgp trust' to trust it, or 'pgp automatic trust' to trust any keys
   6  Target resource(s):
   7  -------------------
   8     spring-roo-postgres-jdbc4-wrapper (9.0.0.801_jdbc4_0001)
   9  
  10  Deploying...done.
  11  
  12  Unable to install add-on: spring-roo-postgres-jdbc4-wrapper [version: 9.0.0.801_jdbc4_0001]

 おや、インストールに失敗してしまいました。どうやらドライバのダウンロードURLのKeyが信頼されていないということのようです。pgp key view コマンドを使用してkeyの情報を表示します。

   1  com.example roo> pgp key view --keyId 0x36673F56
   2  >>>> KEY ID: 0x36673F56 <<<<
   3       More Info: http://keyserver.ubuntu.com/pks/lookup?fingerprint=on&op=index&search=0x36673F56
   4       Created: 2011-1-30 18:36:08 +0000
   5       Fingerprint: dc1a2679fc6a938d6681a61389a2afd036673f56
   6       Algorithm: RSA_GENERAL
   7       User ID: Ingo Thierack <ingothierack@googlemail.com>
   8            Signed By: Key 0x36673F56 - not locally trusted
   9       Subkey ID: 0x1A2EDAED [RSA_GENERAL]

 このKeyを信頼してダウンロードを可能にするために、下記コマンドを実行します。

   1  com.example roo> pgp trust --keyId 0x36673F56
   2  Added trust for key:
   3  >>>> KEY ID: 0x36673F56 <<<<
   4       More Info: http://keyserver.ubuntu.com/pks/lookup?fingerprint=on&op=index&search=0x36673F56
   5       Created: 2011-1-30 18:36:08 +0000
   6       Fingerprint: dc1a2679fc6a938d6681a61389a2afd036673f56
   7       Algorithm: RSA_GENERAL
   8       User ID: Ingo Thierack <ingothierack@googlemail.com>
   9            Signed By: Key 0x36673F56 (Ingo Thierack <ingothierack@googlemail.com>)
  10       Subkey ID: 0x1A2EDAED [RSA_GENERAL]

 そして再度インストールコマンドを実行します。

   1  com.example roo> addon install id --searchResultId 01
   2  Target resource(s):
   3  -------------------
   4     spring-roo-postgres-jdbc4-wrapper (9.0.0.801_jdbc4_0001)
   5  
   6  Deploying...done.
   7  
   8  Successfully installed add-on: spring-roo-postgres-jdbc4-wrapper [version: 9.0.0.801_jdbc4_0001]
   9  [Hint] Please consider rating this add-on with the following command:
  10  [Hint] addon feedback bundle --bundleSymbolicName org.postgresql.roo.wrapper.postgresql --rating ... --comment "..."

 無事にインストールできました。次にDBREアドオンのdatabase introspectコマンドでテーブルの情報を表示します。

   1  com.example roo> database introspect --schema public --file --enableViews

 出力内容は割愛しますが、XML形式でスキーマの情報が表示されます。

 そして実際にテーブル情報からEntityを作成するためにdatabase reverse engineerコマンドを実行します。

   1  com.example roo> database reverse engineer --schema public --package ~.domain --testAutomatically
   2  Created SRC_MAIN_RESOURCES\dbre.xml
   3  Updated ROOT\pom.xml
   4  Updated SRC_MAIN_RESOURCES\META-INF\persistence.xml
   5  Created SRC_MAIN_JAVA\com\example\domain
   6  Created SRC_MAIN_JAVA\com\example\domain\Access.java
   7  Created SRC_MAIN_JAVA\com\example\domain\Content.java
   8  Created SRC_TEST_JAVA\com\example\domain
   9  Created SRC_TEST_JAVA\com\example\domain\AccessDataOnDemand.java
  10  Created SRC_TEST_JAVA\com\example\domain\AccessIntegrationTest.java
  11  Created SRC_TEST_JAVA\com\example\domain\ContentDataOnDemand.java
  12  Created SRC_TEST_JAVA\com\example\domain\ContentIntegrationTest.java
  13  Created SRC_MAIN_JAVA\com\example\domain\Access_Roo_Configurable.aj
  14  Created SRC_MAIN_JAVA\com\example\domain\Access_Roo_Entity.aj
  15  Created SRC_MAIN_JAVA\com\example\domain\Access_Roo_DbManaged.aj
  16  Created SRC_MAIN_JAVA\com\example\domain\Access_Roo_ToString.aj
  17  Created SRC_MAIN_JAVA\com\example\domain\Content_Roo_Configurable.aj
  18  Created SRC_MAIN_JAVA\com\example\domain\Content_Roo_Entity.aj
  19  Created SRC_MAIN_JAVA\com\example\domain\Content_Roo_DbManaged.aj
  20  Created SRC_MAIN_JAVA\com\example\domain\Content_Roo_ToString.aj
  21  Created SRC_TEST_JAVA\com\example\domain\AccessDataOnDemand_Roo_Configurable.aj
  22  Created SRC_TEST_JAVA\com\example\domain\ContentDataOnDemand_Roo_DataOnDemand.aj
  23  Created SRC_TEST_JAVA\com\example\domain\AccessDataOnDemand_Roo_DataOnDemand.aj
  24  Created SRC_TEST_JAVA\com\example\domain\ContentIntegrationTest_Roo_Configurable.aj
  25  Created SRC_TEST_JAVA\com\example\domain\ContentIntegrationTest_Roo_IntegrationTest.aj
  26  Created SRC_TEST_JAVA\com\example\domain\ContentDataOnDemand_Roo_Configurable.aj
  27  Created SRC_TEST_JAVA\com\example\domain\AccessIntegrationTest_Roo_Configurable.aj
  28  Created SRC_TEST_JAVA\com\example\domain\AccessIntegrationTest_Roo_IntegrationTest.aj

 --schemaオプションで対象のDBスキーマを、--packageオプションでEntityを作成するパッケージを指定します。--testAutomaticallyを指定することでEntityのインテグレーションテストが自動的に作成されます。

 また、--excludeTablesオプションや--includeTablesオプションで対象のテーブルを特定のテーブルに限定することも出来ます。

 これ以降の手順は、roo shellからEntityを作成したあとと同じ手順でWebアプリケーションのセットアップなどを行うことが出来ます。

posted by Png akanuma on Tue 20 Dec 2011 at 08:34

 Cloud Foundryに申し込んで使えるようになったので、Spring Roo in Actionの11章を参考にRooのアプリケーションをデプロイしてみました。

 まずはroo shellからCloud Foundryを走査するためのAddonをインストールします。インストールの間自動的に認証されるよう、下記コマンドを実行します。

   1  roo> pgp automatic trust
   2  Automatic PGP key trusting enabled (this is potentially unsafe); disable by typing 'pgp automatic trust' again

そして下記コマンドでAddonをインストールします。

   1  roo> addon install bundle --bundleSymbolicName org.springframework.roo.addon.cloud.foundry;1.1.5.RELEASE
   2  Target resource(s):
   3  -------------------
   4     Spring Roo - Addon - Cloud Foundry (1.1.5.RELEASE)
   5  
   6  Required resource(s):
   7  ---------------------
   8     Spring Beans (3.0.5.RELEASE)
   9     jcl-over-slf4j (1.6.1)
  10     slf4j-nop (1.6.1)
  11     Spring AOP (3.0.5.RELEASE)
  12     Servlet Specification API (2.5.0)
  13     Spring Core (3.0.5.RELEASE)
  14     Jackson JSON processor (1.6.2)
  15     Data mapper for Jackson JSON processor (1.6.2)
  16     Spring Context (3.0.5.RELEASE)
  17     Spring Roo - Wrapping - aopalliance (1.0.0.0010)
  18     Spring Web (3.0.5.RELEASE)
  19     slf4j-api (1.6.1)
  20     Spring Roo - Wrapping - Cloud Foundry API (0.0.1.0010)
  21  
  22  Optional resource(s):
  23  ---------------------
  24     Spring Expression Language (3.0.5.RELEASE)
  25     Spring ASM (3.0.5.RELEASE)
  26  
  27  Deploying...done.
  28  
  29  Successfully installed add-on: Spring Roo - Addon - Cloud Foundry [version: 1.1.5.RELEASE]
  30  [Hint] Please consider rating this add-on with the following command:
  31  [Hint] addon feedback bundle --bundleSymbolicName org.springframework.roo.addon.cloud.foundry --rating ... --comment "..
  32  ."

Roo in Actionの例では "addon install bundle --bundleSymbolicName org.springframework.roo.addon.cloud.foundry" という感じにバージョン番号を指定していないのですが、これだと最新のバージョンがインストールされます。今回のケースではSpring Rooのバージョンが1.1.5なので、Addonのインストールでもバージョンを1.1.5に指定しないとこの時点の最新である1.2.0.RC1がインストールされてしまい、うまくいきません。

インストールが終了したら自動認証をOFFに戻します。

   1  roo> pgp automatic trust
   2  Automatic PGP key trusting disabled (this is the safest option)

Addonをインストールしたことでcloud foundryコマンドが使用できるようになっています。まずはCloud Foundryにログインします。

   1  roo> cloud foundry login --email xxxxxxxxxx@xxxxx.xxx --password xxxxxxxxxx
   2  Credentials saved.
   3  Logged in successfully with email address 'xxxxxxxxxx@xxxxx.xxx'

Cloud Foundryの環境についての情報を表示するには下記コマンドを実行します。

   1  roo> cloud foundry info
   2  
   3  
   4  VMware's Cloud Application Platform
   5  For support visit http://support.cloudfoundry.com
   6  
   7  
   8  Target:     http://api.cloudfoundry.com (0.999)
   9  
  10  
  11  User:     hiroaki.akanuma@gmail.com
  12  Usage:     Memory (128MB of 2048MB total)
  13       Services (0 of 16 total)
  14       Apps (1 of 20 total)

現在デプロイされているアプリケーションのリストは下記コマンドで確認できます。

   1  roo> cloud foundry list apps
   2  
   3  =================================== Applications ===================================
   4  
   5  Name             Status      Instances     Services     URLs
   6  ----             ------      ---------     --------     ----
   7  akanumahello     STARTED     1                          akanumahello.cloudfoundry.com

上記の出力では akanumahello というアプリケーションがすでにデプロイされていることが分かります。

また、現在使用可能なサービスのリストは下記コマンドで確認できます。

   1  roo> cloud foundry list services
   2  
   3  ======================= System Services ========================
   4  
   5  Service        Version     Description
   6  -------        -------     -----------
   7  mysql          5.1         MySQL database service
   8  postgresql     9.0         PostgreSQL database service (vFabric)
   9  mongodb        1.8         MongoDB NoSQL store
  10  redis          2.2         Redis key-value store service
  11  rabbitmq       2.4         RabbitMQ messaging service
  12  
  13  
  14  There are currently no provisioned services.

ではアプリケーションをデプロイしてみます。cloud foundry deploy コマンドでデプロイすることができます。

   1  roo> cloud foundry deploy --appName cftest --path CREATE
   2  ~~中略~~
   3  Operation could not be completed: 400 Bad Request

上記のように 400 Bad Request となってしまった場合は、--appName で指定したアプリケーション名がすでに使われているということなので、アプリケーション名を変更して再度デプロイします。

   1  roo> cloud foundry deploy --appName cftestaka --path CREATE
   2  ~~中略~~
   3  The application 'cftestaka' was successfully pushed

上記のように successfully pushed と出力されればデプロイ成功です。アプリケーションの一覧を確認してみます。

   1  roo> cloud foundry list apps
   2  
   3  =================================== Applications ===================================
   4  
   5  Name             Status      Instances     Services     URLs
   6  ----             ------      ---------     --------     ----
   7  akanumahello     STARTED     1                          akanumahello.cloudfoundry.com
   8  cftestaka        STOPPED     1                          cftestaka.cloudfoundry.com

cftestakaというアプリケーションが一覧に追加されています。StatusがSTOPPEDになっていてまだ起動はしていないので、下記コマンドでアプリケーションを起動します。

   1  roo> cloud foundry start app --appName cftestaka
   2  The application 'cftestaka' was successfully started
   3  roo> cloud foundry list apps
   4  
   5  =================================== Applications ===================================
   6  
   7  Name             Status      Instances     Services     URLs
   8  ----             ------      ---------     --------     ----
   9  akanumahello     STARTED     1                          akanumahello.cloudfoundry.com
  10  cftestaka        STARTED     1                          cftestaka.cloudfoundry.com

Status が STARTED に変わり、アプリケーションが起動されました。http://cftestaka.cloudfoundry.com/ にアクセスしてトップページが表示されれば起動に成功しています。

稼働中のアプリケーションの統計情報については下記コマンドで確認できます。

   1  roo> cloud foundry view app stats --appName cftestaka
   2  
   3  ============================== App. Stats ==============================
   4  
   5  Instance     CPU (Cores)     Memory (limit)     Disk (limit)      Uptime
   6  --------     -----------     --------------     ------------      ------
   7  0            8.0 (4)         239.09M (256M)     28.0M (2048M)     0d:

さて、アプリケーションは起動しましたが、まだDBが使えるようになっていないので、Entityを操作するための画面に遷移しようとするとエラーになってしまいます。

まずはDBをサービスとして作成します。

   1  roo> cloud foundry create service --serviceName cftesakadb --serviceType postgresql
   2  The service 'cftesakadb' was successfully created

サービスの一覧を確認すると、= Provisioned Services = の部分にサービスが追加になっています。

   1  roo> cloud foundry list services
   2  
   3  ======================= System Services ========================
   4  
   5  Service        Version     Description
   6  -------        -------     -----------
   7  mysql          5.1         MySQL database service
   8  postgresql     9.0         PostgreSQL database service (vFabric)
   9  mongodb        1.8         MongoDB NoSQL store
  10  redis          2.2         Redis key-value store service
  11  rabbitmq       2.4         RabbitMQ messaging service
  12  
  13  
  14  
  15  = Provisioned Services =
  16  
  17  Name           Service
  18  ----           -------
  19  cftesakadb     postgresql

次に、作成したサービスをアプリケーションに紐付けます。

   1  roo> cloud foundry bind service --serviceName cftesakadb --appName cftestaka
   2  The service 'cftesakadb' was successfully bound to the application 'cftestaka'
   3  roo>

そしてアプリケーションを再起動します。

   1  roo> cloud foundry restart app --appName cftestaka
   2  The application 'cftestaka' was successfully restarted

これでアプリケーションがDBを使えるようになり、EntityのCRUD画面も動作するようになります。

アプリケーションのログを確認するには下記コマンドを実行します。

   1  roo> cloud foundry view logs --appName cftestaka --instance 0

長いので出力は省略しますが、stderr.logとstdout.logが閲覧できます。

それと現在のメモリの割当量は下記コマンドで確認できます。

   1  roo> cloud foundry view app memory --appName cftestaka
   2  
   3  = Application Memory =
   4  
   5  Name          Memory
   6  ----          ------
   7  cftestaka     256MB

現在は256MBのメモリが割り当てられています。この割当量を変更するには下記のようにコマンドを実行します。

   1  roo> cloud foundry update app memory --appName cftestaka --memSize 512MB
   2  
   3  = Application Memory =
   4  
   5  Name          Memory
   6  ----          ------
   7  cftestaka     512MB

メモリ量が512MBに変更されました。

RooとCloud Foundryの組み合わせなら簡単なCRUDアプリの公開はとてもスピーディーに行うことができそうです。まだCloud Foundryはベータ版なので、正式版になったときに料金体系などがどうなるかは気になりますが、Roo + Cloud Foundryで何か公開できるようなサービスでも作れないかなぁと思っています。

posted by Png akanuma on Mon 12 Dec 2011 at 00:01
Contents
[Git] CentOS上からgithubを使う
[Linux] ファイル名が文字化けした場合の操作
[Perl] CPANでのモジュールインストール時に「サーバの応答にエラーがあるので、接続を終了します。」となってしまう
[Perl] Date::Simpleのインストール
[Scala] playframework2.0での開発環境構築
[Scala]Runtimeインストール
[Spring Roo]コンテンツエリアにスクロールバーを表示する
[Spring Roo]横幅の変更
[Spring Roo]DBからのReverse Engineering
[Spring Roo]Cloud Foundryにアプリをデプロイ
Comments
yoku0825: nkfの方が使いやすいですが、glibcに含まれているiconvの方が 確実にどの環境にも入っ... '12-6
Hiroaki Akanuma: ご指摘ありがとうございます。「嗜好度は大きい値がより嗜好度が強いことを意味すればどのような値で... '11-11
akr: 初めての推薦エンジンのところ 「属性データはどんなものでも可能。」 は preference ... '11-11
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ