Wednesday, October 9, 2013

海外へソフトウェアを売る:海外のお客様にとって便利かつ、手数料が少ない支払い方法?

イージフはCmisSyncという120USドルのソフトウェアを海外に売って初めたら、支払いの選択を検討しました。完璧な方法がないので、選択肢を下記に説明します。



銀行振込

銀行振込は海外のお客様にとって一番不便な選択肢です。

ヨーロッパ人はヨーロッパ内へ振込をするとき、IBAN("国際講座番号")という便利なシステムに慣れていて、金額と相手の番号だけ入れたら終了です。米国だとRTNという似てるシステムがあります。IBANは最近アジア、アフリカと中米に普及していますが、残念ながらまだ全世界ではありません。
特に、日本ではSWIFTコードという古い仕組みしかなく、IBANはまだ使用できません。

海外のお客様にとっての不便ポイント:
1.カザフスタンへ振込は30秒で終わりますが、銀行員は日本への振込経験がなく、振込をするのは難しいです。私が銀行で手続きした際は、銀行員が混乱してしまい、色々な資料を書かされました。
2.外国人は、日本の名前と住所を書くのは苦手です。文字を書き間違えることが多く、振込がうまく行きません。8つの情報も必要です:受取人取引銀行名、受取人取引支店名、受取人口座名義、会社住所など、銀行支店住所まで必要とします。一般の米人にとっては、これはありえません。

逆に、弊社にとっては一番楽な方法です:銀行口座を持ってるだけでできます。ただし、書き間違いの際に、サポートの手間が掛かります。

銀行振り込みの手数料は、固定の部分が大きいので、120USドルの場合は不利です。
送金手数料、海外電信手数料、為替取扱手数料など掛かります。お客様側の手数料もあり、弊社側の手数料もあります。

結論:
金額が大きい場合、もしくは一回のみの場合には、便利です。
120USドルの商品を大量に売りたい場合は、お勧めしません。手間が掛かり、買わないお客様もいます。

VisaやMasterCardクレジットカード

海外のお客様にとって一番便利な方法です。
ソフトウェアをインターネットで買うと、クレジットカードの番号を聞かれます。

VisaMasterCard銀嶺カード(China UnionPay)だけで、世界の大部が対応できます。
しかし、この3社と契約を結ぶ必要もあり、支払いの為のウェブページを作る必要もあり、手間が掛かります。手数料も掛かります。

クレジットカード会社の上に、まとめてサービスを提供してる会社もあります。もちろん、手数料が更に掛かります。
例えば、イプシロンという会社がVisa、MasterCard、Diners、American Express、JCBを扱っていていますが、手数料は約8%掛かります。

結論:
手数料は高いですが、たくさん売る場合は必要な方法になります。

ペイパル

会社にとっても、お客様にとっても、比較的に簡単な方法です。

振込やクレジットカードと違って、手数料は弊社が払います。
手数料が銀行振込より低いです:基本は3.9% + $0.30 USドルです。

例:
・取引手数料:ドル取引の場合3.9%+0.3USドル
・換算レート:本日のTTM96.94円に対して94.8円
・出金手数料:5万円未満の場合250円
なので、一回ずつなら6%+0.3USドルぐらいになります。

ペイパル法人アカウントを作るのは難しいくありませんが、
・ 色々な資料を送る必要があります。
・手続きは、取締役か代理人がを行えます。
・テスト振込と郵便で確認されます。
・およそ一週間ほど掛かります。

Bitcoin

大幅に、手数料が低い方法です:0.06% (銀行振り込みはその100倍ぐらい)

bitcoinをもらったら、そのまま保存するか、簡単に日本円に変換もできます。
MT.GOXという世界一大きいBitcoin取引所は東京の渋谷にあります。

しかし、 Bitcoinを使うお客様が少ないです。特に、企業ではほとんど使用されていません。
弊社にとっては、設定はクレジットカードより簡単です。

結論

銀行振り込みとペイパルでめて、売上が上がりそうの場合はクレジットカード、という戦略をお勧めします。
他の方法やアイディアがあれば、ぜひ nicolas.raoul@aegif.jp へご連絡ください!(日本語の対応も可能です)
Nicolas Raoul

Tuesday, June 25, 2013

明日Hills Breakfastを司会します

明日6月25日、Hills Breakfastを司会します。
スライド20枚、1スライド20秒、というTEDよりダイナミックな形式の毎月行わるプレゼンテーションイベントです。
私は2010年に発表者として出てから、毎月スライドとPCを操作する役をやってますが、今回は初めての司会。是非観に来てください!

明日も非常に面白そうなプレゼンターが出ます:
  • 中島佳織さんはフェアトレード・ラベル・ジャパンの事務局長としての活動を発表して、
  • トライフ代表取締役手島大輔さんは日本の高齢者の毎日の課題について興味深い話をして、
  • ディジティ・ミニミ代表取締役竹中直純さんはウェブ会社の戦略を明らかにします。
  • 最後に、プロバスケチーム“東京エクセレンス”GM辻秀一さんが皆にスポーツのやる気を入れる予定です!
ニコラ・ラウル

I will perform as the host for Hills Breakfast tomorrow (June 25).
Hills Breakfast is a monthly presentations event, based on the PechaKucha format, 20 slides x 20 seconds, which is faster and more lively than TED's 18 minutes.
I started as a presenter in 2010 and since then I usually operate the PC/projection, but tomorrow will be my first time as MC. Looking forward to see you there!

Tomorrow promises to be very entertaining with:
  • Kaori Nakajima talking about her work at the head of Fairtrade Japan.
  • Paris-based Swedish artist Per Hüttner will bring us in the universe of the OuUnPo project.
  • Daisuke Teshima will enlighten us about the daily problems of the Japanese senior citizens.
  • Naosumi Takenaka will detail his strategies as the founder of a web agency.
  • Finally,  Shuichi Tsuji is sure to passionate the crowd with his speech as the manager of the pro basketball team Tokyo Excellence.
Nicolas Raoul

Friday, May 24, 2013

Bye Google Reader, hello Feedindicator!

In one month, Google Reader will shut down.
Luckily, Ubuntu users can use Feedindicator:

Features

  • Click a news and it will appear in your browser.
  • Icon turns grey when there are no more news.
  • Easily mark all as read.
  • Option to show each feed in its own sub-menu.

Adding a feed

To add a feed, just click "Add feed" and enter the RSS/Atom URL:


Migrating from Google Reader to Feedindicator

From Google Reader, click the gear, select Reader Settings > Import/Export > Export your subscriptions.This will download subscriptions.xml

Download google-reader-to-feedindicator.sh, make it executable, and execute it in the same directory as subscriptions.xml ...Feedindicator should now show your feeds!

Details

Feedindicator stores all feeds as a simple text file at ~/.config/feedindicator/feeds.cfg
One line per feed, for instance:

http://www.w3.org/News/atom.xml
http://www.tradecommissioner.gc.ca/rss/ForeignEvents_RSS.xml


Feedindicator is Open Source, I maintain it, waiting for your feedback!
Nicolas Raoul

Wednesday, May 22, 2013

How to synchronize SharePoint to a Mac? (alternative to SkyDrive Pro client)

