• Jun
  • 6
  • 2015

IT

Migrating to the Celadon Cedar-14 Stack from Bamboo(Lokkaの場合)

HerokuからBambooスタックを終了するからCedarスタックにマイグレーションせよというお知らせが随分前から届いていたけどそろそろ期限が迫っているのでこのブログの対応をした。

https://devcenter.heroku.com/articles/cedar-migration


最初はHerokuのガイド通りにやってみようと思ったけど使うべきrubyのバージョンとかがなんだかよくわからないので、新しくLokkaブログを作って元の名前にリネームしちゃうという戦法でやってみた。


1.DBダンプの取得

https://postgres.heroku.com

ここから既存のアプリのデータベースダンプを取得

2.新しいLokkaアプリの作成

Lokkaのサイトに書いてあるやり方はやや古いのでレポジトリのREADMEに沿って作成

$ git clone git://github.com/lokka/lokka.git
              $ cd lokka
              $ heroku create --remote heroku george-osd-blog-cedar
              $ git push heroku master
              $ heroku addons:add heroku-postgresql:dev
$ heroku pg:info | head -n1 | awk '{print $2}' | xargs heroku pg:promote
              $ heroku rake db:setup
              $ heroku open

これで新しいアプリが出来上がる。

3.DBリストア

https://devcenter.heroku.com/articles/heroku-postgres-import-export

リストアするファイルはHTTP(S)で取得できる場所にある必要があるようなのでS3などにアップせよとある。今回はDropBoxを使用した。

heroku pg:backups restore 'https://www.dropbox.com/{ダンプファイルまでのパス}?dl=1' HEROKU_POSTGRESQL_BLUE_URL -a george-osd-blog-cedar
              

DropBoxの公開リンクのURLはクエリーにdl=1としないと駄目っぽい。{HEROKU_POSTGRESQL_BLUE_URL}の部分はPostgresのアドオンを指定する。(config_varのvalueじゃなくてkeyを指定する。)


4. もう一度 rake db:setup

$ heroku rake db:setup
              

リストアはうまく行ったけど、アクセスしてみるとなんかDB関連のエラーっぽいのが出力されるのでもう一度 rake db:setupを実行すると治った。


5. アプリ名の変更

このままだと旧アプリは george-osd-blog.herokuapp.com、新しく作ったほうが george-osd-blog-cedar.herokuapp.comで動くので、何とかしたい。独自ドメインをとってもいいが昔とったはずのドメインが今はどうなっているのかよくわからないので思い切って古い方をダッシュボードから削除。http://george-osd-blog.herokuapp.com にアクセスしてアプリが動いてないことを確認。

そのあとに新しいアプリを元の名前にリネーム。

heroku apps:rename george-osd-blog --app george-osd-blog-cedar
              

これで完成。http://george-osd-blog.herokuapp.com にアクセスすると無事新しい方のアプリが表示されました。



マイグレーションせずにインスタンスを捨てて新しく作るという考えもありですね。
また、Lokkaを最新化したことでプレビューできないバグも治っているようで嬉しい。
相変わらずエディタは使いにくいけれど...

  • May
  • 26
  • 2015

IT

Xitrum 3.24.0

Xitrum 3.24.0 Released!

主な変更点

1. #535 Componentの言語が常に"en"となってしまうバグが修正されました。

2. #527 Nettyのバージョンが4.0.26から4.0.28になりました。

3. #528 Akkaのバージョンが2.3.8から2.3.11になりました。

今回のリリースからセマンティックバージョニングに準拠するようになりました。
例えば Xitrum 3.24.1はXitrum 3.24.0と互換性があります。
Xitrum 3.25.0はXitrum 3.24.xとは互換性がなくなります。


3.23.1 から 3.24.0 へのアップデート方法

build.sbtを修正します。(3.24.0は基本的には3.23と互換性があります。)
参考: https://github.com/xitrum-framework/xitrum-new/commit/6cc7bff09b19d2ecc91e4f82bfeaecf5ebf5ff9e

-libraryDependencies += "tv.cntt" %% "xitrum" % "3.23.1"
              +libraryDependencies += "tv.cntt" %% "xitrum" % "3.24.0"

  • May
  • 26
  • 2015

IT

Xitrum 3.23(3.23.1)

Xitrum 3.23 Released!

