2012年9月30日日曜日

Groovy!! ミックスイン(Minxin)の巻

GroovyはMixinがつかえる。
Mixin名前かっこいい!


多重継承の使いどころ全然思いつかない(ニューハーフとか?)
けど、コード書いてみよう。


言語仕様は使いやすくて読みやすい。
ただし、読みやすさは同一スコープでクラス初期化してる場合だけで、DIとかの場合は定義だけ見ても継承関係わかんなくなっちゃうからダメかも。でもGroovyでDIなんか書かないからいいか。
要は適材適所?でも適所がわからん(><)

ついでに参考
Mixin は Symbolics 社のオブジェクト指向システム Flavors で初めて登場し、LISPマシン で用いられたオブジェクト指向への試みであった。この名称は、マサチューセッツ州 Somerville にあった Steve's Ice Cream Parlor からヒントを得て考え出されたものであった[1]。このアイスクリーム店の店長は(バニラやチョコレートなどの)基本となる味を混ぜ、追加の具材(ナッツ、クッキー、キャンディなど)と組み合わせたものを提供し、それを"Mix-in"と呼んで店の登録商標としていた[2]。
Mixin - Wikipedia

けつろん
 名前かっこいい!

かねこ((´∀`))

2012年9月29日土曜日

Groovy!! クロージャ(Closure)の巻

Groovyはクロージャ(Closure)が使える。
クロージャが使えると、RubyとかjQueryでよくやるあの感じ(笑)のコーディングが出来る!

説明ができないので、コード書きます。

スコープ
クロージャはブロックの外側の変数にアクセスすることができる。


レキシカルスコープ
クロージャが呼び出された場所ではなく、クロージャが宣言されている場所からみたスコープが有効


変数の束縛
クロージャ内で宣言した変数のスコープはクロージャ内のみとなる


本領発揮
必殺!この記法で書くことができると、イテレーションの条件と実際の処理を分離することができる。


どんどんつかおうクロージャ!

かねこ( ゚ ρ ゚ )

2012年9月23日日曜日

Groovy!!(テスト!)

テスト書かない奴は死刑!

ということで、groovyのテストかいてみます。

コード みぢかっ!

テスト
実行
グリーン。

今日のブログもう終わってしまった…つづく!

かねこ(-∧-;)

2012年9月22日土曜日

Groovy!!(EclipseとGroovyプラグイン)

EclipseのGroovyプラグインいれるの巻。ほぼ全自動で楽々♪


ヘルプ→新規ソフトウェアのインストール



何にも考えずにどんどん進んで、


インストール完了。

新規プロジェクトウィザードにGroovyできた。ナイス!
さっそくプロジェクト作ってみる。



check it!!



かねこ(´∀`∩)↑age↑

2012年9月20日木曜日

Groovy!!(Linuxに環境構築編)


Groovyきわめる!

まずはLinuxに環境構築する

前提確認。OS.
# uname -a
Linux polyrhythm.e2info.co.jp 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011
x86_64 x86_64 x86_64 GNU/Linux

種類わかったから以下。
# cat /etc/redhat-release
CentOS release 6.2 (Final)

あとJava
java version "1.7.0_05-icedtea"
OpenJDK Runtime Environment (rhel-2.2.1.el6_3-x86_64)
OpenJDK 64-Bit Server VM (build 23.0-b21, mixed mode)


Groovyインストール!

バイナリ取得
[root@polyrhythm tmp]# cd /tmp
[root@polyrhythm tmp]# wget http://dist.groovy.codehaus.org/distributions/groovy-binar


展開と移動
[root@polyrhythm tmp]# unzip groovy-binary-2.0.2.zip
[root@polyrhythm tmp]# mv groovy-binary-2.0.2/ /usr/share/


シンボリックリンク(必須じゃない)
[root@polyrhythm share]# mv /usr/share/
[root@polyrhythm share]# ln -s /usr/share/groovy-2.0.2/ groovy


パス設定(本当は~/.bash_profileで。)
[root@polyrhythm share]# PATH=$PATH:/usr/share/groovy/bin/
[root@polyrhythm share]# export PATH

要チェック!
[root@polyrhythm share]# groovy -v
Groovy Version: 2.0.2 JVM: 1.6.0_24 Vendor: Sun Microsystems Inc. OS: Linux
やった。

コード実行
[root@polyrhythm e2info]# vi hw.groovy
println "Hello World!"

[root@polyrhythm e2info]# groovy hw.groovy
Hello World!

Groovyさいこう!

かねこ(^-^)

2012年9月18日火曜日

PHP Fog!

開発環境構築はそろそろネタ切れになってきてちょっと飽きちゃたから、たまには他のことやろう。

PHP Fogが気になったので、つかってみます。PHPのクラウドプラットフォーム!

1.登録~SSHキー設定

(省略)

アプリ登録で、とりあえずCustom Appを選択。登録が完了するとHelloWorldがでるようになる。



2.Gitリポジトリからソースコード取得

git cloneする。
# git clone git@git01.phpfog.com:e2kaneko.phpfogapp.com
Cloning into 'e2kaneko.phpfogapp.com'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.


3.ソースコード書き換え

適当に。



4.commit~push

コミットしてプッシュ。お決まり。
# git commit . -m "change message."
[master 3db2846] change message.
 1 file changed, 1 insertion(+), 1 deletion(-)

# git push
Counting objects: 5, done.
Writing objects: 100% (3/3), 271 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:  -----> Deploying to the cloud
To git@git01.phpfog.com:e2kaneko.phpfogapp.com
   c0fb119..3db2846  master -> master


5.確認

さっきプッシュした内容が反映されたことを確認。



て感じでお手軽かどうかイマイチどうかわからない(コミットフックして自動デプロイってすぐ作れるもんね)PHP Fogだけど、スケールアウトしたりスケールアップしたり、リリースバージョン管理したり、すぐサービス起動したり止めたり、そういうクラウドの特徴っぽいところで真価を発揮するんだろうよ、きっと。

AppFogもきになる!

かねこ(b´∀`)

2012年9月17日月曜日

SVNとIRC連携の巻

SVNコミットをIRCに通知してみる。
SVNにはpost-commitがあるから、たぶん楽勝。

環境もなんでもいいんだろうけど、手っ取り早そうなPHPで。

pearライブラリ検索
> pear search IR
Retrieving data...0%
.MATCHED PACKAGES, CHANNEL PEAR.PHP.NET:
=======================================
PACKAGE      STABLE/(LATEST) LOCAL
Net_IRC      0.0.7 (beta)          IRC Client Class
Net_SmartIRC 1.0.2 (stable)  1.0.2 Net_SmartIRC is a PHP class for communication with IRC networks
ネット見たらSmartIRCのほうがよさそう。

かいた。
サーバに置いて、post-commit変更
[root@hoge hooks]# vi post-commit
#!/bin/s
AUTHOR=`svnlook author -r $REV $REPOS`
LOG=`svnlook log -r $REV $REPOS`
CHANGES=`svnlook changed -r $REV $REPOS`
php /home/e2info/developer/svn-irc.php "$AUTHOR" "$LOG" "$CHANGES"

どうかな


できた!!日本語よめないのはめんどくさいからまた今度で。

(*´・ω・)かねこ(・ω・`*)

2012年9月14日金曜日

Jenkins先生とIRCの連携の巻

IRCサーバうごいたので、早速Jenkinsのビルド結果をIRCサーバに送ってみよう。
JenkinsにはIRC Pluginがあるので導入。

Jenkinsの管理→プラグインの管理→Jenkins IRC Plugin



「Jenkinsの管理」→「システムの設定」にIRC Nortification発見!有効に。


ビルドしてみる…jenkins-botきた!わーい


いや、なんかしろ(笑)

気を取り直して設定見直し。
プロジェクト単位の設定の方にあった。


再度ビルド。



できたー!連携サイコー!
IRC用のちっちゃいモニター欲しい。

かねこ( ^ω^ )

2012年9月13日木曜日

IRCいれた!!の巻

iRCサーバいれた。
設置と設定が簡単そうなので、IRCD-Hybridを選択。どのへんがハイブリッドなんだろうか。


EPEL追加
[root@polyrhythm tmp]cd /tmp
[root@polyrhythm tmp]# wget http://syslogserver.googlecode.com/files/epel-release-5-3.noarch.rpm
--2012-09-12 18:19:48--  http://syslogserver.googlecode.com/files/epel-release-5-3.noarch.rpm
Resolving syslogserver.googlecode.com... 74.125.31.82, 2404:6800:4008:c00::52
Connecting to syslogserver.googlecode.com|74.125.31.82|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11989 (12K) [application/x-rpm]
Saving to:  epel-release-5-3.noarch.rpm”

100%[======================================>] 11,989      --.-K/s   in 0.03s

2012-09-12 18:19:48 (396 KB/s) -  epel-release-5-3.noarch.rpm  saved [11989/11989]

[root@polyrhythm tmp]# rpm -ivh epel-release-5-3.noarch.rpm
warning: epel-release-5-3.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 21752
1f6: NOKEY
Preparing...                ########################################### [100%]
   1:epel-release           ########################################### [100%]



yumインストールして、
[root@polyrhythm tmp]# yum --enablerepo=epel install ircd-hybrid
(略)

Installed:
  ircd-hybrid.x86_64 0:7.2.3-5.el5

Dependency Installed:
  openssl098e.x86_64 0:0.9.8e-17.el6.centos.2

Complete!
[root@polyrhythm tmp]#


コンフィグファイル設定して起動
[root@polyrhythm tmp]# cp /usr/share/doc/ircd-hybrid-7.2.3/simple.conf /etc/ircd/ircd.conf
[root@polyrhythm tmp]# vi /etc/ircd/ircd.conf

serverinfo {
        name = "polyrhythm.e2info.co.jp";
        sid = "000";
        description = "Test IRC Server";
        hub = no;
};

[root@polyrhythm tmp]# service ircd start
[root@polyrhythm tmp]# service ircd status
ircd (pid 13110) is running...

できた?


つないでみる



つながった?よくわからないけど、つながったんだろう、きっと。

OS起動時に自動起動するようにして、

[root@polyrhythm tmp]# chkconfig ircd on


おしまい~☆

かねこ(・д・)

2012年9月11日火曜日

最強の開発環境をつくるぞ!

本気でやるぞ!


というわけで、グランドデザインのラフつくりました。イマイチ!
トモチンに「もっとかっこよくしたい!」って相談したら、「モノクロにするとかっこよくなりますよ~」って言われたんだけど、モノクロのやりかたはおしえてくれませんでした
(-∧-;) あいつめ。

現在導入済みの環境は、
  • Jenkins
  • SVN
  • Redmine
  • Aipo
  • サーバ死活監視
ほかにもあったっけな?


次はとりあえず全部つないじゃうのがわかりやすくていいだろうと思うので、iRCサーバ作って導入済みプロダクトの通知をバンバン飛ばしてみたい!

よって次回は、iRCサーバをたちあげてみたいと思います。
楽しみ!

かねこ(゜-゜)

2012年9月10日月曜日

Jenkins導入しました

ひろっちと開発チーム用サーバつくりました。KVM上にCentOS。
サーバ名はpolyrhythm.

かっこいい!

Jenkins入れました。

メモリ不足。
スペック貧弱すぎたか( TДT)

まだまだ序の口。

かねこ(゚з゚)

MVCとMOVE

世間ではMVC is dead, it's time to MOVE on.和訳)の話題が花盛り♪

ちょっと見てみた。

MVC is a phenomenal idea. You have models, which are nice self-contained bits of state, views which are nice self-contained bits of UI, and controllers which are nice self-contained bits of …

What?

I'm certainly not the first person to notice this, but the problem with MVC as given is that you end up stuffing too much code into your controllers, because you don't know where else to put it.

これの、too much code into your controllers, because~ の下り、イマイチ(><)

実際は、MVCのモデルの領域は、”データと手続き”の部分なので、Controllerが誇大化する場合は、そもそもModelの扱い方を間違えてるのではないかと思います(よくあるのは、ControllerからDAO操作してるとか)

ということで、MVC死んでねー

MOVEは一読してよくわからなかったので、次回お勉強してみようと思います。

かねこ( ・`д・´)