SharePoint users can synchronize their documents with the SkyDrive Pro client (not to be confused with SkyDrive).

Unfortunately, the SkyDrive Pro client is not available on Mac (and Linux), and even if you are on Windows, in addition you must pay for Office 2013 Professional Plus before using it.
Microsoft shows no sign of clemence towards Mac users on this matter.
Using Parallels does not help: My Documents is then seen as a network location, which means that Skydrive Pro fails to save documents there.

But here is new hope!
CmisSync allows you to sync SharePoint to your desktop, no license fees, and Mac/Linux versions are planned.

CmisSync is currently Windows-only, but it is Open Source and looking for volunteers to port the code. CmisSync is built with Mono, which means it should be easy to port it to Mac/Linux/Android/iOS. So please developers plunge forward and don't hesitate to ask us questions :-)

Wednesday, April 10, 2013

CMIS: What are Secondary object types?

The main advantage of ECM servers over file servers is the ability to have metadata about the documents, and the ability to define what metadata should exist, on what kind of document.

For instance, an ECM administrator might decide that pictures should have a height and a width metadata, while bills should have a price metadata. In CMIS parlance, pictures and bills are called "primary types".

Most ECM servers also have a "secondary type" concept. Secondary types are more transverse, and can be applied to documents of any primary type. For instance, "Confidentiality" can be applied to images as well as bills. A document can only have one primary type, but can have several secondary types.
A few examples: Versionability, effectivity, geographic details, audio details, ...

Forgotten in CMIS 1.0, secondary types are now part of the CMIS 1.1 standard, which should be official soon.

Example with Alfresco

In Alfresco, a secondary type is called an "aspect". You can easily add aspects to any document. There are predefined aspects, but you can also define custom aspects.

For instance, let's say we manage field observation reports, and each observation report has a latitude and longitude. So, let's add the predefined "Geographic" secondary type to a document. In the document's details page, click on "Manage Aspects":


 Then add the "Geographic" aspect:




The latitude and longitude are now part of the document's metadata properties:


Looks nice in the Alfresco client, but how is it via CMIS?

The CMIS 1.1 standard is not official yet, so unfortunately in Alfresco 4.2.0, secondary type properties can not yet be seen in the CMIS properties:


Instead, you have to get them via the CMIS extensions, which is a mechanism for vendor-specific tricks:


Actually, there is an open source Java library that makes it easy to retrieve them from there. But I would suggest waiting for CMIS 1.1, you will then be able to use secondary type properties easily, in a way that will work on all ECM servers.

Nicolas Raoul

Thursday, April 4, 2013

How to get the HTTPS headers?

Long-time sniffers remember tracking HTTP headers down the wire using Ethereal (now Wireshark), but this has become impossible in environments where everything is encrypted (HTTPS).

In such environments, tracking headers means monitoring either directly within the server process (difficult in clouds), or within the client process (typically a browser).

Recently I had to reverse-engineer the convoluted authentication to the CMIS endpoint of a Sharepoint server. Below is my tale, and the tools I tried (spoiler: only the last one did the job).

Contestant 1: Chrome Developer Tools

In Chrome, I start Incognito mode (CTRL-SHIFT-N) to make sure no saved passwords/cookies interfere, fire up the Developer Tools (CTRL-SHIFT-I), select "Network" to see the requests, and launch the request.

As seen in the screenshot below, Chrome shows the conversation between client and server. Something sounds fishy: Only 2 requests, and the last one is marked as "canceled" even though download succeded... let's try another tool!



Contestant 2: Firefox Web Console

In Firefox, I start Private Browsing mode (CTRL-SHIFT-P), fire up the Web Console (CTRL-SHIFT-K), unselect everything but "Net", and launch the request.

Firefox wins over Chrome by showing the right number of requests (four):


Now to the job: Getting the HTTPS headers!
I click on a request, and something awful happens: a totally unusable window appears, displaying what I need (request headers and response headers), but preventing me from copy-pasting it.

Mouse selection goes crazy, and copying everything results in an unusable long string containing everything aggregated without spaces [1]. Not to mention the inexact timestamp [2], the content that does not scale with the window [3], and the weird titles font style [4].


Fine if you just want to see the headers, but real hackers want to script-parse and diff the headers, right? Next!


Winner: Httpfox

In Firefox, after having installed the Httpfox extension, I start Private Browsing, fire up Httpfox (SHIFT-F2), press "Start", and launch the request.
The lower part shows the headers, and copying them is accessible via the context menu... perfect!



Conclusion: Httpfox is the easiest way to get HTTPS headers.
If you know any other convenient tool, please let us know in the comments!
Nicolas Raoul

Friday, March 22, 2013

What is the best open source Java decompiler?

A Java decompiler turns a .class file back into a .java file. While decompiled code is not perfect (no comments, sometimes obfuscated names), it can be useful during hacking competitions, or to liberate your data locked by proprietary software, or to satisfy curiosity.

There used to be a time where everyone's decompiler of choice was jad.
But jad is dead, and it was not Open Source anyway, so there must be something better, right?

Current winner

Jdec is the best Open Source decompiler I have found so far.
It is not perfect though: There is no community, and there are bugs, none of which has got fixed since 2007. Also, its website looks very unprofessional.

Challengers

  • JReversePro shows signs of activity but has had no release since 2002
  • JODE has had no release since 2004
  • dcompiler has had no release since 2002

Need work

  • Dava seems to be a thesis project rather than a programming tool.
  • javap only shows assembly-level code
  • Soot is not really a decompiler

Out of Competition

Those ones might be usable but they are not Open Source:
  • Fernflower is not maintained and not open source. Its author Stiver told me "Unfortunately I can't release it under GPL right now, because there are still some legal questions to be solved. However if you are representing a well established company or an R&D institute, an exception would be possible."
  • Java Decompiler (JD) is not open source
  • DJ Java Decompiler is not open source
  • Cavaj is not open source
Please let us know about any other Open Source decompiler your know!
Nicolas Raoul

Wednesday, February 20, 2013

CmisSync:AlfrescoのためのDropboxのような同期ツール

CmisSync を使うと、あなたのPCと社内 Alfresco を簡単に同期できます。
オフラインでも、ドキュメントの閲覧と編集を行えます。




ステップ1

まず .NET Framework、次に CmisSync をインストールしましょう。

ステップ2

CmisSync を実行してください。
チュートリアル画面が終わると、タスクトレイに CmisSync のアイコンが追加されます。



アイコンを右クリックして、「リモートフォルダを追加...」を選択します。

ステップ3

表示された画面の「URL」フィールドに、Alfresco サーバの URL を入力します(ブラウザで Alfresco のドキュメントを閲覧する為のURL):


