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

Monday, April 9, 2012

Alfresco4.0をインストールしてみよう(手動インストール編)

こんにちは!aegifの大谷です。

先日、Alfresco4.0をインストールしてみよう(インストーラ編)という記事を書いたのですが、既存のアプリケーションサーバにAlfrescoをデプロイする場合や、Tomcat以外のアプリケーションサーバを利用する場合には、Alfrescoを手動でインストールする必要があります。そこで、今回は手動でインストールする方法について見ていこうかと思います。
以下では、Windows/Tomcat/MySQLの組み合わせで、Alfrescoのバージョンは本記事執筆時点の最新版である4.0.dを前提として話を進めますので、LinuxやMacの方や、JBossやPostgreSQLを利用する方は適宜関係する箇所を読み替えてください。

(2013/04/17追記) Alfresco4.2系でのインストール方法を紹介した記事を公開しました。


Tomcatを準備する


  1. Alfresco用のディレクトリを作成します。ここでは、Cドライブ直下にalfresco40dというディレクトリを作成し、以下ではALF_HOMEと表記します(ALF_HOME = c:/alfresco40d)。
  2. cd c:/
    mkdir alfresco40d
  3. Apache TomcatのサイトからTomcatをダウンロードします。本記事では、Alfresco 4.0.dに同梱されているTomcatと同じバージョンであるバージョン6.0.29を利用します。
  4. ダウンロードしたファイルをALF_HOMEに展開します。展開するとALF_HOME以下にapache-tomcat-<バージョン番号>という名前のディレクトリが作成されますので、このディレクトリをTOMCAT_HOMEと表記します(TOMCAT_HOME = c:/alfresco40d/apache-tomcat-6.0.29)。


MySQLを準備する


  1. MySQL Developer ZoneからMySQL Community Server 5.5をダウンロードし、インストールします。また、後ほど利用するMySQL Connector/J 5.1(JDBCドライバ)をここからダウンロードします。


