W.S.O

らくだ

W.S.O(うそ) とは、perl + MySQL で動作する純国産(工房らくだ舎製) CMS 。

W.S.O とは

W.S.O は、 WHOpPERL という名前で開発してきた CMS を SQL サーバによるデータ管理と、オブジェクト指向プログラミングを導入して再開発したものです。W.S.O はその、 WHOpPERL,SQL,Oop の頭文字を取ったものです。正式名称は WHOpPERL contents management system version VII です。

これを使うと、当サイトのようなサイトが簡単に作れます。しかし、他の利用者や、開発協力者がいないので、ドキュメントなどは全く整備されていません。行き当たりばったりで開発しているので、頻繁に仕様が変わります。作者が独特のものの考え方をするせいか、かなり独特の使用感があるかも知れません。それでも使ってみたい方は是非使ってみてください。

仕様

主な特徴

  • ユーザ単位、グループ単位でスケジュールやドキュメントなど各種コンテンツを管理することが可能。
  • プラグインで機能拡張することが可能。
  • 動作速度はそれなり。
  • 独特の簡易入力記法を搭載。
  • User agent ごとに最適なコードを出力。
    • Opera,firefox など、 application/xml+xhtml を認識する agent には破綻のない XHTML1.1 with CSS を出力。
    • 腐れ agent MSIE には XHTML1.0 for MSIE を出力。
    • レガシーウェブブラウザには XHTML1.0 without CSS を出力。
    • 携帯端末には CompactHTML を出力。
  • データベースは MySQL を利用。
  • データ拡張型ブログツールを搭載。
    • エントリーの件名にキーワードか日付を選択して設定可能。
    • エントリーに『予定』を拡張し、スケジュール管理が可能。
    • キーワードエントリーに『キーワードの意味』を拡張可能。
    • キーワードへの自動リンク。
    • タグ分類でエントリーを検索可能。
    • エントリーの公開・非公開・共有を選択可能。
  • 出力文字コードは今のところ Shift_JIS のみ。

動作条件

  • perl 5.6.0 以降

    以下のモジュールがインストールされていること。

    • Jcode
    • Image::Magick
    • Digest::MD5
  • MySQL

    以下のバージョンで確認。

    • 3.23
    • 4.0

出来ること

  • ファイルのアップロード、管理機能搭載。
  • 自由な日付のエントリーを作成可能。
  • デザインの変更は CSS ファイルを変更するだけ。
  • RSS 出力機能搭載。
  • ツリー型カテゴリ管理。
  • 全文検索が可能。
  • 汎用コメント機能搭載。
  • 汎用トラックバック機能搭載。

出来ないこと

  • XHTML の変更。
  • ページの静的生成。
  • 他のブログツール形式のデータのインポートエクスポート

ダウンロード

W.S.O 1.0000 は、 CMS です。”モジュール”によって、様々なコンテンツを利用出来ます。高機能なブログモジュールを標準搭載していますので、ブログとしてすぐに利用出来ます。

このシステムは Perl と MySQL を利用した、 CMS です。設置方法については、『W.S.O 設置方法』をご覧ください。

注意事項

  1. CGI 利用規定をお読み下さい。
  2. 細かい設置については、 サポート掲示板 で対応いたします。お気軽にご質問ください。

利用規定

この Web アプリケーション『W.S.O 1.0000』をダウンロードし、使用する場合は、以下の規定に同意してください。

ご同意いただけない場合は、CGIスクリプトのダウンロード及び使用をすることは出来ません。

”ライセンス”は特に決まっていません。その辺の知識が乏しいので、どなたかアドバイスください。

  1. スクリプト及び同梱ファイルの著作権は作者にあります。
  2. スクリプト及び同梱ファイルから著作権表示を削除、改竄することは出来ません。
  3. スクリプトは、個人・法人に限らず、無料で使用出来ます。
  4. 作者の許諾なくスクリプトを改造(*1)して、公開された Web サイトで使用することは出来ません。(ローカルで非公開で使用する場合はこの限りではありません。)
  5. 改造の有無を問わず、スクリプト及び同梱ファイルの販売、再配布または譲渡をすることは出来ません。
  6. 商用ページで使用することは出来ません。
  7. スクリプトの動作保証はいたしません。
  8. スクリプトを利用した事によるいかなる損害も作者は一切の責任を負いません。
  9. 作者に著しい不利益がある場合、一方的にスクリプトの使用を中止していただくことがあります。
  10. この利用規定は予告なく改編、加筆を行なうことがあります。
  • 1).作者の指示した、サーバ環境への設定変更以外の改編。

