2006/7/21 金曜日

PukiWikiのLightBoxプラグインを作って見た

Filed under: WEB2.0, ライセンス — y2sunlight @ 11:09:15

ある夏の夜、突然「花火」を見たくなり、PukiWikiのLightBoxプラグインを作りました。(なんのこちゃ?)

「百聞は一見にしかず」まずはこのページを見て下さい。

このページは、私の運営しているWikiサイトです。「PukiWiki + LightBox」で、これまでのテキスト中心のページから少しは動きのあるページに変身できそうです。でも、私自身、根っからの「メモ帳派」なので、あまり画像は使わないと思います。

分からない事

このプラグインを作って、自分で楽しんだ後、プラグインを(LightBoxも含んだ配布物として)公開しようと思ったのですが、待てよ、プラグインのライセンスをどうしよう。GPLにしたかったのですが、LightBoxがCC-Attributionなので・・・。どうなるんだろう。CC-Attributionの「帰属表示」はGPLと矛盾しないのだろうか?なんでJavaSctiptがCCなの?修正BSDやLGPLではだめなんでしょうか?

WordPressのLightBoxプラグインはGPLで公開されています。OKなのか?著作者の承諾を得ている事も考えられるが・・・。結局、この疑問が分からず、PukiWikiで使えるLightBoxプラグインの作り方を書いてお茶を濁しておきました。

「CC-Attribution ライセンス」で公開されているソフトウェア(A)があります。
この(A)を変更して使用しているソフトウェア(B)があります。
(A)の著作者の許可なく、(B)をGPLとして公開しても良いのでしょうか?

お分かりの方は、ご教授下さい。

2006/7/20 木曜日

Bulkfeedsについて調べて見た

Filed under: WP日記, Blog, Ping — y2sunlight @ 9:02:54

中断していた更新pingネタです。Bulkfeedsについて調べて見ました。

宮川達彦さん 

ブログ界隈では有名な話みていですが、Bulkfeedsは「BLOG HACKS , 2004, O’REILLY」の著者の1人 宮川達彦さんが運営しているみたいです。私もこの本持っています。MTを勉強し始めた頃、すごく参考になった本です。知らなかった。よく本を見ると、Bulkfeedsの事がでてました。 宮川達彦さんはSix Apart やライブドアのブログシステムとも関係があり日本でのブログやRSSの草分け的存在です。

Bulkfeeds 

Bulkfeedsは RSS Feed の検索エンジンです。日本国内で Syndicate されている RSS を Feed 単位/記事単位で検索できます。 似たようなサービスが今は盛んですが、Bulkfeedsはそれらの草分け的存在です。また、ここは個人運営なので、小回りが利き、新しい風を先取りしてくれそうな期待感があります。 

今日から私もBulkfeedsに更新Pingを送っています。

おまけ

ついでに、Yahooにも更新Pingを送ってみました。

おーすごい。yahooのブログ検索に瞬時に反映されます。yahooにしては、すばやい反応。はやり、ブログの風を相当気にしている様子です。

もう1つおまけ

あまりに投稿がおそいので、 調べたら、WPに最初から入っている更新Ping先の「Ping-o-Matic」でタイムアウトが発生していました。やっぱり、自前で更新Pingの一括送信を仕立てる方がよさそうですね。

2006/7/18 火曜日

安倍晋三さんのホームページに変化が

Filed under: CMS — y2sunlight @ 10:18:55

ひさしぶりに 安倍晋三さんのホームページを見ました。最後に見たのは、多分、昨年末くらいでしょか。びっくりしました。以前はxoopsだったのに CMS が Plone に変わっていました。

http://tokyo.s-abe.or.jp/

安倍晋三さんの前のホームページは、2002年の11月にxoopsを使って公開が開始されたと本で読んだことがあります。そして今回のリニューアル、まだ、β版となっていますが、Plone かー。うーん。情報不足だ。勉強しなければ・・・。

