Quantcast
Channel: aegif Labo Blog
Viewing all 244 articles
Browse latest View live

明日Hills Breakfastを司会します

$
0
0
明日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


Windows 8.1 PreviewをVirtualBoxのVMに入れてみたお話し

$
0
0
こんにちは。仕事で使っているノートPCの2nd HDDもSSDに換装したいと日々妄想している大谷です。VMぽんぽん作るので500GBくらいは欲しいですが、3万円もするんじゃちょっと現実的ではないですね、はい。

早速ですが、Windows8.1 Previewが公開されました。色々試してみたいことがあったのでひとまず手元のVirtualBox上のVMにインストールしてみました。1箇所だけインストール失敗ポイントがあったので、備忘代わりに手順をメモしておきます。ちなみに、Oracle VM VirtualBoxはこちらからダウンロードできます。

1. ISOイメージをダウンロードします。こちらからダウンロードできます。

2. VirtualBoxを起動し、「新規」ボタンをクリックして新規VMを作成します。各自の環境に合わせて設定を行ってください。


 

 




 3. (64bit版のみ) VMの作成が終わったら、コマンドプロンプトでVirtualBoxインストールディレクトリに移動し、以下のコマンドを実行します。<VMイメージ名>は、上記スナップショットの例では"Windows 8.1 Preview"となります。イメージ名にスペースが入る場合は""で囲ってあげてください。

  VBoxManage setextradata <VMイメージ名> VBoxInternal/CPUM/CMPXCHG16B 1

このコマンドは、CMPXCHG16Bサポートを有効にするためのコマンドです。Windows 8.1 Previewのシステム要件に64bit版ではCMPXCHG16Bサポートが必要である旨の記述があります。ちなみに、このステップを省略してVMを起動すると、以下のエラーが出てインストールが開始されません。こうなったら潔くVMをシャットダウンしてください。マウスカーソル消えちゃったよ、という人は右ctrlキー押してみてくださいね。

  Your PC needs to restart.
  Please hold down the power button.
  Error Code: 0x000000C4
  Parameters:
  .....


4. 「起動」ボタンをクリックしてVMを起動します。初回起動時にはマウントするISOイメージを聞いてくるので最初にダウンロードしたISOイメージファイルを指定します。うまく読み込めると金魚(!)が出てきます。


5. あとは指示に従ってWindowsのインストールを行うだけです。途中でプロダクトキーを聞かれますので、ダウンロードページに記載されているプロダクトキーを入力してください。何回か再起動したり、アカウント作成したりで、めでたくWindows 8.1 Previewインストールの完了です。


噂通り、スタートボタン復活してますね。ただし、ボタンのみ。メニューは復活してません。まあ、コンテキストメニューから色々できるようになってるみたいですけど。

第19回Alfresco勉強会が開催されました

$
0
0
こんにちは。ISON彗星が近日点通過時に崩壊したというニュースを聞いて意気消沈気味のおおたにです。

 小さいときに父に連れられてハレー彗星を観測しに行って以来多少の興味をもってウォッチし続けているのですが、 久々のビッグニュースだっただけにちょっと残念です(歳がばれますねこれ)。 まだ一部の核か残骸が残ってるようですが、肉眼で見えるほどには増光しないようですし…。

さて、気を取り直して、先日行われた第19回Alfresco勉強会の発表内容について簡単に紹介したいと思います。

Online edit Office files with customized WebDAV

発表資料はこちら

まずは弊社戸谷からの発表で、MS Officeファイルをオンライン編集するためにカスタムWebDAVインタフェースを作成したという話しです。

Alfrescoは標準でvtiと呼ばれるSharePointエミュレーションモジュールがあり、このモジュールを通してMS Officeファイルをオンライン編集することができます。しかし、vtiはSharePointのコラボレーション機能もエミュレートするため、目的がオンライン編集だけだとするとtoo muchであり、実際にそれなりに負荷のかかるモジュールでもあります。そこで、オンライン編集に必要な最低限のメソッドだけを実装したWebDAVインタフェースを実装し、MS Officeでのオンライン編集を行う方法についての説明がありました。
ブラウザによってはWebDAVパス文字数に制約があり、パスに日本語などのMBCSが含まれているとエンコードされて文字数が膨れ上がって問題が発生することがあるため、パスを工夫する必要がある点など、WebDAVを利用したアプリケーションの設計/実装についての実践的な内容を知ることができました。簡単なデモも行われ、確かにオンライン編集が実現できていることが確認できました。

AlfrescoのTable Viewをカスタマイズする

発表資料はこちら

次は自分の発表で、Alfresco 4.2.dで新しく実装されたTable Viewのカスタマイズ方法についてお話ししました。

Alfresco Communityでは4.2.dにおいてUIまわりでいくつかの大きなアップデートがあり、Table View(コンテンツ一覧を表形式で表示するもの)もこのバージョンで追加されたものの1つです。カスタムモデルなどを追加している時、標準のTable View表示項目以外にカスタム項目も表示したいよ、というような場合にどのように新しいTable Viewを追加(もしくは既存のものの更新)を行うかを説明しました。
Alfresco 4.2.dの新機能の紹介から始め、カスタムモデルの追加方法とTable Viewのデフォルト定義の確認、カスタムTable Viewの追加とデモを行いました。GUI上で表示カラムを設定/管理することまではできないのですが、xmlレベルの記述追加だけで簡単にカスタムTable Viewを追加できることを、デモを交えて説明しました。


次回、第20回Alfresco勉強会は1月29日(水)を予定しています。Alfrescoについて発表をしたいよ、という方を含め、たくさんの方のご参加をお待ちしております。参加登録はこちらからお願いします。

Liferay 6.2の新機能と改良点

$
0
0

はじめに


こんにちは、かわべです。いつのまにか年末になっていて、時の流れの速さに驚きを隠せません。もっと時間が経ったとき、自分では2013年をどういう風に思い出すのかな、とちょっと考えてしまいました。緊張しながらブログを書いていたことを思い出すのかもしれないですね。

さて本日の記事は、ついにEnterprise EditionもリリースされたLiferay 6.2の新機能についてです。最近のポートレット紹介記事ではCE6.2を使っており、操作方法なども6.2に基づいて説明していたのですが、6.1までとの違いにも触れつつ改めてご紹介したいと思います。参考にしたのはこちらのリリースノートブログ記事です。


UIの刷新/UXの向上


6.2を試してみてまず気付くのは、やはりUIが大幅に変更されたことです。AlloyUI 2.0とBootstrapを使用して現代的なデザインに仕上がっています。上部のドックバーやコントロールパネルのUIも刷新され、直感的な操作が簡単になったと思います。UI/UXに関する変更点を機能別に見てみましょう。

モバイル利用の強化!

インストールするとデフォルトで設定されているClassicテーマはレスポンシブデザインに対応しています。さらに、Liferay6.2にはモバイル端末を想定したプレビュー機能が備わっているのです。サイドバーのディスプレイの画像ボタンをクリックすると、スマートフォンやタブレット端末の画面サイズでサイトがどのように表示されるか、PCのWEBブラウザから簡単に確認することができます。

縦にしたり、
横にしたり。


このプレビュー状態で操作もできます。ドロップダウンリストの形式も画面サイズに合わせてちゃんと変わっていますね。ディスプレイサイズは指定できるので、実際に利用される機器に合わせたプレビューをWEBブラウザからワンクリックで実現できます。

移動がわかりやすい!

これば右上部に表示されるドックバーの変更点です。
自分がメンバとなっているサイトへの移動と、


管理系画面への移動は別のドロップダウンリストとして表示されるようになりました。サイト管理画面とコントロールパネル(≒ポータル管理画面)も別項目として表示されています。


上のキャプチャはAdministratorとしてログインした場合のものなので全項目が見えていますが、権限を持たないユーザの場合は「システム管理」の移動ドロップダウン自体が表示されません。

小さな変化に思えるかもしれませんが、これで移動がとてもわかりやすくなったと思います。6.1系では連続して操作すると自分がどの管理画面にいるのか見失ってしまうことがあったのです・・・。でもこれでもう迷子になる心配はなさそうです。

ついでにここから移動できる管理画面も見ておきましょう。
  • サイト管理画面のUI

  • コントロールパネルのUI


また、ユーザ個人サイトの公開ページと非公開ページはそれぞれ「プロフィール」「マイダッシュボード」となり、ユーザ名から表示されるドロップダウンリストで移動するようになりました。


ページに追加するのが簡単!

サイドバーに「+」という追加ボタンが新しく登場し、ページにコンテンツを追加するときの手順がわかりやすくなりました。


以前にも「追加」というボタンはあったのですが、そこから追加できるのはアプリケーション(ポートレット)やページに限られていました。WEBコンテンツを追加したいときは「管理」から移動する必要があったのです。今回新しくなったこの「+」ボタンはページに対する追加機能を一手に引き受けるもので、コンテンツ、ドキュメント、ポートレット、ページ、全部ここから選択してページに追加(または新規作成してページに追加)することができます。

以上がUI/UXまわりの大きな変更点です。続けて他に変更・改良された部分を見ていきましょう。


カレンダ機能


カレンダ機能は6.1と比べて大幅に変わりました。
  • サイトが複数のカレンダを持てるようになった
  • サイトメンバごとに個人のカレンダを持てるようになった
  • リソース(会議室など)にカレンダを割り当てて管理する機能が追加された
そして、1つのカレンダポートレットで上記のような複数のカレンダを共有し、管理することができます。

カレンダポートレットをサイトページに追加し、カレンダと予定を追加してみたのが下の画面です。複数のカレンダがまとめて表示されていますね。


新規に予定を作成する際には各カレンダの予定を参照することができます。会議室や備品など、リソースの予約状況を確認しながらスケジュール作成ができるので、備品管理にも使えそうです。


機能の向上に伴ってUIも刷新されていますが、わかりやすく使い勝手もよくなったと思います。特に戸惑うことなく操作できるのではないでしょうか。


サイトの階層化


サイトに階層関係を持たせる事ができるようになりました。これによって、子サイトのメンバを親サイトのメンバだけに限定したり、親サイトのコンテンツを子サイトで表示したり、というようなサイトを跨いだユーザとコンテンツの管理が可能になりました。

サイトを新規追加するときに親サイトを選択するか、もしくは子サイトを作成したいサイトの管理画面から「子サイトを作成」すればOKです。


階層関係の深さに制限はなく、子サイトの下にさらに子サイトを作成することもできます。