更新履歴

2006/04/06
W.S.O beta-1公開。
2007/02/04
W.S.O 1.0000公開。

インストール

W.S.O を設置して、 blog サイトとして利用出来るようになるまでを説明します。なお、ファイルなどを編集後に保存して閉じるなどの、パソコンを使う上でのあたりまえのことなどは省略していますのであしからずご了承下さい。

インストールファイルの準備

  1. W.S.O のファイルをダウンロードして適当な場所に 保存 する。
  2. zip ファイルを解凍できるソフトでダウンロードしたファイルを 解凍 する。

サーバの準備

  1. perl と、 MySQL を利用出来る ウェブサーバ を用意する。 Value-Domain の XREA+ をおすすめします。
  2. ウェブサーバで、 データベースを作成 する。 PhpMyAdmin などのサーバに備え付けのソフトなどで、データベースが作成されたことを確認する。
  3. データベース名、接続ユーザ名、接続パスワードを確認してメモする。

設定ファイルの編集

  1. 行番号の表示出来る テキストエディタ を用意する。
  2. 解凍したフォルダを開き、 initial.cgi をテキストエディタで開く。
  3. 利用するウェブサーバの仕様に従って、 30-34 行目を編集する。 XREA の場合はそのままで結構です。
  4. ディレクトリの構成を変更する場合は、 44-58 行目と、 68-74 行目を編集する。
  5. サーバーの仕様に従って、 84-85 行目を編集する。特に、 perl のパスが違うと、全く動きませんのでしっかり確認してください。 XREA の場合はそのままで結構です。
  6. 同じく setup.cgi をテキストエディタで開く。
  7. サーバの仕様に従って、 1 行目の perl のパスを書き換える。 XREA の場合はそのままで結構です。
  8. 同じく index.cgi をテキストエディタで開く。
  9. サーバの仕様に従って、 1 行目の perl のパスを書き換える。 XREA の場合はそのままで結構です。

ファイルのアップロード

  1. FFFTP などの FTP ソフトを用意する。
  2. アップロード後のパーミッションがサーバの仕様に合うように、 FTP ソフトを設定する。

    以下にサーバ XREA 、ソフト FFFTP の場合を例にとって説明します。

    転送モードの設定

    [オプション]→[環境設定]→[転送1]の[転送モード]を[ ファイル名で切り替え ]に設定する。[アスキーモードのファイル名]に以下のファイルを追加する。

    • *.txt
    • *.html
    • *.cgi
    • *.pl
    • *.css
    • *.ini
    • *.pm
    • .htaccess

    ファイル名の変更

    [オプション]→[環境設定]→[転送2]の[ファイル名の変更]を[ そのままのファイル名で転送 ]に設定する。

    パーミッションの設定

    [オプション]→[環境設定]→[転送3]の[アップロードするファイルの属性]に必要なファイルを追加する。たとえば XREA の場合は以下のようにします。

    ファイル名属性
    *.html604
    *.jpg604
    *.gif604
    *.css604
    *.js604
    *.cgi700
    *.pl600
    *.pm600

    [アップロード時に作成するフォルダの属性を指定する]にチェックを入れ、[属性]を[705]にする。

  3. index.cgi が公開領域になるように全てのファイルをアップロードする。 XREA の場合は、 public_html 以下にすべてのファイルをアップロードしてください。

    buckup フォルダや、 database フォルダなどは、非公開領域においても構いませんが、その場合は initial.cgi の編集が必要です。

タイトル画像やスタイルシートの準備