Xitrum 3.23にはバグがあるため3.23.1を使用してください。

主な変更点

1. #512 maxHeaderSizeの設定ができるようになりました。

3.22 から 3.23.1 へのアップデート方法

build.sbtを修正します。
参考: https://github.com/xitrum-framework/xitrum-new/commit/770d4500e1d74d1ebb509654cb8ca530f6d6236c

-libraryDependencies += "tv.cntt" %% "xitrum" % "3.22"
              +libraryDependencies += "tv.cntt" %% "xitrum" % "3.23.1"

テンプレートエンジンにxitrum-scalateを使用している場合
xitrum-scalateのバージョンを2.4にアップデートする必要があります。
xitrum-scalate 2.3はxitrum3.23系と互換性がありません。


maxHeaderSizeを変更する場合はxitrum.confを修正します。
+maxHeaderSize = 8192
  • May
  • 26
  • 2015

IT

Xitrum 3.22

Xitrum 3.22 Released!

https://groups.google.com/forum/#!topic/xitrum-framework/YWClyCoAfnU

主な変更点

1. Scalaのバージョンが2.1.4から2.1.5になりました。

2. #519 Nettyのバージョンが4.0.24から4.0.25になりました。

3. #501 Akkaのバージョンが2.3.8から2.3.9になりました。

4. #459 ルート収集処理の最適化が行われました。Xitrumのルーティングに関係ないパッケージ(例えば "io.netty.*"や"akka.*"など)は無視されるようになりました。Eclipse上でXitrumが起動できない問題の多くはメモリ容量が足りなくなることに起因していますが、この修正でこの問題の解決が期待できます。


3.21 から 3.22 へのアップデート方法

build.sbtを修正するだけです。(Scalaバージョンとxitrumバージョン)

-scalaVersion := "2.11.4"
              +scalaVersion := "2.11.5"
-libraryDependencies += "tv.cntt" %% "xitrum" % "3.20"
              +libraryDependencies += "tv.cntt" %% "xitrum" % "3.21"

  • Feb
  • 22
  • 2015

IT

Learning Behavior-driven Development with JavaScript

https://www.packtpub.com/application-development/learning-behavior-driven-development-javascript

レビューを担当した本が出版されました。
Javascriptで学ぶBDDの小さな本です。

定番のMocha/Chaiを使ったものから、Cucumber-jsを使用したよりビジネスドメインの言葉でテストシナリオを書く方法、webDriverを使ったUIのテスト、またReactを使ったサンプルなど、 モダンなJavascript開発に対するBDDおよびテスト手法について書かれた一冊です。
英語だけど1週間もあれば読めると思います。

  • Jan
  • 3
  • 2015

Diary

2014-2015

もう2015年になってしまったけれど、2014年を振り返りつつ、2015年の目標をたてときます。

2014年の抱負の振り返り

# Skill Up!

 * メインはjs,scalaを自信もって使えるように。
→JSについてはわりと書いた気がする。
 前半はLongoJS、年末はNPMに2つ公開した
 後半はVueJSを少し。Component、VirtualDOM、ES6関連をしっかりフォローしておきたい。
   あとは「JavascriptではじめるBDD」的な書籍レビューを仰せつかった。
 実際はレビューというか体験版ユーザー的な感じで読んでコードを動かしてフィードバックする感じだったので役に立てたかどうか怪しい。

 ScalaについてはXitrumを中心に読むのがほとんどだったので、
 2015年はなにかがっつりコーディングしたい。
 今考えているのはReactJSのサーバサイドレンダリングをXitrumに載せる的なものを是非やってみようと思う。

 * Erlangいってみるか。
Tsungを少し使っただけ。買ったけど全然読んでない。2015年に持ち越し。

 * rubyももうちっとは書けるように。
→ SinatraをでAPIサーバを作る仕事をやった。Rubyは楽しい。

 * ネイティブアプリ1つは自分で書く。
→やってない。iOS入門書を読んだだけ。
 なぜかObjective-C版SDKの問合せ窓口をやることになってコードはある程度読めるけど実際に動かすとXcodeが馴染めない。2015年こそはSwift。

 * インフラ系も学ぶ(fluentd,chef,vagrant,...)
