スタッフブログ
思考を整理する手法として、数年前からマインドマップが流行っております。
このスタッフブログでも、過去に何度か紹介しております。
しかし、マインドマップは真面目にやると実はルールが細かく、とっつきにくい部分があります。
普段からアウトラインプロセッサ(Story EditorやNami2000など)は使っていたので、こういうツリー上のメモを平面に展開できる程度があればなーと思っていました。
そこでFrieve Editorというソフトがあります。
これはアイデアプロセッサの一種で(アウトラインプロセッサもアイデアプロセッサの一種ですが)、KJ法と呼ばれる手法に若干近い感じで、カードを並べてリンクさせることによって整理するツールです。
このような図を簡単に作ることができます。
各カードには個別に長文も書けるので、詳しい内容を書きたい場合にもすぐ書くことができます。
主な使い方としては、
・ENTER:兄弟ノードを伸ばす
・Insert:子ノードを伸ばす
・カーソルキー:カード間移動(リンクの関係性に左右されない)
・PageUp/PageDown:距離拡大/縮小
となります。マウスでポチポチ操作してもいいですが、キーボードでさくさく入力したほうが快適です。
マインドマップ的な使い方もできますが、普通のメモ用途に使ったり、資料作成に使ったりと、様々な使い方に対応できると思います。
基本的には、あまり深く考えずに書いていくのがいいと思います。
自動整理をONにしておくとグリグリ動いて面白いですが、スムーズに動かすにはそれなりにスペックが必要になります。
また、Frieve Editorをプレゼンに使うこともできます。先日のCakePHP勉強会で、実際にFrieve Editorを使ってプレゼンをした方もいるようです。
他の勉強会とかでも、マインドマップ系のツールを使ってプレゼンをする人を最近は見かけるようになりました。話の流れが見えるので使いやすいようです。
ちなみにこの作者様は、他に音楽関係の高機能なソフトを公開しており、これらも非常に便利なので、音楽関係に興味のある方は是非試してみてください。
今日は、つい先日発表されたiモードブラウザ2.0について簡単に書かせて頂こうと思います。
既に色々な場所で書かれてはいますが、今年の夏モデルからDoCoMo端末に搭載されているiモードブラウザの仕様が大きく変わります。
今までのiモードブラウザでは、COOKIEが使えないためにセッションを維持するためにはGET/POST変数として引き渡す必要がありました。
また、外部CSSに対応していないためにスタイル指定は全てインラインで記入する必要があるなど、色々と制限がありました。
しかし、夏モデル以降ではCOOKIEや外部CSSに対応するだけでなく、今までの携帯ブラウザでは想定できなかったJavaScriptにも対応するそうです。
これは非常にありがたいことなのですが、既に携帯サイトを作成している場合には状況が変わります。
一つは、セッションIDが漏洩するリスクが発生します。
前述のように、DoCoMo端末でセッションを利用する場合はセッションIDをGET/POST変数として引き渡していました。
ただし、iモードブラウザはリファラを送信しない仕様であったため、外部サイトにセッションIDが漏れることも早々ありませんでした。
しかし、夏モデルからはリファラも送信されるようになるため、今までのようにURLにセッションIDが含まれていた場合は外部サイトに漏洩してしまいます。
もう一つは、外部CSSに対応していないことを逆手に取ったDoCoMo専用ハックが利用できなくなります。
これからの携帯サイト開発は、これらのデメリットも踏まえつつ最適化していくことが重要になりそうです
朝のワイドショーを見るとも無しに見ていると今回のインフルエンザの特徴として「それほど熱は高く出ない。熱が出ていない人もいるらしい」ということを知り、にわかに不安に。。
念のため、病院へ行き検査を受けました。長い綿棒のようなもので両鼻の奥をこすりつけ待つこと10分程度、結果は陰性でした。おそらく通常のインフルエンザ検査をしてそこで陽性になれば新型インフルエンザの検査へとなるのでしょうが一次検査でパスしたようです。
私が行った病院では990円でした。時間もかからないしお安いので熱があり、心配な方は行かれたらいかがでしょう?(と、あまり混んでもそれはそれで大変なのですが)。
それとは別に今週の月曜日にRYUSでも新型インフルエンザに関する行動指針を決めました。また、マスクや消毒薬も品薄ながらなんとか人数分備えました。弱毒性ではありますが、人から人へ移る間に強毒性にかわるやもしれないかなと思うので、なるべく流行らせないようにできるだけの努力はしたいと思っています。
・Linuxコンソーシアム第11回通常総会
「通常総会」なんてついてるので「なにか特定の人しか参加できないの?」とか思ってしまいますが、実は申し込みさえすれば誰でも参加できるイベントです。
このイベントの第2部で「使いやすいCMSとは?」というテーマで1時間半のパネルディスカッションが行われます。
参加パネリストは
・私、株式会社RYUS 天野龍司 XOOPS
・スタイルチューン株式会社 菅野 史樹さん TYPO3
・株式会社ダイバーシティ 田原 雅浩さん MODx
・ez Systems Japan サニエ エリックさん eZ Publish
・国立情報学研究所 ネットコモンズプロジェクト 舛川 竜治さん Net Commons
個人的に楽しみなのは、同じXOOPS2が元になっていながら、別々の道を歩んだ、XOOPSとNetCommonsの対決(^^;
XOOPSは私「龍司」が話をします。対するNetCommonsは「竜治」さんが話をします。
りゅうじ VS りゅうじ
で、「りゅうじ対決だっ」と勝手に思ってます(^^;
他にも最近よく耳にする「OpenID」や「クラウド」についての講演もありますので、是非みなさん参加してくださいね。
今回のUbuntu体験記はベクターグラフィックソフトのInkscapeを使ってみようと思います。
さて、Inkscapeを使う前に今回から環境が変わりました。
ハードウェアはMac miniでそこにVM ware Fusionをインストール、そしてVM ware上にUbuntu 9.04をインストールしたものが作業環境です。
VM ware Fusionのインストールは問題なく終了。実はこの手の仮想化ソフトを使うのは始めてだったのですが、特に難しい事もなくUbuntu 9.04のインストールもできました。VN wareは使ってみると、思ったよりもに簡単に使うことができました。
Inkscapeですが、Ubuntuを普通にインストールしたでけではInkscapeはインストールされていないので、画面左上の「アプリケーション」というメニューから「追加と削除」を選択すると、インストールできるアプリケーションの一覧が表示されます。
そのウインドウの左ペインからグラフィックを選択すると、グラフィック系のアプリケーションだけ右ペインに表示されますので、そこからInkscapeを選択してインストール開始途中に一回ログイン時に使用するパスワードを聞かれますが、それ以外は特に操作する事もなくインストールは進行します。
インストール作業が終了したので早速、Inkscape起動。
何事もなかったように日本語化されていました。ちょっと感動。
軽く、パスを描いてみたり、丸、四角、五芒星などを描いたりツールを試してみました。
そして、気になっていたファイルのインポート&エクスポート関係をみてみます。
Adobe Illustrator のファイルは9.0以上のバージョンのものならインポートできるようです。他にはPDFやSVGなども対応していました。
エクポートというか保存ファイル形式は基本はSVGのようで、他にIllustrator 8.0形式やeps形式でも保存できるようでした。
普段Illustratorを使っているのですが、Illustratorで出力する時にもバージョンの指定ができるので、Illustratorや他のソフトとの連携などするときも問題ないでしょう。
肝心のグラフィックソフトとしての使い心地などは次回に書きたいと思います。
openpearのライブラリを紹介するのも今回で10回目になりました.
今回は,Net_Socket_Tiarra ( http://openpear.org/package/Net_Socket_Tiarra ) について紹介します.
Net_Scoket_Tiarraは,tiarra ( http://www.clovery.jp/tiarra/ ) という IRCゲートウェイから,ソケットを利用しての発言を実現するライブラリです.
IRC上に,定期的に情報を流したり,特定の条件に応じて自動的に発言する事などができるようになります.
Net_Socket_Tiarraを使うには,まずtiarraの設定を変更する必要があります.
tiarra.conf上にある,
# control-socket-name: user
という部分を
control-socket-name: ryus
のような感じで,コメントアウトします.
さらに,tiarra.confの下の方に
+ System::SendMessage {
}
を追加して,tiarraを再起動すれば,tiarra側の準備は完了です.
ちなみに,control-socket-nameの変更は,System::Reloadでは反映されないので,リロードではなく,再起動する必要があります.
あとは,tiarraが動いているマシンから,以下のようなコードを実行すれば,tiarraを通してIRCで発言できます.
<?php
require_once 'Net/Socket/Tiarra.php';
try {
$tiarra = new Net_Socket_Tiarra('ryus');
$tiarra->message('#channel@server', 'test message');
} catch (Exception $e) {
var_dump($e->getMessage());
}
?>
自分は,ロイターのニュースや,帝国データバンクの倒産情報などを巡回してIRC上にタイトルとリンクを出すようにしてあります.
常に最新の情報が欲しい場合にIRCに出しておいて見えるようにしておくと,便利なので,やってみる事をおすすめします.
タグクラウドを出力するライブラリはいろいろありますが、Zend FrameworkにもZend_Tag_Cloudというものが比較的最近実装されたようです。
使い方は簡単です。
<?php
require_once('Zend/Tag/Cloud.php');
$cloud = new Zend_Tag_Cloud(array(
'tags' => array(
array(
'title' => 'xoops',
'weight' => 50,
'params' => array('url' => '/tag/xoops')
),
array(
'title' => 'php',
'weight' => 5,
'params' => array('url' => '/tag/php')
),
)
));
?>
<html>
<body>
<?php echo $cloud ?>
</body>
</html>
デフォルトだと、ulにZend_Tag_Cloudという名前のクラス名が割り当てられるので、変更したい場合は、
<?php
require_once('Zend/Tag/Cloud.php');
$cloud = new Zend_Tag_Cloud(array(
'tags' => array(
array(
'title' => 'xoops',
'weight' => 50,
'params' => array('url' => '/tag/xoops')
),
array(
'title' => 'php',
'weight' => 5,
'params' => array('url' => '/tag/php')
),
)
));
$cloud->getCloudDecorator()->setHtmlTags(array('ul'=>array('class'=>'hoge')));
?>
<html>
<body>
<?php echo $cloud ?>
</body>
</html>
タグクラウドはそんなに頻繁に実装するものではないので、こういうライブラリを積極的に使うと便利です。
ちなみにPEARにもHTML_TagCloudという同等のライブラリが存在するので、好みで利用してください。
こんにちわ。なおとです。
このブログ(D3ブログモジュール)に記事を書くときは、基本的にhtmlを直接書く機能を使って書いています。 そのため、phpやjavascriptのコードを掲載するときには、適宜文字を実体参照で書く必要があります。
そのための方法として、以前はこんなやり方をしていました。
- 記事として、「<>&"'」の変換をしたい部分だけ書く
- オプション「HTMLを有効にする」のチェックを外す
- 「プレビュー」ボタンを押す
- プレビュー表示部分を選択して、選択した部分のソースを表示する(ブラウザFirefoxの機能)
- 必要なところをコピーしてソース表示を閉じる
- 元の記事フォームに貼り付ける
- オプション「HTMLを有効にする」のチェックを入れる
- 記事を仕上げる
- 送信する
この方法はまったくダメとは言いませんが、もっとうまいやり方があるはずです。 いやあるはずということはなくて、実際にもっといい方法を知っているのに、やっていませんでした。 こういった無意味な労力を割くことは、自分としては「悪」と考えています。
そこでこれをブックマークレットで解決することにしました。 検索して調べてみるといくつか高機能なものもあるようでしたが、私は次の記事にあるシンプルなものを使うことにしました。
テキストエリア内の選択文字列を簡単に実体参照化するブックマークレット - エブログ
ただ、'(シングルクォーテーション)を変換できていないようでしたので、その分だけ修正したものを使っています。
<a href="java script:(function(){var%20d=document;function%20r(s){%20return%20s.replace(/&/g,'&amp;').replace(/([<>\"\'])/g,function(m0,m1){return%20{'<':'&lt;','>':'&gt;','\"':'&quot;','\'':'&#39;'}[m1];});}%20if(d.selection){d.selection.createRange().text%20=%20r(d.selection.createRange().text);}else{var%20ta=d.getElementsByTagName('TEXTAREA');%20for(var%20i=0;i<ta.length;i++){if(ta[i].value){var%20s=ta[i].selectionStart;var%20e=ta[i].selectionEnd;var%20v=ta[i].value;var%20t=v.slice(s,e);if(t){ta[i].value=v.slice(0,s)+r(t)+v.slice(e);}}}}})();">選択範囲をhtmlescape</a>
今日は、いつもhaltが書いている「openpearの旅」を自分も書いてみようと思います。
紹介するのは、yudoufu氏が開発しているText_Pictogram_Mobile( http://openpear.org/package/Text_Pictogram_Mobile )です。
日本では、モバイルサイトにとって絵文字はもはや欠かすことが出来ません。
サイトに色々な表現を与えることが出来ますし、データ量も画像より遙かに少なくてすみます。
しかし、この絵文字を独自で実装しようとすると、いくつもの面倒な問題に直面してしまいます。
例えば、キャリア間の相互変換や、絵文字を表現するための方法、更に携帯電話から投稿された絵文字の取り扱いなど、あれこれ調べつつ実装していくことになると思います。
Text_Pictogram_Mobileは、これらの面倒な処理を自分で実装しなくても良いライブラリです。
主な機能としては、
- 入力された絵文字を内部コード(文字列)に変換
- 内部コードをバイナリ形式の絵文字に変換
- 絵文字番号を元にして、絵文字を取得
XOOPS Cube Legacyのユーザモジュールにメール一括配信をする「メールジョブ管理」というメニューがあります。
このメールジョブ管理からメール(PM送信も可能)を送るときに、本文に特殊な記述をすることで、送信先ユーザのアカウント名やメールアドレスなどを本文にうめこむことが可能です。
現在(XOOPS Cube Legacy 2.1.6a)で使えるようになってるのは下記の3つです。
タグ | 説明 |
---|---|
{X_UID} | 送信先ユーザのユーザID |
{X_UNAME} | 送信先ユーザのユーザ名(アカウント名) |
{X_UEMAIL} | 送信先ユーザのメールアドレス |
もし他にも一括配信メールにいろいろ埋め込みたい場合は、preloadでこれを拡張できるようになっています。
というわけで、埋め込みタグを拡張するpreloadのサンプルを作ってみました。
サンプルで追加したタグは次の2つです
タグ | 説明 |
---|---|
{X_NAME} | 送信先ユーザの「本名(記入されてなければユーザ名)」 |
{X_TODAY} | 今日の日付 |
このファイル内で実際に置き換えを実行しているのは、下記の部分になりますので、ここをお好みにあわせて変更していただければ、いくらでも好きなタグを定義できます。
/** * * @param $t_body string メール本文 * @param $to_user XoopsUser 送り先 * @param $from_user XoopsUser 送信者 * @return void */ function _replace(& $string, &$to_user, &$from_user) { /* * ここに置き換えを追加すれば、本文もタイトルでも置き換えタグを拡張できます。 */ $to_user_name = $to_user->get('name'); $to_user_name = empty($to_user_name) ? $to_user->get('uname') : $to_user_name; $string = str_replace('{X_NAME}', $to_user_name, $string); $string = str_replace('{X_TODAY}', formatTimestamp(time(), 's', $to_user->get('timezone_offset')), $string); }
メールの件名も置き換えたかったんですが、こちらはXOOPS Cube Legacy2.1.6aでは、デリゲートの宣言はあったのですが、実際には呼び出されてなかったため機能しませんでした。
XOOPS Cube オフィシャルサイト日本語フォーラムに要望だしておいたので、もし採用されれば使えるようになります。(もちろん自力で直してしまっても使えるようになります)