ごみ箱の導入

 

 


削除したコンテンツをサイト管理画面の「ごみ箱」から復元できるようになりました。誤って重要なコンテンツを削除してしまった場合などは助かりますね。ごみ箱に入ったコンテンツは、指定した日数で自動的に削除されます。


ドキュメント&メディアポートレット


複数ドキュメントを追加する際、ローカル環境からドラッグ&ドロップで一気に追加できるようになりました。
 


また、フォルダを「購読」することで、フォルダに変更があった際にメールで通知を受け取ることができるようになりました。


おわりに


他にもエディタやステージング機能などに様々な改良がなされていますが、いったんここまでで区切ります。改良点についてもっと知りたい方は冒頭のリンクも参照してください。今回紹介した機能は簡単に体験していただけるのではないかと思いますので、以前のバージョンをご存知の方もそうでない方も、ぜひLiferay 6.2をお手元の環境で試してみてくださいね。私も引き続きLiferay 6.2を使用して、新しい気付きなどがあればこの場でご紹介したいと思います。

Alfresco Workdeskをインストールしてみよう

$
0
0
こんにちは。てらしたです。

もうすぐクリスマスですが、サンタさんは存在するという世界観を子どもに示すためにはサンタさんからのプレゼントとは別に親からのプレゼントを用意する必要がある、実際自分が子どもの頃はそうだったという話を今日メンバーから聞いて衝撃を受けています。たしかに、サンタさんからのプレゼント、おじいちゃん、おばあちゃんからのプレゼントがあるのに親からのプレゼントがないってのは不自然ですもんね。ん?でもそもそもサンタさんなんていないって言い切っちゃえばサンタさんからのプレゼントは必要ないのか。なかなか難しい問題ですが世の親御さんたちはみんなどうしているんでしょうか?

さて、今回から何回かに分けて、Alfresco Workdeskのインストール手順や使い方等を紹介していきたいと思います。Workdeskがどのようなアプリケーションなのかイメージを掴んでもらうためには実際にWorkdeskを触ってみるのが手っ取り早いと思うので、今回はその準備をしたいと思います。今回構築した環境を使って、次回Alfrescoが用意しているデモシナリオに沿ってWorkdeskの使い方をご紹介します。ちなみに、Workdeskとは?の説明については公式サイトを参照していただければと思います。

このブログでは基本的にCommunity Editionを使用していますが、Alfrescoのデモ環境に接続するために今回はEnterprise EditionのTrial版を使用します。まずはこちらからダウンロードして適当な場所にzipを展開しておきます。

次にTomcatをインストールし、webapps以下に展開したzipの中のbin/workdeskをコピーします(※)。
$ cp -a bin/workdesk <tomcat_dir>/webapps/
※今回は手元の環境のAlfrescoは使用しないため、Alfresco用のものとは別インスタンスのTomcatを用意してください。

実はWorkdeskのインストールはこれで完了です。Tomcatを起動して以下のURLにアクセスしてみましょう。

http://localhost:8080/workdesk

ログイン画面が開くはずなので、以下のユーザ名/パスワードを入力してログインします(なぜか結構時間がかかります)。

ユーザ名:csu
パスワード:abs


ログインできたら以下の画面が表示されます。現時点ではちょっと日本語がおかしいところがありますが・・・。


Workdeskではこの画面のタブの1つ1つや、検索画面の検索テンプレート(左ペインに並んでいるメニュー)の1つ1つに対して、ユーザのビジネスロールに応じて表示したり隠したりできるようになっています。そのあたりの機能は次回デモシナリオに沿って実際にWorkdeskを触っていく中でご紹介できればと思います。

ところで、このときWorkdeskがどこのリポジトリを見に行っているのか気になると思いますが、これはowbootstrap.xmlというファイルに設定されていて、デモ用の設定(opencmis_trial)では以下のリポジトリに接続するようになっています。

http://workdesk-trial2.alfresco.com:8080/alfresco

当然、このURLにアクセスして上記のユーザ名/パスワードを入力すればログインすることができます。次回Workdeskを触ってみるときに、Alfresco ExplorerあるいはAlfresco Shareから同じリポジトリを見た時にどのように見えるのか確認してみるのもおもしろいと思います。

Alfresco Workdeskを触ってみよう

$
0
0
こんにちは。てらしたです。

先日、最近話題(?)のふるさと納税をやってみました。正直なところ特産品目当ての不純な動機だったんですが、やってみて気付いたのは寄附金(納税という名前が付いていますが実際は寄附になるみたいです)の使い途を指定できるということが意外に満足感をもたらしてくれるってことですね。自分が納めた税金が何に使われているかわからないという状況に比べて、すごく抽象的な表現になってしまいますが人の役に立った感が増すというか。僕は今回3つの自治体に寄附したんですが、全て子どもの教育に関する分野を選びました。過去の活用実績を見ると図書館の児童書コーナーを増設したとか、児童館に木製おもちゃを購入したとかいうものがあり、自分が寄附したお金がそういう風に使われていくんだなと想像できるというのはなかなか気持ちのいいものでした。完全に自己満足ですが。

さて、今回は前回の続きで、実際にWorkdeskを触っていこうと思います。

前回はWorkdeskをインストールしてログインするところまで確認しました。デモシナリオやWorkdeskの使い方の簡単な説明は、「Alfresco Workdesk Scenario Guide」というファイルに載っています。このファイルはログイン後、「文書化」というタブを開いたところにあるのでダウンロードしておくとよいと思います。

今回はその「Alfresco Workdesk Scenario Guide」のシナリオ(p.13〜)に沿ってWorkdeskを触ってみたいと思います。このシナリオはクレーム処理のワークフローで、顧客からのクレームが文書化され、Alfrescoに格納されている状態から始まります。その後、以下のような流れでクレームが処理されていきます。
  1. Workflow Start
    Post Office部門のユーザがクレーム処理のワークフローを開始する。
  2. Claim Processing
    Customer Service部門のユーザが内容を確認して、Technical部門またはBusiness部門に対応を依頼する。
  3. Technical Clarification / Commercial Clarification
    Technical部門またはBusiness部門でクレームが処理される。
  4. Solution Review & Claim Completion
    対応内容をCustomer Service部門でレビューし、顧客が満足していればワークフローが完了する。
それでは、1から順にやってみましょう。

1. Workflow Start


まずはPost Office部門のユーザとしてログインします。

ユーザ名:pou
パスワード:abs

「郵便局」というタブを開きます(日本語訳がイマイチですね・・・。元の英語がPost Officeなので仕方ないかもしれませんが)。「CLAIM.pdf」というファイルにカーソルを合わせて右クリックでコンテキストメニューを表示し、「起動ワークフロー(フォーム使用)」を選びます(この訳も「ワークフロー起動」とか「ワークフローを起動する」の方がしっくりきますね)。ちなみにここでアイコンをクリックするとファイルの内容を確認することができます。


ワークフロー選択画面で「クレーム対応」を選択します。


コメントと優先度を入力し、「起動」ボタンを押します。


これでPost Office部門のユーザの役割は完了です。ただ、この後Customer Service部門のユーザでログインすることになるのですが、Post Office部門のユーザとは見えるメニューや使用できる検索テンプレート(検索タブを開いたときに左ペインに表示されるメニュー)が異なるので、Post Office部門のユーザにはどのように見えているのか覚えておいていただければと思います。

2. Claim Processing


一旦ログアウトし、Customer Service部門のユーザとしてログインします。

ユーザ名:csu
パスワード:abs

ログインすると、Post Office部門のユーザとは見えているメニューや検索テンプレートの数が違うことに気付くと思います。これもWorkdeskの売りの1つで、ビジネスロールに応じてUIを変えることができるようになっています。この機能をうまく使うことで、そのユーザにとって必要なものだけ見せて業務に集中できるようにするということが可能です。

さて、ワークフローを進めるために「ケース管理」というタブを開きます。


説明およびタスクタイプが「Claim Processing」になっている、先ほど開始したワークフローのアイテム(上のスクリーンショットでは上から5番目)を右クリックし、「フォームを使用したステップの実行」を選択します(またはをクリック)。



必要事項を記入して「決定事項」欄でTechnical部門かBusiness(Commercial)部門のどちらに送るか選択し、「完了」ボタンを押します。今回はCommercial部門にしてみます。

3. Technical Clarification / Commercial Clarification


一旦ログアウトし、Business部門のユーザとしてログインします。

ユーザ名:bdu(Technical部門の場合はtdu)
パスワード:abs

同様に「ケース管理」を開き、アイテムを右クリックして「フォームを使用したステップの実行」を選択します(またはをクリック)。


必要事項を記入し、「完了」ボタンを押します。「商業面の明確化」というページタイトルが気になりますが、気にしないことにします・・・。ちなみに元の英語では「Commercial Clarification」になっていました。

4. Solution Review & Claim Completion


最後に再度Customer Service部門のユーザとしてログインします。

ユーザ名:csu
パスワード:abs

「ケース管理」タブを開きます。


説明およびタスクタイプが「Solution Review」になっているアイテムを右クリックし、「フォームを使用したステップの実行」を選択します(またはをクリック)。



必要事項を記入して「完了」ボタンを押します。「決定事項」は「Customer satisfied - problem solved」を選択します。

最後に、「ケース管理」タブのアイテムの説明およびタスクタイプが「Claim Completion」になるので、同じようにワークフローのステップを実行し、ワークフローを完了します。


以上でデモシナリオは終わりです。

途中から単にワークフローを回しているだけってかんじになってしまっていますが、このシナリオで出てきた画面以外も触ってみたり、裏側のリポジトリがどうなっているのかAlfresco ExplorerやAlfresco Shareで見てみたり、いろいろ試してみていただければと思います。

次回は手元のAlfrescoにWorkdesk用のサンプルアプリケーションをインストールする方法をご紹介します。

CentOS6.4でcatalina.outのlogrotateに失敗した話(と育休取ってますよという話)

$
0
0
こんにちは。昨年末に第二子が産まれててんやわんやの大谷です。

3年前にも同じ状況になっていたはずですが(第一子のときです)、諸々を完全に忘れていてミルクの作り方からオムツのかえ方、沐浴の仕方など、ほぼ0から覚えなおす日々を送っております。
が、幸いなことに弊社は父親でも(本人さえ望めば)育休を取得できるため、1月から2-3か月ほど育休を取得させてもらっています。育児休業と言っても全休ではないので、ある程度在宅orオフィスで仕事をして、残りは嫁と共に子供の面倒を見るという形になります。まあチームメンバーにはそれなりに迷惑を掛けることになるのですが、そこはごめんなさいということで…。
というわけで、本年も引き続きどうぞよろしくお願いいたします。