次々に新しいCMSに切り替えて行く戦略は「革新・安部晋三」のイメージ戦略の1つなのでしょうか。でも、この変化は見逃せません。なんせ、安部さんは次期総裁候補ですから。仮に安部さんが総裁になったら、ますます、安部さんのHPは一気に脚光をあびるでしょう。そして、そのHPのCMSがPlone っだたら。みんな、Plone ってなに。Plone ってどう読むの。ってなるでしょう。

Plone (プローン)

安倍晋三さんのホームページでは、面白い投票がありました。「政治家が使うおすすめCMSは?」というものです。その中にEtomite というCMSがありました。Etomite からたどっていくとModX というのもありました。

本当にいろいろなCMSがありますね。レンタルサーバの運用の場合、Ploneはちょっと無理が・・・。 Etomite は、どうも・・・。ModX あたりにアンテナを張っておきますか。

やっぱり 安倍さんにはxoopsにもどして欲しい

ちなみに、。「政治家が使うおすすめCMSは?」では、Xoopsに投票しておきました。やっぱり、政治家、特に安倍さんのような人には「国民との対話」を大切にして欲しいですから。国民のどんな声にも耳を貸す。それが、たとえ、非難であっても。安倍さんはそんな度量のある政治家だと信じてますから。 Ploneってその手の機能ってあるんですか? いまの安倍さんのHPって、なんか一方通行で、好感がもてません。

2006/7/17 月曜日

GreyBoxとThickBox を使って見た

Filed under: WEB2.0 — y2sunlight @ 15:22:28

最近、ボップアップでボックス表示するJavascriptを多く見ます。LightBoxはその代表です。その他には、GreyBox,ThickBoxというのがあります。とりあえず「xBoxたち」と名づけましょう。

xBox たち

GreyBox — LGPL

GreyBoxは、 LightBoxのhtml版です。LightBoxが画像を対象にいるのに対して、GreyBoxはURLを指定して、コンテンツを全てBox表示します。

まずは、ダウンロード:

解凍して、GreyBox_v3_25以下のファイルを、適当な仮想フォルダにコピーします。demo.html があるので、それを実行してみました。使い方は以下に詳しく出ています。

ThickBox — Under an Attribution, Share Alike License

ThickBox は LightBoxとよく似ています。高速な画像表示を得意としていますが、htmlも表示できます。ダウンロード先がちょっと難しかったです。(本当にここでいいのか少し不安)

解凍して、thickbox以下のファイルを、適当な仮想フォルダにコピーします。index.htmがあるので、それを実行してみました。日本語で使い方が詳しく出てるサイトがあります。

2006/7/14 金曜日

Markdown を使って見た

Filed under: Wiki — y2sunlight @ 8:37:17

前回「Markdown を使ってみよう」の続きです。今日は、実際にMarkdownを使ってみました。

自分のプログラムでMarkdownを使う

Marckdownの使い方は簡単です。

include_once “markdown.php”;

して、例えば、$html にWiki風テキスト(Marckdown書式)が入っているとすると、

$html = Markdown($html);

として、後は出力するだけです。以下はサンプルプログラムです。

サンプルプログラム:sample.php

<?php
include_once “markdown.php”;

$html = <<<HTML
#H1
これはH1

##H2
これはH2

<div class=”mytable” markdown=”1″>
項目|内容
—-|—-
Cell|Cell
</div>
HTML;

$html = Markdown($html);
?>
<html>
<head><title>MarkDown</title></head>
<body>
<?php echo $html ?>
</body>
</html>

Markdown Extraでは、Markdown で出来なかったテーブルが使える他、上例のように divブロック の中でMarkdown書式が使えます。

divブロックでMarkdown書式 を使うには上のように カスタム属性 markdown=”1″ を使います。この機能により、CSSを使ってMarkdown書式のスタイルを完全に制御することが可能になります。 

上のサンプルプログラムは以下のhtmlを生成します。

<html>
<head><title>MarkDown</title></head>
<body>
<h1>H1</h1>

