2009年1月30日金曜日

Word でテキストボックスの行間を狭めたい

090130-004 テキストボックスを使って複数行入力した。行間が広いのでこれを狭めたい。

090130-001

 

上記の文字を選択し、右クリック > 段落

「インデントと行間隔」タブ > 間隔 の「1ページの行数を指定時に文字を行グリッド線に合わせる」のチェックをはずす

「間隔」の値を 1 以下に設定。

090130-002

 

例えば上記の値を 0.75 にするとこれくらいになった。090130-003

 

しかし、なかなか気がつかなかった… (+_+) たまたまテキストボックスを使っていたときにわからなかったけれど、テキストボックスでなくても同様なのか~。

はじめての洋梨「ル・レクチェ」

苦手な果物と言えば「瓜」。味自体も好みでないけれど、胃に入るとキュンとして気持ちが悪くなる。 (+_+) 似た系統としてメロンも得意ではない。胃に入ると変な違和感を感じる。家族からは「もったいない、こんなに甘いのに…」と言われるけれど、体が拒否反応。

好きな果物は、最近では洋梨。小さい頃は洋梨の存在自体知らなかった。高校になって洋梨のジュースをはじめて飲み、そのスッキリとした甘さに引かれた。ちなみに「梨」はよく子どもの頃に食べたけれど、あまり好きではない。

 

メジャーなラ・フランス

ごく最近まで、洋梨と言えば「ラ・フランス」のことだと思っていた。しかし、戴き物でこれまで見たことがない形の洋梨をもらったことをキッカケに、いくつか種類があることを知った。

セイヨウナシ – Wikipedia によると、

ラ・フランス

生産量のおよそ7割を占めており、日本における洋なしの代表格である。

なるほど、「ラ・フランス = 洋梨」と思ってしまうわけだ。

 

貴重なル・レクチェ

これに対してもらったのは「ル・レクチェ」という品種。箱を開けた瞬間、ものすごく良い香りがしてびっくり。(@_@) 形も違い、ラ・フランスよりも縦長。

ル・レクチェ – Wikipedia によると、

元々病気には弱かったこと(黒斑病尻くされ輪紋病等)、長期追熟のための広い保管場所が必要なことなどから、生産は難しい。原産地であるフランスでも現在ほとんど生産されていない。

うーむ、これは期待ができる。 ^^

 

食べ頃

早速食べて見たら、「あれ?それほど味はラ・フランスとは変わらないかな…」と。良く見たら食べ頃ではなかった。 ^^;

ルレクチェ によると、食べ頃は、

「色」 美しいブライトイエローに変化します。
「香り」 甘くて香水のような香りがひろがります。
「じく」 茶色のじくが、しわしわになってきます。
「くび」 実のくびの部分にしわがよってきます。
「硬さ」 実を手に持つと、弾力のある感触を感じます。

食べたとき、「じく」なんて全然しわしわでなかった。

 

待つこと約 1 週間。触ると柔らかさを感じ、「じく」は茶色くしわしわになってきた。

がぶっとひとかみしたら、ラ・フランスのスッキリとした甘さに対して、「どわ~ん、ぼわぁ~ん」と重厚なすごい甘みが口一杯に広がる。洋梨好きにとって、こりゃ、たまらんわ。 ^^

   

2009年1月26日月曜日

入力モードの状態を一瞬で把握 -「IME Watcher reduce」と Firefox のアドオン「IME and DiMENSiON」

文字を入力するとき、「今、日本語を入力できるのか?それとも英語を入力できる状態なのか?」言語バーをチラッと見て判断して実際に入力を開始する。言語バーは、タスクトレイの左横に位置しているので、入力する場所から遠く、一々確認するのは面倒。だから、入力したとこ勝負で、思った通りの入力がされなかったら削除して打ち直すということも結構ある。しかし、その際イラッとする。 (+_+)

090126-012

 

言語バーを右端へ

少しでも見やすい位置に置こうと、言語バーを独立化させ、縦置きにして (言語バーで右クリック > 縦置き)、画面の右端に置くようにした。画面右端には Firefox のスクロールバーが表示されていることが多いが、それをマウスで掴んで移動させることがほとんどないので、ここに置いてもまず邪魔にならない。

 

IME Watcher reduce

