refirio.org
気ままな雑記帳&実験場。好き勝手に色々やっています。
エントリー
タグ「freo」の検索結果は以下のとおりです。
freo Ver 0.1.0
freoに機能を追加しました。詳しい内容は、配布ページの解説を参照してください。加筆した箇所は赤文字で注釈を入れています。
Ver 0.0.2 の次が Ver 0.1.0 ですが、何故 Ver 0.0.3 でないのかと思われるかもしれないので、バージョン情報について補足しておきます。
バージョン情報は3つの数字がピリオドで区切られていますが、
- 1つめの数字
- 大きな仕様変更があった場合、この数値が上がる
- 2つめの数字
- 機能追加した場合、この数値が上がる
- 3つめの数字
- 不具合修正のみの場合、この数値が上がる
というルールにしています。ただし、正式版になるまでは1つめの数字が上がることはありません。
ちなみに、今回のバージョンアップでの主な変更点は以下の2つです。
フィルター機能を実装
ご意見として送っていただいた機能です。思い付いていなかったですが、有効そうなので実装。
簡単にいうと、pixivの閲覧制限機能のようなものです。「年齢制限作品は表示しない」とか「グロテスクな作品は表示しない」など、訪問者が閲覧内容に制限をかけることができます。
既に実装済みだった閲覧制限機能は「管理者が公開範囲を指定する」機能ですが、これは「訪問者が公開範囲を指定する」機能です。
「続きを読む」機能を実装
これはそのうち実装しようと思っていた機能ですが、標準機能として実装しました。
TinyMCEの改ページ機能を利用していますが、TinyMCEが無くても機能するように設計しています。でもまだ調整の必要あり。
freoアルファ版を公開
ようやく公開できました。長かった…。
…と言っても、まだまだ未実装の機能があるし、使い勝手も悪いかもしれません。正式版までに少しずつ改良していきたいと思います。
「完全に一人で作ると変な方向に行ってしまう可能性があるので、細部を作りこむ前にユーザーさんからの意見を参考にしよう」
という意図でアルファ版を公開したのですが、ツールの根本的な方向性に問題があると、意見自体をもらえずダメダメになるかもしれません。そんなことは無いと思いたいですが、公開直後は色々怖かったり。
ちなみに、Web Liberty などからリンクするのはもう少し先にする予定。
freo設置サンプル
freoの設置サンプルとして、標準状態のものと作品管理サンプルのものを設置してみた。
以前にも書きましたが、ギャラリー管理サンプルにはオーストリアで撮った写真を使用しています。また、小説管理サンプルには青空文庫の小説を使用しています。
アルファ版の配布は明日にでも。
freoアルファ版公開へ向けて
設置方法や機能解説のドキュメントを作成中。ただ、いきなり詳細なドキュメントを書くのは大変なので、ひとまず最低限の解説のみです。
また、設置サンプルとして
- 標準状態(日記形式)のもの
- ブログ+ギャラリー管理+小説管理+トップページもブログっぽくないように設定したもの
の2種類を用意するつもり。ギャラリー管理サンプルにはオーストリアで撮った写真を使って、小説管理サンプルには著作権切れになった有名作品を使おうかなぁ…と考え中。
できれば今月中、遅くとも来月中には公開する予定。でも、サンプル作成中に「こんな機能があれば便利かも」とか思いついたら、機能追加作業に戻るかもしれません。(^^;
携帯用ページ
携帯用ページのテンプレートをちまちまと作成中。
いきなり全機能のテンプレートを作成するのは大変なので、とりあえず記事表示ページと管理ページの一部だけ作成しました。アルファ版の段階では、携帯用ページを全部作っても仕様変更によって無駄になる可能性があるし。(^^;
また、携帯でログイン状態をどうやって保持するか悩んでいましたが、今のところ
- ログイン状態の保持にはPHP標準のセッション機能を使う
- ただし
session.use_trans_sid
は0
に設定し、携帯用に「URLにセッションIDを埋め込む」処理はPHPにまかせず、freo側で処理する - 前回のログイン情報を復元する際は、携帯の固体識別情報を利用
という方針で作成しています。
ちなみに session.use_trans_sid
を 1
にするのは、外部にセッションIDが漏れる可能性が高いので却下。(データ送信先が外部サイトのフォームにも、無差別にセッションIDを埋め込む問題がある。url_rewriter.tags
で制御できるけど、レンタルサーバーでは設定できないことが多い。)
でも携帯関連はまだ試行錯誤中。
ベンチマーク
少し前からfreoの動作が重くなったような気がしたので、どの処理が重いのかベンチマークを取ってみた。方法は以下のとおり。
$time1 = microtime();
//計測したい処理
$time2 = microtime();
echo $time2 - $time1;
単純ですが、これで「計測したい処理」の処理時間が計れるので、freo全体の処理時間を調べてみた。(登録データは現状の Favorite Labo のデータをそのまま使用。)
結果は、自分のPC上では0.48秒~0.55秒くらいでした。結構重い…。
ちなみに、記事を10件ほど投稿した以外はデフォルト状態のWordPressは、同じ方法で全体の処理時間を調べると0.27秒~0.30秒くらいでした。
freoには時系列の記事だけで200件以上登録してあるし、プラグインも色々入れてあるので仕方ないのかなぁ…それでも0.5秒は重すぎだなぁ…とか思いつつも、どこが重い処理なのか調べていくと…絵文字の変換処理が原因でした。そして絵文字の変換機能をOFFにすると、0.17秒~0.25秒くらいになりました。
うむむ、数日前に絵文字変換機能をONにしたから重くなったのか…。
絵文字の変換はMobilePictogramConverterを使っていますが、画面へ表示する直前に全データを autoConvert()
メソッドに渡して一気に変換しています。全データを渡すのがダメなのかなぁ…。
また、そのうち色々調べてみるとします。
これまでに作成したプラグイン
まだ本体も完成していないfreoですが、自分用にプラグインをいくつか作成&導入していたりします。なので、これまでに作成したプラグインを書き出してみます。
なお、この雑記ページの右下にRSSリーダーを設置していますが、これは以前にPerlで作成した Web Reader です。
それ以外は、このサイトはすべてfreoの標準機能もしくはプラグインで構成されています。よほどの事でなければ、本体をいじらなくてもプラグインで機能追加できる…はず。
現時点で作成済み&導入済みのプラグインは以下のとおり。自分が欲しいと思った機能から作っています。(^^;
ブックマーク登録
ブックマークを登録できるようになります。
ブックマーク棚卸
以前に以下の記事を読んで「これは確かに有効だなぁ…」と思ったので、自分用に作成したもの。
この雑記ページの右下にRSSリーダーがありますが、その真上に以前のブックマークが表示されます。表示条件は「雑記にアクセスした日と同じ月日にブックマークされた記事があれば、今日登録された記事を除いてすべて表示する」なのですが、1件も表示されない日も結構あります。
ブックマークタグクラウド表示
ブックマークページにタグクラウドを表示できます。ちなみに、「ブックマーク棚卸」と「ブックマークタグクラウド表示」は、「ブックマーク登録」プラグインのためのプラグインです。(プラグインの機能を、さらに別のプラグインで拡張。)
カレンダー表示
この雑記ページの右側に表示されているカレンダーです。
カテゴリー記事数表示
この雑記ページの右側に表示されているカテゴリー一覧の件数です。処理の都合上、標準機能では記事件数を表示できないのでプラグインで対応。このプラグインはデフォルトで導入済みにしておくつもり。
コメント数表示
各記事に表示されているコメントの件数です。処理の都合上、標準機能では記事件数を表示できないのでプラグインで対応。このプラグインはデフォルトで導入済みにしておくつもり。
カウンタ
管理ページからしか閲覧できないようにしていますが、日ごとのアクセス数をカウント&閲覧できます。
メッセージ登録
匿名で一言メッセージを送信できます。まだ作っていませんが、拍手プログラムも同じような仕組みで実現できそうです。
ページ移動
前後の記事へ移動するためのリンクを設置できます。各記事ページで表示されます。
投稿キー
スパム対策。コメント登録フォームなどに設置しています。投稿キー以外にも「なぞなぞで認証」とか面白そう。プログラム自体は、投稿キープラグインの応用で実現できそうです。
タグクラウド表示
この雑記ページの右下に表示されているタグクラウドです。
タスク登録
管理ページからしかアクセスできませんが、自分用にToDoリストを管理するためのプラグインを作成しています。
freo制作状況
標準機能として実装するつもりだった機能を、ようやくひととおり実装できました。
多分。
これまで Web Diary Pro などにもらった要望も、「有用そうだけどプラグインでは実現が難しそう」なものは標準機能で実装しています。(記事ごとの公開範囲設定とか。)
…と言っても結構な量があるので、実装するつもりだったけど忘れていた…という機能があるかもしれません。なので近々再度すべて読み返して、必要に応じて標準機能を調整するとします。
その後、需要が多そうなプラグインと携帯用テンプレートを作成していく予定。両方とも仕組み自体は実装済み。
さらにその後、簡単なマニュアルを作ってからアルファ版として公開し、もし意見をもらえれば参考にして改良していきます。現状は完全に一人で作っているので、恐らく「自分は理解できているけど、初見の人には理解が難しい」部分があったり、「こんな風になっていればもっと良くなったのに」という部分が結構あると思われます。
あと、jQuery(JavaScript)を使って管理画面などの使い勝手を向上したいなぁ…とかも思っていますが、この辺りは後からどうにでもなるので、そのうち考えます。(^^;
今のところ、そんな感じでー。
絵文字
TinyMCEを組み込むと絵文字が利用できなくなっていたのですが、ようやく修正できたのでテスト
大丈夫そうだけど、まだ色々調整するかも。試行錯誤中。
ファイルアップロード機能とか
freoは記事にファイルを掲載できるのですが、掲載方法には二種類あります。
一つは、記事ごとにアップロードできる作品ファイル。記事ごとに
- 作品のファイル(イラストとか写真とかMP3とか)
- 作品のイメージ(イラスト一覧用に使える、トリミングされたミニ画像とか)
- 作品の説明(画像タグのalt属性や、テキストリンクの文字列に使用)
を登録することができ、GDが使える環境なら、必要ならば作品のサムネイルを自動作成することもできます。(作品が画像ファイルの場合のみ)
ちなみに後々、作品の評価機能や投票機能、ミニ画像によるイラスト一覧機能などを実装することを想定しているので、1つの記事に1つの作品しか登録することができません。
既存のシステムだと、pixiv や nicky! でのアップロードの仕組みに近いです。
もう一つは、記事とは別にアップロードし、後で本文に挿入できるファイル。
ファイルはあらかじめ別画面で登録しておき、必要に応じて本文に画像タグなどを挿入できます。挿入できるファイル数に制限は無いので、写真の多い日記ページなどで利用することを想定してます。
既存のシステムだと、WordPress や Movable Type でのアップロードの仕組みに近いです。
後者の仕組みは、WordPress や Movable Type ではページ内に擬似的にウインドウを開いて、そこからファイルをアップロードしたり本文に挿入できたりします。Ajaxフル活用な仕組みだし、擬似ウインドウの制御が面倒そうだし、実装は大変だろうなぁ…と思っていたら、jQuery + ThickBox で超簡単に実装できました。これ以上簡単にできないくらい、簡単に実装できるようにしてくれているので素敵です。(ちなみに、WordPress でも擬似ウインドウは jQuery + ThickBox で作られています。)
ファイルをアップロードするたびに毎回ページ遷移が発生するのは避けたいので、是非とも実装したかったのです。
ファイルアップロード関連の機能は、何だか微調整が多いので決定ではありませんが、今のところそんな感じでー。
ユーティリティ
カテゴリー
タグクラウド
- 33分探偵1
- AMBITIOUS JAPAN!1
- ARIA2
- Air2
- Android2
- BLACK CAT2
- C#1
- Chrome2
- FINAL FANTASY2
- Flash2
- GAE1
- JavaScript18
- Kindle1
- Mac2
- MySQL7
- PHP68
- PayPal1
- Perl3
- PostgreSQL2
- Python1
- Ruby1
- SQLite6
- Switch1
- TinyMCE4
- Windows Media Player1
- bot1
- fragile1
- freo53
- iPhone3
- iTunes1
- levis1
- mod_rewrite2
- node.js1
- sola1
- true tears1
- いつかのメリークリスマス1
- いつか帰るところ1
- けいおん!1
- ここにしか咲かない花3
- とある魔術の禁書目録1
- とらドラ!2
- ひぐらしのなく頃に2
- みなみけ1
- イラスト4
- ガンダム003
- クロノトリガー1
- ザナルカンドにて4
- テラ1
- ニコニコ動画8
- ハゲタカ2
- ピアノ36
- マクロスF3
- ユニットテスト1
- ルパン三世1
- ローズ・オブ・メイ4
- 初音ミク1
- 半分の月がのぼる空1
- 名探偵コナン1
- 戦場のメリークリスマス5
- 携帯10
- 攻殻機動隊1
- 桜2
- 機工魔術士1
- 決行~姫をさがして~1
- 涼宮ハルヒの憂鬱10
- 深愛2
- 灼眼のシャナ4
- 聖剣伝説2
- 蕾3
- 蟲師2
- 返信2
- 野球1
- 鋼の錬金術師1