<p>これはH1</p>

<h2>H2</h2>

<p>これはH2</p>

<div class=”mytable”>

<table>
<thead>
<tr>
  <th>項目</th>
  <th>内容</th>
</tr>
</thead>
<tbody>
<tr>
  <td>Cell</td>
  <td>Cell</td>
</tr>
</tbody>
</table>

</div>
</body>
</html>

smartyでMarckdownを使う

Marckdown.phpの中にはSmartyの修正子プラグインが入っています。ですから、名前を変えて所定の場所に設置するだけでSmartyからmarckdownが使えます。 (うーん。いい方法だ。これは使える。) 

設置方法:

  1. markdown.php の名前を modifier.markdown.php に変える
    ※これはsmartyプラグインの命名規則に従うためです
  2. modifier.markdown.php を所定のsmartyプラグインディレクトリに設定する

Smartyの修正子プラグインを使った例を示します。この例は先の「自分のプログラムでMarkdownを使う」と同じhtmlを生成します。

サンプルプログラム:sample.php

<?php
require_once(’MySmarty.class.php’);
$objSmarty =& new MySmarty;

$html = <<<HTML
#H1
これはH1

##H2
これはH2

<div class=”mytable” markdown=”1″>
項目|内容
—-|—-
Cell|Cell
</div>
HTML;

$objSmarty->assign(’contents’,$html);
$objSmarty->display(’template.html’);
?>

テンプレートファイル:template.html

<html>
<head><title>MarkDown</title></head>
<body>
{$contents|markdown}
</body>
</html>

この方法は、上のテンプレートを見て分かるように 本当にスマーティにmarchdownが使えます。自作のCMSを作る場合は是非とも取り入れたい手法です。

2日にわたって駆け足で、marchdownを説明しました。marchdownは研究の余地ありです。marckdown書式について早々にまとめたく思っています。結果は、「水の巻」でご覧下さい。では。

2006/7/13 木曜日

Markdown を使ってみよう

Filed under: WordPress, Wiki — y2sunlight @ 9:34:43

どうしても、Wiki風書式を使いたくて、もう一度、Markdown を調べてみました。すると、

PHP Markdown Extra は PHP Markdown の拡張版でライセンスはMarkdown と同じ修正BSDです。興味ある拡張はテーブルが記述できる点です。よかった。これで、Textile と ほぼ同じです。

PHP Markdown Extra 1.0.1

Markdown の書式ですが、Wiki風です。とりあえず:

  • #H1
  • ##H2
  • テーブル表記

を使って、テストです。詳しくは、http://daringfireball.net/projects/markdown/syntax にあります。

さて、PHP Marckdownの使い方ですが、沢山あります。同封の Readme.text によれば、以下の利用法が紹介されていました。

  1. WordPress のプラグイン
  2. bBlog のプラグイン
  3. Textile PHP 互換モード
  4. 自分のプログラムで使う
  5. Smarty の修正子(modifier)として使う

すごいですね。いっぱい使い道があって。このリストから見て、xoopsへの移植は簡単そうですね。今日は、とりあえず。上の(4)と(5)を試してみます。

あー。今日は時間です。テストの結果は今度の記事で・・・

2006/7/12 水曜日

FCKeditorをPHPから使って見た(続き)

Filed under: WEB2.0, リッチクライアント — y2sunlight @ 9:40:47

今日も、FCKeditor を少々いじりました。FCKeditor、本当によくできていますね。まずは、設定環境ですが、前回と同じです。

設置環境:

  • /samples/ajax/editor/editor.php — サンプルコード(エディタ)
  • /samples/ajax/editor/FCKeditor/ — FCKeditor設置ディレクトリ

設定は、前回の続きなので、初めの方は、「FCKeditorをPHPから使って見た」を 参照して下さい。

今回は、3つの設定を:

  1. 独自の環境ファイル(myconfig.js)
  2. ツールバーのカスタマイズ
  3. ダーティチェック

