Development をネットワークインストール

画像(180x135)

Fedora 7 のリリースも間近なので、Fedora Core Development を再インストールしてみた。

Development は Rescue CD しかないので、必然的にネットワークインストールとなる。

マシンは、VMware Workstation 5.5.3 の仮想マシンに 256MB のメモリを割り当てた。

続きを読む

FC6 – vmxnet.c の修正

あきらの現在の開発環境は、VMware上のFC5をメインにしている。
そのFC5のカーネルでも、とうとうvmxnetのコンパイルエラーになってしまった。
また、そろそろFC5のサポートが終了するので、安定してきたFC6へ移行するべきだろう。

と、いうことで、vmxnetのコンパイルエラーに対応して、FC6へ移行する準備を行った。

続きを読む

FCKeditor_OnComplete 関数

FCKeditor は、多機能であるため、起動時に若干時間がかかる。
この時にリンクボタンなどを押されると、スクリプトの読込みが中断され、エラーが表示される場合がある。

また、ユーザーインターフェイスとして、準備中であることを表示したい場合もあると思う。

この場合、以下の方法が良いと思う。
(1) FCKeditor起動時に画面をロックする。
(2) FCKeditor起動完了時に画面のロックを解除する。

ここで問題となるのがFCKeditor起動完了の検出だ。

実は、簡単に検出する方法がある。

続きを読む

2.4 の新機能

FCKeditor 2.4 が 1/30 にリリースされました。
このリリースでの大きな変更は、キーボードでの操作性を改善したことでしょう。

fckconfig.js の変更点を抜き出して見ましょう。

FCKConfig.DisableEnterKeyHandler = false ;

キーボードイベントの検出を無効にするか設定できるようです。

FCKConfig.EnterMode = 'p' ;          // p | div | br
FCKConfig.ShiftEnterMode = 'br' ;    // p | div | br
FCKConfig.Keystrokes = [
[ CTRL + 65 /*A*/, true ],
[ CTRL + 67 /*C*/, true ],
[ CTRL + 88 /*X*/, true ],
[ CTRL + 86 /*V*/, 'Paste' ],
[ SHIFT + 45 /*INS*/, 'Paste' ],
[ CTRL + 90 /*Z*/, 'Undo' ],
[ CTRL + 89 /*Y*/, 'Redo' ],
[ CTRL + SHIFT + 90 /*Z*/, 'Redo' ],
[ CTRL + 76 /*L*/, 'Link' ],
[ CTRL + 66 /*B*/, 'Bold' ],
[ CTRL + 73 /*I*/, 'Italic' ],
[ CTRL + 85 /*U*/, 'Underline' ],
[ CTRL + ALT + 83 /*S*/, 'Save' ],
[ CTRL + ALT + 13 /*ENTER*/, 'FitWindow' ],
[ CTRL + 9 /*TAB*/, 'Source' ]
] ;

エンターキーでの動作を、IE・Geckoで統一して設定できるようです。
さらに、ショートカットキーが定義出来るようになっているようです。

もともとドキュメントを入力するためのツールなので、キーボードでの操作性の向上はありがたいですね。

2.4 リリース

FCKeditor の最新バージョン 2.4 がリリースされました。

更新内容はバグフィックスが中心です。その他、エンターキーでの動作を選択できるようになったようです。

さて、実はあきらは英語が不得意ながらバグ報告をしています。
ダウンロードしたファイルの _whatsnew.html を確認すると、

[SF BUG-1592311]

ありました。

対応したとのメールは受け取っていたのですが、ちゃんと更新履歴に記載されていると、やっぱりうれしいものです。

オープンソースには、こんな楽しみもあるのです。

Firefoxの戻るボタン

最近、PerlでのCGI作成の仕事を行っています。
IE と Firefox で動作確認をしているのですが、どうも Firefox の 戻る・進む ボタンでの動きがおかしいのです。

ネットで検索すると、どうやらいわゆるブラウザキャッシュとは別に、履歴のキャッシュを行っているらしいことがわかりました。

高速に 戻る・進む を実行するためらしいです。

が、ログアウトした後に、前画面のキャッシュを表示されるとまずいんじゃないでしょうか?
ログアウトした後に、戻るボタンでログアウト前の画面が表示されてしまいます。
更新を行うと、ちゃんとログインチェックを行い、ログイン画面へ戻ります。
キャッシュを無効化するHTTPのヘッダーが無視されています。

本当に困っています。

結局、「ブラウザの仕様です」と言うしか無いんでしょうか…

※ 2007/01/30 20:50 追記

PHP のヘッダーを参考に対応できました。以下のヘッダーを出力します。

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-chache

no-store がミソのようです。

「これしか出来ない」で良いという考え方

最近、FCKeditorがらみの仕事がぼちぼち入るようになりました。
まだ十分食えるほどではありませんが…

