Sunday, November 27, 2011

AnkiDroid 1.0 released!

Yesterday I released version 1.0 of AnkiDroid (flashcards app for Android).
With already 140.000 users, why is AnkiDroid only at version 1.0?
We released many 0.x versions, and now we feel the app is ready to be called 1.0!
The number of users has been multiplied by 8 in less than a year:


With 1.0, today is a good opportunity to describe how the AnkiDroid community of contributors works.

1) We do all we can to be friendly with all newcomers. We answer all questions and thank users for using the product.

2) We encourage everybody to participate, at every level. We introduce users to the bug tracker, and liberally give them rights to edit the Wiki, which makes them feel they are contributors rather than just users. Similarly, everyone is able to fork and edit the code, without having to ask the permission to anyone. Localization is the archetype of this spirit: Anyone can translate strings, and they are included in AnkiDroid automatically. Like on Wikipedia, consensus is the rule.

Why do we need to keep involving more and more people? Well, contributors have day jobs or exams, so their individual participation includes periods of activity alternating with periods of inactivity. See for instance this timeline of contributions, one color per contributor:


The huge majority of contributors are volunteers, but some people are also paid to contribute. Notably, the first Simplified Chinese localization has been sponsored by a Chinese company.

Geographically, developers have always been coming from very various countries: Egypt, Japan, Germany, Sweden, Spain, Brazil... Beta-testers come from virtually all over the globe, with even one in Antarctica. Thanks to this diversity, tricky issues with right-to-left languages or special characters are detected and fixed early. AnkiDroid is now available in 27 languages.

Feel free to comment if you have any question!
Nicolas Raoul

Friday, November 18, 2011

Targeting China? Be prepared for additional web development costs

If you want your web application to tap into the huge Chinese market, I have a bad news for you.

Until April 2011, IE6 was still the #1 browser in China. Now it is still at 37%.
That's bad news, because IE6 is an old browser with many bugs. Making your website usable on IE6 is very complex, it will typically double your UI custom widgets development costs.

If you are not targeting China, then do like Google AppsFacebook, Twitter and YouTube: don't invest time in making your website compatible with IE6. Actually 87% of the global top-30 websites offer a sub-optimal experience to IE6 users.

But if you are targeting China, be prepared. In particular:
Chrome recently became the second most-used browser in China, but guess what was the second-most used web browser earlier this year? Not Firefox, not Safari. It was Maxthon, from Hong Kong. It is based on Trident, just like Internet Explorer. There is also 搜狗, that can use IE and Chrome as a rendering engine. Finally, claiming 172 million active users, 360安全 is also based on Trident, and shows the same faults as IE6.
Nicolas Raoul

新しいオープンソースプロジェクト:Troois

ニコラです。

昨日Trooisという新しいオープンソースプロジェクトをリリースしました。Google App Engineで動作するAmazon S3のクローンです。

Amazon S3はファイルを書きこんだり、読み込んだりするアプリケーションにすごく便利です。とくに:
・クラウドの複数のノードで動作しているアプリケーション(この場合はファイルシステムを使えません)
HerokuクラウドPaaS)を使ってる場合。Herokuのファイルシステムはリードオンリーであり、Herokuのデータベースは費用が高いリソースです。

しかしAmazon S3は有料です。安価ですが、無料の選択肢があれば、下記の場合にメリットがあります:
・請求書などの複雑性を減らしたい。
・ランニングコストをゼロにしたい。例:非営利プロジェクト
・莫大な支払いのリスクを避けたい。有料サービスの場合、プログラムエラーや意図的犯行で莫大な支払いが起こる可能性があります。

Amazon S3の無料版がなかったので、作りました。Google App Engineで動作します。ソースコードをAffero General Public Licenseでオープンソースにしたので、皆さんは自由に使うことができますし、オープンにすればソースコードの変更もできます。

プロジェクトの名前は、「Troois」にしました。S3のフランス語発音「S trois」の「trois」に、Googleの「oo」を入れました。日本語の発音で「トローワ」かな…