AlfrescoをTomcatにデプロイする


  1. Alfresco Community Editionのダウンロードサイトにアクセスし、"Custom Installs & Optional Modules"のリンクからalfresco-community-4.0.d.zipをダウンロードします。
  2. ダウンロードしたファイルを適当なディレクトリに展開します。このうち、bin, licenses, web-serverディレクトリの中身をAlfrescoのディレクトリにコピーします。
    • bin/* -> <ALF_HOME>/bin
    • licenses/* -> <ALF_HOME>/licenses
    • web-server/* -> <TOMCAT_HOME>
    ALF_HOME、TOMCAT_HOME以下は次のようになります。
     c:\alfresco40d のディレクトリ
    
    [.]                    [..]                   [apache-tomcat-6.0.29] [bin]                  [licenses]
     c:\alfresco40d\apache-tomcat-6.0.29 のディレクトリ
    
    [.]             [..]            [bin]           [conf]          [endorsed]      [lib]           LICENSE
    [logs]          NOTICE          RELEASE-NOTES   RUNNING.txt     [shared]        [temp]          [webapps]
    [work]
  3. JDBCドライバをTomcatのクラスパスに配置します。先ほどダウンロードしたMySQL Connector/Jを展開し、mysql-connector-java-5.1.xx-bin.jarを<TOMCAT_HOME>/libにコピーします。

  4. Tomcatの設定を変更します。まず、<TOMCAT_HOME>/conf/catalina.propertiesをテキストエディタで開き、shared.loaderプロパティを以下のように変更します。
  5. shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar
  6. <TOMCAT_HOME>/conf/server.xmlをテキストエディタで開き、8080番ポートの設定を以下のように変更します。
  7.     <Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"
                   connectionTimeout="20000" 
                   redirectPort="8443" />
  8. JVMのヒープサイズを設定します。<TOMCAT_HOME>/bin/startup.batに以下の行を追加します。最大/最小ヒープサイズはPCのスペックに応じて変更してください。
  9. set CATALINA_OPTS=-Xms512m -Xmx1024m -Xss1024k -XX:MaxPermSize=256m -XX:NewSize=256m -server -Dalfresco.home=%ALF_HOME% -Dcom.sun.management.jmxremote
    


データベースを設定する


Alfrescoはコンテンツのメタデータをデータベースで管理し、コンテンツのファイル実体とインデックス情報をファイルシステムで管理します。以下ではそれぞれについての設定を行います。
  1. MySQLにログインします。
  2. mysql -u root -p
  3. 以下のコマンドでMySQLにAlfresco用のデータベースを作成します。この例では、データベース名をalfrescoとし、ユーザ名/パスワードもalfresco/alfrescoとなります。
  4. create database alfresco default character set utf8 collate utf8_bin;
    grant all on alfresco.* to 'alfresco'@'localhost' identified by 'alfresco' with grant option;
    grant all on alfresco.* to 'alfresco'@'localhost.localdomain' identified by 'alfresco' with grant option;
  5. Alfrescoが上記データベースを使用するように設定ファイルを変更します。<TOMCAT_HOME>/shared/classes/alfresco-global.properties.sampleをalfresco-global.propertiesにリネームし、テキストエディタで開いて以下のように変更します(コメントアウトされている場合はそのコメントアウトを外し、環境に合うように設定を変更してください)。
  6. #
    # Sample database connection properties
    #
    db.username=alfresco
    db.password=alfresco
    
    #
    # MySQL connection
    #
    db.driver=org.gjt.mm.mysql.Driver
    db.url=jdbc:mysql://localhost/alfresco?useUnicode=yes&characterEncoding=UTF-8

  7. 引き続きalfresco-global.propertiesを編集し、dir.rootプロパティを設定します。dir.rootはコンテンツ実体やインデックス情報を格納するディレクトリを指定するプロパティですが、<ALF_HOME>/alf_dataあたりを設定しておくと無難です。
  8. dir.root=c:/alfresco40d/alf_data


その他の設定を行う


最後に、その他のツールとの連携設定を行います。ここではOpenOffice、ImageMagick、SWFTools(pdf2swf)について説明します。この3つのツールの用途は以下のとおりですので、必要に応じてインストール、設定を行ってください。
  • OpenOffice : Alfrescoでファイルフォーマット変換を行う際に使います。PDF変換機能などを利用する場合に設定する必要があります。
  • ImageMagick : コンテンツのサムネイルやプレビューを生成する際に使います。
  • SWFTools : コンテンツのプレビューを生成する際に使います。
  1. それぞれのサイト(OpenOffice.orgImageMagickSWFTools)からツールをダウンロードし、インストールします。次に、alfresco-global.propertiesをテキストエディタで開き、以下のプロパティを設定します。
    • ooo.exeはOpenOffice実行ファイルのパスを指定します。
    • img.rootはImageMagickのインストール先、img.dynはライブラリディレクトリ、img.exeは実行ファイルパスを指定します。Linuxの場合はimg.rootを設定するだけで動くかもしれません。
    • swf.exeはSWFToolsに入っているpdf2swfの実行ファイルパスを指定します。
    ooo.exe=C:/Program Files (x86)/OpenOffice.org 3/program/soffice
    ooo.enabled=true
    img.root=C:/alfresco/ImageMagick-6.7.3-7
    img.dyn=${img.root}
    img.exe=${img.root}/convert.exe
    swf.exe=C:/alfresco/SWFTools/pdf2swf.exe
    なお、筆者手元の環境は、OpenOffice 3.3.0、ImageMagick 6.7.3-7-Q16、SWFTools 0.9.0となっています(若干古いリリースを利用しています)。


Alfrescoを起動して動作確認する


以上で一通りの設定が終わりになるので、最後にAlfrescoを起動し、動作確認を行います。
  1. <TOMCAT_HOME>/bin/startup.batを実行し、コンソールの出力内容(もしくはalfresco.logやcatalina.out)をチェックします。初回起動時はデータベースにテーブルを追加する作業やwarファイルを展開する作業がありますので時間がかかります。
  2. 起動が正常終了すると、コンソールもしくはログに"Server startup in xxxxxx ms"と表示されます。

  3. 正常に起動したら、ブラウザからAlfrescoにアクセスしてみましょう。http://localhost:8080/shareにアクセスします。管理者ユーザのデフォルトユーザ名/パスワードは、admin/adminになりますのでそれを入力します。

  4. 正常にログインし、ダッシュボード画面が表示されたらめでたく動作確認完了です!


以上がAlfrescoを手動インストールする手順になります。Alfrescoを実際に使ってみるにあたっては、弊社Webサイトからダウンロードできるユーザガイド等が役立つと思いますので是非参考にしてみてください。

Tuesday, April 3, 2012

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


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


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

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

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

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

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

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

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