プロトコル( http:// か https:// )も必要です。
ユーザ名とパスワードも入力してください。

ステップ4

「次」を押すと、Alfrescoのフォルダのリストが表示されます。
同期したいフォルダを選択してください。
とくにAlfresco Share の場合は「Sites」をクリックして、同期したい Site を選び、その「documentLibrary」を選択してください。

 
設定はこれで終了です。
CmisSync はすぐに Alfresco とあなたのPCとの同期を開始します。
CmisSync はファイルの編集・追加を双方向で行えます。
もしもファイルの変更が衝突した場合、警告が表示されます。衝突した2つのファイルはバックアップされている為、後でマージすることも可能です。

CmisSyncはイージフが開発しているオープンソース製品です。
Alfrescoだけではなく、NuxeoやIBM FileNetやSharePointなど、CMIS準拠のリポジトリならなんでも同期できます。

Wednesday, January 23, 2013

Wikivoyage Offline: Travel guide for Android

I just released Wikivoyage Offline, an Android application that contains guide books for 27,000 destinations.

Instead of carrying a heavy guidebook that shouts "I am a tourist", just use your phone!

Content is downloaded to the phone's SD card, so you can use it offline (useful in case of no Internet or expensive roaming).
The whole world is a 80MB download.

Content is updated every two weeks, from Wikivoyage, the "Wikipedia for tourism information", which graduated from beta last week.

The app is free and open source.

Thursday, November 22, 2012

Employees use Dropbox? They will love CmisSync, and IT will benefit

How do you access your company's shared documents?
If your company has an ECM server, chances are you access documents either:
1) Via a web interface
2) As a shared drive

Now there is a third approach: CmisSync synchronizes your company's documents to your personal computer.

Advantage over a web interface:
- They are just normal files on your hard drive. No need to open a browser and download a copy.
- Documents downloaded from a Web interface quickly become outdated. With CmisSync, the files on your hard drive are always up-to-date.

Advantage over a shared drive:
- Slow network does not slow you down.
- Continue using your files even when out of the office, or even in the plane or subway.

The user interface of CmisSync will feel very familiar to Dropbox users.
But instead of having a Dropbox Inc.'s servers stores the files of each user, all of your content is securely stored on your company's ECM server.

(Liferay users can also use Liferay Sync)

Wednesday, August 8, 2012

Aegif publie un système de gestion de contenu révolutionnaire: NemakiWare 1.0

TOKYO Aujourd'hui Aegif a publié NemakiWare 1.0, un système de gestion de contenu dont le but est de battre tous les records en termes de scalabilité.

NemakiWare repose sur CouchDB, une base de données distribuée de type NoSQL.
C'est un changement radical par rapport aux autres systèmes de gestion de contenu, qui utilisent des bases de données traditionnelles comme Oracle ou MySQL.

Les points forts de NemakiWare sont la scalabilité et l'extensibilité.

Aegif a toujours été très proactif sur CMIS, publiant le premier explorateur CMIS orienté intégration, seulement quelques semaines après la parution du standard CMIS.

NemakiWare est Open Source, et est disponible gratuitement sur http://nemakiware.bitbucket.org

À propos d'Aegif


Aegif est une société de conseil japonaise, spécialiste de la gestion documentaire open source. Sa vaste expérience lui permet de minimiser les risques et catalyser le potentiel des solutions entreprise open-source, afin de proposer des solutions optimales, principalement dans des environnements à grande échelle. De la définition des exigences à la conception, Aegif accompagne ses clients en avance de pahse et jusqu'à la livraison de solutions performantes, efficaces et flexibles. Voir www.aegif.jp

À propos de CMIS

CMIS (Content Management Interoperability Services) est un standard pour l'interopérabilité entre les divers systèmes de gestion de contenu du marché. CMIS a été approuvé par le consortium OASIS (Organization for the Advancement of Structured Information Standards) en mai 2010. Tous les principaux vendeurs supportent CMIS:  Adobe, Alfresco, EMC, eXo, FatWire, HP, IBM, ISIS Papyrus, Liferay, Microsoft, Nuxeo, Open Text, Oracle, SAP et autres.

Contact

Aegif Corporation
Nicolas Raoul
nicolas.raoul@aegif.jp

Aegif releases revolutionary ECM server: NemakiWare 1.0

TOKYO Today Aegif released NemakiWare 1.0, an ECM (Enterprise Content Management) server that aims to redefine ECM scalability.

NemakiWare uses CouchDB, a NoSQL distributed database.
That is a radical shift from existing ECM servers, which are using traditional database engines like Oracle or MySQL.

The strengths of NemakiWare are scalability and extensibility.

NemakiWare was designed with the open standard CMIS in mind, making it an ECMS of choice when interoperability is needed. Aegif has always been very proactive on CMIS, releasing the first integration-oriented CMIS webapp only a few weeks after the CMIS standard was approved.

NemakiWare is Open Source, and can be downloaded for free at http://nemakiware.bitbucket.org

About Aegif


Aegif is a leading consulting firm in Japan, with a strong focus on open-source ECM consulting. Its extensive experience allows it to minimize risks while leveraging the potential of enterprise-class open-source software, to offer optimal solutions to clients, typically in large-scale environments. From requirements analysis to solution design, Aegif accompanies its clients from early phases until the delivery of a powerful, efficient and flexible solution. See www.aegif.jp

About CMIS

CMIS (Content Management Interoperability Services) is a standard for interoperability between Enterprise Content Management products. CMIS has been approved by the OASIS consortium (Organization for the Advancement of Structured Information Standards) in May 2010. All major ECM players support CMIS:  Adobe, Alfresco, EMC, eXo, FatWire, HP, IBM, ISIS Papyrus, Liferay, Microsoft, Nuxeo, Open Text, Oracle, SAP and more.

Contact

Aegif Corporation
Nicolas Raoul
nicolas.raoul@aegif.jp

Wednesday, July 11, 2012

Activitiワークフロー:チュートリアル(パート1)

最近リリースされたAlfresco 4には新しいワークフローエンジンが入っています。「Activiti」というエンジンです。
ActivitiはAlfrescoとは独立したプロジェクトなので、他のアプリケーションと使えます。例えばLiferayでActivitiを使えます。Activitiは独立プロジェクトと言っても、実際にはAlfresco社がスポンサーとなっています。

jBPMと同じく、ActivitiはBPMN言語で書かれたビジネスプロセスを使用できます。
今週のブログポストのパート1では、一番簡単なActivitiワークフローを作る方法を説明します。

まずは、Eclipse Classicバージョン3.7(または3.7以上)をインストールしてください:http://www.eclipse.org/downloads/

そして、Eclipseの中にActivitiプラグインをインストールしてください:
・Eclipseを実行
・「ヘルプ」 → 「新規ソフトウェアのインストール」をクリック
・「追加」をクリック
・「名前」と「ロケーション」のところに、「Activiti BPMN 2.0 designer」と「http://activiti.org/designer/update/」を入力(下記の図通り)
・OKをクリックして、少し待つ
・「Activiti BPMN Designer」にチェックを付ける
・「次へ」をクリック
・依存解析を待つ
・「次へ」をクリック
・ライセンスを了承
・「完了」をクリック
・インストールが行われる
・Eclipseを再起動



では、Alfrescoでこのビジネスプロセスを使ってみましょう:
・Eclipseで、「ファイル」 → 「新規」 → 「その他」 → 「Activiti」 → 「Activiti Project」をクリック
・「次へ」をクリック
・「プロジェクト名」のところに、「nico1」を入力
・「完了」をクリック
・プロジェクトの構成が作成されました。「nico1/src/main/resources/diagrams」フォルダーを開く
・「diagrams」に右クリック、「新規」 → 「その他」 → 「Activiti」 → 「Activiti Diagram」
・「ファイル名」のところに「process1」を入力
・「次へ」をクリック
・「Yes, use a template」と「Pooled Review And Approve Activiti Process」を選択
・「完了」をクリック