090126-007それだけでは満足できなかったので、bb4win_mod を使ったときに、IME Watcher reduce もインストールし、文字を入力する位置に現在の IME の状態を表示するようにした。

 

常に表示する設定

090126-008最近、これを常に表示させるようにしている。

タスクトレイより IME Watcher Reduce を右クリックして、「IME Watche Reduce のプロパティ」を選択。

ウィンドウ設定 > ウィンドウに対する設定 > 表示スタイル において、「常に表示する」にチェック。

以前これを試したとき、文字を入力するたびにモードを表示する枠が動いたのでうざかったけれど、慣れたらこの方が都合がよい。

 

Firefox のアドオン IME and DiMENSiON

しかし、上記の IME Watcher reduce は残念なことに Firefox では動作してくれなかった。(+_+) SKKIEM を使っているので、直接入力の状態になっているとは知らずに Ctrl + J で日本語入力にしようとすると、ダウンロードマネージャが開くことがよくある。そして、イラっと。 (@_@;)

何とかならないかと思っていたら、IME and DiMENSiON を見つけた。このアドオンは、テキストを入力するフィールドにおいて、IME が直接入力の状態であれば「青色」に、

https://addons.mozilla.org/ja/firefox/addon/4687

IME and DiMENSiON :: Firefox Add-ons via kwout

ひらがな等を入力できる状態だとピンクに背景をしてくれる。

 

ロケーションバーにおける動作と Migemo

加えて、

ロケーションバーにフォーカスがあった際には勝手にIMEをオフにします。

(IME and DiMENSiON :: Firefox Add-ons より)

ロケーションバーではスマートキーワードを使って、様々な検索や辞書を引いたりする。しかし、入力するときの最初の文字は英数なので問題ない。

また、ロケーションバーからブックマークや履歴を選択したいとき、日本語で入力することもあるけれど、XUL/Migemo を使っていればローマ字で入力すればいいので、この設定でも使いづらくなることがない。

 

その他

追記 (2010.6.19) :

  • 最近では言語バーの状態を知るのに ImeTray を使っている。
  • IME and DiMENSiON に似た機能を持つ IMEStatus というアドオンもある。

2009年1月25日日曜日

Haskell の read 関数で、文字列から代数的データ型へ変換 - 導出インスタンスを使って

1. 文字列から代数的データ型へ変換したい

Haskell の print 関数で日本語を出力するために、以下のコードを参考にした。

上記には、

「文字列から、代数的データ型へ変換するための、Read クラスの導出インスタンスの使い方」

についても、わかりやすく書かれていた。忘れないうちに、練習しておこう。o(^^)o

 

2. Show クラスの使い方はわかってきた

ところで、Read の反対 Show クラスについては、少しわかるようになった。

しかし、Read についてはチンプカンプンだった。 (+_+)

 

3. Read クラスについて

文字列を、特定の型へ変換する例を、最初に書いたのは以下の記事。

この記事を書いたときは、まだ、

「返り値の型を指定する関数」

について理解してなかった。そういう書き方をするものだ、と疑問を持たずに写経。

後になって、腑に落ちなかったので、少し調べた。

 

read 関数の基本

基本となる要点を復習しておく。

例えば、文字列 “100” を読み込んで、数値 200 と足し合わせる場合、

*Main> (read "100" :: Int) + 200
300

read 関数の返り値の型を Int と指定する必要がある。

read の関数の型は、

read :: Read a => String –> a

(Prelude より)

read 関数の、型変数 a は Read クラスのインスタンスだという制約がある。

Int 型は Read クラスのインスタンスとなので、返り値を Int で型付けてもエラーとならない。

090125-002

上記では、返り値を Int と型を指定した。

別の書き方として、read 関数の型を指定することもできる。

*Main> (read :: String -> Int) "100" + 200
300

 

型推論が行われる場合、型を明示的に書く必要はない

ただし、この場合 + 200 と文脈があるので型推論が行われ、

*Main> read "100" + 200
300

のように返り値の型を明示的に指定しなくても大丈夫。

 

実装について

ちなみに実装は、GHC.Read モジュールの中で instance Read Char と定義されていた。

 

Read, Show のドキュメントを読んでも理解できなかった

しかし、これだけでは The Haskell 98 Language Report

を読んでも相変わらず理解できず… (@_@;)

 

4. Read クラスの導出インスタンスを使う