開発環境はVagrant、リリースはAnsibleという感じな1年だった。
    Vagrantの中身もChefじゃなくてAnsibleにするようにしていきたい。
 Jenkins,Hubotはちゃんと開発プロセスに取り入れないとちょっと触って遊ぶだけだとすぐ終わってしまう。
    ちょっとだけElasticSearchを触った。

 * 英語/ベトナム語
→読み書きの量は増えた。会話がままならないけど別にメインで英語を話す機会もないし別にいいかなと思えてきた。

#Output

 * アプリケーション(構想中:bloxng,VXiM,monitrum,YaCK)
→あんまり大したものは作れなかったけどいくつかPRもしたので及第点といったところ。あとはRsurfのサイトを作ったくらい。

 * ブログ(最低月1)
→月1は達成していないけど、始業前に何か書くというリズムが良かったので今年もXitrumことはじめをもう少し書き溜めたい。


 * ハッカソン、LTに少なくとも1つはやる。
ScaliveScala祭りで発表した。Isuconは足を引っ張るだけだった。

#生活

 * 引越し
 →生活が変わった。大げさに言うなれば人生が変わった。通勤が少ししんどいけど。早く行って早く帰るというリズムの方が絶対に良いということがわかった。

 * 車、サーフィン
→引っ越しに伴い、マイカー、マイボード購入。

 * 運動、ダイエット、禁煙
→サーフィン以外は特に何もしていない。

#旅行
→海外は夏にクラビだけ。国内は鹿児島と近場が多かった感じであんまり旅行はしない1年だった。


2015年の目標

#仕事/テクノロジー
 * Testを中心に開発フローについて勉強・実践したい。
 * やはりメインはJS,ScalaそしてRubyをもっと勉強する。
 * Swift, Androidも今年こそはなにかアプリを作る。
 * LinkedInのプロフィールが充実するようなアウトプット
   自己満足以外で人のためになるようなものを作れればと思う。
 * BlogをHeroku/Lokkaから移転

#生活
早く起きて早く寝る生活に変えていく。

今年は湘南ライフをもっと積極的に楽しむ。
* 車があるのでショートトリップをたくさんする。
* 出勤前に波乗り
* 本棚
* ウッドデッキリプレース
* 釣り
* 畑(裏庭)
* DIY
海外は是非中南米方面に行きたい。

  • Dec
  • 25
  • 2014

IT

Xitrum 3.21

Xitrum 3.21 Released!

https://groups.google.com/d/msg/xitrum-framework/Jzmxf9X1pAo/anEyvOyxmYsJ

主な変更点


1. #492 Akkaのバージョンが 2.3.7から2.3.8になりました。

2. #489 BeforeFilterで`forwardTo` が呼ばれた場合のバグ修正

3. #491 `paramso`が削除されました。 指定したキーのパラメーターがない場合、`params`は `Seq.empty`を返すようになります。

4. #455 `PoLoader` はdevelopmentモードで `src/main/resources/i18n` ディレクトリを監視します。これによって、EclipseやIntelliJで開発中にも国際化対応されたメッセージが表示されます。

3.20 から 3.21 へのアップデート方法

build.sbtを修正するだけです。

-libraryDependencies += "tv.cntt" %% "xitrum" % "3.20"
              +libraryDependencies += "tv.cntt" %% "xitrum" % "3.21"
              
  • Dec
  • 11
  • 2014

IT

Xitrum 3.20

Xitrum 3.20 Released!

https://groups.google.com/d/msg/xitrum-framework/GOxo4rpFWEk/xuagrdy8MUsJ

主な変更点


1. #482 `paramo`、`params` そして `paramso` は値が空欄の場合はフィルタリングしません。 

指定した値が空欄の場合、Xitrum 3.17までと同様にExceptionがスローされます。


2. #484 `RequestVar` と `SessionVar`でOptionの各メソッドが使えるようになりました。

`RequestVar` と `SessionVar`は振る舞いについては、Xitrumガイドを参照してください。


3. #481 cacheシステムについて、developmentモードでの有効化、productionモードでの無効化を選択できるようになりました。

xitrum.conf の例:

https://github.com/xitrum-framework/xitrum-new/blob/master/config/xitrum.conf#L76


3.19 から 3.20 へのアップデート方法

いくつかの設定ファイルを修正するだけで簡単にアップデートできます。

例:

https://github.com/xitrum-framework/xitrum-new/commit/df4ba5dc95b0aa7169dc8841a6f1b0ca4c213eed