4つのノードの図が表示されます。ビジネスプロセスの図です。
図の余白にクリックし、下の「プロパティー」→「処理」→「Id」のところに、「activitiReviewPooled」代わりに「process1」を入力。


これから、Alfrescoでこのビジネスプロセスを使いましょう:
・Alfresco Community 4.0d(またはそれ以上)をインストール
・「Alfresco/tomcat/shared/classes/alfresco/extension」というフォルダーを開く
・その中に、「workflows」という新しいフォルダーを作成
・この「workflows」フォルダーの中に、上記のステップで作成された「process1.bpmn」というファイルをコピー
・「Alfresco/tomcat/shared/classes/alfresco/extension」というフォルダーの中に、「activiti-adhoc-timer-workflow-context.xml.sample」というファイルを「nico1-workflow-context.xml」としてコピー
・この「nico1-workflow-context.xml」を下記のように編集:


    
                
                        
                                
                                        activiti
                                        alfresco/extension/workflows/process1.bpmn
                                        text/xml
                                        false
                                
                        
                
                
                        
                alfresco.messages.nicoWorkflow
                        
                
        



「alfresco.messages.nicoWorkflow」の部分はラベルについてです。「Alfresco/tomcat/shared/classes/alfresco/messages」というフォルダーの中に、下記の内容で「nicoWorkflow.properties」というファイルを作成。

process1.workflow.title=Process 1
process1.workflow.description=Based on pooled review

Alfrescoを再起動

ブラウザで「http://127.0.0.1:8080/share」を開いて、ログイン。
「http://localhost:8080/share/page/start-workflow」を開く。
ワークフローのリストの中に、「Process 1」が表示されています。
Alfrescoにデフォルトで登録されている「pooled
review」と同じように使用できます。

今回は、一番簡単なActivitiワークフローを作る方法を説明しました。
パート2では実践的な説明をする予定です。
Alfrescoを使わない場合は、スタンドアローンActivitiのインストールガイドをご覧ください。
Nicolas Raoul

Friday, June 29, 2012

Ubuntu LinuxでEclipse日本語化

1.EclipseのZIPをダンロード:http://www.eclipse.org/downloads/
2.ユーザホームでZIPを展開
3.Pleiadesをダウンロード:http://mergedoc.sourceforge.jp/
4.Eclipseの「dropins」というフォルダーの中に「pleiades」というフォルダーを作成し、そのpleiadesフォルダーの中にPleiadesを展開
5.Eclipseの「eclipse.ini」というファイルをテキストエディタで開いて、最後に下記の一行を追加:

-javaagent:/home/yamada/p/eclipse/dropins/pleiades/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

(yamadaの代わりに、自分のユーザ名を入力)

6.Eclipseを起動。メニューなどが日本語で表示されます!

フォルダー構成一覧:
/home
 /yamada
  /eclipse
    eclipse.ini
    eclipse
    /dropins
     /pleiades
      /features
      /plugins
      ...
    ...
   ...
  ...
ニコラ・ラウル

Friday, May 18, 2012

Identifying biased Wikipedia articles... without looking at their content!

Data is often worthless without metadata.
But sometimes metadata is even more useful than data!

I created ASE, a tool to spot unnoticed biased and low-quality Wikipedia articles.
To assess articles, ASE does not even need to look at the data!
ASE just looks at the metadata, especially article history.

Context: To see how Wikipedia articles look like, check Special:Random many times. As you can see, 99.9% of Wikipedia articles are either good or have been tagged as needing references, copyedit, or other particular attention (banners at the top of articles).

ASE's goal is to spot the remaining 0.1%, which means articles that:

  • Are biased , or not of good quality (less than C on the article quality scale).
  • Have not been already tagged as needing references, copyedit, or any other.
How does ASE do this without even looking at the article?

ASE's axiom is that article quality increases with participation.
Articles that have been written by only a single editor, have a higher probability of being biased and of lower quality.
So basically the strategy is to spot articles that have been written by one editor.
Bots are filtered out, because they can not really be counted as participation.
Experience is also taken into account.

There are false positives, but accuracy is pretty good, and many Wikipedians have used ASE to spot and fix thousands of articles:

ASE is open source, of course.
If you feel like editing Wikipedia, have a look at the list of spotted articles and tips.
Good editing!
Nicolas Raoul
@nicolas_raoul

Wednesday, April 25, 2012

Alfresco: How to keep working even when offline?


Most people use Alfresco via their native file manager (Windows Explorer, Finder, Nautilus...) thanks to Alfresco's shared drive interface.
A shared drive is convenient, but what happens when your network connection disappears? The shared drive disappears. It is how shared drives are designed to work. No network, no shared drive.

What if you are in the plane, in an underground data center, or in the subway with no reliable network access?
One option is to checkout files you want to edit offline, but that is not a satisfying solution (duplication, out-of-date versions).

In those cases, you will need to use a synchronization client.
Hopefully, Alfresco offers interfaces for many protocols, so you have different options to choose from.

1) CmisSync

Very similar to the Dropbox client, lets you sync with any Alfresco content.
Free, Open Source.
.NET/Mono, Linux/Mac port not finished yet.

2) Alfresco Desktop Sync

Official Alfresco offline client. Let's you sync any Share Site or directory within a site.
Free.
Java, Linux/Mac/Windows.
Not to be confused with an older project that has the same name and comes up first on Google, hosted on addons.alfresco.com and SourceForge.

3) FTPbox

If you like DropBox, you will love FTPbox.
The user interface is the same, with tray icon and almost no configuration needed.
Forget about 2GB limits and the security risk associated with externally-hosted data: you now have an unlimited DropBox for free, and the files are straight from your smart Alfresco repository!

The bad news: FTPbox is not compatible with Mac/Linux.
The good news: FTPbox is open source, so porting to Mac/Linux is a matter of motivation.

4) OFS

UNIX users will know that FUSE allows to easily mount/unmount any kind of filesystem.
OFS (Offline FileSystem) allows you to maintain an offline copy of any remote filesystem.
It can take advantage of Alfresco's NFS interface.

Unfortunately, this solution is not usable on Windows until Windows allows userspace filesystems.

5) WebDAV Sync

WebDAV Sync is a command-line tool that can synchronize documents using Alfresco's WebDAV interface.
Programmers love command-line tools, but it is not for office users...
WebDAV Sync is portable (Java) and open source, so it is a great choice for integration with existing client-side software (for instance if your company has a custom VoIP/chat/PIM app)

Conclusion

I was hoping that version 3 of Adobe Drive (which supports CMIS) would offer an option to cache documents for offline use, but unfortunately it does not.

For now, CmisSync and Alfresco Desktop Sync are by far the most usable.
Nicolas Raoul

Wednesday, April 11, 2012

オフライン共同電子旅行ガイドブックOxygenGuide知っていますか?


「君は明日からヨーロッパ10ヶ国に出張!」と言われれば、旅行ガイドブック10冊買いに飛び出しますか?