セットアップの実行

  1. ウェブブラウザで、 setup.cgi にアクセスする。

    図-1 setup.cgi アクセス画面すると、図-1のような表示になるはずです。このような表示にならず、エラーなどが出る場合は、ファイル属性や、転送モード、 perl のパス設定などに間違いがある可能性があります。もう一度確認してやり直してください。

  2. 以下のように必要事項を入力する。
    サイト名
    適当に。ページのタイトルになります。
    サイトURL
    index.cgi をアップロードしたディレクトリの URL 。必ず "/" で終わるように。自動で設定されるようになっていますが、サーバによっては正確でない可能性があります。その場合は正しい物に書き換えてください。
    キーワード
    サイトに関連のある単語を","で区切って。 meta 要素で出力されます。
    管理者名
    管理者のハンドル。管理者としてログインする時の userID として使います。
    パスワード
    管理者としてログインする時のパスワードして使います。
    メールアドレス
    メールフォームなどで、メールを受け取るアドレス。
    データベース名
    ”サーバの準備”で用意したデータベースのデータベース名。間違うとインストールをやり直さないといけないので正確に。
    接続ユーザ名
    ”サーバの準備”で用意したデータベースへの接続ユーザ名。間違うとインストールをやり直さないといけないので正確に。
    パスワード
    ”サーバの準備”で用意したデータベースへの接続パスワード。間違うとインストールをやり直さないといけないので正確に。
    最大書類サイズ
    一度にアップロードできるファイルの最大サイズ。
    最大画像サイズ
    一度にアップロードできる、ページ上に表示する画像のサイズ。
    サーバサイズ
    アップロードできるファイルの合計サイズ。保存されているファイルの合計がこのサイズを上回ると、古い物から削除されます。
    クッキーのパス
    クッキーを保存するパス。ドメインが共有の場合は、アカウントのパスにしてください。”/”とすると、同じドメインの他のサイトにパスワードなどが漏洩する危険があります。自動で設定されるようになっていますが、サーバによっては正確でない可能性があります。その場合は正しい物に書き換えてください。
    クッキー保存期間
    クッキーをローカルに保存する期間。
  3. ”基本情報を登録する”ボタンをクリックする。
  4. サーバに情報が送られ、システムがインストールされる。

    図-2 インストール完了画面図-2のような画面が出たら成功です。エラーなどで、正常に終了しなかった場合は、 database フォルダ内のファイルを削除して、 setup.cgi にアクセスするところからやり直してください。場合によっては、データベースのテーブルを削除する必要があります。 setup.cgi と同じディレクトリに作成される wsoinstalllog.txt で、インストールの状況が確認できます。

  5. ”了解”をクリックする。自動的にログインされるはずですが、ログインしていない場合は、登録した管理者名とパスワードでログインしてください。

ユーザの登録

パッケージのインストール

ブログを運営するために必要なパッケージをインストールします。

  1. [管理メニュー]→[パッケージ管理]にアクセスする。
  2. 「新規パッケージ導入フォーム」で、 "Calendar" を選択し、「パッケージを導入する」をクリックする。
  3. 「コマンドを正常に実行しました。」と表示されたら成功です。「了解」をクリックする。
  4. 「新規パッケージ導入フォーム」で、 "Xlog" を選択し、「パッケージを導入する」をクリックする。
  5. 「コマンドを正常に実行しました。」と表示されたら成功です。「了解」をクリックする。

アプレットの設定

メニューの表示や、アプレットのアクセス制限などを設定します。

  1. [管理メニュー]→[アプレット設定]にアクセスする。
  2. 変更したいアプレットのアプレット名のチェックボックスをチェックする。
  3. [機能メニュー]→[ヘルプ]に従って、適当に各アプレットを設定する。
  4. [アプレットの設定を保存する]をクリックする。

表示文字の編集

サイトのサブタイトルや、各ページのタイトルを設定します。

  1. [管理メニュー]→[表示文字管理]にアクセスする。
  2. 表示されるフォームの中から[Applet]のリンクをクリックする。
  3. [Applet::Index]など、変更したい項目のチェックボックスをチェックする。
  4. チェックした項目のフォームの内容を編集する。
  5. [表示文字の設定を保存する]をクリックする。

カテゴリの設定

広告コードの設定

