タイトルリスト
がりがりと更新中 (2005/09/01 00:08:32)
MySQLって奥が深い? (2005/09/01 00:08:32)
意外な事実@MT (2005/09/01 00:08:32)
さくら日記帳 for MySQL (2005/09/01 00:08:32)
さくら日記帳@MySQL (2005/09/01 00:08:32)
MySQLで日記 (2005/09/01 00:08:32)
MySQL と blog (2005/09/01 00:08:32)
さくら日記帳 2.0.0:BETA-69 公開 (2005/09/01 00:08:32)
Exif2HTML (2005/09/01 00:08:32)
Exif参照HTML自動出力スクリプト (2005/09/01 00:08:32)
2005 02 10
がりがりと更新中
さくら日記帳@MySQL、現在もがりがりと更新続けております。

今回対応したのは結構あるけど、主な物はテーブル構成をちょっと変更してカテゴリを「マスター・サブ」関係としたこと。
これで「バイクカテゴリの中のツーリングカテゴリ」という風にカテゴライズできるようになった。
ちなみに、メインカテゴリに属する記事全部を見ることも出来るし、サブカテゴリにのみ属している記事だけを見ることも可能。
状態はカテゴリ一覧からどうぞ。
TrackBack URL:
MySQLって奥が深い?
  • データをフォームに表示するときに "&" を "&" で変換しないとだめぽ。
    → s/&/&/g;
  • 「"」を書くときは DB に入れる前に自前で「""」としないとだめぽっつーかエラーになる。(汗)
    → s/"/""/g;

このあたりの仕様ってどっかに書いてあるんだろうか・・・。
書いてありそうだが見つけられない、というのが正直。

で、以下はその再現性用サンプル。
まさかこんな事でひっかかるとは。(汗)

    # まずはつっこみの新しい順にグループ化したターゲット番号を 10個拾う
    my $mysql_query = "SELECT target FROM tsukkomi GROUP BY target ORDER BY lastupdate DESC LIMIT 0,10";
    my $mysql_sth = execute_query($mysql_db, $mysql_query);
    my @TARGET_LIST;
    while (my $TMP_HASH = $mysql_sth->fetchrow_hashref) {
        push(@TARGET_LIST, $TMP_HASH->{target});
    }
    $mysql_sth->finish;
    
    # 次にそのターゲット番号の記事タイトルを取る
    $mysql_query = join(', ', @TARGET_LIST);
    $mysql_query = "SELECT num,title FROM diary WHERE num IN ($mysql_query)";
    my $mysql_sth = execute_query($mysql_db, $mysql_query);
    my %TITLE_LIST;
    while (my $TMP_HASH = $mysql_sth->fetchrow_hashref) {
        $TITLE_LIST{$TMP_HASH->{num}} = $TMP_HASH->{title};
    }
    $mysql_sth->finish;
    
    # 最後に配列として保存。連想配列にしてしまうと順序がわからなくなる。(汗)
    my @RET_LIST;
    foreach (@TARGET_LIST) { push(@RET_LIST, "$_<>$TITLE_LIST{$_}"); }
    
    # 最後の締め。
    $mysql_db->disconnect;
    
    return @RET_LIST;