旅行ガイドブックには便利な情報が乗っていますが、いくつかの問題があります:
  • 重い。荷物の重さチェックの時も、旅行中に出歩くときに、邪魔です。
  • 店で売ってる本の内容は去年や一昨年のもので、古い情報です。Wikipediaように最新情報が欲しいです。それに、毎年新しいバージョンを買えば、結構お金が掛かります。
  • 本の内容より、たくさんの人が参加しているコミュニティで書かれたものの方が良い。よく知らない会社が決めたお勧めリストより、食べログなどが頼もしいでしょう。
Wikitravelなど、ウェブサイトはあるけど、海外でのローミング料はすごく高いし、飛行機や砂漠で接続できません。

というわけで、OxygenGuideというオフラインWikitravelガイドブックプロジェクトを作りました。
スマートフォンやタブレットやラップトップで使えます。
テキストだけなので、26万ヶ所のページがあっても、436メガバイトしか掛かりません。

興味があれば、ダウンロードして、スマートフォンにコピーして、使ってみて下さい!
無料です。
そして、次のタスクをやっていただける方を募集中です:
  • 一定の間隔でWikitravelダンプスクリプトの実行
  • 新しい形式でのエキスポート機能の開発(特に電子ブック)
  • wikicode→HTML変換エンジンの改善
  • 英語版Wikitravelだけではなく、日本語版WikitravelもOxygenGuide化
  • もちろん、Wikitravelも皆の編集を待ってます!
Nicolas Raoul
nicolas.raoul@aegif.jp

Tuesday, April 3, 2012

新しいオープンソースフォント選択ライブラリAntisquareリリース


アプリで「ͿͿͿͿͿ」のような文字化けを見たことがありますか?



これは、表示するべきだった文字列が、開発者やシステムが選んだフォントファイルにありません、ということです。「トーフ型の文字化け」、または「豆腐化け」や「豆腐化」とたまに言われてます。普通の文字化けと違って、文字コードの問題ではなく、フォント選択の問題です。

あなたのパソコンでも、こういう問題が起こるはずです。例えば、このページはちゃんと表示されていますか?(ビルマ語、ミャンマー、話者4千万人以上)

OSによってはフォント・フォールバックという仕組みを使える場合がありますが、アンドロイドの場合などは埋め込まれたフォントを使うとフォント・フォールバックできません。

例えば、フォントが「TibetanDDC.ttf」なら、アラビア語は表示されません。開発者は「誰もアラビア語のコンテンツを読まないだろう!」と考えたかもしれませんが、そうとは限りませんよ。

というわけで、最適なフォントを選んでくれるライブラリ「Antisquare」を作りました。

呼び出し例:Antisquare.getSuitableFonts('ណ')
戻り値:"KhmerOS.ttf"

速いです(1ミリ秒の間に2万回も呼ぶことができるほどです)。
Javaで作りました。
オープンソースにしたので、是非使ってみてください
Nicolas Raoul

Tuesday, March 6, 2012

Androidのオープンソースマーケット F-Droid を知っていますか?


Androidにはものすごく沢山のアプリがあって、探すとき色々なことを調べる必要があります:
  • 品質
  • パーミッション
  • マルウェア、スパイウェア、トラックウェア、アドウェア
  • 値段
オープンソースソフトウェアは以上の点に強いです。特に、マルウェアがないです。
オープンソースアプリの中に悪意のあるコードがあれば、誰かが見つけます。「誰もコードなんて読まない」とたまに言われてますが、実際にコードを読む人達はいますよ!「F-Droid」の人達です。

F-Droidというのはアプリマーケットです。このマーケットには、オープンソースのアプリだけが登録されています。
コードはちゃんと調査されており、広告もユーザトラッキングも禁止されています。F-Droidには優しいアプリしか登録されていません。
もちろん、全部無料です。

このように基準が厳しくても、F-Droidにはたくさんのアプリが登録されていますので、Androidを使っている皆さん、是非F-Droidを使ってみてください



そして、F-Droidでは次のような人たちを募集中です!
  1. オープンソースアプリを探す人達:なところで探して、オープンソースアプリを見つけたらF-Droidに知らせる
  2. ビルドの設定を書く人達:SVNやGitなどのレポジトリのURL、アプリのライセンスや名前などをテキストファイルで書いて、ビルドのテストをする。あまり難しくないなので、興味がある方は是非ご協力ください!
各アプリは一つの「レシピ」という簡単なファイルで定義されています:

Category:Multimedia
License:GPLv3
Summary: PDF reader
Description:
A reader for PDF files.
.
Repo Type:svn
Repo:http://vudroid.googlecode.com/svn/trunk/
Build Version:1.4,5,56

前半はメタデータ:カテゴリ、ライセンス、名前、記述。
後半はレポジトリとバージョン。例えば、上記のアプリの「1.4」バージョン(バージョン番号5)はSVNリビジョン56にある、という意味です。

こちらにわかりやすいサンプルがあります。詳しい説明もあります。F-Droidのサーバーはテキストファイルに書かれているとおりにソースコードリポジトリからチェックアウトし、ビルドまで自動的に行ってアプリを作り、配布します。
Nicolas Raoul
nicolas.raoul@aegif.jp

Friday, February 24, 2012

Aegif releases Alfresco checkin/checkout plugin, open source


From an intranet office user's point of view, documents stored in Alfresco usually appear as a shared drive. The user opens its files manager, and can see for instance a "W:" shared drive below their "C:" drive. Employees on a business trip or working from home can achieve the same result by clicking a link to Alfresco's WebDAV interface, which also works in the file explorer.

Alfresco provides a convenient way to checkin/checkout documents, you just drop a file on "CheckInOut" to start modifying it, or push your modifications to the repository.

Problem: It only works on Windows.
That's why I started a project to have the same level of user-friendliness on Mac and Linux.

I finished implementing the Linux one, here is a short video showing it in action:

Aegif released this plugin as Open Source.

It runs on Gnome Nautilus, the default file browser in RedHat, Ubuntu, and most other Linux distributions. Internally, it uses the CMIS protocol to check out documents.

The source code is available so don't hesitate to modify it.
Also, we must find a way to write a plugin for MacOsX's Finder, but its close source nature is making it less straightforward. Any idea/contribution is welcome!
Nicolas Raoul

Thursday, February 2, 2012

Alfresco: Fix the "Enter at least 1 character(s) to search" ...


Alfresco Share is a great ECM web application, but there is one detail that annoys all users, and here is how to fix it.

The problem: when clicking "Search" in a user/group selection dialog (for instance when creating a workflow), the following message appears: "Enter at least 1 character(s) to search". Which means that if you don't remember the name of the group, you have to try all letters: a,b,c,... hoping to find it. This is an incredible waste of time, and impossible to do in Japanese.

A trick is to enter an asterisk * (or "name:*" in some cases), but it does not work on all dialogs, and it is not user-friendly.
So here is how to fix the problem, and make all results appear when you click "Search":
  1. Stop Alfresco
  2. Open file tomcat/shared/classes/alfresco/web-extension/share-config-custom.xml
  3. At the end of this file, just before "</alfresco-config>", add this XML.
  4. Start Alfresco again.
