Friday, October 28, 2011

Where to run your background jobs for free?

Until now, Google App Engine was widely seen as the perfect solution to running jobs on the cloud for free.
It is indeed powerful and convenient, offering for instance cron and task queue APIs.

I have been using GAE a lot for not-for-profit projects I am involved in, and was enchanted. The dream will end in 3 days, as this email from Google told me:
"As part of Google's long-term commitment to App Engine, we are also updating our policies, pricing and support model to reflect its status as a fully supported Google product"
In 3 days, GAE will get more expensive. Many applications will switch from the free zone to the paying zone, and they have 4 options:
- Pay
- Make the jobs faster, by writing smarter code or reducing the scope.
- Let the jobs unprocessed after quota is reached, which might be acceptable for some apps.
- Switch to an alternative service.

Under the new pricing, GAE offers 9 hours of backend instance, but most jobs will run into another limit much sooner: only 50.000 database writes are OK is the free zone. So, is it time to switch to Celadon Cedar stack to benefit from Heroku's new pricing ?

PaaS offerCPU timeDatabase operations
Google App Engine9 hours50.000
Heroku720 hoursUnlimited

The CPU time is not directly comparable, but that's still quite a difference. So, where's the catch? Well, on Heroku you either have free frontend OR free backend. If you want one worker dyno for free, you must use zero web dyno. The consequence is that implementing any kind of web interface to control your delayed_jobs is a real challenge.
@nicolas_raoul

Dominion

なくらです。

早いもので、東京に出て来てから3年経ちました。
その間にも世界はクラウドだとかソーシャルだとか目まぐるしく変化していますが、
自分はその流れに取り残されてるのじゃないという危機感が常にあります。
(ケータイも901iですしね。。。)
FaceBookやTwitterなども登録はしているのですが、ほとんど使えていません。
そもそも、公開の場所に対してメッセージを発信するなど、怖いやら、烏滸がましいやらで
今までいっさいやってこなかった、もちろんブログも書いたことがないのに
何の因果か今、ここでブログを書かされているわけです(;_;)
というわけで、情報弱者な自分が何か有益な技術ブログを書くのは無理無理なので、
最近、自分がはまっているボードゲームについて書きます。
そのゲームの名前は「ドミニオン」です。
今、割と流行っているので知っている人も多いと思います。
ざっくり説明すると、自分のデッキ(山札?)を強くしていくゲームです。
ドミニオンには基本的には3種類のカードがあって
それぞれ「勝利点」「財宝」「アクション」に分かれています。
・勝利点カードはそれ自体はゲーム中は特に効果はないのですが、ゲーム終了時にこの点数が一番多い人が勝ちになります。
・財宝カードは、勝利点やアクションカード、そして財宝カードを買うのに使います。
・アクションカードは、それ自体にいろいろな効果があって(カードを一枚引くとか)、まあ、説明は端折ります。
ゲームの流れとしては、
1.山札から五枚引いて手札とし、そこから
2.なにかアクションカードを使い、
3.手札の財宝カードを使って、何かカードを買って
4.手札を全部捨札にしてあたらしく山札から5枚引く。山札がなくなったら捨札を切って山札にする。
でターン終了です。
これを2-4人でぐるぐるとやります。

これだけ見ると単純なように見えますが、最初に使用するアクションカードをいろんな種類の中から10種類選ぶのですが、
この選び方によって、毎回ゲーム性が変わるというとても奥が深いゲームです。
10種類のカードからどんなシナジーを見つけ、どういう戦略でプレイするのかが人それぞれで、
非常に頭を使うゲームなんです。

実は、うちの会社でもドミニオンは流行中で、週に1回くらい仕事を終わった後に
オフィスで3,4人集まってドミニオンをやってたりします。
この間は、ドミニオンを使ってインターン生の面談をやってしまいました。
いや、遊びたかったんじゃなくて、
『多種多様なプロダクトが存在している現在社会において、複数のシステム間の効果的なシナジーを見抜く力を測る』
という重要な意味があったんですよ!

というわけで、最後は無理やりな感じでこのエントリも正当化して終わりたいと思います。
お粗末さまでした。

Friday, October 21, 2011

Power of community

はじめまして!aegifの大谷です。 

 最近、ffftpがオープンソースプロジェクトとしてその開発が継続されるというニュースがありました。自身のホームページ用にファイルをアップロードすることをはじめ、仕事でftpを使う際にもffftpを利用させていただいているので、個人的にはこのニュースをとてもうれしく思っています。 
しかし、実際のところは、残念なことに開発が中断されるとその資産が塩漬けになってしまうことが多々あるようです。オリジナル開発者の都合にもよりますが、その資産をオープンソース化しコミュニティで開発を継続していくことで、単にそのツールを今後とも安定的に利用できるようになるだけでなく、以下のようなメリットも享受できるのではと考えています。
  • より世間のニーズに沿うような方向へと開発が進んでゆくことが期待できる
  • 機能追加やバグ修正などが加速する
  • 品質が向上する