さて、2014年最初のエントリですが、CentOS6.4でTomcatのcatalina.outをログローテーションしようとしてうまくいかなかった話をしようと思います。結論から言うと、anacronのcron.dailyで動いているlogrotateの動作をSELinuxが邪魔していたというとても基本的かつ残念なお話しになっています…。年初から冴えない!


catalina.outのログローテーション設定


TomcatのJavaプロセスの標準出力、標準エラー出力をcatalina.outにリダイレクトしており(cataliha.shに記述されているとおりです)、このログをlogrotateを使ってローテーションさせます。

以下、具体的なログローテーションの設定方法です。

1. logrotate用設定ファイルの作成

はい、シンプルです。日次でローテーションして60日分ログを保管します。catalina.outはjavaプロセスがずっと掴んでいるため、copytruncateオプションを使っています。

 # vi /etc/logrotate.d/tomcat
# logrotate file for Tomcat
/opt/liferay/tomcat/logs/catalina.out {
missingok
copytruncate
daily
dateext
rotate 60
}

2. 設定ファイルの権限変更

権限を0644にしときます。

 # chmod 0644 /etc/logrotate.d/tomcat


設定は以上です。続いて動作確認をしてみましょう。


logrotateの動作確認


動作確認には以下のように3つのレベルがあります。早速1つずつチェックしていきましょう。

1. logrotateの設定テスト


 # logrotate -d /etc/logrotate.d/tomcat

このコマンドでlogrotateの実行をテストすることができます。テストなので実際に処理は行われません。出力結果に"log needs rotating"とあれば正しく設定されています。

2. logrotate単体での動作確認


 # logrotate -f /etc/logrotate.d/tomcat

このコマンドで特定のログについてlogrotateを強制実行することができます。catalina.out-yyyymmddというファイルにcatalina.outの内容がコピーされ、catalina.outが0バイトになっていればローテーション成功です。
過去の日付の名前のファイル(もちろんtouch -dでタイムスタンプも古くしておく)を予め用意しておけば、ログ削除のテストもできます。

ちなみに、立て続けにlogrotate -fを実行しても、2回目以降はローテーション処理が行われません。理由は以下の2つです。
  • 前回ローテーションした日付が記録されている
    •  /var/lib/logrotate.statusに"/opt/liferay/tomcat/logs/catalina.out yyyy-mm-dd"のように記録されているので、再度実行する場合は編集して古い日付にしておきましょう
  • ローテーション先のファイル名が既に存在している
    • catalina.out-yyyymmddのような同名ファイルがあると処理をスキップするので、再度実行する場合はリネームしておきましょう

3. cron.dailyを通じた動作確認


 # anacron -f

CentOS6.4の標準インストールでは、logrotateは日次のcron.dailyの1処理として実行され、cron.dailyの実行はanacronによってコントロールされています。そこで、このコマンドでcron.daily実行の強制スケジューリングを行います。 
/var/log/cronに"Will run job `cron.daily' in xx min."と出力されるので、いつcron.dailyが実行されるかチェックしておきましょう。もちろん前述のlogrotate.status編集&ログリネームはやっておいてください。

その時間あたりに /var/log/cronをtailしていればlogrotateが実行されたことが分かるので、完了したらcatalina.outを確認してみましょう。先ほどと同様、ファイル catalina.out-yyyymmddが生成されていればOKです。


実際に運用してみると…


さて、全ての動作確認をクリアしたので実際に運用してみよう。というわけで次の日にlogsフォルダを見てみると…はい、ありませんでした。ローテーションしたはずの catalina.out-yyyymmddが無い!anacron -fのテストも通ったのに、何故か無い…

というわけで色々調べていったら確かにありましたよ原因。原因は、一番最初に話した通り、SELinuxでした。/var/lib/audit/audit.logを見ると、以下のようなログが出てました。

type=AVC msg=audit(1387149242.691:29032): avc:  denied  { write } for  pid=3826 comm="logrotate" name="catalina.out" dev=dm-0 ino=87986 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file

はい。見事にlogrotateのcatalina.outへの書き込みが拒否されてます。こんなところに影響あるのかSELinux!

というわけで、SELinuxを無効化します。反映させるにはサーバ再起動が必要です(一時的に無効にするにはsetenforce 0でもOK)。

 # vi /etc/sysconfig/selinux
SELINUX=disabled

これで一晩待てば、無事ローテーションしてるはず、というわけで、手元の環境では無事ローテーションが確認できました。


まとめ!


問答無用でSELinuxはOFF!とは言いませんが、必要に応じてONにしましょうというあまりにも基本的なまとめになってしまいましたが、同じ問題で悩んでいる人の参考になれば幸いです(いるのか!)。

Alfresco Workdesk サンプルアプリケーションのインストール

$
0
0
こんにちは。てらしたです。

今日は初めて保育参観というものに参加してきました。写真とかビデオを撮っていいものとは知らずカメラを持っていかなかったんですが、父親と母親、母親とおばあちゃんみたいなかんじで2人体制で来て、片方が子どもの相手をし(保護者参加型だったので)、手が空いている方が撮影するというフォーメーションを組んでいる親御さん達がいて、そういうやり方があるのかと勉強になりました。次回に活かしたいと思います。それはともかく保育参観自体は保育園での様子や子どもの個性の違いが見れて楽しかったです。仕事の都合がつけばなるべく参加していきたいですね。

さて、ここから本題ですが今回はWorkdeskシリーズ第3弾です。「Workdeskを触ってみよう」の回ではAlfresco社が用意したリポジトリに接続してWorkdeskを体験してみましたが、今回は手元のAlfrescoにWorkdeskに同梱されているサンプルアプリケーション(Human Resource Application)をインストールしてみます。以下の手順では環境はCentOSを想定していますが、ファイルをコピーしたりLinux用に用意されたスクリプトを実行したりしているだけなのでWindowsの方にも参考になると思います(もちろんWindows用のスクリプトもあります)。

まず準備としてこのあたりを参考にAlfrescoをインストールしておいてください。Community Edition(以下、CE)でもEnterprise Edition(以下、EE)のTrial版でもどちらでも結構です。

WorkdeskについてはCEでもEEでも今回の手順はほとんど変わらないのですが、次回ご紹介する内容がEEにしかない機能なのでEEのTrial版を使用してもらった方がよいと思います。もちろん、CEとEE両方の環境を作ってもらっても全く問題ありませんし、両者を比較してみるのもよいかもしれません。以下の手順ではEEのTrial版を使います。

Workdeskのzipをダウンロードしたら、適当な場所に展開しておきます。次にAlfresco用のものとは別にTomcatをインストールし(Alfresco用のTomcatインスタンスとポートが競合しないようにserver.xmlを編集しておいてください)、webapps以下に展開したWorkdeskのzipの中の「bin/workdesk」をコピーします。
$ cp -a bin/workdesk <tomcat_dir>/webapps/
次にAlfresco社が用意したTrial用のリポジトリではなく、この後インストールするサンプルアプリケーションを使うようにWorkdeskの設定を変更します。Workdeskのweb.xmlを編集し、「opencmis_trial」を使用するように設定されているパラメータを以下のように「opencmis_hr」を使用するように変更します。
$ vi <tomcat_dir>/webapps/workdesk/WEB-INF/web.xml
<!-- Configuration OpenCMIS: Apache Chemistry OpenCMIS (opencmis.OwCMISNetwork) implementation
+ Sample Application - Human Resources Application -->
<param-value>deploy#WEB-INF/conf/opencmis_hr</param-value>

<!-- Configuration OpenCMIS: Alfresco Workdesk Trial -->
<!-- <param-value>deploy#WEB-INF/conf/opencmis_trial</param-value> -->
次に、「opencmis_hr」の設定を変更します。owbootstrap.xmlを編集し、Authentication modeを「NONE」から「ALFRESCO」に、DataSourceをMySQLに設定します(他のDBを使う場合はその設定を有効化してください)。
$ vi <tomcat_dir>/webapps/workdesk/WEB-INF/conf/opencmis_hr/owbootstrap.xml
<!-- <Authentication mode="NONE”/> -->

<!-- ALFRESCO -->
<Authentication mode="ALFRESCO">
<BaseURL>http://localhost:8080/alfresco</BaseURL>
</Authentication>
<!-- DefaultDataSource>
<JNDIName>java:/HSQLDB</JNDIName>
</DefaultDataSource -->

<!-- DefaultDataSource>
<JNDIName>java:/OracleDS</JNDIName>
</DefaultDataSource -->

<!-- DefaultDataSource>
<JNDIName>java:/MSSQLDS</JNDIName>
</DefaultDataSource -->

<!-- DefaultDataSource>
<JNDIName>java:/DB2DS</JNDIName>
</DefaultDataSource -->            

<DefaultDataSource>
<JNDIName>java:/MySQLDS</JNDIName>
</DefaultDataSource>

<!-- DefaultDataSource>
<JNDIName>java:/PostgreSQLDS</JNDIName>
</DefaultDataSource> -->
次にWorkdeskが使用するDBとテーブルを作成します。ここではMySQL用のスクリプトを使用していますが、他のDBを使っている場合はそのDB用のスクリプトを使ってください。
$ mysql -u root -p < db/scripts/create_mysql_databases/Create_MySQL_Database.sql
$ mysql -u root -p < db/scripts/OwMySQL_CreateAttributeBagTable.sql
$ mysql -u root -p < db/scripts/OwMySQL_CreateDBHistoryManagerTable.sql
$ mysql -u root -p < db/scripts/OwMySQL_CreateDBRoleManagerTable.sql
ここで、HistoryManagerTableとRoleManagerTableはEEにしかない機能で使用するものであるため、CEにはこれらのテーブルを作成するスクリプトは含まれていません。