また、Expert技術情報もぼちぼち売れてます。
こちらも十分食えるほどではありませんが…

とりあえず、FCKeditorがらみで収入が発生しています。
このことは、自分の考え方を変えてくれました。

今までは何でも出来る方がチャンスが多いと思っていました。
しかし、現実は違いました。

得意なことが一つあればいいのです。
まあ、需要があることが前提ですが…

FC2ブログで初めてFCKeditorを体験してから、「これは良い!」と思いました。
その日のうちにダウンロードして、英語と格闘しながらテストしました。

そのうち、「簡単な画像調整が出来たらブログで便利だなー」と思って、「ImageAdjustorプラグイン」で実現しました。
JavaScriptで画像処理を行う勉強になりました。

「自分に出来たのだから、情報を公開したらもっと沢山の人がプラグインを作ってくれるかも」と、思って「Expert技術情報」を始めました。
商品としているのは、「何かを手に入れるには必ず何かと交換しなければならない。例えばお金。例えば時間。」というあきらのポリシーのためです。

まあ、正直なところ、あきらとその家族もご飯を食べなければ生きて行けないからです…

とにかく、あれもこれも出来るのは大した事ですが、結局信頼されるのは、「他は出来ませんが、これなら任せてください!」という人(会社)です。
「これはあの人(あの会社)でなければ!」と思ってもらう事が一番良いのではないでしょうか。

たまには、こういったとりとめもない文章も書いてみたくなったりします…
最後まで読んでくださった方、どうもありがとう!

ImageAdjustorアップデート

ImageAdjustorで枠を回転させるのに、中ボタンのクリックを割り当てています。
困ったことに、自動スクロール機能を有効にしていると、自動スクロールのアイコンが表示されてしまいます。

ずっと気になっていたのですが、差し支えないのでしばらく放置していました。

しかし、やっと気付きました。ドキュメントにもイベントが伝播されていることに。
これをカットしてやって、やっと思った通りの動作になりました。

と、言うことで、ImageAdjustorをアップデートしました。

ダウンロード : ImageAdjustor.zip

IEの改行について

FCKeditorで改行をすると、Firefoxの場合、すなおにbrタグを挿入してくれるのだが、IEの場合、pタグが挿入されてしまう。

これは、IEの編集機能の仕様だ。どういうルールでブロック化するかもはっきりしないし、レイアウト上困ってしまう。

これをFirefoxと同じ挙動にするには、IEが編集モードでもonkeydownイベントを検出できることを利用して、Enterが押されたら強制的にbrタグを挿入してonkeydownイベントをキャンセルする。

ひょっとしてFCKeditorで実装済みか?と思ってソースを検索すると…

fckeditor/editor/_source/internals/fck_1_ie.js

...
function Doc_OnKeyDown()
{
var e = FCK.EditorWindow.event ;
switch ( e.keyCode )
{
case 13 :	// ENTER
if ( FCKConfig.UseBROnCarriageReturn && !(e.ctrlKey || e.altKey || e.shiftKey) )
{
Doc_OnKeyDownUndo() ;
// We must ignore it if we are inside a List.
if ( FCK.EditorDocument.queryCommandState( 'InsertOrderedList' ) || FCK.EditorDocument.queryCommandState( 'InsertUnorderedList' ) )
return true ;
// Insert the <BR> (The   must be also inserted to make it work)
FCK.InsertHtml( '<br>&nbsp;' ) ;
// Remove the  
var oRange = FCK.EditorDocument.selection.createRange() ;
oRange.moveStart( 'character', -1 ) ;
oRange.select() ;
FCK.EditorDocument.selection.clear() ;
return false ;
}
break ;
case 8 :	// BACKSPACE
// We must delete a control selection by code and cancels the
// keystroke, otherwise IE will execute the browser's "back" button.
if ( FCKSelection.GetType() == 'Control' )
{
FCKSelection.Delete() ;
return false ;
}
break ;
case 9 :	// TAB
if ( FCKConfig.TabSpaces > 0 && !(e.ctrlKey || e.altKey || e.shiftKey) )
{
Doc_OnKeyDownUndo() ;
FCK.InsertHtml( window.FCKTabHTML ) ;
return false ;
}
break ;
case 90 :	// Z
if ( e.ctrlKey && !(e.altKey || e.shiftKey) )
{
FCKUndo.Undo() ;
return false ;
}
break ;
case 89 :	// Y
if ( e.ctrlKey && !(e.altKey || e.shiftKey) )
{
FCKUndo.Redo() ;
return false ;
}
break ;
}
if ( !( e.keyCode >=16 && e.keyCode <= 18 ) )
Doc_OnKeyDownUndo() ;
return true ;
}
...

実装されていました!しかも設定可能になっています。

と、いうことで、IEの迷惑な仕様を回避するには、以下の設定を追加すればよい。

FCKConfig.UseBROnCarriageReturn = true ; // IE only.