そこで最初に参考にしたコードを真似て、Read の導出インスタンスを使う方法を試してみる。データは、前回と同じく Person 型の値とする。

以下の内容で UTF-8 で保存。(person.txt)

Person {name = "太郎", age = 20}
Person {name = "次郎", age = 30}

 

フィールドラベルで値を構築

その前に、「フィールドラベルを使って値を構築できるんだっけ?」と疑問を感じたので、調べたら、

ラベルの付いたフィールドをもつ構築子は構成要素が位置ではなく名前で 指定される値を構成するのに使用できる。宣言リストで用いるブレースとは 違い、これらはレイアウトの支配を受けない。

(3.15.2 フィールドラベルを用いた構築 より)

知らなかった。 ^^;

 

導出インスタンスを使って定義

一行ごとに、文字列から Person 型へと変換を行うことにする。person.hs の記述は、以下の通り。

import qualified System.IO.UTF8 as U

data Person = Person {name :: String,
                      age  :: Int} deriving (Read)

instance Show Person where
    show (Person name age) = name ++ " " ++ show age

main = U.getContents >>= U.print . map (read :: String -> Person) . lines

コマンドラインより、

runghc person.hs < person.txt > result.txt

結果は、

[太郎 20,次郎 30]

次は自前で実装する方法を調べよう~。 CCC

追記(2011.11.26) : コンマ区切りのデータを、一度タプルに変換した後、特定の型へ変換する方法は、以下を参照。

2009年1月24日土曜日

Haskell の print関数 (utf8-string) で日本語を出力

1. print 関数で日本語が文字化け

Haskell で print 関数により日本語を出力すると、文字化けする。 (+_+)

例えば、「人」を表わす代数的データ型 Person が、「名前」と「年齢」を持っているとする。Person 型を Show クラスの導出インスタンスとして、Person 型の値を print 関数によって出力させる。ファイルは UTF8 で保存。

(cf. Haskell で日本語表示 - utf8-string を利用して)

import qualified System.IO.UTF8 as U

data Person = Person {name :: String,
                      age  :: Int} deriving Show

main = U.print $ Person "太郎" 20

結果は、

Person {name = "\22826\37070", age = 20}

なぜか名前が変な数字に。 (@_@;)

 

2. System.IO.UTF8 の print 関数は、ユニコード値を出力する

System.IO.UTF8 の説明には、

… This function differs from the System.IO.print in that it preserves any UTF8 encoding of the shown value.

UTF8 の値を保持しているとは、どういうことだろう…?

 

JavaScript で Unicode の値を確認

Javascriptで数値文字参照の値を求める方法」のサイトで、「太郎」と入力したら、結果は、

&#22826;&#37070;

Haskell で出力したときと、同じ数字が返ってきた。

そこで、上記サイトの JavaScript のソースを見たら、charCodeAt メソッド利用により、値が出力されている。

String – MDCcharCodeAt によると、

与えられた インデックスの文字の Unicode の値を示す数を返します。

なるほど、あの数字は Unicode を表わす値だったということか。

念のため、JavaScript で、以下のコードを実行。

var tarou = "太郎"
for (var i=0; i < tarou.length; i++){
    console.log(tarou.charCodeAt(i));
}

結果は、先ほど同じになった。

22826

37070

 

3. Show クラスの導出インスタンスを利用せず、自前で実装

上記のように、Unicode 値ではなくて、print 関数で文字を出力したい。

に書かれているコードでは、printf 関数が使われており、日本語が出力できている。この関数によって日本語が表示されるのか、それとも、導出インスタンスを利用していないから出力されるのだろうか?

試しに Person 型を Show クラスのインスタンスにして、show 関数を実装してみると、

instance Show Person where
    show (Person name age) = name ++ " " ++ show age

結果、日本語が表示された。

太郎 20

ということは、deriving Show が原因だったのかな?

 

4. その他


5. 関連記事

2009年1月19日月曜日

そろそろ慣れたい Google 検索のオプション

090119-036Google 検索をするとき、圧倒的に意識もせず使っているのが AND 検索で、その次によく使うのは site: オプションを付けたサイト内検索。OR 検索よりも使うことが多い。そして、たまに使う site: と inurl: を組み合わせた検索。独自ドメインでないサイト内検索をするときに使う。(cf. Firefox で、検索窓のないサイトに、スマートキーワードを設定する) 最後にまれに使う intitle: 検索で、ページのタイトルを対象にした検索をすることがある。ここまでは覚えているので問題ない。

 