Amazon S3と同じく、REST HTTP POSTで送ったファイルを、REST HTTP GETでダウンロードできます。

是非あなたのGoogle App Engineインスタンスで試して、フィードバックを送ってください。そして、是非是非新しい機能にご協力ください!

@nicolas_raoul

Monday, November 14, 2011

Mac OSXでOpenLDAPを起動

はじめまして。てらしたです。

会社のPCを新しいMacBook Proに変えてもらったので、開発環境や検証環境をつい最近整え直したんですが、あれ?こんなに簡単だったっけ?と結構意外だったものがあったので書いておきます。OpenLDAPをMac OSX 10.7(Lion)で起動するまでの手順です。で、次回とその次くらいに分けて、Apache Directory Studioで簡単なディレクトリデータベースを作って、AlfrescoでLDAP連携をする方法なんかを紹介できたらと思っています。

さて、OSXでOpenLDAPを起動する方法ですが、こちらのブログ(Starting OpenLDAP on Mac OS X Client)を参考にさせていただきました。

OSXにはもともとOpenLDAPがインストールされているので、手順は以下の3つだけです。

1. 管理者用のパスワード(rootpw)を作る。
2. slapd.confに1で作成したパスワードを設定する。
3. デーモンを起動する。

それでは、1つずつやっていきましょう。

1. 管理者用のパスワード(rootpw)を作る。
まずは管理者用のパスワードを作るためにターミナルからslappasswdコマンドを実行します。適当にパスワードを決め、2回入力するとSSHA形式(デフォルト)でエンコードされた値が生成されます。

$ slappasswd
New password:
Re-enter new password:
{SSHA}ppY+cX47+R0Q37G1Rkc809pS+HDvseu3

2. slapd.confに作成したパスワードを設定する。
次に、1で作成したパスワードをslapd.confに設定します。あらかじめ用意されているslapd.conf.defaultをslapd.confとしてコピーしてから編集します。

 
$ sudo cp /etc/openldap/slapd.conf.default /etc/openldap/slapd.conf
$ sudo vim /etc/openldap/slapd.conf

下から7〜8行目あたりにrootpwで始まる行があるので、そこに上記で作成したパスワードをコピペし、ファイルを保存します。
 
rootpw          {SSHA}ppY+cX47+R0Q37G1Rkc809pS+HDvseu3

3. デーモンを起動する。
これでもう準備はできたので、デーモンを起動します。
 
$ sudo /usr/libexec/slapd -d 255

以下のようにnetstatで389番ポート(デフォルト)が使われていれば正常に起動しています。

$ sudo netstat -an | grep 389
tcp4       0      0  *.389                  *.*                    LISTEN
tcp6       0      0  *.389                  *.*                    LISTEN

拍子抜けするほど簡単ですが、これで終わりです。
停止したいときは、デーモンを起動したターミナルでCtrl+cでOKです。

次回は、Apache Directory Studioを使って簡単なディレクトリデータベースを作成する方法を紹介したいと思います。

Friday, November 11, 2011

Alfresco勉強会#3 振り返り

mryoshioです。

すでに2週経過してしまいましたが、
さる10/28に開催されたAlfresco勉強会について書きます。


Alfresco勉強会について

以前の記事にも書きましたが、
Alfrescoについての情報共有を行うものです。
少しでもAlfrescoに興味がある方なら歓迎です。
それでは第三回の内容について振り返りたいと思います。


「Alfresco 4.0を紹介してみる」@to2y (スライド)