ページに広告を表示させる場合に設定します。

  1. [メニュー]→[文書管理]にアクセスする。
  2. [文書の一覧]から、[PageHead]をクリックする。
  3. [既存文書編集フォーム]の[HTMLコード]に、広告コードを貼り付ける。
  4. XHTML に準拠した形に書き換える。(そうしないと、 Opera や firefox 等でエラーになって表示されない場合があります。)
  5. [文書を修正する]をクリックする。
  6. [PageFoot]や[PageHeadMobile]、[PageFootMobile]についても同様にせっていする。

ブロックの設定

  1. [管理メニュー]→[ブロック管理]にアクセスする。
  2. [ブロック検索フォーム]の[UA]を[HTML]、[アプレット]で[Index]をそれぞれ選択して、[ブロックを検索する]をクリックする。
  3. [ブロック設定フォーム]で、[利用コンポーネント]が[Document::block]、[リクエスト]が[item=main]の項目の[番号]のチェックボックスをチェックする。
  4. [ブロックを削除する]のラジオボタンをオンにする。
  5. [実行]ボタンをクリックする。

エントリーの登録

以上で、 W.S.O をブログとして利用する準備が整いました。[表紙]または[ブログ]にアクセスし、[機能メニュー]→[エントリー登録]をクリックすると、エントリー登録画面になります。

これから

仕様変更

  • WHOpPERL::VII
    • component,block の仕様変更
      • Applet から、 WSO オブジェクトへの、パラメータの渡し方
  • @2007-11-13T00:50+09:00 Document と Help の統合
  • WHOpPERL::HTML::RSS を作る

    っていうか、 WHOpPERL::HTML→WHOpPERL::Format に

  • DATABASE のカラム名を変える
    • ALTER TABLE CHANGE oldname newname TYPE を使う
    • フィールド名を統一
      • namespace
      • title
    • View Data Seek すべて書き換えないと
  • ディレクトリの変更
    • WHOpPERL::Components
    • modules
  • DATABASE をグローバル化
  • @2007-03-11T10:06+09:00 CompactHTML への対応を止める->進行中

機能拡張

  • WHOpPERL::Applet::Admin
    siteurl
    ドメイン
    direcotory
    インストールディレクトリ
    cookie_path
    クッキーのパス
  • WHOpPERL::Applet::Wlog
  • WHOpPERL::Applet::Xlog
    • sticky なポストの実装→必要ないかな?
    • h3 レベルのデータ仕様の変更
      • 1 entry に xevent データを複数関連づける
    • xlog のサブデータの同一フォームでの編集とか

      フォームを表示するのは Plugin 方式で item 表示と同様に出来るけど、 post 側での処理の方法が決まらない。

      • component で Plugin を呼んで、 module にデータを呼び出す
      • block で post を複数呼び出す→ id の引き渡しの問題
  • WHOpPERL::TEXT
    • &applet/Hoge; の取り扱いなどを変える
    • リビルドの変更 -> xlog 系 plugin と連動 -> category が同じものだけ
    • TEXT の各処理のメソッド化
    • アンカーの設定
    • アンカーへのリンク
    • ベイジアンフィルタの導入
    • @2007-02-14T20:51+09:00 table を入れ子可能に
    • @2007-03-11T00:08+09:00 プラグインの仕様
  • WHOpPERL::Package::XTask
    • カレンダーに表示
    • 期限が切れたら javascript で警告
    • 期限延長ボタン
    • 進行状況変更ボタン
    • プラグインブロック
    • 期限のないタスクの許可
  • 各種文字コードへの対応
  • setup.cgi の調整

問題解決

  • セキュリティチェック
    • SQL インジェクション
    • 環境変数のチェック

