2011/02/19

そろそろモダンな開発環境へシフトしよう(3)

今度は*nix環境。
正直、主だったCUIの操作説明は5分でわかるBazaarユーザーガイド嫁で終わる。
後は、好みに合わせてQBzrかbzr-gtk(olive)を入れるかどうか。

CentOS5は、QBzrを入れるにはPython関連が古すぎて面倒。
それでも、BazaarExplorerを使いたくて挑戦したが、Qt自体が古すぎて諦めた。
その代わり、meldがいい具合に使えそう。
最新版meld1.5はPython2.5以上必須な為、
CentOS5にはmeld1.4が最適。

Ubuntuは、どちらもイケる。
何れにしても、emacsenはdvcで大体満足出来る。
office系とか面倒なdiffは、調査中...

2011/02/15

自家製CMSにはCKEditor + KCFinderがオススメ

CKEditorTinyMCEは好みの問題もあるけど、
両方共に画像等のリソース管理ブラウザー機能が有償ライセンスになっている。
このお陰で同機能を導入出来ない方が多いみたい。
そんな方には、KCFinderがオススメ。
CKFinderと比べて名前が胡散臭い雰囲気だけど、必要機能は実装されている。
各種AjaxなHTMLエディタとの統合は、デモサイトを参照。

そんな訳で、お目当てのCKEditorとの統合に挑戦する。
早速は、それぞれダウンロードしてきて展開する。
今回は取説の通り、全て/var/www/html/* に配置した。
まずは、CKEditorの設定ファイル ( config.js )をKCFinderのサンプルを参考に編集する。


CKEDITOR.editorConfig = function(config) {
   config.language = 'ja';
config.filebrowserBrowseUrl = '/kcfinder/browse.php?type=files'; config.filebrowserImageBrowseUrl = '/kcfinder/browse.php?type=images'; config.filebrowserFlashBrowseUrl = '/kcfinder/browse.php?type=flash'; config.filebrowserUploadUrl = '/kcfinder/upload.php?type=files'; config.filebrowserImageUploadUrl = '/kcfinder/upload.php?type=images'; config.filebrowserFlashUploadUrl = '/kcfinder/upload.php?type=flash'; };


実際に利用する場合は、適宜/kcfinderを変更する。
又、flashを管理しない場合は、filebrowserFlash*を削除する。
尚、KCFinderは日本語言語ファイルが同梱されていない。
本家に翻訳関連の掲示板への誘導があって、そちらに日本語言語ファイルが投稿されている。
残念ながら一部未翻訳な部分などあったので、パッチと言語ファイルを投稿しておいた。
英語に拒否反応を示すユーザーを抱えている方は、良かったらそちらを適用して下さい。

以下、実際の操作画面。
日本語化済みのCKEditor本体


KCFinder連携設定前のイメージプロパティ画面

KCFinder連携設定後のイメージプロパティ画面

KCFinderによる画像表示画面 ( 英語版 )

KCFinderによる画像表示( 日本語版 )

KCFiderでアップロードした画像を
そちらで選択するとCKEditorに埋め込まれる

CKEditorの通常入力に帰ってきた

以下、ハマった点。
  • KCFinderのconfig.php内のdisabled値が'true'になっていて、サーバーブラウザーが起動しなかった。
  • KCFinderでセッションを正しく利用するには、_session*の設定が必要。
セッション関連については、本家のセッション設定を参照。


[追記]
CKEFinder本家Forumにも挙がっていたけど、CKEditorではサーバーブラウザー機能は
ポップアップウィンドウでしか利用出来ない模様。
利用ユーザーがポップアップブロック機能をセキュリティポリシー等で操作出来ない場合は、
TinyMCEで inlinepopupを利用するといい。
ちなみに、Firefoxユーザーで「新しいウィンドウではなく新しいタブで開く」を設定している場合、
開いたポップアップウィンドウのウィンドウサイズでFirefoxのウィンドウ自体がリサイズされて
強烈に使い心地が悪くなるので注意が必要。

[追記2]
CKEditorのライセンスを誤解されているサイトいくつか見受けられるけれど、
本家ライセンスにトリプルライセンス(GPLv3LGPLMPL)、CDL(クローズドソース利用)と明記されている。
いずれも商用利用可能。
但し、CDLは本家記載の利用料が生じる。
トリプルライセンスについては、ソース公開の義務が生じるけれど、JSなんだから通常利用では現状は無問題。
手を加えるにしても、パッチ書いたりしたら明示とフィードバックくらいする...よね?
ちなみに「GPL=売れない」なんてFUDはミスリードなので悪しからず。

※CKEditorのダイアログなどのリサイズ方法をお探しの方は、こちらをどうぞ。

2011/02/13

そろそろモダンな開発環境へシフトしよう(2)

前回で基本構築は完了したので、引き続き各種設定をする。
まずは、Windows環境から。
インストールが完了すると、コンテキストメニューにアイテムが追加される。
TortoiseBZRも入れた場合は、BazaarExplorerと両方ともに追加される。
機能的な重複があるので、個人的には若干微妙。
ただし、適宜使い分けをすれば良さそう。
例えば設定等はコンテキストから呼び出せると楽かも。
インストール後のコンテキストメニュー




















[TortoiseBZRの設定]
TortoiseBZR共々、この設定から開始する。
BazaarExplorerとも連動するBazzarの設定は、「一般Bazaarオプション」から行う。
TortoiseBZRの設定画面1





















2.2でのアイコンオーバーレイ設定は荒いけど、
2.3では少し設定を細かく出来る仕様になっている。
何にせよ、実施するドライブやパスを必要最小限にした方がExplorerの応答が良くなるらしい。
TortoiseBZRの設定画面2





















[一般Bazaarオプション]

※以降の設定画面は、BazaarExplorer側ではきっちりと日本語されているので、
英語に拒否反応を示す方々はそちらをどうぞ。

ユーザー毎の利用環境の設定を指定する。
Name値やEmail値は実行マシン名や実行ユーザー名から自動入力済み。
メールによる伝達等の運用を行う場合は、両値を適宜変更した方が良さそう。
社内1拠点での小規模運用程度なら、利用者氏名やニックネーム等をテキトーに。
Editor値は、BazaarExplorerの設定編集やコミットログ入力等に利用される模様。
未設定の場合は、Notepadが起動する。
E-mail Client値は、コミットログ等に付記される前述メールアドレスをクリックした際に利用するメーラー?を指定する。
Bazaar設定1





















各種外部コマンドのエイリアスを指定する。
試しにWinMergeをwdiff等と指定してものの、後述の外部コマンド呼び出しでは利用されなかった。
利用方法が違うのか?
Bazaar設定2





















 バグトラッカーを指定するらしい。
用途不明につき、調査中。
Bazaar設定3





















スペルチェック?
OSSで日本語のスペルチェッカー何てあるんだろうか?
Bazaar設定4





















差分表示に利用するdffアプリを指定する。
外部dffを利用する場合は、ファイルパス(利用出来るならalias)を指定する。※1
TortoiseSVNでOffice系バイナリデータの比較に触れて以来、
すっかりWinMerge + xdocdiff + SCMのスタックにハマってしまった。
画像のdiffには、TortoiseIDiffを指定してみるもの一興。
Bazaar設定5





















マージ処理時に利用するアプリを指定する。
 ファイルパス(利用出来るならalias)を指定する。※2
Bazaar設定6





















※1,2  日本語が比較対象ファイルパスに含まれると、外部アプリ呼び出し時にエラー終了する。
パッチが存在するものの、メインラインに取り込まれていない。
問題が発生する場合は、
DETROIT.DDO.JP - Bazaar plugins
「Windowsで外部コマンドが起動できないバグを修正するプラグイン」を導入するいい。

そろそろモダンな開発環境へシフトしよう(1)

SVNやTracなネタを色々と載せていたけれど、そろそろモダンなネタをまとめてみる。
以前と違って、OSS界隈ではDVCSが主流になっている。
ま、みんなストレスは抱えたくないということか。
I/BTSにはTracは機能的にいいのだけど、マルチプロジェクトとか色々とアレなのでスルーした。
Pythonicな人間は、Tracなんだろうけど...

そんな訳で、Redmine + Bazaarを構築する。

最終目標は、WinXP~Win7 + CentOS / Ubuntuで快適開発出来るようにすること。
主に利用するアプリは、Deamweaver、Photoshop、Emacs。
後は、たまにEclipse / AptanaとVisual Studio 6 / 20**。
扱うファイルは、テキストデータ、画像、Office系バイナリデータ。
こうして挙げてみると、節操ない。
きっと世のWeb系開発環境はこんなもんだろう。
ちなみに、利用者の想定は営業/事務、デザイナー、PG / SE等。
一応事前調査してみたけど、キツいのはPhotoshopとVisual Studioか。
他については、何とかなりそうな感じ。
それにしてもAdobeのSubversion対応は、機能的に中途半端な感じが否めない。
バージョン非互換とか色々と頂けないことが多い。

何にせよ、Bazaarを導入する。
*nix環境は、

 apt-get install bzr 
 yum install bzr
等とコマンド実行する。
GUIと拡張機能は必要に応じて。

Windows環境は、本家からダウンロードする。
記事投稿時の最新版2.3では、BazaarExplorerの日本語表示対応が同梱されていない。
別段問題がなさそうな2.2で作業を進める。
以下、インストールの流れ。
1.インストール開始

2.お決まりのライセンス確認

3.インストール先の指定
今後の自分色な実装に備えて、デフォルトがオススメ

4.インストールオプションの設定
Tortoise*好きな人は適宜選択する
※但し、ToroiseBZRは重い

5.スタートメニューの指定
拘りがなければ、デフォルトで

6.各種ショートカットの指定
お好きにどうぞ

7.インストール実行の確認

8.インストール実行

9.インストール完了
※実行環境やバージョンによっては再起動が促されない。
ToroizeBZRを導入する場合は、別途再起動すべき。

SLiMはXDMCP未対応

紆余曲折あったSLiM環境も、近頃は落ち着いて運用出来ている。
ただ、「XDMCPが利用出来ない」。
この一点のお陰で、関連技術を色々試すハメになった。
よくある手法としては、

  1. XDMCP
  2. Xnest ( Xephyr 含む )
  3. SSH X11 Port Frowarding
  4. vnc
  5. Freenx
  6. TeamViewer
といったところ。
以下、試験結果。

1. XDMCP
論外。SLiMは対応していないので...恐らく画面応答速度は、Xnestと同じか?

2. Xnest ( Xephry )
Xnestは、画面応答速度が使い物にならないレベルだった。
生XWindow流してるだけに、当然の結果。
ただ、何処かでなんぞライブラリを導入することで応答速度を改善できるといった情報を見付けたものの、失念。
Xephryは、起動すら出来なかった。
KDE寄りのようだし、調査に時間がかかりそうだった。


3. SSH X11 Port Frowarding
古来より使われている手法なだけに、それなりの応答速度と実行結果だった。
パネル統合処理等も効くので、Thunderbirdでは「MinimizeToTray」によるタスクトレイ格納が出来た。
ただ、所詮は生XWindow流してるだけに、平時は我慢できるものの、緊急時は到底使えないレベル。
それに、緊急時こそ複数のアプリを即座に立ち上げたいものなので、微妙。
自分が利用する全てのGUIアプリのコマンド名を覚えている人なんているのだろうか。

4. vnc
リモートデスクトップ用なだけに、良好な結果だった。
ただ、常用する訳ではないのでx11vncを試した。
単純に、

x11vnc

と実行するだけで稼働した。※1

クライアントは、tsclientを試してみたものの、
詳細なvcnオプションをxtightvncviewerに渡せないようなので、

xtightvncviewer -compresslevel 9 -quality 9 -x11cursor -nocursorshape -encodings Tight xxx.xxx.xxx.xxx


等とコマンド実行した。
ようやく、及第点といったところ。

5. Freenx
マシンリプレイス以前に利用していた。
そこそこの評価だったものの、
現状のデスクトップ関連スタックとの相性が悪いのか、デスクトップやパネル等の個別アプリ毎に
ロカールマシン側でウィンドウが生成されてしまって使い物にならなかった。

6. TeamViewer
非商用利用が前提なものの、番外として試した。
応答速度は、Xnestと同程度。
C/Sマルチプラットフォームを謳っているものの、

  • 上下位バージョン互換性が悪い
  • 認証とはいえ、必ずサービス提供企業のサーバーを経由している
  • プロプラなだけに、色々と胡散臭いところがある
  • プログラムがwineで実行されるため、管理系GUIが崩れる
といった点から、常用には不向き。
ただし、クライアントへのボランティアでセキュリティポリシーが許せば、
採用を検討しても良さそう。
採用する際は、IDホワイトリストとパスワード認証は必須。


結論
複数sshセッション張って、x11vncとコンソール。
そもそも、vncなんて使わなくてもいい程度の緊急時対応で済むことが一番簡単なんだけど...
尚、当然ながら、全ての操作はSSHプロキシー( ssh + tsocks )を経由した。

※1 x11vncは、デフォルトはパスワード認証がないので、常用する場合は、別途関連設定が必要。