AlfrescoやLiferayのコンサルタントである@to2yによる発表です。
バージョン4.0で強化された点に関してデモを交えつつの紹介でした。

  • ドラッグ&ドロップ対応
    ブラウザベースのAlfresco Shareに対しドラッグ・アンド・ドロップでファイルをアップロードできるようになります。便利ですね。
  • 動画、オーディオ、iWorksのプレビュー対応
    これまではOfficeファイルしかプレビューできませんでした。今後はKeynoteを使っている私のような人間にも恩恵があります。助かります。
  • ソーシャル機能の追加
    Alfrescoが最も力を入れつつあるのがこのソーシャル機能です。Social Content Managementと言われており、コンテンツに対するレーティングや特定の人間をフォローしてフィードを受け取るといったものです。組織を介してではなく、コンテンツをベースに人と直接つながるのですね。twitterのフォローやFacebookのフレンドを考えると理解しやすいと思います.。
  • Solr連携
    これはまだ私自身検証ができていませんがひじょうに期待しています。というか早く試したいし触りたい。名前は出せませんが、業務で似たようなカスタマイズをしたことはあります。しかし、公式に分散環境に対応しやすくなったことは営業の仕方やシステム構成を考える際に有用です。今後の勉強会できっと誰かが話してくれるでしょう。

    「Alfresco Web Script」@mryoshio (スライド)

    Web Scriptの入門編として私の発表です。
    余談ですが、英語版もあります。次のものから構成されています。

    • Web Scriptとは
      Web Scriptについての基本的な紹介です。
    • Web Scriptの作り方
      定義ファイル、ロジック、テンプレートといった構成要素の内容やサンプルの紹介です。
    • Web Scriptの種類
      Data Web ScriptとPresentation Web Scriptという種別と特徴を紹介しました。話を分かりやすくするために単純化してる箇所があります。大体そんなもんなんだなと割りきって読んでみてください。

    第三回で参加人数が初めて10名に届きました。
    第四回はこちらから参加登録できます。よろしければぜひご参加ください。
    (皆様の発表もお待ちしております)

    @mryoshio

    Saturday, November 5, 2011

    Spring Surf紹介 - インストールと最初の起動 -

    とたにです。

    前回はSpring Surfの成り立ちと概要について紹介しました。

    今回は、いよいよインストールと初期の起動するまでを紹介したいと思います。本家にもチュートリアルがあるので、もっと詳しい手順を知りたい人はこっちも参照してみて下さい。

    • 準備編
    Apache Mavenをインストールしておいてください。

    • インストール編
    1. Spring Rooのインストール
      SpringSourceのサイトからSpring Roo 1.0.2をインストールします。最新は1.1.4ですが、SpringSurf 1.0.0RC2ではRoo 1.1系では一部動作しない部分もあることがフォーラムで報告されているので、ここでは1.0.2をインストールして下さい。
      ダウンロードが終わったら、適当なフォルダに展開します。
      spring-roo-1.0.2-RELEASE/bin/roo.sh or roo.batにパスを通しておくと
      便利だと思います。
      また、Maven起動時のJVMヒープを指定する環境変数を設定しておいて下さい。
      MAVEN_OPTS='-Xms1024m -XX:MaxPermSize=512m'

    2. SpringSurfインストール
      早速rooを起動します。
      $ roo.sh
      roo> addon install --url http://www.springsurf.org/downloads/1.0.0-RC2/spring-surf-roo-addon-1.0.0-RC2-roo-addon.zip
      アドオンがインストールされrooが自動的に再起動されます。
      これだけでインストールは完了です。簡単ですね。


    3. 最初のプロジェクト作成
      作業のディレクトリを作って移動します。
      $ mkdir surf-projects
      $ cd surf-projects
      $ mkdir first-project
      $ cd first-project
      いよいよrooでプロジェクトを作ります。
      $ roo.sh
      roo> project --topLevelPackage my.first.project
      これで、rooの雛形プロジェクトが出来ました。
      この時点では、SpringSurfは組込まれていません。
      次のコマンドでSurfを組込みます。
      roo> surf install

    4. 最初の起動
      rooを終了し、コマンドラインから
      $ mvn clean package jetty:run
      と入力して下さい。

    http://localhost:8180/ で雛形のSurfプロジェクトのWebサイトが立ち上がります。初回は必要なjarファイルをダウンロードするためにちょっと時間がかかりますので辛抱して下さい。

    次回は、Surfプロジェクトのファイル構成について説明したいと思います。