2005-01-01から1年間の記事一覧

セッションタイムアウト時の自動ログオフ

お仕事用メモ。実装方法を簡単に。直接HttpSessionに格納するクラスでHttpSessionBindingListenerを実装する。セッションからインスタンスが削除された場合と、セッションが破棄された場合にメソッドvalueUnbound(HttpSessionBindingEvent)が実行されるので…

セッションチェック用のサーブレットフィルタ記述例

お仕事用メモ。処理に関係ないところは省略してあるので、このままでは動かないよ。 public class SessionCheckFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, Servlet…

ノートPCのバックライト

プライベートで使っているのはLet's note W2A。2年前ぐらいのモデルなのだが、どうも最近液晶ディスプレイの調子が悪い。一部が線が入ったように点滅している…。バックライトが切れかかっているのかもしれない。早めにフルバックアップを取って修理に出した…

テーブル設計と削除フラグ

データベースのテーブル設計で、削除フラグを項目として持つ場合: 目的 レコードの物理削除(delete)は行わない 論理削除(削除フラグON)のみ行うための仕掛け 常に削除フラグを参照しなければならない 通常のデータマッピングの仕組みだとprimary keyしか…

フレームワーク比較表

PHP

メジャーなPHPのフレームワークの比較表を、id:katase_nさんがまとめてくださっている。わかりやすい。 http://d.hatena.ne.jp/katase_n/19700102#1124403109こうして比べると設計思想の違いが垣間見えて面白い。ソースの中身も大分読んでるけど、結構違うん…

共通処理の実装方法例

処理全体で共通の処理をさせたい場合 ログ出力とか データベース関連クラスのインスタンスの持ち回りとか セッションの確認/登録とか Actionクラスのサブクラス、BaseActionを作成 executeメソッドで共通処理を実装 processという抽象メソッドを用意、execu…

テンプレートファイルの拡張子

Smartyのテンプレートファイルの拡張子 候補 *.tpl ... 習慣でそうすることが多い *.html ... Mapleとかguessworkで採用されている形式 Moonyでは デフォルトは*.tpl /moony/config.phpで設定されている /moony/config.phpを書き換えれば変更可能 *.htmlとか…

自動生成機能

http://d.hatena.ne.jp/kunit/20051119#1132363548 Mapleにスケルトンの自動生成機能が実装される模様 CLI版のPHPで動作 action、component、設定ファイル、テンプレートの自動生成が可能 あればやっぱり便利! 必要がないなら使わなければよいだけの話 あっ…

お仕事の環境…

サイボウズ・ラボ入りたい!(本気) 現在の仕事 Java(Struts)を使ってWebアプリ構築 やることは毎回ほとんど一緒 そもそも飽きっぽい性格! PHPとかRubyで開発するのもいいよね できそうな開発メンバーが他にいない...orz 業務アプリもいいけどもっとみん…

開発作業と英語名

開発作業をしていると、英語名の命名に悩む場合が多い。データベースの項目名とか、ソースの中の変数名、クラス名とか。面倒なときは日本語名をそのままローマ字にしてしまうのだが、なんとなく格好悪い。開発作業用の対訳集みたいなものがあるといいかもし…

開発作業をするマシンについて

現在はWindowsで作業 本格的に開発作業をするにはLinuxサーバが別途必要 VMWareとかcoLinuxでもいいが、設定が面倒 サーバを別途立てると電源のON/OFFが面倒でつけっぱなしになる 電気代が気になる… ソフトウェア 使い慣れたソフトがある 今まで購入したソフ…

営業の仕事

そもそもSIerの営業職の人って、どれぐらい勉強しているものなのだろうか。システムに関する知識が全くなくても、何とかやっていけるものなのだろうか。自分の会社を見ていると、営業があまりにも浅薄な知識しか持っていないので不安になる。

裏紙メモの使い方

開発の仕事をしていると、裏紙にメモとか気がついたことを書きなぐることが多い。それをうまく活用できないか考えてみた。 裏紙にメモすることが多い 単なるメモ タスクリスト 簡単な設計図(UML) 人に説明するための図 大抵は後日シュレッダー行き もった…

DAO設計メモ

お仕事で今後DAOとか作るとき用のメモ(改めて): 検索メソッドの検索結果はListで戻す 検索結果が0件の場合はsize=0のListを戻すようにする 結果として、nullを返さないことを保障する nullチェック無しでIteratorを使用してループ可能 いちいちnullチェッ…

ツナトマトスパゲッティ

昨日、昼食として作ったもの:材料 トマトホール缶1つ(カットトマト缶でもOK) ツナ缶1つ ニンニクひとかけ キャベツすこし 手順 オリーブ油を熱して刻んだニンニクを投入 軽く色づいたら、トマトを入れて大まかにつぶす 大体つぶれたら白ワインを少し入れ、…