一方で、先日、英Alfresco社の会長兼CTOであるJohn NewtonがeドキュメントJapanにおいて講演を行い、オープンソースソフトウェアについて「ソフトウェアライフサイクルの全ての局面において、コミュニティの知恵を借りることでコストを削減している」と述べています。 この言葉は、単に「ただで開発を行ってくれる人がいるから助かっている」ということを言っているのではなく、「コミュニティには多様な人の知恵が詰まっており、状況に応じて最適な助力を受けられる」ということを表しているのだと思います。 

 「コミュニティの知恵を活用して効率良く資産価値を高めていく」 
オープンソース推しの会社に身を置く者として、この当たり前のようで当たり前に行われていないことが広まっていけばいいなと思っています。

 # 個人で有用なツールを開発している方はたくさんいらっしゃいますので、もし開発を中止するようなことがありましたら是非オープンソース化をお願いしたいと思います。

Friday, October 14, 2011

Spring Surfの紹介 - 概要の概要 -

とたにです。

 日頃AlfrescoやLiferayなど特定のOSSプロダクトのコンサルティングをしていると、その世界では当たり前のものとして使っていても、実はあまり知られていないツールやプロダクトがあることに気付きます。 今回はそんなプロダクトの1つであるSurf Platform(以下Surf)についてご紹介したいと思います。

 Surf PlatformはもともとAlfrescoのWebインタフェースのコラボレーション基盤のShareを作るために、Alfresco社の内部で開発された動作基盤で、具体的には、WebScriptと呼ばれるWebベースのインタフェースを管理し実行します。 SurfはAlfrescoリポジトリ本体やAlfresco Shareなどさまざまプロダクトに搭載されていて、このためAlfrescoリポジトリを操作するRESTインタフェースを簡単に追加することができるようになっています。

 ここまでは単にSurf Platformとして紹介してきましたが、実は昨年SurfはSpringに寄贈され、Spring Surf として独立したプロダクトとしてメンテナンスされています(リードの開発者はAlfresco社のメンバですが)。SpringではIncubatorステータスですが、実際にはEnterprise向けプロダクトのAlfrescoでは以前から組込まれて利用されているモジュールなので、機能の完備性ではIncubatorレベルはクリアしていると言えるでしょう。

 今日時点でSpringSurfのプロダクトページを見ると、1.0.0が記載されていますが、ドキュメントが全てそろっていなかったり、Eclipseのupdateサイトからはモジュールが取得できなかったりと不十分な状態なので現在準備中だと思われます。現時点の実質的な最新バージョンは1.0.0RC2ですので、1.0.0の正式版が出るまではこのバージョンを使って下さい。

 Spring Surfは、Springと冠しているだけあってSpring MVCなどのSpring Framework 3.0系のモジュール群の上で動作しています。そのため、Springのbeanインジェクションを使った動作拡張や他のSpringモジュルとの連携などが容易な点がメリットとして挙げられます。また、出自がAlfrescoということもあり、設定ファイルの一部をコメントアウトするだけで、バックエンドのAlfrescoと認証連携したり、AlfrescoのREST APIを簡単に呼び出したりすることもできます。 

 次回はSpring Surfで最初のWebサイトを起動するまでの手順をご紹介します。

Friday, October 7, 2011

LiferayのAjaxカスタムポートレット作ってみました

吉岡です。
最近liferayのカスタムポートレットを作りました。
せっかくなのでこの場を借りてご紹介します。
以下、ポイント
  1. 施設予約管理 (施設ポートレット + 予約ポートレット)機能
  2. AUI + YUI2ベースでUIを作成し、基本的にAjax動作
  3. 権限部分は細かくみてない (信頼の置けるグループ内でお使いください)
  4. ソースコード一式はここにあります
続けて上記各ポイントについて
1.
営業の先々で某グループウェアと比較されることが多く「施設管理的な機能はないの?」とよく言われるのでこれを作りました
2.
値を追加/更新/削除するだけでページ全体が切り替わるのがそもそもどうなのという思いがあったのでLiferayポートレット作成の習熟度向上を兼ねてAjax化。LiferayにはもともとAlloy UIというjsとcssをラップしたものがあります。しかし、Alloy UIで提供されている機能では目的を実現できず仕方なくAlloy UIがラップしているYUIの機能を直接呼び出すなど汚くなってしまいました
3.
権限を細かく見てないというのはたとえば他ユーザが登録したものを削除できるということ。信頼の置けるメンバでグループポータル (ページ)を作りそのなかでお使いください。信頼できない人と使うことは推奨できません。先に信頼関係を築いてください
今後似たようなものを作ろうとする方には参考にして頂ければ幸いです。
Alloy UIを使わず最初からjQueryなどで統一的に作った方がよいかもしれません。
これを使われたり改造された場合には何らかのフィードバックを頂ければ幸いです。
@mryoshio