記事一覧

メッセージ返信

現在、WDP、WGP、WA、Webclapをお借りしているので、このツールが配布されたら全て一つに集約できるので、ぜひ使用させていただきたいです!
…出来ればWDP、WGPのログがそのまま移行出来たらいいなぁと思うのですが…無理でしょうか。

Web Diary Pro Ver3 → Ver4 のときほどヤヤコシイことにはならないと思うので、できれば移行ツールは作りたいです。
…が、まだデータ形式も全然決めていない状態なので、作れるかどうかは不明です。(^^;

記事編集の一覧が現在の全表示の他に、分類毎や年別、月別等も選べたらいいなと思います。

「記事編集の一覧」とは、管理ページのことですよね?
管理ページでも、表示対象の絞込みやキーワード検索機能は実装したいと思います。

イラスト系サイト用コンテンツ管理システム、興味しんしん。できるの楽しみにしています。

以前に書いた内容は、設計とか実装の手間とか全然考えていない内容なので、期待せずに待っていてください。(^^;

この一言送信、なんかお気軽でいいですね。ちょっと使ってみた。

少なくとも、ブログのコメント機能よりは手軽で良さそうです。(^^)

たまに読んでますよ~
CSVを使ったDBも待ってますよ~

はじめはデータベースのみ対応にしようと思っていたのですが、データベースが使えない事が予想以上に多いのです…。
プログラムは面倒なことになりますが、頑張ります~。

自宅サーバー設定中

今日、ルーターを購入してきたので、自宅サーバーを公開するためにも色々設定。…しているのですが、まだ外部からは接続できず…。

以下、作業メモ。ツッコミ大歓迎。

接続環境は以下のとおり。

プロバイダYahoo!BB
ルーターAterm WR7870S
  • とりあえず普通に設定&接続 → インターネットに接続できた
  • 所持しているパソコンをすべてルーターに接続 → インターネットに接続できた

普通にインターネットを使う分には問題無し。以降は自宅サーバーのための作業。

サーバーとなるパソコン(WindowsXP)を一応再セットアップ&アップデート実行。
サーバーとなるパソコンの「インターネットプロトコルのプロパティ」を設定。サーバーのIPアドレスは 192.168.0.201 にしてみる。(Atermの機能詳細ガイドには「サーバーとなるパソコンのIPアドレスは 192.168.0.201 ~ 192.168.0.254 の範囲で設定します」と書かれていたので)

IPアドレス192.168.0.201
サブネットマスク255.255.255.0
デフォルトゲートウェイ192.168.0.1
DNSサーバー192.168.0.1

次に、サーバーとなるパソコンの「Windowsファイアウォール」の設定を変更。「例外」に以下の設定を追加。

名前WWWサーバー
ポート番号80

次に、ルーターのポートマッピングを設定。

変換対象プロトコルTCP
変換対象ポート80
宛先アドレス192.168.0.201

次に、サーバーとなるパソコンにWWWサーバーとして「AN HTTPD」をインストール。公開用フォルダに適当なHTMLファイルを配置。

  • 自分自身(http://127.0.0.1/)に接続 → 接続できた
  • LAN内の他のパソコンからサーバーのIPアドレス(http://192.168.0.201/)に接続 → 接続できた
  • プロバイダから割り当てられたIPアドレスを指定してサーバーに接続 → 接続できず

ルーター側のNAT/IPマスカレードの問題で、プロバイダから割り当てられた自分自身のIPアドレスにはアクセスできないことがあるらしい。

  • IPアドレスを指定して携帯からサーバーに接続 → 接続できず…

接続のIPアドレス確認で色々チェックしてみる。

  • 外部からPINGを送ってみる → 接続が確認できた
  • 外部から80番ポートの開閉を調べてみる → 到達できず

どうやら80番ポートの開放ができていないっぽい。

  • 一旦サーバーのファイアウォールを無効にしてみる → 状況は変わらず

ここでダウン…。(T T)
また近いうちに、手順をはじめから見直したり、ルーター無しだと接続できるか調べたり、色々検索してみたりするとします。

イラスト系サイト用コンテンツ管理システム

Web Diary Professional Ver4 の次期バージョンにあたるツールのメモ。
素直に Ver5 とはせずに、名前も変えて作る可能性が高いです。(開発言語もPHPに変えるし。)
また、Ver4 の配布は終了せずに、平行して開発するつもり。

以下、ツールのメモ。実現可能かどうかは考慮せずに「できたらいいな」を書いているだけ。完成日は不明。完成する日が来るかどうかも不明。(ぉ
思いついたら追記していきます。

基本方針

  • 主にイラスト系サイトで利用されることを想定した、高機能なコンテンツ管理システム
  • 初期状態では「ただの日記ツール」くらいにシンプルなインターフェースにしたい
  • 仕事でプログラムを作るとき、ベースとして使えるものにしたい
  • 個人的に使いたいツールは「テキスト主体のブログツール」「時々イラストを描きたい」「時系列でないページも作りたい」

プログラムを作る本人は、あまり絵を描けないというのが悲しい…。でも、管理するための仕組みを作るのは大好きなのです。

機能メモ

  • 「ビジュアルコンテンツ主体のサイトをうまく構成してくれるWebのツール」「イラストサイト専門のブログ(みたいなもの)というシステム」ができればいいなぁ
  • パーソナルSNSとして使えるようにしたい
    「全体に公開&コメントも全体から受付」(普通のブログ)
    「全体に公開&コメントは許可したユーザーから受付」
    「一部のコンテンツを、許可したユーザーにのみ公開&コメント受付」
    「許可したユーザーにのみ公開&コメント受付」
    「許可したユーザーにのみ公開&コメントも受け付けない」
    などから選択して運営できる
    さらに、ユーザーごとに「どこまで公開するか?」を設定できると良いかも
  • 「アクセスはトップページから」に強制できる
    サイトを1つの作品として完結できる仕組み
    もちろん利用するかどうかは管理者次第
  • ファイルへの直リンクも制限できるようにしたい
  • WinXPのフォルダ機能のように、文章・画像・音楽などで見せ方を変えられるといいかも
  • 小説の管理としても利用できるようにしたい
  • 標準でタギングとカテゴリの両方に対応させる(もしくは、どちらかをプラグインにする)
    カテゴリは、無制限の階層化と、複数カテゴリに対応させたい
  • お絵かきアプレット対応
  • アクセス解析、アクセスカウンタ、拍手などはプラグインとして実装する

技術メモ

  • PHP4とPHP5に対応(PHP5に限定しても大丈夫かも)
  • メイン処理は非オブジェクト指向、既存フレームワークも使わない
    PHPを少し勉強すれば、できればプログラム初心者でも、すんなり読めるコードが理想
    プログラム初心者がコードを編集しても、セキュリティ問題が発生しにくい構造にしたい
  • MySQL、SQLite、ファイルに対応
    同じ命令でデータを扱えるように、専用の関数かクラスかフレームワークもどきを自作(でも、独自ルールの理解を強要することになるのはデメリットかも…)
    もしくは単純に、プログラム内で条件分岐する(でも、プログラムの可読性が下がるかも…)
  • デフォルトではファイルを使用、設置はできる限り簡単に(最低でも Web Diary Pro と同等に)
    「プログラムを入手 → 全部アップロード → プログラムにアクセス → 管理者パスワードを設定すれば設置完了」ぐらいにしたい
  • データベース接続はPEAR::DB(PDOを使っても大丈夫かも)
  • 管理画面などのインターフェースも、デフォルトではできる限りシンプルに
    でも、操作に慣れた人はドンドン拡張&高機能化できるようにしたい
  • テンプレートエンジンはSmarty
  • プラグインの仕様は、基本的に PHP Labo のプログラムと同じ(加えて、入力項目の追加に対応したい)
  • 動的出力(HTML書き出しに対応するかは考え中。)
  • Web Diary Pro Ver4 に実装されている機能には、ひととおり対応する(HTML書き出しに対応するかは考え中。)
  • Web Diary Pro、Web Gallery Pro などにもらった要望にも、ひととおり対応したい
  • コア部分は比較的シンプルにして、プラグインで機能を拡張する(ただし、デフォルトである程度プラグインを導入済みにしておく)

参考ページ

ツール名

  • アルファベット4~6文字くらいの名前にしたい
  • 「Web Diary」とか「PHP Blog」のようなヒネリの無い名前ではなく、独自の名前にしたい
  • ツールの基本方針が伝わるような英単語、もしくは造語にしたい
  • 実は、ツール名が一番の悩みの種だったり

ルーター

自宅サーバー開局のために、ルーターを買い換える予定。

今使用しているルーターは、常時接続を始めたときに業者さんがもってきたもの…だったはず。特に不満は無いけど、マニュアルがどこかに行ってしまったし結構古いものなので、この機会に買い換えるとします。

購入した書籍の両方で紹介されていた(紹介されていたのは、少し古い機種だけど)し、特に悪い評判は見当たらなかったし、NEC製品はよく使っているから…という理由で、今のところはNECの Aterm WR7870S が候補。

メッセージ返信

拍手を送るよりも手軽にメッセージを送信できていいですねえ。

お礼イラストの表示とかを考慮した構成ではないですが、単純にメッセージを送るだけならこれくらいでもいいかもです。

DB操作ツールの動作報告メールが途中で滞っていますが、あのまま上手くいってません…またメールさせて頂くと思います。

うーん、自分では普通に使えているので謎ですが…。
またどうぞー。

ほう、すごいぞ。

ツールとしては超単純な代物なのです。

一言メッセージ

拍手でのメッセージ送信機能の代わりに、一言メッセージを投稿できるツールを作ってみた。

サイドバーの「メッセージ」部分から、匿名でメッセージを送信できます。
よければどうぞー。

エイプリルフール

エイプリルフールに便乗しているサイトまとめ2008年版

色々やってるなぁ…。
円谷プロは今年も笑える。

ファイルロック解除処理

またもPHPでの排他処理について。ファイルに書き込みを行う場合は

$fp = fopen('data.txt', 'r+') or exit('error!');
flock($fp, LOCK_EX);

~ここで書き込みを行う~

flock($fp, LOCK_UN);
fclose($fp);

で問題ないと思ったけど、まだ駄目っぽい。ロックの解除に問題があり、ファイルの破損は完全に回避できないらしい。調べてみると色々出てきた。

@ITのPHPの記事が突っ込みどころ満載 - 暴言満載

fcloseの前にflock(ファイルポインタ, LOCK_UN) する人は実に多いのですが、これははっきりと間違いだと断言します。flockをfcloseの前に解除するということは、fcloseの前に他のプロセスが割り込む可能性が出るということです。ファイルへの書き込みは、fwriteとかfputsとかしてからfflushまたはfclose実行までのどこかで行われる、というのがファイル周りのI/Oの基本です。なので、fcloseもロックの範囲内に入れなければなりません。fcloseでflockが解除されるのはそういう理由があるのです。

PHP/ファイルロック/設計 - TestWiki - PukiWiki Plus!

プロセスレベルの書き込みバッファによって、書き込みデータがOSに渡されずに残っている可能性がある。

fflush($fp);
flock($fp, LOCK_UN);
fclose($fp);

で明示的にフラッシュするか、flock($fp,LOCK_UN)しない

fclose($fp); // LOCK_UN してはならない

をすることで、バッファがフラッシュされた後、ロックが解除される。

PHP: flock - Manual

ロックの解放には fclose() でを使用します (これは、スクリプトが終了した場合にも自動的にコールされます)。

公式サイトの解説は「ロックの解放には fclose() でを使用します」と書いている割に、サンプルコードでは flock($fp, LOCK_UN); で解除しています。こんな風に書かれていたら、どっちでも大丈夫なのかと思ってしまうよ…。
公式サイトのサンプルコードは、あまり信用しないほうがいいのかなぁ…。公式サイトなのに。

ついでに書くと「でを使用します」って誤字ですよね…?

ともかく、ロックの解除は fclose() にまかせて

$fp = fopen('data.txt', 'r+') or exit('error!');
flock($fp, LOCK_EX);

~ここで書き込みを行う~

fclose($fp);

が正しいっぽい。

データベースとファイル

PHPでデータベース対応のプログラムをいくつか作ってきましたが、データベースとファイルの両方に対応したプログラムを作成しようと考え中。PHP Labo のプログラムとは別に、1つ徹底的に高機能なプログラムを作りたいのです。

その際、データを扱う処理をどんなふうに書くか悩み中。

同じ命令でMySQLもSQLiteもファイルも扱えるような、有名どころのクラスがあればいいけど、どうも無いっぽい。うーん、プログラム内で単純に条件分岐して各処理を併記するかなぁ…。可読性が下がりそうで少し嫌だけど。

自宅サーバー

自宅サーバー開局に向けて勉強中。…と言っても、昨日書籍を購入してきたばかりですが。

ざっと目を通して解りやすそうだったので、この2冊を購入。ひとまず「自宅サーバー for Windows XP」を参考に、

  • 以前から所持しているノートパソコンを使用
  • OSはWindows XP
  • WWWサーバーはAN HTTPD
  • 自分がパソコンに触れられる時のみ開局

を目指したいと思います。最終的には

  • サーバー専用にパソコンを用意
  • OSはUnix系
  • WWWサーバーはApache
  • 24時間開局

としたいですが、いきなりは敷居が相当高そうなので…。

今はまだ基礎知識が無さすぎるので、まずはネットワークの基礎を勉強するとします。しばらくはTCP/IPとかNATとかDNSとか、知識があやふやな部分の復習になりそう。

例によってツッコミは大歓迎です。

ナビゲーション

ユーティリティ

2008年12月

- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -

ツールメニュー

メッセージ

匿名で一言送信できます。

送信フォーム
メッセージ

RSSリーダー

  • JavaScriptをONにすると、RSSリーダーが表示されます。

利用ツール