次にWorkdeskが今作成したDBに接続するための設定を行います。展開したWorkdeskのの「db/tomcat/META-INF/context.xml」をTomcatにコピーし、編集します。
$ cp db/tomcat/META-INF/context.xml <tomcat_home>/webapps/workdesk/META-INF/
$ vi <tomcat_dir>/webapps/workdesk/META-INF/context.xml
使用するDBの部分のコメントアウトを外して有効化し、ユーザ名、パスワード、ホスト名、DB名を補完します。
<Resource name="java:/MySQLDS"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
username=“owdemo"
password=“owdemo"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/owd?autoReconnect=true"
maxWait="1000"
removeAbandoned="true"
maxActive="30"
maxIdle="10"
removeAbandonedTimeout="60"
logAbandoned="true"
validationQuery="select 1"/>
最後に、サンプルアプリケーションをインストールするスクリプトを実行します。まず展開したWorkdeskの「bin/Sample Application/Human Resources Application」ディレクトリ以下を「/opt/workdesk/sample_application」にコピーします(コピー先はどこでもよいですが、パスにスペースや日本語を含まないように気を付けてください)。
$ cp -a bin/Sample\ Application/Human\ Resources\ Application/* /opt/workdesk/sample_application/
次に、シェルスクリプトの引数の数が10個以上ある関係でCentOSではうまくいかないのでスクリプトを以下のように書き換えます。
$ vi /opt/workdesk/sample_application/bin/oa.sh
#!/bin/sh

OA_JAR=$(dirname $0)/oa.jar

# 変更前
# echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15
# 変更後
echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14} ${15}

# 変更前
# java -jar $OA_JAR  $1 $2 $3  $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17
# 変更後
java -jar $OA_JAR  $1 $2 $3  $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14} ${15} ${16} ${17}
スクリプトを書き換えたら以下のように引数を与えて実行します。
$ /opt/workdesk/sample_application/install-workdesk-hr.sh -ap <Alfrescoのインストールディレクトリ> -u <Alfrescoの管理者ユーザのID> -p <Alfrescoの管理者ユーザのパスワード>
【例】
$ /opt/workdesk/sample_application/install-workdesk-hr.sh -ap /opt/alfresco -u admin -p admin
インストールに成功したらWorkdeskを起動します。Alfrescoはサンプルアプリケーションをインストールする過程で起動しているはずですが、もし起動していないようであれば起動しておいてください。
$ <tomcat_dir>/bin/startup.sh
正常に起動したらブラウザから以下のURLにアクセスしてみます(手元の環境ではTomcatのポートをAlfrescoと競合しないよう8180に変えてあります)。

http://localhost:8180/workdesk

ログイン画面が表示されたらAlfrescoの管理者ユーザのユーザ名とパスワードでログインします。以下のように人事関連のドキュメントを検索する検索テンプレートがいくつか表示されていればサンプルアプリケーションのインストールは成功です。


試しに「関係書類の検索」を選んで何も入力せずに「検索」ボタンを押してみましょう。先ほどのインストール時に手元のAlfrescoに投入された人事関連の文書がヒットすると思います。


検索結果から適当な社員を選んでアイコンをクリックすると、その社員に関連する書類を閲覧することができます。


以上でサンプルアプリケーションのインストールは終了ですが、ついでに1つWorkdeskの機能をご紹介したいと思います。このフォルダをAlfresco Shareから見ると、上のように「雇用条件」や「報酬」のようにフォルダは切られておらず、すべてのファイルが1階層で入っていることがわかります。


このように、参照しているリポジトリの物理的なフォルダ階層に依らず、Workdeskでは仮想的なフォルダ階層を定義してコンテンツを表示することができます。このような仮想的なフォルダの作り方についても今度ご紹介できればと思います。

LiferayでWebDAVを使おう!

$
0
0
こんにちは。2日連続で自転車トラブルのおおたにです。昨日はタイヤチューブが破裂し、本日はスタンドの金属が破断しました。2日連続で自転車屋に修理を依頼したのでさすがの店員さんもびっくりしていました(自分はそれ以上にスタンドが破断したこと自体に驚いていますが…)。

さて、今回はLiferayにWebDAVアクセスしてみようということで、その利用方法やありがちな失敗/TIPSなどを紹介させていただきます。


WebDAVとは?LiferayのWebDAVアクセス機能とは?


WebDAVとは、ファイル管理のためにHTTPを拡張した仕様のことです。HTTPを利用してWebサービス上のファイルを管理することができます。LiferayもこのWebDAVのインターフェースを実装しており、Liferayの「ドキュメントとメディア(Documents and Media) 」ポートレットが管理するファイルにアクセスすることができます。

WebDAVインターフェースを利用するメリットは、よりシンプルなクライアントを利用してLiferayにアクセスできるという点にあります。例えば、Windowsクライアントを利用しているユーザであれば、ネットワークドライブにマップすることで、Windowsのエクスプローラから通常のファイルと同様にLiferayが管理するファイルを操作することができます。ファイルの読み書きだけを行うライトユーザはエクスプローラを利用し、その他のLiferayに関わる作業を行うヘビーユーザはブラウザを利用する、などの使い分けが考えられます。


LiferayにWebDAVアクセスしてみよう



では、早速LiferayにWebDAVアクセスしてみましょう。以下では、WindowsクライアントでLiferayのWebDAVインターフェースをネットワークドライブに割り当てる方法を説明します。

1. LiferayのDocuments and Mediaポートレットで、WebDAVアクセスのURLを確認する。Documents and Mediaポートレットのフォルダやファイルのコンテキストメニューにある「デスクトップからのアクセス」をクリックし、表示されたURLをコピーします。ルートフォルダにアクセスしたい場合は、ルート直下のフォルダのURLから、そのフォルダ名のパスを消したURLを用います(例えばhttp://localhost:8080/api/secure/webdav/guest/document_library など)



2. Windowsエクスプローラで「ネットワークドライブの割り当て」をクリックします。


3. ドライブを適宜選択し、フォルダーに1.でコピーしたURLを貼り付けます。「別の資格情報を使用して接続する」にチェックを入れて「完了」をクリックし、認証ダイアログにLiferayのログイン情報を入力します(以下の例ではローカルPCにLiferayをインストールしてるのでlocalhost:8080になってます)。


4. 以下のように割り当てが正常終了し、Liferay上のファイルがエクスプローラに表示されればOKです。



うまくWebDAVアクセスできない場合


いくつかの原因が考えられます。以下に、ありがちな原因をLiferayの内外に問わずいくつか挙げてみました。

Windows XP, Windows Vista等でうまくWebDAVアクセスできない


Windows7以降にアップグレードしてください、では元も子もないですが…。Windows XP, Windows Vista, Windows Server 2003ではKB907306のパッチをあてることでWebDAVアクセスできるようになる可能性があります。

非SSL環境下のLiferayにWindowsからWebDAVアクセスできない


デフォルト設定のWindowsではHTTPでWebDAVアクセスできません。なので、SSL化するか(HTTPSでアクセスできるようにする)、Windowsクライアントのレジストリを変更する必要があります。レジストリの変更手順は以下のとおりです。

1. スタートメニューの「コマンド名を指定して実行」から「regedit」を実行する。
2.  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\WebClient\Parametersを開く。
3. BasicAuthLevelを2に変更する(デフォルトは1)。

各種ブラウザやネットワークドライブなど、全てのWebDAVクライアントからアクセスできない(バージョン6.2より古いLiferayを利用している場合)


LiferayのバグLPS-39324に起因している可能性があります。Liferay6.2以降にアップグレードするか、JAVAの起動オプションで指定するパラメータを変更する必要があります。

JAVAの起動オプション(Tomcatバンドル版だと<TOMCAT_DIR>/bin/setenv.shもしくはsetenv.batのJAVA_OPTS)で-Duser.timezoneがGMT以外に指定されている場合はGMTに変更してLiferayを再起動します。


まとめ


今回は主にWindowsクライアントを使っての説明になりましたが、もちろんMac OS XのFinderやLinuxでも同様の使い方ができます。WebDAV昨日はLiferayインストール直後から有効になっていますので、是非試してみてください。

Liferay 動的データリストディスプレイポートレットの紹介

$
0
0
こんにちは、かわべです。
以前このブログで「この冬は風邪を引かずに過ごせるかも」というような事を書きましたが、今のところ順調に過ごしています。とはいえ、昨年は3月にインフルエンザになったので、まだまだ油断はしません!あと、日によっては早くも花粉症の症状が出ているような気がして大変恐ろしいです。早めに対策して心穏やかに過ごしたいところです。

さて、今日もLiferayのポートレットから1つ紹介したいと思います。今回取り上げるのは、「動的データリスト(Dynamic Data List)ディスプレイポートレット」です。

動的データリストディスプレイポートレットについて

動的データリストとは、Liferayポータル上に設置し、権限を与えられたユーザがリアルタイムにレコードを追加・編集・削除することができるリストです。コーディングやHTMLの知識がなくても、GUIで自由に項目を定義したリストを作成できます。作成したリストは、今回紹介する動的データリストディスプレイポートレットを利用し、好きな位置に配置することができます。

この記事では例として、とある開発チームのサイトページにレビュー指摘用の動的データリストを作成してみます。設計書などのドキュメントレビューを実施した際、参加メンバが自由に指摘事項をレコードとして追加し、対応が完了したら更新できるリストにしてみたいと思います。先に載せてしまいますが、完成イメージはこちらです。


この動的データリストを作成するため、以下の手順で進めていきます。
  1. データ定義の作成
  2. 動的データリストの作成
  3. 動的データリストの表示
  4. 動的データリストへのレコード追加
当記事ではLiferay6.2 CE GA1を使用し、特に記述がない場合は管理者として作業しています。EE版でも同様に動作するはずですし、6.1系でも基本は同様です。

1.データ定義の作成

最初に必要となるのは、どのような項目を持つ動的データリストを作成するかに基づき、データ定義を作成することです。データ定義は動的データリストの雛形のようなものです。
動的データリスト管理画面には、上部ドックバーの「サイト管理→システム管理→コンテンツ→動的データリスト」から移動できます。そこで「データ定義の管理」をクリックし、データ定義の管理画面を表示させます。


Liferayをインストールした際のデフォルトサイトにはサンプルとして利用できるデータ定義が存在するのですが、新規作成したサイトにはデータ定義がありません。「追加」からデータ定義を新規作成していきます。


※ちなみに、デフォルトサイトでは以下のようなデータ定義が利用可能となっていますので、中を覗くと参考になると思います。


データ定義では必要な項目をドラッグして追加し、設定を変更して作成していきます。項目は名称とアイコンを見ればどのような属性かわかると思います。まず項目だけを準備した図が以下です。


右側に追加した項目をクリックすると設定のタブへと切り替わります。ラベルの名称などに加え、こんな設定も可能です。
  • 規定値 ー 表示させるデフォルトの値
  • チップ ー 入力時にヒントとしてポップアップさせる文言
  • インデックス可能 ー 検索対象としてインデックスする
  • 繰り返し可能 ー レコード追加時に複数追加可能となる
今回はレビュー指摘に使用するリストなので、指摘者、対応内容、優先度、対応予定日などを設定できるようなデータ定義としました。


「レビュー指摘」という名称で保存して、データ定義は完了です。

2.動的データリストの作成

では、作成したデータ定義を利用し、実際にサイトメンバが利用する動的データリストを作成してみましょう。

引き続き動的データリスト管理画面から作成します。
「追加」をクリックすると、新規リストの追加画面が表示されるので、 データ定義に「レビュー指摘」を選択し、他の項目を下のように埋めていきます。


サイトメンバに各々レコード追加・更新を許可するため、このような権限にしておきます。今回は使用しませんが、レコードの追加にワークフローを関連づけることもできます。

保存をクリックして、「移行計画書レビュー指摘」という動的データリストを作成します。

3.動的データリストの表示

やっと動的データリストディスプレイポートレットの出番です。
まずはリストを表示させるページに「動的データリストディスプレイ」ポートレットを追加します。「+」→「アプリケーション」→「コラボレーション」のカテゴリに存在します。


ポートレット上の「リストの選択」から、いま作成した「移行計画書レビュー指摘」を選択、保存すると、以下の画面になります。


これで動的データリストディスプレイポートレットは準備完了です。設定についての説明は後に回して、まずはレコードを追加し、リストが更新されることを確かめてみましょう。

4.動的データリストへのレコード追加

まずは管理者のままレコードを追加してみます。
「レビュー指摘の追加」をクリックすると、新規レコード登録フォームへと遷移します。何の設定もしていないので、データ定義どおりに項目が表示されます。


必要な情報を入力して保存すると、リストにレコードが1件追加されました。

 
表示方法に関しても、今は設定をしていないので、定義した項目がすべて表示されます。

今度は、ただのサイトメンバであるUser1としてログインし、指摘に対応したという形式でこのレコードを更新してみます。


このように対応内容を更新できました(内容については完全なフィクションとしてお届けしています)。また、左上にレコード追加ボタンが表示されていることから、User1もレコード追加が可能であることがわかりますね。

というわけで、これで「メンバが各自でレコードを追加し、随時更新できるリスト」が作成できました!
動的データリストは1つのデータ定義から複数作成できるので、今後もレビューをする度に同じ項目を持つ指摘リストが作成できます。

動的データリストディスプレイポートレットの設定

先ほどは設定を何も変えずに使用しましたが、動的データリストディスプレイポートレットで可能な設定を見てみましょう。なお、デフォルトの日本語訳では伝わりにくいところがあるので、一部表示をアメリカ英語にした画面で説明します。(※日本語も含む各言語の翻訳はプロパティファイルで上書き可能です)

設定画面(ポートレット右上の「オプション」→「設定」)から、テンプレートの設定を行うことができます。

テンプレートの設定

"Display Template"ではポートレットでのリスト表示テンプレート、"Form Template"ではレコード追加時のフォームテンプレートを設定できます。
前述したように、デフォルトではいずれの場合もデータ定義のすべての項目がそのまま表示されます。表示させたくない項目がある場合や、ラベルを変更したい場合などにテンプレートを設定することができます。
この2つのテンプレートはデータ定義に紐付けて作成・管理します。テンプレートを作成できる権限がある場合、ポートレット下部に"Add Form Template""Add Display Template"が表示されるので、そこからテンプレートの作成ができます。


Display TemplateはFreeMarkerまたはVelocityを使用して表示画面を作成します。6.2から補完機能のある高機能エディタになりました。


とはいえ、Display Templateを使用して意図通りの画面を作成するにはコーディング知識が必要となってきます。

Form Templateはデータ定義と似たGUIで操作します。セパレータの追加、項目削除などが可能です。


その他の設定項目

Editableは編集可能とするかどうか選択します。チェックを外すと、編集権限を持つユーザでもリストは閲覧のみ可能となります。

Spreadsheet Viewをチェックすると、スプレッドシート形式でリストを表示します。スプレッドシート形式では、特定の列の項目をキーとした並び替えができます。


この状態でも権限があればレコードの追加や編集は可能ですが、追加後にうまく保存されない場合や表示が崩れる場合があるようなので、Spreadsheet Viewを使用する場合にはEditableのチェックを外しておいた方がいいかと思います。

CSVデータのエクスポート

ポートレットからではなく管理画面からの操作ですが、集計したデータをCSV形式でエクスポートする事ができます。「システム管理→サイト管理→コンテンツ→動的データリスト」へ移動し、エクスポートしたい動的データリストの「操作→エクスポート」を実行すると、CSV形式のデータをダウンロードすることができます。(※出力形式としてXMLを選択することもできますが、どうもうまく行かないようです…)


まとめ

動的データリストは、レコード追加、更新、参照などの権限と、表示テンプレートを適切に設定することで、幅広い利用方法が考えられます。たとえばイベントやセミナーへの参加者管理や、共有タスクリストなどに使えるでしょう。
まずはぜひデフォルトサイトに存在するデータ定義を利用して、お手元の環境で試してみてください。

第20回Alfresco勉強会が開催されました

$
0
0
こんにちは。てらしたです。

先日の角川書店のKindle本セールで大量に衝動買いしてしまい、通勤時間にひたすら読み耽っています。iPhoneとiPadのKindleアプリで読んでいるんですが、やっぱりKindle Paperwhiteの方が目が疲れにくいとかあるんですかね?両方使っている人に感想を聞いてみたいところです。

さて、今回の勉強会ですがいつも通り2つ発表があったので、簡単にご紹介します。

Alfresco Add-onsの紹介

発表資料はこちら

1つ目は弊社戸谷の発表で、サードパーティが開発したAlfresco拡張モジュールを公開している「Alfresco Add-ons」というサイトの紹介でした。AMP(Alfresco Module Package)ファイルを使用してAlfrescoを拡張する方法について簡単に説明した後、具体的に以下の3つのadd-onについてデモを交えながら紹介してくれました。

  • LibreOffice online edit module
  • Event Scheduling Share Dashlet
  • Multiple RSS Feed Dashlet

各add-onの詳しい内容は発表資料を見ていただければと思いますが、インストール時にハマりやすいポイントの説明もあり、実際に使ってみようという場合に役に立ちそうな内容でした。上記のadd-on以外にも、こういう機能があったらいいな、という要望があればadd-onsのサイトで探してみると要件に合ったものが見つかったり、開発する際の参考になるものが見つかったりすることもあると思うので、ぜひ活用していただければと思います。

Alfresco Workdeskのご紹介

発表資料はこちら

2つ目は私の発表で、Alfresco WorkdeskというAlfrescoの3つ目のWebクライアント(1つ目はAlfresco Explorer、2つ目はAlfresco Share)をご紹介しました。WorkdeskはもともとはWeWebUという会社で開発されていたものですが、WeWebUをAlfresco社が買収してAlfresco Workdeskとして2013年6月にリリースされました。

コンテンツの一覧を表形式で表示して表の中で属性値を編集できたり、用途に合わせて検索テンプレートを切り替えられたり、ユーザのビジネスロールに合わせて表示するメニューを切り替えたり、といったことができるのが特徴です。これらはShareで実現しようとするとけっこう重い開発が必要になるのですが、Workdeskを使えば簡単に実現できるようになりました。逆にShareではできるけどWorkdeskではできないこともあるので、用途に合わせて採用するWebクライアントを選択するとよいと思います。

さて、次回の勉強会は3月26日(水)に開催予定です。たくさんの方のご参加をお待ちしております。参加申し込みはこちらからお願いします。

Liferay お知らせポートレットの紹介

$
0
0
こんにちは、かわべです。
関東は2週連続で週末に大雪が降りました。都心でもまだ多少雪が残っている状況ですが、今週も週半ばに雪の予報が出ているそうですね…。大きな被害や影響が出ないことを祈りつつ、可能な範囲での備えはしなきゃいけないなと思っています。まずは帰宅したらブーツに防水スプレーを目一杯噴射します。

さて、ひっそりと続いているLiferayポートレット紹介シリーズです。今回はお知らせポートレット(Announcements Portlet)をご紹介します。

お知らせポートレットとは?


お知らせポートレットとは、ポータル利用者に対するお知らせや告知などを表示/管理するためのポートレットです。



お知らせポートレットのデータインスタンスは1つだけ存在しており、どのサイトページや個人ページにポートレットを配置しても参照するお知らせポートレットは同じです。お知らせには1件ごとに「全体」「サイト」「ユーザグループ」などの配布範囲(distribution scope)を設定します。参照するインスタンスは同じものでも、ポートレットを参照するユーザの所属サイトや割当ロールに該当する配布領域のお知らせのみが表示されるという仕組みになっています。

今回は立場の異なる複数のユーザを作成し、それぞれのユーザに当てはまるお知らせだけが表示されることを確認してみたいと思います。また、お知らせを追加するためのロールとその権限を持ったユーザも作成し、お知らせの追加はそのユーザに任せることにします。記事の作成にあたって使用しているLiferayはCE 6.2です。

サイト、ユーザ、ロールの準備


まずは準備作業です。この部分は管理者として実行していきます。

サイト

    • Sample Portal
      名称を変えてしまっていますが、Liferayをインストールした際のデフォルトサイトです。このサイトのトップページにお知らせポートレットを追加しておきます。
      お知らせポートレットは「ニュース」カテゴリに存在します。


       

        • Another Site
          このサイトは新規作成しておきます。

          ユーザ

          以下のように作成します。
          • Owner
          Sample PortalのSite Member, Another SiteのSite Owner
          • Member1
          Sample PortalとAnother SiteのSite Member
          • Member2
          Sample PortalのSite Member
          • Announcer
          Sample PortalとAnother SiteのSite Member
          このユーザには次に説明するAnnouncementロールを割り当てます。

          ロール

          Announcementという標準ロールを作成します。
          ロールは「コントロールパネル→ユーザー→ロール」から新規追加することができます。このロールに配属されたユーザに、各配布範囲でお知らせを新規追加することを許可します。また、配布領域として最も広い「ポータル共通」のお知らせも追加できるようにしたいと思います。「権限の定義」から以下のように定義しました。


          ポータル共通のお知らせを許可する権限は「通常のアナウンスを追加する」です(ちょっとわかりにくい日本語ですが、"Add General Announcements"です)。
          前述したように、このAnnouncementロールはAnnouncerへと割り当てておきます。



          準備はこれで完了です。

          お知らせの追加


          Announcerとしてログインしてお知らせを追加してみましょう。権限があるのでお知らせポートレットに「お知らせの管理」というタブが表示されているはずです。最初に配布範囲を選択してからエントリを追加/管理します。




          お知らせエントリには配布範囲の他に、以下のような設定項目があります。

          ・種類
          お知らせの種類を設定します。デフォルトでは、General, News, Testが用意されています。お知らせのメール通知設定(後述)に関連します。

          ・重要度
          「重要」にした場合、通常のお知らせより上部に表示されます。

          ・公開開始日時、公開終了日時
          お知らせの表示期間を指定します。


          今回は以下の3パターンの配布範囲でお知らせを追加してみます。

          1.共通
          共通(General)のお知らせは、準備で作成した全ユーザとゲストが見れる想定です。

          2.Another Site
          Another Siteのお知らせは、Member2を除き、OwnerとMember1が見れる想定です。

          3.Site Owner
          Site Ownerのお知らせは、Ownerだけが見れる想定です。
          このお知らせだけ「重要」に設定してみます(タイトルに入れているだけでなく、ちゃんと設定していますよ!)。

          お知らせの見え方


          それでは各ユーザにはどのようにお知らせが表示されるか確認していきます。
          まずはログアウトし、ゲスト状態ではどのように見えるかというと、


          共通のお知らせのみが表示されています。

          Member1としてログインしてみると、以下のように見えます。


          Member2としてログインすると以下です。


          Ownerとしてログインすると以下です。


          「重要」に設定したお知らせが一番上に表示されています。フォントも若干変わっている…はずですが、ほぼ気付かないレベルですね。。

          ログイン状態である場合、ユーザは「既読とする」をクリックすることでお知らせを非表示にし、下に移動させることができます。


          それぞれ想定通りのユーザのみがお知らせを読む事ができました。以上がお知らせポートレットの基本的な使い方です。

          警告ポートレット


          ここでもう1つ別のポートレットの紹介です。お知らせポートレットとほぼ同じ挙動をするポートレットに警告ポートレットというものがあります。お知らせポートレットの違いとしては、警告ポートレットでは各エントリが目立つ赤枠で囲まれます。



          例えば、より重要度の高いお知らせや注意喚起にはこのポートレットを別途使用するような運用が考えられます。ただしお知らせと警告は別ポートレットですので、お知らせポートレットに追加したお知らせを警告ポートレットに表示させるような使い方はできません。

          お知らせのメール通知


          お知らせや警告が追加された際にメール等で通知を受けるかどうか、各ユーザが選択することができます。
          設定はドックバーの「自分のアカウント→お知らせ」から行います。お知らせの種類によって通知方法を分けることが可能です。



          では、さっそくLiferayをメールサーバと連携して確かめてみます。
          メールサーバの設定は管理者としてログインした後、「コントロールパネル→編集→サーバ管理→メール」から行います。


          ローカル環境でメールサーバが起動している場合は特に変更は不要かもしれませんが、外部サーバを利用する場合やポート番号が異なる場合は変更しておきましょう。

          さて、メールサーバを適切に設定したところで、以下のお知らせを追加します。


          すると、お知らせの配布領域に当てはまり、設定を行っているユーザに対しては以下のようにメールが送信されました。


          通知メールに関連する設定(送信者名やメールテンプレートなど)はportal.propertiesに記載されていますので、変更したいものは上書きすることが可能です。

          なお、CE 6.2.0 GA1ならびにEE 6.2.0 GA1ではメール通知機能がうまく動かないという問題があったようです。すでに修正はされていますので、次のバージョンでは使えるようになると思います。

          まとめ


          お知らせポートレットは置かれる場所ではなく参照するユーザによって表示されるお知らせが決まるというのが多少使いにくいところではあるかもしれません。単発のお知らせを表示させたいような場合にはWebコンテンツ表示ポートレットを使ったりするのもよいでしょう。しかしお知らせを1箇所で管理するのには便利な機能が備わっていると思いますので、ぜひ使い勝手を試してみてくださいね。

          Integrating ECM and Business Intelligence

          $
          0
          0
          Tonight will be the third Pentaho Community Meeting in Tokyo.
          Pentaho is an Open Source suite for Business Intelligence.

          I will present ways to integrate Pentaho with various ECM servers/tools, using the CMIS protocol.
          In particular, I will talk about Francesco Corti's CMIS Input plugin for Pentaho

          Your ECM repository contains a lot of your company's information, so having a way to perform analytics on this content can be very useful. I will introduce a real-world example.

           

          From 19:30 to 21:30 in Marunouchi, Tokyo, Japan (details).
          I will present in Japanese.

          インストーラでインストールしたAlfresco 4.2が起動しない

          $
          0
          0
          こんにちは、大谷です。先日の大雪で庭木がぽっきりいっちゃいましたが、なんとか無事にやっております。

          今回は、WindowsにインストーラでインストールしたAlfresco4.2が起動しないことがあったので、その原因と解決方法を紹介します。なお、本エントリでは4.2.eを使っています(というか4.2.eのインストール時にひっかかった…)。

          症状


          Windowsの端末にインストーラを使ってAlfrescoをインストール(インストールの方法はこちらです)。インストールは成功し、さてAlfrescoを起動してアクセスしてみよう!と思ったら、うまくアクセスできないというかAlfrescoが起動に失敗してるっぽい…

          一応Alfrescoインストールディレクトリに出力されてるログを見てみると、そもそもsolr.logしか出力されてなくて、しかもこんなエラーが出てますよ先生
          12:10:11,802 ERROR [org.apache.solr.servlet.SolrDispatchFilter] Could not start SOLR. Check solr/home property
          java.lang.UnsupportedClassVersionError: org/alfresco/solr/AlfrescoCoreAdminHandler : Unsupported major.minor version 51.0

          Unsupported major.minor version 51.0といえば、JRE1.6をサポートしてないよ!ってエラーですね。Alfrescoは4.2からJRE1.7が必須となっているのですが、AlfrescoをインストールするときにJavaも選んでわざわざ一緒にインストールしたのに何でこれ起きるの!?

          解決方法


          何がともあれ、Windowsサービスの登録内容を確認してみます。
          > cd <alfresco_dir>\tomcat\bin
          > tomcat7w.exe //ES//alfrescoTomcat

          Javaタブを見てみると、分かりましたよ原因。「Java Virtual Machine」が、Alfrescoと共にインストールされたJREを指してない!多分環境変数JAVA_HOMEかJRE_HOMEあたりを参照して設定してしまってるんですねこれ(筆者はそこで1.6を設定しております)。
          というわけで、<alfresco_dir>\java\jre\bin\server\jvm.dllに設定変更してサービスを再起動すると無事動くようになりましたとさ。

          ECM & Business Intelligence: Integration example with Alfresco, Pentaho, CmisSync

          $
          0
          0
          Is your company using a server to store all of the company's documents (contracts, manuals, etc)?
          If yes, this document server contains a large part of your company's information.
          It makes it a good target for Business Intelligence: Using analytics tools to get useful insight about how your company works.

          Let's do it with this scenario:
          - Employees all have a "Expenses" folder on their computers, where they put their company expenses receipts (picture of train ticket when visiting a client in another city, HTML file of the command confirmation page after buying a cartridge for the company's printer, PDF receipt of a license purchase, etc).
          - Employees enter the amount paid for each of these items, to be reimbursed by the company at the end of the month.

          We can implement this system easily with Alfresco, Pentaho, CmisSync, thanks to the CMIS standard.

          Part 1: Gathering receipt data (aka ECM part)


          First, define a "aegif:expense" type on your document server (replace "aegif" with your company's name). Define an "amount" property for this type. (This can be done on any modern document management server, for instance Alfresco or NemakiWare)

          Second, how to gather the receipts from each user's laptop?

          → Have each employee use CmisSync, which synchronizes automatically a folder between their local "expenses" folder and their remote "expenses" folder.



          On the server side, have a folder rule that applies the "expense" type to any file that the employee puts in this folder.

          How can an employee specify the amount associated to each expense file?

          → By using the context menu provided CmisSync Business. This context menu allows employees to edit document metadata. So, for each picture of a receipt they can enter the amount (by the way, this task can easily be outsourced at this point).

          Now, all of the data is in your document server.

          Part 2: Analyzing the data (aka BI part)


          Let's analyze this data with Pentaho, a Business Intelligence suite.
          More precisely, we will use Pentaho Data Integration (also known as Spoon)

          All modern document management servers offer a CMIS API, which Pentaho can use thanks to the CMIS Input plugin. This plugin can be installed very easily from PDI's Marketplace (free).

          Set up a transformation with the CMIS input feeding a table output as seen below:

          Set up the CMIS Input step to select the documents you want data about. In our example, we want all docume

          The table gets filled with all of the documents' metadata: filename, size, and of course the "amount" property we have defined.

          You can then use that data with an OLAP cube and perform drill-downs, or generate reports. To close the loop, you may even want to set up a job to upload generated reports back to the document server.

          Conclusion

          Bridges are needed between the ECM and Business Intelligence worlds, and the CMIS standard is the most effective way to build them.

          I want to thank Francesco Corti for developing Pentaho's CMIS Input plugin and making it Open Source, and Jeff Potts for his answers about the CMIS implementation provided by Alfresco.

          I recently did a demo on this topic at the Japan Pentaho User Group, here are my slides (partly in Japanese).

          Alfresco4.2のコンテンツ一覧表示をカスタマイズしよう

          $
          0
          0
          こんにちは。花粉症で目と鼻がやられ気味のおおたにです。

          今回はコンテンツ一覧画面の表示内容をカスタマイズするためのメタデータテンプレートという仕組みについて説明します。なお、本エントリではAlfrescoCommunity 4.2.fを使っています。


          メタデータテンプレートを使うとどこがカスタマイズできるの?


          コンテンツ一覧画面の「詳細表示」「シンプル表示」「ギャラリーの表示」の3形式について、以下の箇所の表示内容をカスタマイズできます。
          • バナー : コンテンツ名の上に条件に応じて表示されるもの。
          • ライン : コンテンツ名の下に表示されるプロパティやソーシャル関連機能などを1行ずつセットにしたもの。
          シンプル表示

          詳細表示

          ギャラリーの表示


          そもそもメタデータテンプレートって何?


          メタデータテンプレートとは、このバナーやラインの表示セットを定義するものです。特徴は以下のとおりです。
          • 条件によって表示に利用するメタデータテンプレートが変わる。
            • 複数のテンプレートを定義し、それぞれに条件を設定する。
            • コンテンツ一覧を表示する際にコンテンツ毎に条件に一致するメタデータテンプレートを利用して表示を行う。
            • 条件に一致するメタデータテンプレートが存在しない場合は、フォールバック用defaultテンプレートが適用される。
          • 表示内容(バナー、ライン)、表示順序を指定できる。
          • バナーやラインごとに、表示条件、表示対象のビューを指定できる。
            • 表示条件に一致しないバナーやラインは表示されない。
          標準の設定はShare設定ファイルの<metadata-templates>セクションで設定されています。

          <tomcat_dir>/webapps/share/WEB-INF/classes/alfresco/share-documentlibrary-config.xml
          <!--
          Custom Metadata Templates for the Document Library Browse View

          Use view="simple" or view="detailed" to limit the display to one particular view.
          -->
          <metadata-templates>
          <!-- Default (fallback) -->
          <template id="default">
          <banner index="10" id="lockBanner" evaluator="evaluator.doclib.metadata.hasLockBanner">{lockBanner}</banner>
          <banner index="20" id="syncTransientError" evaluator="evaluator.doclib.metadata.hasSyncTransientErrorBanner">{syncTransientError}</banner>
          <banner index="30" id="syncFailed" evaluator="evaluator.doclib.metadata.hasSyncFailedBanner">{syncFailed}</banner>
          <line index="10" id="date">{date}{size}</line>
          <line index="20" id="description" view="detailed">{description}</line>
          <line index="30" id="tags" view="detailed">{tags}</line>
          <line index="40" id="categories" view="detailed" evaluator="evaluator.doclib.metadata.hasCategories">{categories}</line>
          <line index="50" id="social" view="detailed">{social}</line>
          </template>

          <!-- Working Copies -->
          <template id="isWorkingCopy">
          <evaluator>evaluator.doclib.metadata.isWorkingCopy</evaluator>
          <banner index="10" id="lockBanner" evaluator="evaluator.doclib.metadata.hasLockBanner">{lockBanner}</banner>
          <banner index="20" id="syncTransientError" evaluator="evaluator.doclib.metadata.hasSyncTransientErrorBanner">{syncTransientError}</banner>
          <banner index="30" id="syncFailed" evaluator="evaluator.doclib.metadata.hasSyncFailedBanner">{syncFailed}</banner>
          <line index="10" id="date">{date}{size}</line>
          <line index="20" id="description" view="detailed">{description}</line>
          </template>

          <!-- Dictionary Models -->
          <template id="dictionaryModel">
          <evaluator>evaluator.doclib.metadata.isDictionaryModel</evaluator>
          <banner index="10" id="lockBanner" evaluator="evaluator.doclib.metadata.hasLockBanner">{lockBanner}</banner>
          <banner index="20" id="syncTransientError" evaluator="evaluator.doclib.metadata.hasSyncTransientErrorBanner">{syncTransientError}</banner>
          <banner index="30" id="syncFailed" evaluator="evaluator.doclib.metadata.hasSyncFailedBanner">{syncFailed}</banner>
          <line index="10" id="date">{date}</line>
          <line index="20" id="description" view="detailed">{description}</line>
          <line index="30" id="dictionaryModel" simpleView="true">{modelActive label.modelActive}{modelName label.modelName}{modelDescription label.modelDescription}</line>
          </template>

          <!-- Replication Transfer Targets -->
          <template id="transferTarget">
          <evaluator>evaluator.doclib.metadata.isTransferTarget</evaluator>
          <banner index="10" id="lockBanner" evaluator="evaluator.doclib.metadata.hasLockBanner">{lockBanner}</banner>
          <banner index="20" id="syncTransientError" evaluator="evaluator.doclib.metadata.hasSyncTransientErrorBanner">{syncTransientError}</banner>
          <banner index="30" id="syncFailed" evaluator="evaluator.doclib.metadata.hasSyncFailedBanner">{syncFailed}</banner>
          <line index="10" id="date">{date}</line>
          <line index="20" id="description" view="detailed">{description}</line>
          <line index="30" id="transferTarget" simpleView="true">{trx_enabled label.trx_enabled}{trx_endpointhost label.trx_endpointhost}{trx_endpointport label.trx_endpointport}</line>
          </template>
          </metadata-templates>

          というわけで、share-config-custom.xmlの<config evaluator="string-compare" condition="DocumentLibrary">セクションで設定を上書きもしくは追加することでメタデータテンプレートをカスタマイズすることができます。


          実際にカスタマイズしてみよう


          というわけで、実際にメタデータテンプレートをカスタマイズしてみましょう。ここでは、画像ファイルの場合にExifメタデータを表示するというカスタマイズを行ってみます。まずは以下のようなメタデータテンプレートを作成します。defaultテンプレートをベースに、evaluatorとExif用のlineを追加しつつ、description行を削除しています。share-config.custom.xmlに既に同じconfigセクションがある場合は適宜マージしてください。

          <tomcat_dir>/shared/classes/alfresco/web-extension/share-config-custom.xml
          <alfresco-config>
          <config evaluator="string-compare" condition="DocumentLibrary">
          <metadata-templates>
          <template id="exif">
          <evaluator>evaluator.doclib.indicator.exifMetadata</evaluator>
          <banner index="10" id="lockBanner" evaluator="evaluator.doclib.metadata.hasLockBanner">{lockBanner}</banner>
          <banner index="20" id="syncTransientError" evaluator="evaluator.doclib.metadata.hasSyncTransientErrorBanner">{syncTransientError}</banner>
          <banner index="30" id="syncFailed" evaluator="evaluator.doclib.metadata.hasSyncFailedBanner">{syncFailed}</banner>
          <line index="10" id="date">{date}{size}</line>
          <line index="20" id="exif" view="detailed">{exif_pixelXDimension label.exif_pixelXDimension}{exif_pixelYDimension label.exif_pixelYDimension}{exif_exposureTime label.exif_exposureTime}{exif_fNumber label.exif_fNumber}{exif_isoSpeedRatings label.exif_isoSpeedRatings}</line>
          <line index="30" id="tags" view="detailed">{tags}</line>
          <line index="40" id="categories" view="detailed" evaluator="evaluator.doclib.metadata.hasCategories">{categories}</line>
          <line index="50" id="social" view="detailed">{social}</line>
          </template>
          </metadata-templates>
          </config>
          </alfresco-config>

          •  evaluator : テンプレートの利用条件。evaluatorのビーンIDを指定します。ここではexif:exifアスペクトを持つか判定するevaluator.doclib.indicator.exifMetadataを使います。もちろんカスタムevaluatorを定義して設定することもできます。
          •  banner : バナーを定義します。
          •  line : ラインを定義します。exifというlineを追加しています。
          •  バナー、ラインの設定内容は以下のとおりです。
            • index : 小さい順に表示します。
            • view : detailedで詳細表示/ギャラリー表示に、simpleでシンプル表示に、指定しないと全てに表示します。exif行はdetailedを指定しています。
            • evaluator : バナー、ラインの表示条件を指定します。エバリュエータのビーンIDを指定します。
            • 表示内容はレンダラ({}で指定してあるもの)で設定します。
              • 事前定義されたレンダラ {<レンダラ名>} : {date}, {social}など。<tomcat_dir>/webapps/share/components/documentlibrary/documentlist.jsで定義されているものを利用できます。必要に応じてレンダラを修正/追加することもできます。
              • プロパティ表示レンダラ {<プロパティ名> <ラベルのメッセージリソースキー} : 指定したプロパティを表示します。プロパティ名はコロン(:)の代わりにアンダーバー(_)を使います。

          さらに、今回表示するプロパティ表示レンダラのメッセージリソースが無いので、以下の2ファイルを作成します。

          <tomcat_dir>/shared/classes/alfresco/web-extension/custom-messages-context.xml
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN''http://www.springframework.org/dtd/spring-beans.dtd'>

          <beans>
          <bean id="custom.resources" class="org.springframework.extensions.surf.util.ResourceBundleBootstrapComponent">
          <property name="resourceBundles">
          <list>
          <value>alfresco.messages.custom-messages</value>
          </list>
          </property>
          </bean>
          </beans>

          <tomcat_dir>/shared/classes/alfresco/messages/custom-messages.properties
          label.exif_pixelXDimension=\u753b\u50cf\u5e45
          label.exif_pixelYDimension=\u753b\u50cf\u9ad8
          label.exif_exposureTime=\u9732\u5149\u6642\u9593
          label.exif_fNumber=F\u5024
          label.exif_isoSpeedRatings=ISO\u611f\u5ea6

          以上のファイルを追加したら、Alfrescoを再起動します。


          動作確認しよう


          Alfrescoが正常に起動したら、適当なフォルダに画像ファイルをアップロードしてみましょう。Exif情報を持つ画像ファイルは今回カスタマイズした表示となり、付いていないものはデフォルトの表示になっていればカスタマイズ成功です。

          なお、プロパティ表示レンダラは、表示対象のプロパティ値が空の場合にそのプロパティを表示しないのでご注意ください。値が空の場合にも何らかの表示をさせたいという場合は、レンダラを別途定義する必要があります。


          さいごに


          メタデータテンプレートは、Alfrescoのコンテンツ一覧表示を設定ファイルだけでカスタマイズするとても強力な仕組みです。カスタムエバリュエータと組み合わせることで柔軟に表示内容をカスタマイズすることができるので、是非チャレンジしてみてください。

          なお、AlfrescoのHelpにもメタデータテンプレートに関する記載があるので参考にしてください。

          Liferay Social Networkingアプリケーションの紹介

          $
          0
          0
          はじめまして。こんにちは。かわべと申します。
          先日aegifに新規メンバとして参加し、この度めでたく初ブログ記事を書くことになりました。何卒よろしくお願いします。

          さて、この記事ではLiferayのSocial Networkingというアプリケーションを紹介します。このアプリケーションを追加することによって、LiferayでもFacebookライクなソーシャル機能をポートレットで実現することができるようになります。ソーシャル機能、とだけ聞いてもピンとこないかもしれませんが、最後まで読むとイメージを掴んでいただけると思います。ではアプリケーションのインストールから始めましょう。

          Social Networkingアプリケーションの追加


          Social NetworkingにもCommunity Edition(CE), Enterprise Edition(EE)がありますが、ここではEEを利用して説明していきます。(CEでも同様の手順でインストールが可能です)

          まず、管理者でログインし、コントロールパネルからマーケットプレイスへと移動します。そこから"Social Networking EE"というアプリケーションを選択、ダウンロードします。以上でアプリケーションの追加は完了です。

          一見何も変化はありませんが、ひとまずサイトのトップページにでも移動してみます。そこで、ページ上部の「追加」から「詳細」を選択し、追加ポートレット選択画面を表示します。デフォルトの設定では「Wiki」「コミュニティ」などのカテゴリが上から並んでいるはずですが、その中で「ソーシャル」のカテゴリをクリックして開くと…ここにSocial Networkingアプリケーションのダウンロードによって追加可能となったポートレットが並んでいます。



          追加前・追加後の比較画像がないので、変化が…わからないですね!(すいませんスクリーンショットを取り忘れました)

          さて気を取り直して追加可能となったポートレットについて。Social Networkingのポートレットはその機能によって
          • サイトページに追加するもの
          • ユーザの公開ページに追加するもの
          の2種類に大別されます。それぞれ見ていきましょう。


          サイトページに追加するもの

          Map, Meetups, Members, Members' Activities


          ・Map
          Mapはユーザの現在位置を表示することができます。
          ただし、実際にMapポートレットを追加してみるとわかりますが、Mapを利用するためにはマーケットプレイスから更にポートレットを追加する必要があります。今回は割愛しますが、設定方法はこちらに解説されています。

          ・Meetups
          日時、参加者数の上限、参加費などを指定してイベント(Meetup)を作成することができます。現状ではイベントを作成可能なのは管理者のみとなっています。イベントに対してはユーザそれぞれが参加・不参加の意思表示をすることができ、管理者は参加者を把握できます。



          ・Members
          サイトメンバの一覧を表示します。メンバ名をクリックすると、そのメンバの公開ページへと移動します。



          ・Members' Activities
          サイトメンバの直近のアクティビティを表示します。


          ユーザの公開ページに追加するもの

          Summary, Friends, Friends' Activities, Wall


          ユーザの公開ページに追加するポートレットはFriends機能に関連するものです。Facebookを利用したことがある方には馴染みのあるものだと思いますが、Friends機能はユーザ間で密なコミュニケーションを取ることを容易にしてくれます。

          ・Summary
          ユーザがポータルに登録している情報の一部を、簡単な自己紹介として表示します。他のユーザと友人になりたい場合は、友人になりたいメンバの公開ページにアクセスし、Summaryから友人申請をすることができます。



          友人申請を受けた場合、その通知はリクエストというポートレット(「ソーシャル」カテゴリに最初から存在しています)に表示されます。友人機能を利用するためにはこちらのポートレットも追加しておきます。



          ・Friends
          Friendsポートレットには、友人になったユーザがリスト表示されます。

          ・Friends' Activities
          友人の直近のアクティビティを表示します。

          ・Wall
          友人であるユーザ同士は、互いのWallにコメントを記入することができます。気軽なコミュニケーションツールとして利用できます。


          おわりに


          Social Networkingのポートレットを設置することで、使い勝手のよいソーシャルなページを作成することができるでしょう。もちろん他のポートレットと同様、表示権限の設定などを行うこともできるので、要件に合わせて設定してみてください。

          How to resolve huge merge conflicts?

          $
          0
          0
          Let's say you and another company have both modified a single long file, and the automatic resolution by git merge only results in a huge mess of "<<<" sections. You need to take matters in your own hands, and here is how.

          Identifying files that need manual resolution

          They first appear when you pull or merge:

          git pull https://github.com/OtherCompany/CmisSync.git
          [...]
          Auto-merging CmisSync.Lib/Cmis/Database.cs
          CONFLICT (content): Merge conflict in CmisSync.Lib/Cmis/Database.cs
          [...]


          If you want to test see the list again, just use git status:

          git status
          [...]
          both modified:      CmisSync.Lib/Cmis/Database.cs
          [...]

          Getting all necessary data

          First, identify the ancestor, the commit from which the two branches have split:

          git merge-base gds2-master master
          1ae00e720522a8f099e8ec3dae0b34e3a8a603cd

          There will be 4 versions involved:
          - Ancestor
          - Theirs
          - My version before the merge
          - The result version
          Note that we don't keep Git's failed merge attempt.

          git show 1ae00e720522a8f099e8ec3dae0b34e3a8a603cd:CmisSync.Lib/Cmis/Database.cs > /tmp/ancestor
          git show gds2-master:CmisSync.Lib/Cmis/Database.cs > /tmp/theirs
          git show master:CmisSync.Lib/Cmis/Database.cs > CmisSync.Lib/Cmis/Database.cs
          cp CmisSync.Lib/Cmis/Database.cs /tmp/original

          Merging


          Then a three-way merge tool that allows editing.
          There does not seem to be any such tool yet, so I use a combination of kdiff3 and meld:

          kdiff3 /tmp/ancestor /tmp/theirs CmisSync.Lib/Cmis/Database.cs &

          meld /tmp/original CmisSync.Lib/Cmis/Database.cs &

          For each of their changes that you want to benefit from:
          1. Copy/paste the change from kdiff3's middle pane to Meld's right pane,
          2. Save,
          3. Refresh in kdiff3.
          That's it!
          Now you can mark the conflict as solved:

          git add CmisSync.Lib/Cmis/Database.cs

          Nicolas Raoul

          オープンソースのクラウドソーシングで学んだこと

          $
          0
          0
          今日はAnkiDroid 2.1.2をリリースしました。
          AnkiDroidは現在85万ダウンロードなので、このバージョンで100万ダウンロードを超えると想定しています :-)

          AnkiDroidは、オープンソースな単語帳アプリです。

          オープンソースだから、開発は皆ボランティア…というわけでもない!
          今回は普通の開発会社に、カードプレビューという機能を外注しました。
          Chrisさんという一般のAnkiDroidユーザが要件定義を書いて、お金を集めて、外注ウェブサイトにRFPを公開しました。
          色々な会社が提案を出して、ChrisさんがJoltaTechというパキスタンの会社を選んで開発してもらいました。

          オープンソースのクラウドソーシングについて学んだこと:
          ・要件定義前、実現したい機能をプロジェクトのイシュートラッカーに詳しく入力して、プロジェクトのコア開発者からできるだけ高い優先度にもらいましょう。優先度が低いままなら、実現してもリリースソースに入れてくれない可能性もありますので。この機能はそもそも要らないか、既に存在しているかもしれません。イシュートラッカーの入力で確認ができます。
          ・プロジェクトのメーリングリストに、「この機能を実現するパッチを作成したら、リリースソースに入れてもらえますか」というメールを送りましょう。ポジティブな返事が来ないと先に進めません(その場合はフォークでも考えられますが、そうすると運営経費がかなり上がります)
          ・Gitの経験をRFPの条件にしておくと、実際に開発が始まった後で、オーバヘッドが下がります。今回の会社はそういう経験がなくて、納品と修正のときに一番混乱したポイントでした。
          ・他のRFPの要件として、ソースコードをプロジェクトと同じライセンスにすることも必要です。
          ・納品のとき、テストは大切なので、その工数とスケジュールを予め考えておく必要があります。
          ・プロジェクトの中にリリースされることを条件にすることもできます。これはプロジェクトによって読みづらいので、メイン支払いの後のボーナスとするのが一番良いと思います。

          下記のワークフローをお勧めします:
          Nicolas Raoul

          Alfresco 4.2.dがリリースされたので早速インストールしてみた

          $
          0
          0
          こんにちは。おおたにです。

          週末(と言っても先々週)に青森旅行に行き、十和田湖や奥入瀬あたりを散策してきたのですが、見事に暴風&土砂降りで思い描いた自然とはいまいち触れ合えませんでした。ただ、八戸で食べた寿司はとてもおいしかったので、旅行としてはそれなりに満足したものとなりました。


          ついにリリースされたAlfresco Community 4.2.d


          さて、そんな奥入瀬に宿泊しているタイミングでついにリリースされましたAlfresco Community 4.2.d! 現実世界に戻ってきて仕事がひと段落ついてからインストールしてみたところ、あれ、なんかおかしい?(インストールはこちらあたりを参照してください)


          Shareのヘッダが表示されない?文字化けしてる?


          まずは手元のWindowsにインストールしてアクセスしてみたところ、見事にShareのヘッダが表示されませんでした。



          テストのために、CentOSにもインストールしてアクセスしてみたところ、Shareのヘッダは表示されたものの、文字化けしたりしなかったりでした(自分の環境では正常だったのですが、他のメンバの環境では文字化けしました…)。サービス起動か起動スクリプト直叩きかによって結果が異なったりする模様です。こうなると俄然環境変数周りが怪しくなってくるのですが、詳しい話はそのうち誰かがしてくれるはずです。ちなみに一応つたない(怪しい)英語でJIRAに報告済です…。


          ちなみに、正常に表示されるとこんな感じです。マイナーバージョンアップなのにヘッダが劇的にかっこよくなってます!(まあそのためにこんな問題が発生してるんですが…)



          ワークアラウンドはJAVA_OPTSでのデフォルトエンコーディング指定


          ちょっと調べてみると、ヘッダのhtmlを生成するJavaScriptコードに文字化けしたリソースが入っていることが確認できました(ちなみに文字化けしないものは全て\uxxxxエスケープされてます)。なので、ワークアラウンドとしてJavaの起動オプションJAVA_OPTSでデフォルトエンコーディングをUTF-8に指定してみます。

          LinuxやMacOSのインストーラを利用した場合は <tomcat_dir>/scripts/ctl.sh のJAVA_OPTSに"-Dfile.encoding=UTF-8"を追加し、Windowsインストーラを利用した場合は、以下のコマンドを実行して起動オプションに"-Dfile.encoding=UTF-8"を追加します。

          <tomcat_dir>/bin/tomcat7w.exe //ES//AlfrescoTomcat 



          Alfrescoを再起動すると、ヘッダが正しく表示されるようになるはずです。


          さいごに


          今回はヘッダ表示がうまくいかない場合のワークアラウンドの紹介だけになってしまいましたが、次はAlfresco Community 4.2.dの新機能を見ていく予定です。既に英語圏のblogでは色々紹介されているのですが、実際に触ってみた感じなどを日本語で紹介できればと思います。

          Viewing all 244 articles
          Browse latest View live