And now the problem should be fixed!
Same message in other languages: Saisir au moins 1 caractère(s), 1文字以上入力してください, Geben Sie mindestens 1 Buchstaben ein, Immettere almeno 1 caratteri, Introduzca al menos 1 caracter(es).
Credits: Mike H.
Nicolas Raoul

Tuesday, January 31, 2012

Kakasi-java: born again

The Japanese language has several symbols, including kanji and hiragana/katakana. In software, we sometimes need to switch a text from one system to the other, and it is difficult.

Kakasi and MeCab are Open Source libraries dedicated to the problem of converting kanji to hiragana or katakana. For instance they can transform "国際財務報告基準" to "こくさいざいむほうこくきじゅん" or even to "kokusaizaimuhoukokukijun". In clear, it transforms logograms (symbols with multiple possible readings) to syllables.
That is very tricky, because for instance "経緯" can be transformed to "keii", but also to "ikisatsu" depending on the context or speaker. Kakasi sometimes gets it wrong, but usually it is not that bad. MeCab is actually better at that.

Yesterday I decided to add a "furigana" feature to my Android flashcards app. Furigana helps people read difficult kanjis, they are used a lot in mass media: books, newspapers, signs, advertisements.
Kakasi and MeCab are both conversion tools, but their internal algorithms are very different, leading to different speed/quality/simplicity characteristics. Before running to MeCab, I decided to also give Kakasi a try.

Unfortunately, Kakasi is written in C, and thus not easy to run on Android. Porting from C to Java would be possible, but before doing it I had to make sure nobody had ported it already. After multiple searches, I finally found a tar file of the blog of Kenichi Maehashi, saying "現在どこからも入手できないようです". In clear: Kakasi-java can not be found anymore on the Internet, so he uploaded the 0.4 version he miraculously found in his backups.

To make improvements and fixes possible, I took the source, compiled, tested it, wrote a little README file and created a project for it on GitHub. Code contributions are welcome :-)

The best would be a Java port of MeCab, but that does not seem to exist. MeCab has a Java binding, but it is not 100% Java, requiring JNI calls, which is not a great idea for Android.
Nicolas Raoul

Monday, January 30, 2012

Templated nodes in Alfresco 4


In the new Alfresco 4, you can now easily use document templates.
Templates are convenient for forms that employees must fill often, for instance.
Another example: here at Aegif we often write new contracts, always based on the same template.
In this article I explain how to create and use a template in Alfresco.
First log in Alfresco Share as admin, and click the repository icon:
Go to the "Data dictionary" folder, then "Node templates" folder, and upload your template:


That's all!
To use it, click "Create content..." then "By Templated Node...", and you can select a template:


The template is then copied to the current folder, and you just have to rename it.

More technical details:

  • Can be used to easily create nodes with a custom content model.
  • Convenient for nodes with a particular set of aspects and properties.
  • Node templates must me created by an administrator (or someone who has access to the data dictionary), and are usable by everyone.
  • I haven't tried but I guess you can use permissions to show a particular template only to a particular group of users.
  • I will have to check whether associations are preserved or not.
  • As I reported on JIRA, folder hierarchies can not be used as templated nodes yet.
Do you know any trick with templated nodes? Let us know in the comments :-)
Nicolas Raoul

Keywords: Créer un contenu... A partir d'un modèle. Inhlat erstellen... Nach Mustervorlagen-Node. Crear contenido... Por nodo de plantilla. Crea contenuto... Per nodo modello. 親近コンテンツ… テンプレートノード

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

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

Tuesday, October 11, 2011

AnkiDroid presentation in Roppongi Hills

On Thursday I will give a presentation about AnkiDroid, in Japanese!

Place: Roppongi Hills, Mori Tower 2F, Hills Space
Time: 19:00~22:00, 2011 October 13th
Admission: 1000 JPY with one drink.

Other people will present various other creative projects, should be a lot of fun!
In the morning of the same day, I will be at the eDocumentJapan conference as a Japanese/English interpreter for IT pioneer John Newton.

Monday, October 3, 2011

ECM presentations at eDocument Japan

We are giving two presentations at the eDocument Japan conference:
- The place of Open Source in the global ECM market
- Social Content Management with Open Source software Alfresco

The presentations will be in English, translated to Japanese.
Tokyo Big Sight, October 13th, 10:00 AM and 12:20 PM.

Alfresco's CTO in person is coming to Japan for the occasion.
Organized by JIIMA (Japan Image and Information Management Association)

Wednesday, August 24, 2011

Giving a presentation about Alfresco in Shinjuku

On Thursday I will give a presentation about Alfresco in Shinjuku, Tokyo.

I still have to think about the details, but I will probably be presenting the basics of Alfresco and how to set up content management rules.

I will be speaking in Japanese.

Place: 東京都新宿区百人町2-27-6 関東ITソフトウェア健保会館
Time: 25th of August, 2011 (Thu) 19:00
Price: Free registration here

Tuesday, July 19, 2011

AnkiDroid one of "The 100 best Android apps"!

AnkiDroid has been growing a lot recently: the number of users has quadrupled in the last 6 months!

With now 75.000 installs, AnkiDroid has just been selected by makeuseof.com as one of The 100 Best Android Apps!
Congratulations to all of the team!

I will soon release AnkiDroid 0.8 with a lot of bug fixes, and a version with a totally re-engineered database and a much more efficient SRS algorithm should be out before the end of the year.

Tuesday, March 22, 2011

Alfresco accreditation


I just received the certificate for the Alfresco accreditation I passed a few weeks ago.

Three of my colleagues also managed to get it, so the whole company has just been declared an Alfresco Recognized Partner, allowing us to use the shiny green badge!

Tuesday, February 15, 2011

Applying Business Intelligence to Bug Tracking

Last week I released AnkiDroid 0.5.1, and judging by the Android Market's comments, people seem to love it :-)

Since a few releases already, an opt-in feedback mechanism sends us a report everytime a problem happens. The anonymous reports are automatically scanned by a Google App Engine application to determine whether it is a new bug or just an additional occurrence of an already known bug. The data can be exploited in two ways:

1) An online application allows one to browse the reports and bugs, see which bugs happen the most often for a given version, and associate them with issues in the bug tracker.

2) A set of Business Intelligence tools allows one to drill-down reports in a multidimensional OLAP cube, and generate reports to show any interesting findings. As a quick example, here is the distribution of crashes among Android versions. Those tools use the open source Pentaho Business Intelligence suite.

Friday, February 4, 2011

Alfresco: Categories vs. Spaces

Managing huge amounts of documents requires to know the limits of the ECM software you are using. Here is a study I performed about the limits and best strategies for Alfresco.

Categories vs. Spaces

In Alfresco, documents are usually hierarchized in spaces (kind of folder). But how about using Alfresco's "categories" feature instead of spaces?

Note: For all graphs in this article, horizontal axis = number of documents, vertical axis = time taken in milliseconds

This graph shows the time taken to show a space, based on the number of document this space contains, and the same for a category. There are no sub-categories nor sub-spaces involved.
For the same number of documents, categories show faster than spaces. That is especially true for above 100 documents. In a space, time is proportional to the number of documents. In a category, time is more logarithmic.
For huge numbers of documents, categories show in less than 3 seconds, whereas spaces take a very long time only to show Java errors related to a shortage of memory.