書いてあった。_| ̄|○
というわけでこうしてみた。
s/("|'|\\)/\\$1/g;
ちなみにこの変換用ルーチンをブロック単位で作っているが、フォームデータをそのまま利用する場合もあるので get_formdata() にそのまま放り込むわけにも行かず。
クエリー発行前の部分にでも入れるか。

その後、エラートラップの良い方法も見つけたので試しに実装してみる。
なかなか良い感じ。
ただしこのエラートラップ、上手いこと回避させないとレコードが取れなかったときもエラーになるので要注意。
  • G兄:ちなみにつっこみの部分はまだ未対応。(ぉ→変換
TrackBack URL:
2005 02 08
意外な事実@MT
さくら日記帳@MySQL の DB の扱い (主に接続方法) で激しく悩んでいたんだが、参考にしていた blog CGI で Movable Type っつーのがある。
それの DB R/W を参考にしてみようということでかいちょに聞いてみた。






いや、そんな方法でセキュリティ大丈夫なんすか?('A`|||






っつーほどの安易な方法。
それ、同じ鯖にいたら簡単にパスワードばれる CGI 作れるぞ。

というわけで実証実験。





見れた。(゚Д゚|||) @リヴァ鯖


  • Toshix:完全に見れないようにするってのはやっぱり不可能なのかなぁ…。
    当然しっかり対策は必要だけどもう本当キリないなぁ(滅
TrackBack URL:
2005 02 07
さくら日記帳 for MySQL
かな〜〜〜り出来上がってきた。
今回は MySQL をログサーバーに使ってるのでめっさ早い。
しかもログの読み込みと書き込みに凝ったことをせずに SQL のクエリー一発で呼び出せるので凄楽。
更新するときも番号指定さえすれば UPDATE で更新できるから、今まで苦労してきたことがいったい何だったのかと・・・。(w

ログインはユーザー ID とパスワードで先に認証しておき、認証が通っていなければ新規投稿・既存記事更新へのリンクが表示されず、GET メソッドで
mode=edit&num=15
などとして編集画面に入ろうとしても、「ログオン認証が済んでいない」と警告を出すようにした。
更に、このログオン認証はブラウザが終了するか、任意でログオフをするまでの Cookie セッション保持としたので、一度認証を通ればあとは気兼ねなく編集が行えるというもの。

ちなみにテーブルの自動作成機能はないのですぐにサービス開始を出来るわけでもなく。
つか これ MySQL の勉強用だから一般公開するつもりないし。:P


TrackBack URL:
2005 02 05
さくら日記帳@MySQL
書き込みフォームとつっこみフォーム、検索フォームが完成。
あとは修正フォームやね。

うーん、SQL でごり押しするだけだからかなり簡単すぎ。


といったところで問題発生。
日付のグループ単位で切り出す方法がわからん。(汗)
普通に
SELECT * FROM diary LIMIT *,5
とやったら日付を跨いで切ってしまうことも。
かといって
SELECT * FROM diary WHERE date BETWEEN 'YYYYMMDD_start' AND 'YYYYMMDD_end'
とやろうとすると、抜き出し開始の日付の部分を取り出さないとだめだが、MySQL はサブクエリーをサポートしてないので結構大変かも。

まぁ MySQL 化したことでオーバーヘッドは死ぬほど減ったので、1つくらいクエリーの発行回数が増えてもなんともないか・・・。


  • 坂の松:いや、マジメールおくれん・・・
  • G兄:ん?なんかあった?
    問題なく出せるみたいだけど、どこからどこに送ろうとしてる?
  • G兄:すまん、Perlのバージョンアップでamavis死んでた。_no
TrackBack URL:
2005 02 04
MySQLで日記
簡単にフロントエンド作ってみた。
→ さくら日記帳2
日記の内容は既存のログをコンバーターで話題単位で分割、それをタブ区切りの CSV にして phpMyAdmin からぶちこみ。

もしかしたら早いかも〜。

* 早いねぇやっぱり。
おっひょっひょっひょっひょ!!ヽ(゚∀゚)ノ

楽ちぃ〜〜〜!ヽ(゚∀゚)ノ

なんつーか SQL クエリ書くだけだからデータの抜き出しがすげー楽すぎーーーーーーー!!

でも鯖依存高杉。_no


  • Toshix:phpMyAdminですぜ〜。
    ちなみに、MovableTypeもエントリー数が増えれば増えるほど重くなるのでSQLと連携させて使うのが激しく推奨っぽいです。
  • 坂の松:G兄にメールがとばせん・・・
TrackBack URL:
2005 02 03
MySQL と blog
blog で MySQL が使われているということで、試しに MySQL 4.0 と phpMySQL phpMyAdmin をインストールしてサンプルを作ってみた。

・・・。






イイ(・∀・)!!





結構便利かも。
しかしさくら日記帳に MySQL ローダーを追加したらえらいことになりそうだ・・・。
プラグイン型式で作るか?

* ソースを眺めてみた



_| ̄|...  (((○




TrackBack URL:
2005 01 13
さくら日記帳 2.0.0:BETA-69 公開
&link でリンク表示を /. 風にした時、<IMG> タグに &link でリンクを張ったときもドメイン名表示がされている状況を変更。
68 と 69 は /. 風表示をしない人には全くもって関係ないバージョンうp。(w


TrackBack URL:
2001 12 08
Exif2HTML
昨日の夜に今季 4度目のブレーカー飛びが発生し,最終段階まで作り込んでいた Exif2HTML.pl がバイナリ化してブチ切れながらも,もう一度ほぼ同じモノ (こっちのほうが高性能 (ぉ)) を作り直してみた.
で,サンプルというか実稼動させたのがこれ.

とりあえずテーブル内の書式はテンプレート方式にしているので,スクリプトソースを変更しなくてもいいようになっている.
ファイルの読み方も,APP1 データサイズをあらかじめ取得しておき,APP1 のデータ部分だけを seek と read で読んでいるので超高速に処理できるようで,3MB ほどの JPEG ファイルでも楽々と読んでいるようだ.



今日は E-20 を使った本気の撮影会.
久しぶりに CHROME を駆り出して河川敷へ.
時間が丁度よかったのか夕日が綺麗な時間だった.
雲もそれほど無く絶好の撮影日和だったようだ.

とりあえずホワイトバランスを 5500K に固定し,絞り優先で撮影してゆくが,やはり以前からマニュアル撮影していることもあってマニュアルに変更.
露出がファインダー内に見えるので,それに合わせてシャッタースピードや AE ロックで露出のバランスを取って撮影.
ちなみにこの AE ロック,いままでのカメラ生活の中で初めて使いました.(笑)
いや,AE-1P だとよくわからなかったのだが,E-20 のように実際に数値が出たりするとよくわかるんだよねこれがまた.

いやー,いい買い物だったにょマヂで.
TrackBack URL:
2001 12 06
Exif参照HTML自動出力スクリプト
この情報を活用すれば,その画像をどういうシャッタースピードや絞り値などで撮影したかなどの情報がわかるのだ.

で,E-20 は E-10 とほぼ (?) 共通で,参考ページに内容がほぼそのまま載っていたのでお勉強代わりにちょっと読んでみた.

E-20_IFD.txt


TrackBack URL:
0123456
QRコード
携帯サイト試験運用
https://griffonworks.net/nikki/cgi-bin/k.cgi
1行板

リンク
etc
備忘録
  • 無し
物欲リスト
  • Canon RF50mm F1.2L USM
  • SIGMA 20mm F1.4 EF Art
  • ニンバス チヌーク
ツーリング ドライブ兼野外撮影予定リスト