終了

  • @2007-02-15T01:06+09:00 @WHOpPERL::TEXT::IPlugin::Xlog で、一行内に同じ chapter subject が複数あった場合変。
  • @2007-02-15T01:06+09:00 WHOpPERL::Applet::Document での &Applet/Hoge;\ の扱い。
  • @2007-02-17T18:58+09:00 WHOpPERL::Applet::File folder の仕様変更→ fileNO 指定の親要素指定から、任意文字の名前空間に
    • @2007-02-17T18:58+09:00 フォルダを書き換えると、同じ名前空間を持つファイルのフォルダも書き変わる
    • @2007-02-17T18:58+09:00 フォルダを階層構造にするか?
    • @2007-02-17T18:58+09:00 新しいフォルダフィールドを作る
    • フォルダ名 / で区切ってタグ検索
  • @2007-02-19T02:09+09:00 category の呼び出し変更→モジュール化
  • @2007-02-19T02:09+09:00 WHOpPERL::HTML::FORM DATABASE を必要なくする
    • @2007-02-17T18:58+09:00 file_folder
    • @2007-02-19T02:09+09:00 category
  • @2007-02-20T22:56+09:00 WHOpPERL::Applet::Xlog::Seek の再考
    • @2007-02-20T22:56+09:00 parent 検索の時おかしい
  • @2007-02-22T11:55+09:00 WHOpPERL::HTML 各メソッドの返値を ($startTag,$Contents,$endTag) の3要素の配列にする
  • @2007-02-16T02:39+09:00 WHOpPERL::TITLE を WHOpPERL に統合
  • @2007-02-05T12:05+09:00 "Applet"と"Block"に検索機能を追加。
  • @2007-02-05T12:05+09:00 "Comment"に、親アイテムなしの投稿機能を追加。
  • @2007-02-05T12:05+09:00 "People"パッケージと"Group"パッケージの動作確認。
  • @2007-02-05T12:05+09:00 やるべき事は、"Calendar"にカテゴリを反映すること。
  • @2007-02-05T13:03+09:00 "Xlog"の投稿フォームにもカテゴリを反映するべきか?
  • @2006-04-03T21:15+09:00 javascript の複数呼出
    • @2007-02-05T12:05+09:00 glob で読み込む
    • @2006-04-03T21:15+09:00 package による javascript フォルダへのコピー
  • @2007-02-05T12:05+09:00 text のオプションコードのボタンの自動生成
    • @2006-04-03T21:15+09:00 上の javascript の複数呼出で解決
    • @2007-02-05T12:05+09:00 block で javascript ファイルを読み込む
  • @2007-02-05T12:05+09:00 Package の削除機能
  • @2007-02-05T12:05+09:00 xlog の表示順
    • @2007-02-05T12:05+09:00 id 順に
    • @2007-02-05T12:05+09:00 updatetime の更新
  • @2007-02-10T16:28+09:00 login → session に。

    @2007-02-10T16:28+09:00 セッションの管理とか。

  • @2007-02-05T12:05+09:00 entry の title のネームスペース

    @2007-02-05T13:04+09:00 hoge/fuga/title ->\ title のみ表示。

  • @2007-02-05T12:05+09:00 WHOpPERL コードのエスケープ。
  • @2007-02-05T12:05+09:00 calendar の色分けの仕方の変更
  • WHOpPERL::VII
    • @2007-04-06T23:35+09:00 各種 Plugin は、 WHOpPERL::Components で呼び出す
      • @2007-03-10T11:51+09:00 WHOpPERL::View::Board::board::Plugin
      • @2007-03-10T11:51+09:00 WHOpPERL::Applet::Calendar::Html::Plugin
      • @2007-03-10T11:51+09:00 WHOpPERL::TEXT::Plugin
      • @2007-04-06T23:35+09:00 WHOpPERL::Applet::File

        @2007-03-11T00:08+09:00 現行では WSO オブジェクトにパラメータを返しても、 Main ブロックにパラメータが届かない

    • component,block の仕様変更
      • @2007-04-06T23:35+09:00 post メソッドパラメータの渡し方を変える
      • @2007-02-22T22:44+09:00 OptionExecute>Main>PluginBlocks の順で実行
      • @2007-02-22T22:44+09:00 Component から WSO オブジェクトへパラメータを返す
        • -@2020-02-23T16:02+09:00@@2007-02-22T22:44+09:00 set_property メソッドを追加-
          • @2007-02-22T22:44+09:00 set_get
          • @2007-02-22T22:44+09:00 set_put

      -@2020-02-23T16:02+09:00@@2007-02-22T22:44+09:00 OptionExecute から WSO にパラメータを返し、 Main,PluginBlocks で処理可能-

      * @2007-02-22T22:44+09:00 default_category の問題とか

Usertime : 0.08 / Systemtime : 0.01