プログラミング Groovy キタ!

楽しみにしていました書籍「プログラミング GROOVY」が Amazon さんより到着しました。 日本初(発)の Groovy 本ということで、著者の方々も Web で Groovy のこと検索すると必ずお世話になる方ばかりですごいす :)。。

てなわけで早速。

groovy20

出たばかりの Groovy 1.8 についても網羅されていますし、 イデオムや GDK の API が一覧できるとても良い本でした。 Groovy の歴史的経緯など背景的なことなども知ることができて楽しく読み終えることができました。 ぼくはまだ全然 Groovy のボキャブラリが少ないので、今後も座右の書として活躍です。 🙂

同僚の人が、仕事で Groovy をやりはじめたようなのでお勧めしておきましょう。(←どうやら貸さないらしい(笑)

最近ぐるぐる言い出したのは、実はふと買ってみた Groovy In Action が面白すぎたせいなのです。 おもしろい技術書というの非常に大切な存在ですね。 In Action 1st は既に絶版(Amazon で 1.5万円くらい。。)ですので、プログラミング Groovy がその役目を果たすのではないかと思います。 🙂

てなわけで(??)、本日は Groovy スクリプトをひとつかいてみました。

以前、shiroica さんがつくられていました XREA/CORESERVER への SSH 許可ホストを登録する Python スクリプトの Groovy 移植版です。 なんとなく移植(笑)

XREAのサーバーに設置したWordPressを自動バックアップする環境を整える

さて、とりあえず手動で登録すればよいことは分かりましたが、登録の有効期限は30日間だけに限られています。また、出先でSSHで繋ぐために別の IPアドレスを登録した場合、上書きされてしまい、再度登録しないと繋がらなくなってしまいます。そのため、ホスト情報の登録も自動化する必要があります。そこでこんなスクリプトをPythonで書いてみました。

Groovy は JVM と Groovy の jar ひとつあれば動作しますので Windows でも動作させやすいのではないかと思います。(下のソースは手元の Ubuntu で動かしていますので1行目にシェバングが入っています)

動作環境のグローバル IP アドレス調べて、レンタルサーバの管理画面に GET で送信してあげるプログラムです。

#!/opt/groovy-1.8.0/bin/groovy
 
// ここを書き換えてください
def server = 'サーバ名'
def username = 'ユーザ名'
def password = 'パスワード'
def ipaddressResponder = 'グローバルIPを教えてくれるPHP等のURL'
 
def adminURL = "http://$server/jp/admin.cgi"
 
if(!(ipaddressResponder.toURL().text ==~
    /\d+\.\d+\.\d+\.\d+/)) {
    println "Failed ($ipaddress)"
    System.exit(1)
}
 
def values =
    [ 'id' : username, 'pass' : password,
    'remote_host' : ipaddress, 'ssh2' : 'SSH登録']
def param = ""
values.each {
    param += 
        "${it.key}=${URLEncoder.encode(it.value, "UTF-8")}&"
}
param = param[0..param.size()-2]
 
if(!("$adminURL?$param".toURL().getText("Shift_JIS") =~
    /データベースに追加しました。/)) {
    println "Failed (unmutch)"
    System.exit(1)
}
 
System.exit(0)

 

Linux で groovy シェルを動かすと Exception したときに echo $? が 1 返してくれるようなので、例外処理は思い切って削除しちゃいました。

ほとんど調べることなくホントにのりでかけますので便利ですねぇ。 こんな感じじゃない?って書き方が普通に動くのはちょっと感動します。 Java だけでなく、Web 制作で PHP とかやられている人にもとっつきやすいのではないでしょうかっ。

さて大抵の OS でいけるこの Groovy スクリプトの簡単な動作のさせ方は、、

  1. とりあえず上のソースの 1行目を消す。 ソース内にあるサーバ設定とかする。
  2. Groovy をダウンロード してきて、アーカイブの中に入っている embeddable\groovy-all-1.8.0.jar を上のソースを保存したファイル(たとえば registhost.groovy)といっしょのフォルダに置く。
  3. コマンドプロンプトやコンソールをそのディレクトリに開いて以下のコマンドを入力。
java -jar groovy-all-1.8.0.jar registhost.groovy

 

Keep on Groovy – ing!

Eclipse Indigo リリース

少し前になりますが統合環境 Eclipse の新版 Indigo がリリースされました。 🙂

てなわけで休日をつかって Ubuntu にインストールです。 Linux 版 Eclipse ってあんまりスクリーンショット載せてる人見かけないので見てってください= ヨーロッパでは Eclipse ユーザの 3割くらいは Linux とどっかに書いてたのですが(笑)。

Eclipse.org – Indigo Simultaneous Release

Indigo is the annual release of Eclipse projects on June 22 2011;
this year 62 project teams are part of the release.

Eclipse最新版「Eclipse Indigo」登場 – 62プロジェクト同時公開 | エンタープライズ | マイコミジャーナル

Eclipse Foundationは6月22日(カナダ時間)、Eclipseの最新リリース版となる「Eclipse Indigo」を公開した。EclipseはJavaをはじめ様々なプログラミング言語に対応した統合開発環境。プラグイン構造を採用した高い拡張性が特徴で、代表的な開発環境のひとつとされている。

今回は残念ながら PHP Developer 版はメンテナさん不足で本家からのリリースはないそうで、その場合は Pleiades All in One さんからディストリビューションリリースされているので使わせていただくと良いと思われます。

というわけで、ぼくは本家 JEE 版から入れてみました。 今回のリリースのポイントのひとつとなっている WindowsBuilder は EE には入っていないので別途入れてみました。 SE 版では標準です。

WindowBuilder

WindowBuilder is composed of SWT Designer and Swing Designer and makes it very easy to create Java GUI applications without spending a lot of time writing code.

アップデートサイトがありますので、いつも通りの感じでインストールできます。

いざ実行。

indigo02

XWT がちょっと目を引きますね。 🙂

Indigo にあわせて SWT 3.7 もリリースされています。 Linux で SWT 使っている人もあまり Web でみかけないので WindowBuilder / SWT のスクリーンショットのせておきますです。

indigo01

この手のは案外レイアウトマネージャのこととか知らないと、うまく使えなかったりするので逆に難しい時もありますが、固定位置合わせとかは便利そうですね。 イベントハンドらの生成とか JFace のデータバインディングとかまだみていませんが、そのうち遊んでみるです。

その他、Groovy-Eclipse とか Subclipse とかいつも使っているものは、ぱらっとさわった限り Indigo でも大丈夫そうです。 Android のプラグインも入りました(ただ、こちらはまだ入れてみただけです)

統合環境新しくなると、なんかつくってみたくなるのはなぜなんでしょう。(←逆ですわな。

mikumiku

さて、DX7 色。 こちらも届きましたぞ。 すごいね、ねんどろいど。 🙂

WordPress を dotCloud にデプロイ

デプロイ田中です、みなさんこんにちは!!。。

本日は、最近ちらほら聞きます PaaS 型クラウド dotCloud さんに WordPress をデプロイしてみるです。 まぁ無料版のでやっているのでお遊びなのですが、まずはなかなかうまく動くようですぞ。 🙂

dotCloud は、さまざまなプラットフォームのアプリケーションを配置できるいわゆる PaaS のサービスです。 Java はもちろん Ruby や PHP、サーバサイド JavaScript の node.js なんかも動作するようです。 また各種データベースも動作します。

wp3203

DotCloud – Deployment made simple

DotCloud lets you create the best cloud stack for your application. We give developers and IT professionals the freedom and flexibility to mix and match languages, databases, caching and messaging components without the need for additional servers or infrastructure.

PHP を扱っているとアプリケーションをサーバにインストールする行為というのは、FTP か何かでファイルを「置く」みたいな感じなので感覚が違うかもしれませんが、PaaS というのは OS にアプリをインストールするようなイメージで使います。 ここでいっている “OS” にあたるのがアプリケーションサーバというやつです。

まぁそうは言っても PHP にはアプリのインスタンスを保持するような仕組みはないので実質的にはファイルが置かれるだけなのですが、dotCloud の管理ツールの使い方的には PHP でもそんな感じになります。

さて、PaaS が普通の Web レンタルサーバと何が違うかというと、OS 的な部分が隠ぺい(クラウド)されていることです。 メモリとかファイルシステムとかネットワークとかリソースをあんまり考えずに使えるようになっていて、また必要であれば動的に付け足すことができます。

あとスナップショットバックアップのような、その時のサーバそのものをバックアップ保持するような機能がついているのも多いですね。 アプリケーションを簡単に動作させて運用するために特化した機能がついたサーバが PaaS。 この技術の後ろに見え隠れそるのがサーバ仮想化技術になります。

ぼく的な PaaS の感覚は、いろんな言語や動作プラットフォームを使ってインターネット上にアプリを公開できてわーい、、という感じなものです(笑)

てなわけで早速、Groovy のアプリをデプロイ、、といきたいところですが、ここは勝手知ったる WordPress でまずはお試しデプロイです。

dotCloud には便利な管理操作用 CLI インターフェースが用意されていますので、こちらで操作します。 python が必要なのでお使いの OS にいれて、、最初 easy_install というのが何かさっぱりわからなかったのは秘密です。。(マニュアル参考

$ sudo apt-get install python-setuptools
$ sudo easy_install pip && sudo pip install dotcloud

Ubuntu 11.04 の場合はこれで準備完了。 簡単アルネ。

API キーなど入れながら、アプリケーション(名)作成。(誰かとかぶらない任意の名前)

$ dotcloud create maple4ever

あとは WordPress をローカルのどこかのディレクトリに展開し、そのルートに dotcloud.yml ファイルを以下のようにして PHP と MySQL サービス設定。

wp:
  type: php
 
db:
  type: mysql

でもって、このディレクトリをカレントにおいて push します。

$ dotcloud push maple4ever .

これでデプロイ完了。

起動した MySQL インスタンスに WordPress 用の DB を create databese します。 とりあえず MySQL の情報閲覧。 「アプリケーション名.サービス名」で info コマンドしてあげます。

$ dotcloud info maple4ever.db
build_revision: rsync-1309187922.37
cluster: wolverine
config:
    mysql_password: nyoron
    mysql_serverid: -1
created_at: 1309187925.281122
ports:
-   name: ssh
    url: ssh://dotcloud@ugogogo.dotcloud.com:9284
-   name: mysql
    url: mysql://root:mogemoge@hogehoge.dotcloud.com:9344
state: running
type: mysql

WordPress に設定する DB ホストは hogehoge.dotcloud.com:9344 のところなのでメモ。(デフォルトポートと違うので全部いれる)

create table & ユーザ作成。 こんなかんじ。 キャラセットは指定するとはじかれたので、そのまま行きました。

$ dotcloud run maple4ever.db -- mysql -u root -p[パスワード]
# mysql -u root -p[パスワード]
 
mysql> CREATE USER 'wp' IDENTIFIED BY '[任意のパスワード]';
mysql> create database wp;
mysql> GRANT ALL ON wp.* to 'wp'@'%';

上はデータベース名 wp 、ユーザ名 wp で設定の図。

次に info コマンドで php サービスの URL を取得して普通にブラウザアクセス。

$ dotcloud info maple4ever.wp
-   name: http
    url: http://d84fa7d5.dotcloud.com/
state: running
type: php

あとはいつもの通り WordPress をインストールすれば、

wp3202

ようこそ WordPress の世界へ。 🙂

wp3201

[tegaki]動いた~![/tegaki]

WordPress 3.2 RC2 日本語版キタ。  サイト中身はめ組さんの「日本語版インポートテストデータ」です。 試験に大変便利なので見てみてください。 🙂

http://d84fa7d5.dotcloud.com/

(そのうち消えます。)

残念ながら dotCloud 無料版ではドメインマッピングできないので変なホスト名ですが、なかなかよく動きますね~。 memcached のインスタンスもあげられるようなので、追加してみるといいかもしれません。

httpd は nginx を使っているようです。 いじればパーマリンクも設定できると思います。 ファイルのアップロードなども問題なく動きます。(ちなみに Java のアプリケーションサーバは Jetty のようです)

てなわけで、ネットワーク上に好きなアプリを簡単に配置して使う。 そんなことができるようになるかもしれない PaaS プラットフォームのお話でした。 他にも cloudBees とか同様のサービスがありますので探してみるのも面白いでしょう。

ばいっ。(←芸風がおかしい。。