all シリーズ

しかし、覚えきれず定着していない all○○シリーズ検索。

  • allintitle:
  • allinurl:
  • allinanchor:
  • allintext:

(cf. ITmedia エンタープライズ:Google検索の秘訣――第7回 教えてもらったあのサイト、何だっけ?)

 

せっかくなので練習。

例えば `haskell text procesing’ で検索。たくさんの結果が表示される。

allintitle: オプションを使うと、一気に減った。 ^^;

 

わからない点

このブログで普通に「Haskell テキスト処理」で検索すると、いくつかの記事が表示される。また、allintitle: オプションを使って「Haskell 関数」でも記事が抽出される。しかし、allintitle:オプションを使って「haskell テキスト処理」で検索してヒットしない。(+_+) なぜだろ~。片仮名がいけないのかなぁ。。。

 

忘れたら

Google の検索において「表示設定」を、

090119-033

「英語」変更し、

090119-034

 

Advanced Search において、Date, usage… のオプションを開き、Where your keywords… で in the title of the page を選択し、検索したい単語を入力する。

090119-035

2009年1月18日日曜日

痛恨の Google Notebook 開発中止 (+_+)

追記 (2010.6.5) : 未だに Google Notebook を使い続けているけれど、アドオンを無理に利用しなくなった。ノートするときは新規ウィンドウで Google Notebook を開き、Make Link で文章を引用するための形式をカスタマイズ してコピペするようにした。


 

え… (@_@;)

何か悪い冗談かと思いきや、リンク先の開発ブログを見たら、

Starting next week, we plan to stop active development on Google Notebook.

(Official Google Notebook Blog: より)

パタッ(o_ _)o~†

 

欲しかった機能

Google Notebook was announced on May 10, 2006 and made available May 15, 2006.

(Google Notebook – Wikipedia より)

自分のノートブックの一番古いクリッピングを見ると日付は `06/07/04’ 。もう 2 年以上も使っていることになる。内容は GTD に関するものだった。

その後、タグ付け、Google Bookmarks と統合、Google Docs にエクスポートなどゆっくりと進化。最近まで携帯から利用できることを知らなった。 ^^;  Google のサービスの中では検索を除けば、今では Gmail, Blogger についで依存度の高いものになっていた。

Google Notebook はいくつかの点においてシンプルで、追加して欲しかった機能はいろいろとある。例えば、

  • ノート内でもっと階層化したい。
  • ノート自身にタグを付けたい。
  • ノート間でリンクを貼りたい。
  • タグの俯瞰

など。

 

ノートブックの使い道はプライベートグーグル

正直、最初はどういった用途に使うのがいいのかわからず、あまり使っていなかった。しかし、友人や家族でちょっとした内容を共有したいときや、特定のテーマで調べものをするときに頻繁に利用するようになった。

気になることを読んだら「未分類」という名前のノートにメモ。このブログと共にお陰で覚えておくべきことを忘れることができ、いざとなったら検索すればいいやと思えるようになった。普通の Google 検索では、時によりその内容が変化してしまうけれど、自分が一度読んだものであれば、それがある程度コントロールできる。ノートの内容はプライベートな Google 検索となり、一度自分が目にしている分だけ目的のものに早く辿り着くことができるようになった。

「気になること」はどんどんノートを作成して蓄積させている。気になる程度なので、内容はまとまっていないし、クリッピングした時点では何と関連するかわからない。ノート間で内容が重複しようが構わずメモ。しかしこれが結構重要で、後でノートを検索するとき、思ってもいない文脈でひょっこり顔を出してくれることがあり、突然つながりを見出せることも。なぜなら、ある程度ノートという形でまとめようと試みているので「気になるなり」の文脈ができており、他の情報と併せて見たときに関連付けやすく、情報がお互いに引き寄せられることがあるからだ。セレンディピティのツールとしても役に立ってくれている。だから、Google Bookmarks とノートブックが統合されたときには、Google が個人の知識の構造化にも関心があり、そういった方面にも力を入れていくのだろうと期待していた。

 

クリッピングする意味