Xitrumプロジェクトページの一番下にいくつかのサンプルプロジェクトがあるので、そちらも参考にしてみてください。
http://xitrum-framework.github.io/

Chai+Zuul+TravisCI+SauceLabsでマルチブラウザ自動テスト

タイトルの通りの環境を以下のJavascriptで作ってみた。


Sauce Test Status



マルチブラウザテスト(IEのテスト)をやりたくてTestlingを試してみたけど、
動いていないようなので
https://github.com/substack/testling/issues/88 で紹介されていたZuulとSauceLabsで環境を作ってみた。


Mochaのテストがすでにある場合はとても簡単で
https://github.com/defunctzombie/zuul/wiki/Quickstart に書いてある通りにZoolとSauceLabsのセットアップを行うだけなので読めばわかる。

TravisCIを使っていればそれも合わせて連携することができる。


注意すべき点は、SauceLabsのアカウントをgithubのアカウントで作った後に、
SauceLabs内でサブアカウントを作成すること。
(gmailなら<アドレス>+saucelab_myproject@gmail.comみたいに+でメール拡張できるので便利。)

そして、作成したサブアカウントのユーザー名と、APIキーを使用してzuulを動かすこと(.zuulrcおよびtravid.ymlの設定)。
そうしないとテストのセッションがアカウントのグルーバルで実施されてしまうので
バッジのurlが

https://saucelabs.com/browser-matrix/georgeosddev.svg

になってしまう。サブアカウントを作成しておけば

https://saucelabs.com/browser-matrix/georgeosddev_jsutils.svg

みたいな感じで複数のプロジェクトに対応することができました。

  • Nov
  • 15
  • 2014

IT

Xitrum 3.19

Xitrum 3.18 Released!

https://groups.google.com/d/msg/xitrum-framework/D-7gzo-QVsQ/tWdBfBWaB_8J

主な変更点

1. Netty

Nettyのバージョンが 4.0.23 to 4.0.24に更新されました:
http://netty.io/news/2014/10/29/4-0-24-Final.html

Netty 4.0.24 はPOODLE脆弱性対策のためSSLv3.0が無効になりました。

Xitrum組み込みのHTTPSサーバー(それはNettyをベースにしています)を使用している場合、プロジェクトをXitrum3.19に更新することが推奨されます。

(もし Xitrum 2.x 系を使用している場合、Xitrum 2.16に更新してください。)

2. Beforeフィルターでtrue/falseを返す必要がなくなりました。

以前は、Beforeフィルターは必ずtrue/falseを返却する必要がありましたが、
今バージョンからはBeforeフィルターで何かをrespondした場合、その後actionは呼ばれることはありません。

3. いくつかの便利なメソッドが追加されました。

https://github.com/xitrum-framework/xitrum/issues/466
(xitrum.util.Loader.bytesToFileの追加)
https://github.com/xitrum-framework/xitrum/issues/467
(xitrum.util.SeriDeseriに関する変更)
https://github.com/xitrum-framework/xitrum/issues/474
(SessionVerに対するisEmpyの追加)

4. respondViewにテンプレートファイルのロケーションを文字列として渡すことができるようになりました。

以前は、1つのアクションに複数のテンプレートを紐付ける場合
* ダミーアクションクラス/トレイトをテンプレート毎に作成する必要があり
* respondViewの際にそのクラス/トレイトを指定する必要がありました。

今バージョンからは、テンプレートファイルのロケーションを文字列で指定するだけで
複数のテンプレートを使い分ける事ができます。
詳しくはガイドを参照してください。
http://xitrum-framework.github.io/guide/3.19/ja/action_view.html#id7

-----
3.18 から 3.19 へのアップデート方法

Xitrumのバージョンを3.19にXitrum-scalateのバージョンを2.3に更新する必要があります。

              -libraryDependencies += "tv.cntt" %% "xitrum" % "3.18"
              +libraryDependencies += "tv.cntt" %% "xitrum" % "3.19"
              
              -libraryDependencies += "tv.cntt" %% "xitrum-scalate" % "2.2"
              +libraryDependencies += "tv.cntt" %% "xitrum-scalate" % "2.3"
              
              
参考
https://github.com/xitrum-framework/xitrum-new/commit/0235cdfa768161b12f8c414d8f3151a7f8c3ea59