ネットワーク依存の仕事内容

午前中、会社のネットワークがダウン。原因が特定できずに復旧が遅れる。影響の主なものは: ドキュメントサーバにアクセス不能 CVSリポジトリにアクセス不能 DBサーバにアクセス不能 開発用Wikiの閲覧不能 グループウェアの閲覧不能 ネットワークプリンタの…

ドキュメント作成

さて、配布するからにはドキュメントが必要になる。最低限の動作ができるようなドキュメント。というわけで、PHPのフレームワークのドキュメントをいろいろ見ている。 Maple Project - サポート Ethna - インストール Ethna - チュートリアル Mojavi 2 - Ins…

ライセンス変更

思うところあって、ライセンスをLGPLからBSDライセンスに変更。

SourceForge.jpのCVSにssh経由でアクセス

なかなか設定が面倒だったのでメモ。 Windows機 sshクライアント: Cygwinのssh CVSクライアント: Eclipse 3.1 手順 Cygwinをインストール(ssh必須、cvsも入れておくとコマンドで使える) 環境変数の設定(HOME、CVSROOT、CVS_RSH) HOMEにはCygwinのsshで使…

CVSの公開

SourceForge.jpに場所を借りて、CVSを公開してみました。まだまだ仕様とか構造の変更があると思いますが、とりあえず形になってきた感じ。ドキュメントの方もそろそろ書かないとダメですね。基本的にはREADMEとして配布予定。あとはこのサイトに簡易マニュア…

アクションクラス設計

/moony/core/Action.class.php 抽象クラス(PHP4なのでabstract記述はできないが) 全てのアクションクラスのスーパークラス メソッド init(): void 初期化処理 executeの前に実行される 必要に応じてサブクラスでオーバーライド execute($request, $session…

大文字小文字

PHP

PHPのマニュアルを見ると、TRUEとかFALSEとかNULLとか書いてある。てっきり大文字で書くものかと思っていると、PEARのソースにはtrueとかfalseとかnullとか書いてある。どうやらどちらでもいいらしい。PHPのカルチャーではどちらが主流なのだろう。あまり気…

セッション管理クラスの設計メモ

/moony/core/Session.class.php start(): void セッションを開始する destroy(): bool $_SESSION配列を初期化 セッションクッキーの無効化 session_destroy(); get($key, $alt = null): mixed 指定されたキーで格納されていない場合は代替値を返す 参照を返…

テンプレートエンジン

Smarty-Light 軽量 新しいライブラリなので周辺技術なし バグがある可能性 Smarty すこし重い 周辺技術がたくさん Smartyを前提にしたライブラリもある ユーザがそうしたライブラリと組み合わせることも可能 実績が多いのでバグが少ない(と期待) 普通のサ…

エラーの扱い方と言語要素

PHP

Moonyは原則としてPHP4の環境で動くようにしているので、exceptionは使っていない。でもPHP5の環境で使うとしたら、DB関連のエラーなどはexceptionにした方がいいのだろう。そうすることで構造的な強度は確保できるだろうが、気軽さという面ではどうだろうか…

エラーハンドリング

/moony/util/ErrorHandler.class.php メソッド: forward($message, $file, $line) 処理はhandleメソッドに委譲 $codeにはE_USER_ERRORを引数として設定 メソッド: handle($code, $message, $file, $line) /moony/util/Logger.class.phpを用いてロギング $cod…

DBアクセス用クラス構想

データベースの使用を前提としない でも、使うこともあるでしょう ライブラリとして提供する(/moony/util/Dao.class.php) PEAR::DBのラッパークラス 検索メソッドの引数はプレースホルダーを含むSQLと、パラメータ配列 パラメータのエスケープは自動でして…

設計の単純化

お仕事の話。 設計を単純化すること 仕様の単純化 意思の疎通がしやすい 仕様漏れをできるだけ減らす 仕様変更が少ないのでモチベーションが保たれる プロジェクトのゴールの明確化 アプリケーション設計の単純化 扱いやすいフレームワークの選定 モジュール…

ライセンス

どうしようかいろいろ悩んだ結果、内部で利用しているSmarty-Lightと同じLGPLに。現在ソース公開に向けて準備中。コーディングは全体の80%ぐらい終了。あとはドキュメントの整備…。どこまで書けばいいのかな。

Loggerの実装

サイト構築用の簡易フレームワークにログ出力機能は必要か まずログなんて出さない その都度出していたらファイルサイズが巨大化 ただし、DBを使う場合はエラーログだけ出力したい ごくごく単純な機能だけ用意しておくことに PHPのLogger PEAR::Log 割と使い…