Google ノートブックに類似したサービスとして、クリッピングというと最近では Tumblr を連想する。クリッピングするということは要点を抽出することであり、情報をなるべく頭の中に残すために情報をスリム化することだ。また、その能動的な作業により、個々の情報へより注意が向けられ、後の再生・再認率を上げていると思う。自分が理解できる言葉をクリッピングしているというのも大きい。Tumblr と違い、Google ノートブックでは後で役に立つだろうと考えるものに絞り、また、時には要点だけではなく、まるごと保存することもある。

 

代替は?

Evernote

さて、サービスとしてはまだ存続するようだけれど、開発がストップしてしまったものを使うのは心許無い。突然、使えなくなってしまったらどうしよう…。 (+_+) 今から代替を考えておかねば。

有名所としては、最近よく見かける Evernote 。しかし、無料では月に 40 MB の制限がある。

自分がどれくらい容量を使うのかわからない。間違いなくそんなに今は使っていないと思うけれど、イメージがたくさん含まれている場合、上限を気にしなくてはいけなくなるかも。 (@_@;) 上限を気にしながらのクリッピングは心理的にどうしても避けたい。

しかし、これは気になる。

Evernote is working on a Google Notebook importer. We will have it up and running soon. Tell all your GN-using friends.

(Twitter / Evernote: Evernote is working on a G ... より, via Google Notebook廃止の動きを受け、 Google Notebookのインポート機能を開発中! )

 

 

ZOHO Notebook

ZOHO Notebook はとてもおもしろかった。見た目シンプルな Google Notebook に対して、高機能な ZOHO という感じ。アカウントを登録するとき、Google のアカウントを利用できるところもいい。ただし、検索をすることができないようなので今のところ代替にはならない。友だちとメモを共有するのにはいいかも。

追記 (2009.1.20) : Zoho Notebook:拡張機能 を読むと興味深い。欲しかったノート間のリンクもお手軽にできそうだし、録音まで簡単にできるとはすごい。

 

やっぱりショック

それにしても、Google ノートブックのようなメジャーなサービスが開発中止になるとは思ってもみなかった。どこかで「Google なら大丈夫」という信頼を抱いていたからだ。

という記事を読んでも、「たまにはそれくらいのことはあるでしょ。」くらいに思っていた。なぜなら、あまりにも無償でいろいろなサービスの恩恵に与っているので、多少のことは気にならなかったからだ。しかし、今後の進化を一番期待していたノートブックが開発中止になってしまうのは結構ショックだった。

Google、Notebookやカタログ検索など6サービスを整理 | ネット | マイコミジャーナル によると、

プロジェクト停止の明確な理由は示されていないが、公式ブログでは代わりとしてSearchWiki、Docsのノート機能、 Gmailのタスク機能、Google Bookmarksなどの利用を勧めており、重複の解消である可能性が高い。

残念ながら、どれも代わりにはならない。もし、Docs に専用のプラグインができ、クリッピングした単位で自由に内容を動かせ、Google Bookmarks とも連動してくれるなら、めちゃうれしいけれど。

 

最後に

いろんなサービスに自分が保持している情報を一括で検索してくれるインターフェイスが欲しい! ついでなら、自分の脳みその中身も検索対象にしたいくらい。 ^^;

2009年1月16日金曜日

Inkscape でパターンをオブジェクトに適用

前回、「Inkscape でストライプのメニューを描く」において、ストライプ模様を描くとき手動で描いた。今回は、特定のオブジェクトをパターンとして登録し、そのパターンをオブジェクトに適用する方法で描く。

 

パターンの作成

光が当っているところを表現した白のグラデーションを配置したところまでは前回と同じ。

090116-025

まず、ストライプのパターンの元になるオブジェクトを描く。ここでは斜めの線を一つだけ描いた。

090116-023

上記のオブジェクトを選択しておき、メニューより、「Object > Pattern > Object to Pattern」を選択。

 

パターンの適用

次に、ピンク色のオブジェクトを複製 (Ctrl + D)。

090116-026

最前面に位置した上記オブジェクトを選択しておき、メニューより「Object > Fill and Stroke」。Fill タブにおいて Patten を選択。 Pattern fill セレクトボックスでは、先ほど作成したパターンを指定する。

090116-027

 

以下がパターンを適用した結果。

090116-028

後の操作は前回と同じ。

 

パターンの変形

