ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

YakiBiki

YakiBiki-0.9.1をリリース、Glamenv-Septzen再開

某方面より報告されたCSRF, XSSを中心とした脆弱性問題に対処した YakiBiki-0.9.1 をリリースし、それに伴いGlamenv-Septzen本家サイトも再開致しました。http://www.glamenv-septzen.net/view/3976月から1ヶ月近く、訪問者/RSS購読者/YakiBiki利用者の皆様…

YakiBiki 0.0.1 (alpha-3) リリース

Wikiフォーマットのヘルプ、バグ修正、機能追加を含んだYakiBiki 0.0.1 alpha-3をリリースします。 SourceForge.netのプロジェクトサイトよりダウンロード可能です。 http://sourceforge.net/projects/yakibiki次のバージョンは1.0.0-rc1とし、一休みした後…

自分で作っておきながらすっかり忘れてしまってたのでBUGってた。

lsモジュールで"/"区切りの仮想ディレクトリがバリバリ表示されて、おおスゲーと自画自賛してたんですが。 ふと、「・・・"dir1/dir2/"のlsで、"hoge/dir1/dir2/"がヒットしたりしてないだろうな・・・」とやってみたら。見事にヒットしちゃいました。 Σ(゚д…

いろいろ細かい修正したメモ。

GoogleMapのプラグインで、GoogleMapのAPIキーの設定をしてなかったり、_YB('js.enabled')がfalseの場合は単に指定された緯度経度とズーム率だけ指定したGoogleMapへのリンクを表示するようにした。 setup.phpを調整。 ユーザIDのシーケンスを見て、1以上だ…

自分で作っていながらすっかり忘れてた機能

Bracketリンクで、 [[ページ名>表示名]] [[http://...>表示名]]と何度指定しても、表示名への新規作成リンクになってしまう。 おっかしーなー・・・とWikiのParserやHtmlConvertのテストケースやコードを確認してたら、逆だった。 [[表示名>ページ名]] [[表…

画像について If-Modified-Since ヘッダーの処理を実装

前に実装した(と思ってた)自作コードを引っ張り出してきて、組み込んだりしてた。 まぁ、時刻表記のGMTに振り回されたり組み込んだコードの変数名で惑わされたり少し嵌ったけど、ようやく画像については304を返せるようになった。あと、前に作った自作コー…

YakiBikiではTrackBack機能は当面、実装しません。

なんでか、という理由を長々と書いた将来また気が変わった自分用のエントリが、保存したと思ったら確認しかしてなくて、うっかりFirefox閉じちゃったので私の記憶の一部が蒸発しました(つд⊂)。えっと、とにかくYakiBikiの基本ポリシーは「招かれざる者、コン…

GoogleMap用のWikiプラグイン、出来た。あとsetup.php周り直した。

検索一覧画面での複数表示も上手く行った。 HTML/Wiki両プラグインのヘルプページにも追記した。結局、丸一日かかっちゃったなぁ・・・。途中、子安武人+アイマス実況中継MADで2時間ほど笑い転げていたのもあるけど。あとsetup.phpで、初期データがおかしか…

GoogleMap用のHTMLプラグイン、出来た。

MapTypeControlが、見慣れた文字列の四角い枠の表示・・・じゃなくて、何か潰れた線みたいになってる。 ちょっと気になるけど、後回しにしても問題無さそうな感覚があるので、とりあえず引き続きWikiプラグイン(HTMLプラグインへのラッパー)を作ってみよう。…

今日の分のメモ。

済: login/logout時のリダイレクト先のURLチェック(_YB('url')で指定されたURL範囲内である事) template日時置換 protector.phpで文字コードチェック さらに、$_REQUESTに$_GETと$_POSTのみ入るよう上書き処理 バージョンがモデレートされている時に、編集…

文字エンコーディングをmb_check_encoding()でしようとしたらmbstring.substitute_characterとかmbstring.encoding_translationを設定していた為にうまく動かなくて少し嵌ったのでメモ。

基本的にmbstringモジュールが無い環境を想定しているYakiBikiですが、入っていればちゃんと文字エンコーディングのチェックをしておきたいなぁとずっと思ってまして、入れたのですが。 昔設定した mbstring.substitute_character とか、mbstring.encoding_t…

outlineのバージョン未検知の件修正。あとTODOとか。

結局Wikiプラグインで、ページのソース全体を取得し直しているのはoutlineプラグインのみだと分かった。ということで、yb_Wikiクラスのstaticメソッドとしてオリジナルのソースデータを保持するメソッドを用意し、yb_Wiki::convert()メソッドを呼ぶ時にここ…

imageプラグインでのメモ

なんかSF.netのSVNサーバにつながらない。夜中とかすごい重くてつながらない時がある。CodeReposに移そうかなぁ。imageプラグインでメモ。これまではimageプラグインとしてタイトルも指定可能にしようと思ってまして、alpha-2まではそうなってます。 &image(…

Wiki書式用のCSSを追加した。

KinoWikiとか、方々のサイトをあちこち参考にしつつ、ようやくWiki書式用のCSSをまとめ終えた。 HTML用のプラグインのCSS設定とやっぱり干渉して、ぽろぽろHTML直したりHTMLプラグイン用のCSSを直したりした。そして、かなりヤバイミスが発覚した・・・。Wik…

Singletonはすごい取り扱い要注意なデザパタとつくづく実感した。

YakiBikiのHTMLプラグインでHTMLエスケープが抜けてそうだったので一通り見直し掛けてる内に、みょうな現象が発生した。 "sys"ロールユーザーでログイン中に、 1. を実行し、 2. を実行するようなHTMLドキュメントを表示してみる。 具体的にはこんなHTMLテキ…

HTMLプラグイン修正、その他

yb_naviのコードが古かったので直し始めたら、テスト用のページを作ったりしていく過程であっちにもこっちにもバグが見つかってへこんだ。 テキスト型テンプレートを元に新規作成しようとした時に、テンプレートに設定したフォーマットやテキストが新規作成…

コメント機能、一旦実装完了。

最新のコメントN件一覧をHTMLプラグインとWikiプラグインで実装できたので、ようやくコメント機能をひとまず実装完了とします。 <yb_newcomments 件数 /> : HTMLプラグイン版 &newcomments(件数) : Wikiプラグイン版Wikiプラグインは、HTMLプラグインのラッパーです。動的に変わりま</yb_newcomments>…

TrackBack、YakiBikiだと難しい点がいくつかあるなぁ。

・「トラックバック技術仕様書」 http://lowlife.jp/yasusii/stories/8.html↑を見ながら簡単なサンプルスクリプト書いて、送ったり受けたりをはてなダイアリ相手に試したりしてました。で、アプリとして配布するYakiBikiの場合幾つかスパム判定周りで難しい…

コメント機能実装・・・8割くらい出来た。

途中、リビジョン393で投稿済のコメントの「編集」機能を追加したのだけれど、よくよく考えたら不要。いや、だって過去のコメントを修正されたら、コメントでやり取りしている場合に話の流れが分からなくなるから。 というわけでCSSとかHTMLの調整と同時に、…

駄目。やっぱ、TrackBackは実装しない。

勢い込んでDAO作って、tb_addなるモジュールをコピペして中身を書いていた途中。 簡易spam判定でURLをGETしたコンテンツから検索する所を書き始めた瞬間。「・・・あれ?YakiBikiのURLって、URLクエリ使ってるから、パラメータの順番変わった瞬間に判別不能…

検索機能修正終わった。あと新規作成時の挙動を修正。

検索機能を新しいコードで入れ替えて、あとHTMLとかCSSも少し直した。 新規作成時、データの「型」が指定されていない時の挙動も直した。今までは「データ型無効」のメッセージで終わらせていたけど、データ型選択画面を出すように直した。

"smarty:nodefaults"の再調整、およびprofileモジュールのミニ修正

まず、profileモジュールのGuard.phpに古いtxファイルへのrequireが残っていたので除去。あと全然関係ないけど、最近YouTubeとニコ動経由でALI PROJECT - Wikipediaにはまりつつある。東方名曲選がらみでたまたまALI PROJECTの詰め合わせ1時間パックをGETし…

copyモジュール作り終えた。

なんでこんなに時間がかかったかというと、 「脳噛ネウロ」のアニメの方にはまって、一日6-7話を消化していた。 鼻風邪引いて思考力ゼロ 週末実家に戻ったりしてた という感じ。

copy機能を実装開始

最初は"new_related"として、ACLやカテゴリ、モデレート属性をコピーした上でタイトルを「(元データのタイトル) copy 1, 2, 3...」みたくしようとしたのだけれど。タイトルに「コピー(コピーカウント)」というのを入れるのが思いの外面倒くさい。特に添付…

ようやく全テストを動かせた・・・。

Factoryが内部で保持するキャッシュを回避する方法を思いついた。 - ぐらめぬ・ぜぷつぇんのはてダの形での修正をようやく採り入れ、全テストケースを実行する事が出来ました。いや、まぁ、ぼろぼろ出てきましたよ。多かったのが「テストクラス名の重複」。…

Factoryが内部で保持するキャッシュを回避する方法を思いついた。

PHPならではの荒技で、$GLOBALSに「ゾーン」を指示する変数を保持して、Factory内部のキャッシュはゾーン毎に保持させる。PHPならではのキショイコード、行きます。 define('FACTORY_ZONE', "\0__GLOBAL_FACTORY_ZONE_INDICATOR"); // 初期ゾーン $GLOBALS[F…

バージョン一覧画面出来た。

バージョン一覧画面出来た。今回ので、 現在バージョンの切り替え バージョンの削除 バージョンの承認状態の切り替え の3種類の機能をバージョン一覧画面で操作できるようになったのだけれど、結局トランザクションは作成しなかった。 単にテストケースを作…

ようやく編集画面が出来た・・・。

残: viewモジュールでバージョン番号指定された時、該当バージョンのapprovedがfalseの場合は404にする。 yb_Finderのfind_by_id()とかfind_by_all()のテストケースやっぱり要る。突貫工事で作ってしまった為か、current_versionがバージョン指定の場合に指…

ようやくgrainベースでテンプレート管理まで終了。

テンプレート管理なんて他のマスタ管理のコピペでどうにかなるだろうと思ったけど甘かった。データ型に応じて基本属性+αの部分が入ってくるし、データ自身の拡張属性とはまた別の入力フォームを必要とする。データ型毎のクラスに、テンプレート管理でそれぞ…

yb_AclCache::clean()の呼び出し箇所がどこいったか忘れた。

http://d.hatena.ne.jp/msakamoto-sf/20071222/1198337776↑を見るとDAOレイヤーに埋め込んでる。 うー・・・DAOレイヤーはやだなぁ。そもそもgrainベースになり、yb_dao_BaseクラスにCRUD操作が集約されてるし。 というかDAOとかTXレイヤーに埋め込んじゃう…