独自の環境ファイル

editor.php :

$oFCKeditor = new FCKeditor(’FCKeditor1′) ;
$oFCKeditor->Config[’CustomConfigurationsPath’]
 = ‘/samples/ajax/editor/myconfig.js’ ;

独自の環境設定ファイル(上例ではmyconfig.js)は、オリジナルの設定ファイル(FCKeditor/fckconfig.js)を上書きします。独自の環境設定ファイルを望みの場所に作る事ができます。例えば、ログインユーザ毎に環境設定ファイルを変えたりできます。 

ツールバーのカスタマイズ 

上で設定した独自の環境設定ファイル(myconfig.js)を使ってツールバーをカスタマイズしてみます。

myconfig.js:

FCKConfig.ToolbarSets[”MyToolbar”] =
[
  [’Save’,'NewPage’,'Preview’],
  [’Cut’,'Copy’,'Paste’,'PasteText’,'PasteWord’,
  ’-',’Undo’,'Redo’],
  [’Bold’,'Italic’,'Underline’,'StrikeThrough’],
  [’OrderedList’,'UnorderedList’,
  ’-',’Outdent’,'Indent’],
  ‘/’,
  [’Link’,'Unlink’],
  [’Table’,'Image’,'Rule’,'SpecialChar’,'PageBreak’],
  [’FontSize’,'TextColor’,'BGColor’],
  [’FitWindow’,'Source’,'-’,'About’]
] ;

 editor.php :

$oFCKeditor = new FCKeditor(’FCKeditor1′) ;
$oFCKeditor->Config[’CustomConfigurationsPath’] = ‘/samples/ajax/editor/myconfig.js’ ;

・・・・・

$oFCKeditor->ToolbarSet = ‘MyToolbar’;
$oFCKeditor->Create() ;

出来上がったツールバーはこんな感じ:

FCKeditor カスタムツールバー

 

ダーティチェック

「ダーディチェック」検索してもありません。今、私が作った言葉です。ブラウザで入力している最中に誤ってページを変えて「あー」「おーNO」と思った人は多いと思います。普通のアプリ(ワープロなど)は、「閉じる前に、保存しますか?」と丁寧に聞いてくれます。Webソフトではあまりこの「ダーディチェック」をしません。でも、クライアントの機能がリッチになればなるぼど、「ダーディチェック」の必要性は増していきます。

「ダーディチェック」とは開いたテキスト(または新規のテキスト)を変更したか、(汚したか)をチェックし、汚れていれば、「ページを移動してよいか」を聞き、ページの移動を抑止できるようにする機能のことです。と今、定義します。

さて、「ダーディチェック」はJavaScriptの onbeforeunload イベントを使います。これは、WPと同じ方法です。onbeforeunload で文字列を return するとブラウザはその文字列を表示し、「ページ」を移ってよいかの確認ダイアログがでます。

editor.php :

html ヘッダー に以下を書きます。 

<script type=”text/javascript”>
<!–
var objEditor;
function BeforeUnLoadHandler()
{
  if(objEditor && objEditor.IsDirty()){
    return “ページが変更されています。”;
  }
}
function FCKeditor_OnComplete( editorInstance )
{
  objEditor = FCKeditorAPI.GetInstance(’FCKeditor1′);
  window.onbeforeunload = BeforeUnLoadHandler;
}
// –>
</script>

  • FCKeditor_OnCompleteイベント はFCKeditorが完全にロードされた場合に発生します。イベントの設定はFCKeditorオブジェクトがしてくれるので、FCKeditor_OnComplete を書くだけでようです。
  • FCKeditor_OnCompleteの中で、FCKeditorのインスタンスの取得と onbeforeunload の設定を行います。両者共、このタイミングが一番良いと思います。
  • onbeforeunload イベント発生時(BeforeUnLoadHandler)に、IsDirty()メソッドを使って、HTMLテキストが変更されていれば、「ページの移動」をユーザに確認させます。

FCKeditorのJavaScript APIについては以下を参照して下さい。

 

終わりに 

3回に渡って、FCKeditorを紹介しました。これはすごいパーツです。是非、PHPに導入して下さい。ここで、紹介し切れなかった内容は:

また、Smartyとの連動も興味深いです。

2006/7/11 火曜日

FCKeditorをPHPから使って見た

Filed under: WEB2.0, リッチクライアント — y2sunlight @ 13:45:00

前回の記事の続きです。

FCKeditor をPHPから使ってみました。wiki.fckeditor.net に従って設定してみます:

ここでは、PHP Integration Module(FCKeditor/fckeditor.php)を使います。前回に書いた「あきら×ひろこ=ゆう 」ではJavaScript Integration Module(FCKeditor/fckeditor.js)を使った方法を紹介しています。

fckeditor.phpを使った FCKeditor の設置

 fckeditor

設置環境:

  • /samples/ajax/editor/editor.php — サンプルコード(エディタ)
  • /samples/ajax/editor/savedata.php— サンプルコード(データ保存)
  • /samples/ajax/editor/FCKeditor/ — FCKeditor設置ディレクトリ
  • /samples/ajax/editor/Resource/ — リソースディレクトリ
  • /samples/ajax/editor/Upload/ — アップロードディレクトリ

editor.php(エディタ):

<?php
include(”FCKeditor/fckeditor.php”) ;
?>
<html>
<head><title>FCKeditor</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
</head>
<body>
<form action=”savedata.php” method=”post”>
<?php
$oFCKeditor = new FCKeditor(’FCKeditor1′) ;
$oFCKeditor->BasePath =  ‘/samples/ajax/editor/FCKeditor/’;
$oFCKeditor->Width = ‘100%’;
$oFCKeditor->Height = ‘200′;
$oFCKeditor->ToolbarSet = ‘Default’;
$oFCKeditor->Value = ‘Default text in editor’;
$oFCKeditor->Create() ;
?>
</form>
</body>
</html>

  • FCKeditorクラスのコンストラクタの引数(FCKeditor1)はエディタの要素名です。POST変数として使われます。
  • FCKeditor->BasePath は仮想パスで指定します。
  • Width と Height はエディタの幅と高さです。エディタは iframe の中に入っており、Width と Height はiframe のサイズを指定します。
  • Value はエディタで編集するテキストの内容です。

 savedata.php(データ保存): ちょっと手抜きです;

<?php
$postedValue = htmlspecialchars( stripslashes( $_POST[’FCKeditor1′] ) ) ;
?>
<html>
<head><title>Posted Data</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
</head>
<body>
<?=$postedValue?>
</body>
</html>

  • $_POST[’FCKeditor1′]  と new FCKeditor(’FCKeditor1′) が関係している点に注意して下さい。

リソースブラウザとアップローダの設置

FCKeditor/fckconfig.js:

var _FileBrowserLanguage = ‘php’ ; // 初期値は’asp’です
var _QuickUploadLanguage = ‘php’ ; // 初期値は’asp’です

FCKeditor/editor/filemanager/browser/
   default/connectors/php/config.php:

// SECURITY: You must explicitelly enable this “connector”. (Set it to “true”).
$Config[’Enabled’] = true ;

// Path to user files relative to the document root.
$Config[’UserFilesPath’] = ‘/samples/ajax/editor/Resource/’;

FCKeditor/editor/filemanager/upload/php/config.php:

// SECURITY: You must explicitelly enable this “uploader”.
$Config[’Enabled’] = true ;

// Path to uploaded files relative to the document root.
$Config[’UserFilesPath’] = ‘/samples/ajax/editor/Upload/’;

リソースブラウザの概観

リソースブラウザ

リソースブラウザはファイルのアップロードにも使用でき、かなり便利です。

2006/7/6 木曜日

サーバ設置型htmlビジュアルエディタについて調べて見た

Filed under: WEB2.0, リッチクライアント — y2sunlight @ 9:27:18

サーバ設置型のhtmlビジュアルエディタは、次の2つが有名みたいです。

両者の特徴は:

  • server installation — サーバ設置型
  • lightweight — Javascript
  • WYSIWYG —- ビジュアルエディタ
  • Open Souece — 共にLGPL

どちらにしようかなー?ですが、日本語環境を考えれば、FCKeditor ですか。TinyMCE を特定のブログツール(MTなど)で使えるように日本語化しているものもありますが、オリジナルがせっかくLGPLなので、ここはオリジナルで行きたいところです。

さて、FCKeditor を使って見ましょう。で、先人を探すと、いました!

感謝(しぇい)!感謝(しぇい)!早速試して見よう。

FCKeditor 2.3

まずは、本家( http://www.fckeditor.net/default.html )からダウンロードして、解凍して、とりあえずローカルサーバにコピー。設置の解説は、

にありました。JavascriptとPHPの2つの方法に興味あり。まずはJavascriptから・・・と思ったが、あれ、サンプルがある。

  • FCKeditor/_samples/sampleslist.html

をローカルサーバからたたくと、あっさり動いた。JavascriptとPHPのサンプルは問題なし。ColdFusionとASPは興味なし。Perlを試すと、うーん。だめか?ソースを見るとperlのパスが変。直してもNG。(いいや後で)

一番興味あるPHPのサンプルを見ると、すごい。なにこれ。WPの以上だ。日本語もOK。ツールバーも豪華。でも、こんなにいらない。逆に取るのが大変そうだ。

あとでゆっくり使い込んでみます。それと、自作のPHP組み込みについては次回に紹介。

2006/7/3 月曜日

ajaxftp 1.0 を試して見た

Filed under: WEB2.0, ajax — y2sunlight @ 9:50:11

ajaxftpはAJAXを使ったFTPクライアントです。出先でブラウザからFTPダウンロードしたい場合に便利かも。使って見ましたが、設定に少し戸惑ったのでメモしときます。

ajaxftpはPHPのFTP拡張モジュールを使用しています。(多分多くの環境では入っています)

設置

  1. ダウンロードして解凍
  2. /hoge/ftp の下に ajaxftp をフォルダごと設置
  3. /hoge/ftp の下にサンプルファイル(ftp.php)を設置

サンプルファイル(ftp.php)

require(’ajaxftp/ajaxftp.php’);
$aj = new AJAXFTP;
$aj->server = ‘ftp.server.jp’;
$aj->path = ‘/hoge/fpt’;   # APP path
$aj->baseurl = “http://localhost/hoge/ftp”; #APP URL
$aj->present(); 

ajaxftp 1.0

機能

  • 設定したFTPサーバへの接続
  • ファイルのダウンロード

感想

アップロードは出来ません。まだ発展途上って感じです。改造したくなる衝動に駆られます。でも、ライセンスが不明。AJAXの例題として参考にするのがベターかも。prototype.jsを使っています。

問題点と解決法

(1)ローカルサーバ(Windows-XP)への設置

手元のローカルサーバ(Windows-XP)に設置しましたが、接続ができませんでした。ディレクトリリストの取得に問題がある感じでした。FWはOFFにしたのですがうまく行きませんでした。尚、レンタルサーバ(lolipop)への設置は成功しています。

パッシブモードで接続するとOKでした。ダウンロードも問題なくできます。以下のコードを接続(ftp_connect)成功後に追加しました。

ftp_pasv($ftpConn, true );

(2)レンタルサーバへの設置

肝心のファイルのダウンロードでIEに蹴られます。Aタグのhrefがjavascriptなので、さらに性質(たち)が悪いです。

原因はIEの「ファイルのダウンロード時に自動的にダイアログを表示する」がOFFになっているからです。改造すれば直りそうですが、とりあえず、設置したサイトを「信頼できるサイト」して回避しました。

次のページ »

HTML convert time: 1.496 sec. Powered by WordPress ME