パターンの位置や大きさ、角度を変更したい場合は、editpath パスを編集するためのツールでパターンを適用したオブジェクトを選択し、表示されたハンドルを移動させる。

090116-029

移動後。

090116-031

Inkscape で文字の大きさ・位置を変更

文字の操作の中で位置の変更はよく忘れる。 (+_+)

以下、最初に select 「選択ツール」が選択されているとする。

 

拡大・縮小

文字を選択した後、Alt + > または < 。

090116-019

 

文字全体の間隔を広げる・狭める

文字をダブルクリックして text 文字ツールに切り替え、文字を編集。

Alt + > または < 。

090116-021

 

各文字ごとに位置を変更

Alt + ← ↑ → ↓

090116-022

 

参考

Inkscape から OpenOffice Draw または Word へ

Inkscape で作成したデータを他のアプリで利用するとき、せっかくなのでベクタ形式で利用したい。

 

Inkscape から OpenOffice へ

Inkscape で保存するときに、OpenDocument drawing (.odg) を選択する。ただし、日本語のファイル名は文字化けをした。また、保存先が日本語含むフォルダだと保存できなかったので、例えば c: の直下を保存先とした。

 

090116-017
OpenOffice Draw で開いた後、画像を右クリック > グループ解除 で要素を変更することができる。

 

ところで、OpenDocument – Wikipedia によると、

XMLをベースとしたオフィススイート用のファイルフォーマットである。

… ISO/IEC 26300 として標準規格に認定されている。…

例えば、Microsoft Officeで作成したファイルは、未来永劫にわたってMicrosoft Officeを使用し続けられる保証がない以上、やがて活用することが困難になる状況も想定される。そのため、特定ベンダに独占されないオープンなファイルフォーマット(オープンフォーマット)の要求がおきた。

 

Inkscape からWord へ

EPSイメージファイルはMSOfficeの標準インストールで使用できる一般的なフォーマットです

(activecell epsファイルをOfficeで使用する時の注意 より、via Wordに図を貼り付ける –OKWave)

上記より Inkscape で保存するときに、Encapsulated Postscript (*.eps) を選択する。

コピー ~ 090116-017

Word で開いた後、画像で右クリック > 図の編集 を選択で個々の要素を変更できる。

 

ところで、Encapsulated PostScript – Wikipedia によると、

PostScriptをベースとし、バウンディングボックスプレビュー画像等の他のメディアに埋め込む際に必要な情報を補った画像ファイルフォーマット

ベクトルデータとビットマップデータの両方を含むことができ、ベクトルデータのみを含むEPSファイルは、画像を拡大しても画質が落ちることはない

 

その他

Inkscape でぼかした (blur) 要素は OpenOffice Draw, Word 共に再現されなかった。

2009年1月15日木曜日

Drupal の Book モジュールによるメニューのカスタマイズ

要件

構造

サイトの構造が以下のようであるとする。

  • トップページ
    • A
      • a1
      • b2
    • B
      • b1
    • C
      • c1
 
レイアウト

レイアウトは、以下のような小規模なサイトに見られる典型的な形を想定。メニューに「A, B, C」の項目があり、それぞれに詳細なコンテンツを配置。

以下では、メニュー A が選択されている状態で、左のサイドバーには A に関する詳細な内容 a1, a2 が表示されている。

090115-007

 

Book モジュールを利用

管理セクション › サイトの構築 > モジュール」の「コア - 任意」の 「Book」 モジュールを有効にする。

090115-008

 

ブロックの設定

左のサイドバーに A, B, C の内容詳細 a1, a2,… に対するリンクが表示されるようにする。

まず「管理セクション › サイトの構築 > ブロック」において、「無効」になっている「ブックナビゲーション」のセレクトボックスにおいて「左サイドバー」を選択し、ブロックの保存ボタンを押す。

090115-009

ただし、このままでは全てのページにおいてブックナビゲーションが表示されてしまう。

これを変更するために、上図のブックナビゲーションの「設定」をクリック。

「ブロック固有の設定」の「ブックナビゲーションブロックの表示」において、「ブックページにのみブロックを表示」のラジオボタンにチェックをつける。

090115-012

 

コンテンツの作成