Impact of the spaces hierarchy on performance

To measure the impact of hierarchy, a comparison was done between two file spaces organization strategies:
(1) All files in about five spaces.
(2) Each file contained in its own 3 levels of sub-spaces (subspace1/subspace2/subspace3/file).

This graph shows the time taken by Alfresco's explorer to show a category, based on the number of documents that are shown.
Surprisingly, having the files scattering in a lot of different folders is more efficient.
Alfresco seems to have difficulties handling many files in the same space.
This has to be taken into account when analyzing the category performance tests, they use strategy (1), the slowest.

Impact of the number of categories applied

This graph shows the time taken by Alfresco's explorer to show a category, based on the number of documents in this category.
Two tests have been done, with a different numbers of categories.
As one would expect, if each document has 3 categories, it is faster than if each document has 10 categories.

Impact of the size of the repository on performances

This graph shows the time taken by Alfresco's explorer to show a category, based on the number of categorized documents in the repository.
Each document has 3 categories randomly selected from a pool of 20 existing categories.
The different curves show different usages of the explorer:
- Navigation in the categories tree view, with subcategories inclusion checked/unchecked.
- With or without 10000 additional uncategorized documents.
- First click or after three clicks (to measure cache performance)
- Search in a root category (Software Document Classification) including subcategories
- Search in a leaf category (Configuration Description)

Performance seem to be proportional to the number of documents in the repository at first, and then become more stable after 6000 documents.
Cached requests don't take more than 3 seconds, even with a repository of 160000 documents, which means a result set of 24000 documents.
On the contrary, search time grows consistently with the size of the repository.
The light blue curve's values are surprising and might be an artifact to the state of the database during the measure. Usual values are expected to be closer to the brown curve.

Method

Using Google Chromium and its Speed Tracer extension, I measured the time between the DOM click and the end of the processing (excluding repaints that occur after the page is shown completely).

Conditions:
- Alfresco Enterprise 3.2 with heap.maxsizesize = 500MB
- Ubuntu Karmic 2009.10 with Sun Java HotSpot 1.6.0_15
- Laptop with Intel Core Duo T9600 2.8GHz and 4GB RAM

Notes:
Empty categories are shown in about 600 milliseconds. But once, with 10000 categorized documents plus 10000 uncategorized documents, a particular empty category took 6 seconds to load, consistently.
Even for a well-defined operation, performance is not very predictable.

Conclusion

Categories show faster than spaces in the Alfresco explorer, especially when they contain large numbers of documents.
On huge repositories, performances are slow at start, but that get better once requests have been cached, most pages take less than 3 seconds to load.

Depending on the requirements, performances of categories might be deemed acceptable, there is no bottleneck or operation that takes more than 10 seconds.

However, some features are not available to someone who would use the Alfresco's “Categories” tree view exclusively, for instance:
- No permissions settings based on categories.
- No content rules settings based on categories.
- No "Add content" button when browsing categories.

Monday, January 24, 2011

Just passed the Alfresco accreditation

Back in 2009, I was in Milan designing the future Alfresco accreditation tests. Those tests will be offered to anyone, starting from summer 2011.

Because my company Aegif is an Alfresco partner, we have just been subjected to the test! Some of the questions have been written by me (what? unfair?), but all-in-all it was a bit more difficult than I expected. There are 137 questions (some multiple choice, some multiple response) to answer in 60 minutes. Some questions are very specific (which file does what) and some more general (which feature is not available).

Now I can add "Alfresco Recognized Developer" to my titles ;-)
More importantly, my company becomes an "Alfresco Recognized Partner".

Wednesday, January 12, 2011

Automatically deploy Alfresco WCM content to an FTP server

In Alfresco WCM, deploying means generating "baked" web content from XML content and templates, into a local FSR directory. Here is how to take this further and also deploy the content to your web server via FTP automatically.
  1. Make sure you have both Alfresco WCM and an FSR (now called File System Deployment Target) installed and working.
  2. Edit the Deployment Server's deployment/default-target.xml file and add a "postCommit" section linking to a postcommit script (example).
  3. Create the postcommit script, calling the lftp tool in mirror mode (example).
Unfortunately, the default Alfresco Deployment server does not report anything about the script's activity and potential errors. To see or log messages, please download Alfresco's source code, modify ProgramRunnable.java like this, recompile, overwrite alfresco-deployment-3.3.2.jar with the one you just generated, and then restart the server.

Saturday, December 4, 2010

Video of my AnkiDroid presentation at Roppongi Hills

Here is a video of my recent speech in Roppongi Hills about AnkiDroid. About 200 people attended, including a Japanese company who is considering reusing the code as a part of their educational offering. I licensed the slides under a Creative-Commons-Share-Alike license, so feel free to reuse or modify them and speak about AnkiDroid at other events!

Tuesday, November 16, 2010

Aggregation for Pentaho/InfoBright

Infobright is a column-oriented database, so it is efficient for Business Intelligence (InfiniDB is worth checking too). But my current BI project has 24 dimensions so I also needed aggregates to reach a good level of performance.

Infobright is usually more or less supported by most of the Pentaho suite, but sure not by the Aggregation Designer. I must be one of the first persons who tried, I have found many bugs and workarounds. It was a tough ride, but finally I have found a way to make it work, so here it is!

1) Open PAD and design your aggregate the usual way. Ignore the primary key errors.
2) When you're done, in "Export and Publish", execute the DDL.
3) Try executing the DML, but chances are it will fail. This is probably because Infobright does not support INSERT well.
4) So instead, click on "Preview" and copy-paste the DML SQL code.
5) Open PDI and create a "Table Input" step with the copied SQL's select-from-groupby portion.
6) Connect it to an Infobright Loader step that will write the data into the table created by the DDL.
7) Run the transformation. You can use cron and pan.sh to run it automatically every night.
8) Back to PAD's "Export and Publish", you would normally publish your updated schema, but it results in a NullPointerException.
9) So, export your updated schema
10) Open it with Schema Workbench, ignore the primary key errors, and publish from there.
11) That's all!

Tested with: pad-ce-1.2.1.RC1 biserver-ce-3.7.0.RC1 pdi-ce-4.1.0-RC1 infobright-3.4.2-0

Friday, November 5, 2010

Automatic report generation now possible in Pentaho Data Integration

Last Friday, Pentaho Data Integration (PDI) developer Matt Casters posted a preview of a new tool that allows Business Intelligence designers to include report generation (PRD) as a step of PDI. This is extremely useful, because the obvious step after ETL is often to generate reports.

Let's say a retail chain wants to send, everyday, to every shop manager, a report detailing this shop's performance and trends.
Imagine you have a data warehouse that contains all sales records, and a PRD report template. Then here is how to create a system that will automatically generate and send the reports everyday:
  1. Install the bleeding-edge PDI 4.1.0 RC1
  2. Add Matt's plugin as explained here
  3. Open PDI "Spoon" and create a new Transformation
  4. First, create a "Table Input" step to get for each shop it's code, name and email address.
  5. Second, create a minimal JavaScript step to compute the output's filename and set the PRPT file's name.
  6. Third, use the new "Pentaho Reporting step", and configure it to use your freshly computed PRPT and output filenames, as well as the shop codes.
  7. Finally, create an "Send mail" step and set it to use each shop's email address, putting the generated report as an attachment.
  8. Save and configure your cron to launch this transformation every night via the pan.sh command-line tool.