「コンテンツの作成」において「Book Page」を選択。「A, B, C」のコンテンツの作成時には、「ブックアウトライン」の「ブック」のセレクトボックスにおいて「<新しいブックを作成>」を選択する。a1, a2… などの内容詳細のコンテンツの作成時には、それぞれ親となる A, B, C のコンテンツを選択。「ウェイト」セレクトボックスは表示される順序を表わす。

090115-010

 

メニューの作成

画面上部のメニューは、「管理セクション › サイトの構築 › メニュー > プライマリリンク」で作成する。先ほど作成した A, B, C のコンテンツの URL のうち、

node/数字

の部分を控えておき、プライマリリンクの作成時のパスに設定する。

090115-011

 

完成~ ^^

090115-013

2009年1月14日水曜日

Meadow (Emacs) で php-mode - ラブラリを Dropbox へ配置

インストールと設定

SourceForge.net: PHP mode for Emacs からダウンロードして解凍。Installation - PHP Mode Manual を参考にした。
  1. Emacs Lisp のライブラリに php-mode.el を置く。
  2. .emacs に以下を追記。
(load "php-mode")
(add-to-list 'auto-mode-alist
     '("\\.php[34]?\\'\\|\\.phtml\\'" . php-mode))


表示が次のように変わる。

g2413

 

Dropbox に Emacs のライブラリを置く

この際いい機会なので、Emacs Lisp のライブラリを Dropbox フォルダ以下に置くことにした。 (cf. Dropbox で Web のマーカー情報もポータブルに)

My Documents\My Dropbox 以下に eslips フォルダを作成。そこに上記で解凍した php-mode.el を置いた。
~/.emacs にライブラリのフォルダを認識させるために、

(add-to-list 'load-path "~/My Documents/My Dropbox/elisp")

と記述。

 

関数のヘルプ

Emacs Lisp について知らないので、いつも設定は呪文のように唱えている。 (+_+) 折角なので調べておこう。

まず、関数についてヘルプを表示したいときは、関数 add-to-list の上にポイントを移動して、

Ctrl + h f

とキーを入力すると、エコー領域に次のように表示されるので、RET
Describe function (default add-to-list): 
add-to-list  関数のヘルプには、

(add-to-list list-var element &optional append compare-fn)
Add element to the value of list-var if it isn't there yet.

php-mode.el をロードするための関数は字義通りだろう。

(load "php-mode")

 

変数のヘルプ

上記のように add-to-list 関数の第1引数はリストのようだ。試しに何も書かれていない行で load-path と書き、行末で C-c C-e と入力。エコー領域に emacs lisp のライブラリであるディレクトリの一覧が表示された。このとき、接頭辞のアポストロフィをとって評価すること。

Emacs Lisp プログラミング: リスト処理 によると、

リストの直前に付けた1つのアポストロフィ'クオート(quote)と呼ぶ。リストの直前にこれを付けると、 そのリストに関しては何もせずに字面どおりに扱うことをLispに指示する。 リストの直前にクオートがない場合には、リストの先頭要素を特別扱いし、コンピュータが従うべきコマンドとなる(Lispでは、これらのコマンドを関数(functions)と呼ぶ)。

変数のヘルプを見たいときは、変数上で、

C-h v

と入力すると、エコー領域に以下のように表示されるので、RET

Describe variable (default load-path): 

 

正規表現

.php ファイルを開いたときに、php-mode なるように、
(add-to-list 'auto-mode-alist
     '("\\.php[34]?\\'\\|\\.phtml\\'" . php-mode))
Installation - PHP Mode Manual には、ちょうど編集対象にしたい Drupal における拡張子の例も書かれていたので追加。 ^^
(add-to-list 'auto-mode-alist '("\\.module\\'" . php-mode))
(add-to-list 'auto-mode-alist '("\\.inc\\'" . php-mode))

 

ちなみに、文字列として指定しているバックスラッシュについては、

Emacsでは、最初のバックスラッシュはそれに続くバックスラッシュをクオートし、 2番目のバックスラッシュは、それに続く括弧や縦棒が特別な文字であることを表す。

正規表現のここのところよく忘れる… (+_+) そういえば、Python でも何かややこしかったなぁ。(cf. Python におけるバックスラッシュ (\) と row stirng と正規表現)

Google デスクトップのインデックスの内容を完全に削除して再作成したら調子いいかも?

たまに、Google Desktop の調子が悪くなる。そのため、タスクトレイにある Google のアイコンからインデックスの再作成をすることがしばしば。少し前に、インデックスの作成される場所を変更した。

 

Google Deskop が影響?

Google Desktop が原因か今一よくわからないけれど、まめ File 5 の動作に影響を与えているように思えることがある。新しくタブを開こうとすると極端に動作が遅くなり、Google Desktop を終了させるとスイスイ動作することがあった。インデックスは作成しなおしたばかりだったけれど、インデックスが作成されるフォルダの内容を全てゴミ箱へ入れ、再度インデックスを作成。

 

結果、まめ File 5 の動作が元に戻った。また、以前 explorer.exe が頻繁に暴走し、やむなくbb4win へ乗り換えていたけれど、試しに explorer.exe に戻したら問題なくなっている。加えて、起動できなくなっていた UltraExplorer が起動するようになった。

追記 (2009.3.20) : 原因は設定ファイルが壊れたためだったようだ。 (cf. また UltraExplorer が起動しなくなった)

暴走するようになってからの間に Windows Update や ATI Catalyst をアップデートしているので、本当の原因はわからないけれど、Google Desktop が影響を与えていたのだろうか?

2009年1月12日月曜日

まめ File 5 を UltraExplorer の代わりに使う

UltraExplorer を使っていたが、一時期なぜか起動できなくなってしまった。その代わりのファイラとして まめ File 5 を使うことに。非常に機能が多くて、どこに何があるのか、また何ができるのかわかりずらく、操作方法もやや独自なところがあったのでなかなか慣れなかった。

それにしても、

無論、従来通り視覚障碍者の方にも使用できるように気をつけて作成しています。

(ソフトウェア より)

との説明を読み、こんなメジャーなソフトがそういった点に配慮がされていることに驚いた。「無論」と書かれているのに加えて、「障がい者」の「がい」の字に「」が使われている点にもこだわりを感じる。

 

設定の方針

ツールが異なれば、それを代用するのには限界がある。また、代用を目的とすることによって、それ本来の良さが失われることも往々にしてあるけれど、それはさておき、UltraExplorer の代替となるように設定していくことに。

 

全体の表示

まずは全体の表示をカスタマイズ。メニュー「表示」より、

  • 拡張ツールバー
    • フォルダクリップバー
  • 登録フォルダバー
    • タブ管理
    • 現在のフォルダ
    • 最近使ったフォルダ

にチェックを入れた。

090112-002

フォルダクリップバー」は、ヘルプによると、

一時的にジャンプするフォルダをためておくことができます

とあったが、自分の場合、これによく使うフォルダを登録することにした。普通は「設定 > 登録フォルダ設定」を利用するようだ。

便利だったのは「タブ管理」。タブをグループ化して保存しておくことができることに加えて、右クリックから同時に複数のフォルダを開くことができるのがいい。 ^^

 

リスト表示

詳細表示にしたとき、一行置きに背景の色を変えてほしかったので、「オプション > リスト表示」の「簡易詳細…」の「一行選択を使用」「交互背景グリッド」をチェック。

090112-001

 

また、複数のファイルを対象に操作をするとき、チェックボックスで選択できるようにするため、メニューより「設定 > チェックマークを使用する」を選択。

 

フィルタ

デフォルトで「リスト検索」のためのフィールドが画面上部に表示されている。しかし、これはあくまでも検索されたファイルがある位置へジャンプするだけで、HandySelector のようにフィルタリングされるわけではない。フィルタリングしたい場合は、ウィンドウ右下の「表示条件」をダブルクリック。

ダイアログが表示されるので、「ファイルをワイルドカードで指定」で指定する。

メニューからだと「表示 > 表示ファイルの指定」。

この操作はよく使うので、「設定 > オプション > キー割り当て」より、以下のようなショートカットキーを割当てておいた。

090112-002

「…履歴メニューを表示(一時指定)」も設定しておくと便利かも。

 

コマンドプロンプト

設定 > 上級者メニューへ切り替え 」の後、「ツール > コマンドプロンプト」が利用できるようになる。これもショートカットキーを割り当てておくと便利。(その他のシステムコマンド)

 

分離したウィンドウが動きがおかしい

上記「タブ管理」のペインを分離、独立化させると、なぜかそのウィンドウの移動のとき極端にもたついた。元に戻すには、分離したウィンドウの上部をダブルクリックすることにより対応。