Tuesday, October 12, 2010

Presentation about AnkiDroid in Roppongi Hills

I will give a presentation at Hills Breakfast on Friday 10/22, 7h45, in Mori Tower, just at the left of the Goldman Sachs entrance.
I will be speaking about AnkiDroid and Open Source in general.

Last month's presenters were the Director of the Mori Art Museum and two Google managers.
My friend Yuko Mizutani of Mori Building Co. is organizing the event and invited me to give a talk. I first thought I would talk about ECM, but she figured out it would sound too much like an advertisement for my company, so I will be advertising Open Source instead!

Tuesday, August 17, 2010

Released AnkiDroid 0.4.1

I just released AnkiDroid 0.4.1, result of the collaboration of about 8 developers and tens of other contributors!

AnkiDroid will always be open source, but it is starting to get attention from companies as well: a Chinese company contributed the Simplified Chinese user interface. This version brings in a lot of new features:

First, the user interface has been translated by volunteers in 13 languages:
- Portuguese
- Swedish
- Romanian
- French
- Spanish
- Italian
- Simplified Chinese
- Traditional Chinese
- Catalan
- Russian
- Polish
- Greek
- German

Second, you can now download decks that have been made by other people. Hundreds of good-quality decks are available in a multitude of topics: sciences, law, languages, medicine, etc.

And lots of other improvements!
In Google's Android Market, search for "Anki".

Monday, July 12, 2010

Business Intelligence with Pentaho

Today I started a new BI (Business Intelligence) project, it had been a long time. It is my first time using Pentaho, an open source BI suite. Pentaho's website is a bit confusing about the various programs and their goals, so I lost some time trying to figure out before I found this nice guide. It explains how the BI server and the design tools work together, and how to use them. Also, Prashant Raju has a great guide that shows how to replace Pentaho's default HSQL database with a more powerful database such as MySQL or PostgreSQL. Infobright looks even more promising.

In other news, I just had a meeting with Liferay's CEO Bryan Cheung to talk about our strategy to make Liferay a success in Japan, and about Thursday's seminar, to which you are all welcome!

Friday, July 2, 2010

Organizing a Liferay seminar

We are organizing a seminar about Liferay, the open source Enterprise portal software described as visionary by Gartner. Liferay Portal powers large companies' public-facing websites with advanced content management features. Behind the scene, Liferay offers companies a "social office" where employees can collaborate efficiently.

Liferay's CEO Bryan Cheung will introduce Liferay, present the roadmap, in particular for the Japanese market.
Aegif recently became the first Liferay Service Partner in Japan.

The seminar will take place at Roppongi Hills, 49th floor, on July 15th 2pm. Free entrance. More info here.

Tuesday, June 22, 2010

Just released the first integration-oriented CMIS explorer webapp

In a lot of ECM projects, employees who are not back-office-power-users are offered a simple web-based interface to browse a portion of the documents.
Sometimes, clients are offered another web-based interface to check their bills, read their contracts or other papers.

Just released as open source by Aegif (Japan), Struts2CmisExplorer is a new way to build those kinds of web interfaces. It is a CMIS explorer application that focuses on simplicity. This means you can very easily get it running, and modify it to fit your extra requirements, or integrate it into your existing portal.

It should work with all CMIS servers (Documentum, Nuxeo, Open Text, FileNet, etc), for instance here is how to get it up and running on Alfresco:

1) Install Alfresco 3.3 (Community or Enterprise). Check that it is running well at http://localhost:8080/alfresco

2) Download Struts2CmisExplorer and put it in Alfresco's tomcat/webapps directory.

3) That's all! Use it at http://localhost:8080/Struts2CmisExplorer_0.1

Struts2CmisExplorer is not intended to be a full-featured explorer, instead it targets the usual need for a simple web-based documents access. The goal is reusability/ease of integration. Struts2CmisExplorer does not rely a particular framework, dependencies are kept to a minimum (Struts2 and OpenCMIS), which means you can easily integrate it in any IoC framework you might want.

More on Struts2CmisExplorer.

Wednesday, June 9, 2010

CMIS has been approved

CMIS has recently been accepted as a standard, so it is time to get some experience with it! Actually my company just delivered its first CMIS-based solution yesterday.

CMIS means "Content Management Interoperability Services". It is a protocol to access ECM (Enterprise Content Management) repositories. Why did I choose to use CMIS instead of JCR or WebDAV? Because CMIS better targets the needs of ECM projects, it is actually the first protocol designed for Document Management, with interoperability being one of the main goals. CMIS is a joint effort between IBM, Microsoft, Alfresco, EMC, Open Text, SAP, Oracle, Adobe, Nuxeo and others.

Some client implementations already exist in beta versions, but their documentation is still very scarce. I chose OpenCMIS as a client library. Other solutions could have been chemistry-abdera, which is not as active, or using CMIS as Web Service or REST directly, which would have taken a lot of time.

Like for other CMIS implementations, OpenCMIS documentation is still scarce (I actually contributed a good portion of it). So I will explain how to get started with CMIS in the small OpenCMIS tutorial below, hope this helps someone. For the example, I will explain how to access Alfresco from an OpenCMIS client.

Using OpenCMIS to access an Alfresco repository

OpenCMIS has not been released yet, so you will have to compile it from source. Install subversion and maven if you don't already have them. Then get the source:
svn checkout https://svn.apache.org/repos/asf/incubator/chemistry/opencmis/trunk

... and compile it (in the root directory):
mvn clean install

This will create a bunch of JAR libraries, in particular those we need:
  • chemistry-opencmis-client-api-0.1-incubating-SNAPSHOT.jar
  • chemistry-opencmis-client-impl-0.1-incubating-SNAPSHOT.jar
  • chemistry-opencmis-client-bindings-0.1-incubating-SNAPSHOT.jar
  • chemistry-opencmis-commons-api-0.1-incubating-SNAPSHOT.jar
  • chemistry-opencmis-commons-impl-0.1-incubating-SNAPSHOT.jar
If you don't have an Alfresco server ready, install Alfresco Community (version 3.3 or later) and start it.

Download my small Java demo file and edit the URL, user, password to match your environment.

Then compile with the libraries, run, and the content of your repository should appear :-)
That's it! To start doing actually useful things, check the OpenCMIS cookbook.

Saturday, March 13, 2010

My contribution to IEEE's Pervasive Computing


QR codes are big in Japan. Actually, last year I spotted one in Shibuya that is wider than most flats in Tokyo. I took a picture.

Incidentally, the IEEE is publishing an article on QR codes in this month's Pervasive Computing magazine. If you buy it, you will see "Courtesy of Nicolas Raoul" under the first picture of the article :-)

"Pervasive computing" is a synonym of ubiquitous computing, the science of ultra-close human-machine interaction. As the article points out, QR codes are not widely used outside of Asia. But I think they will eventually become popular in the whole world. Recent Android phones are natively able to read QR codes!