2008年12月アーカイブ

c:\> perl -e "print chr(7)"
WindowsにActivePerlがインストールされている場合、上記コマンドを打つとPCからビープ音が鳴ります。

マシンによっては大きい音が出るので、周囲にご注意を。

備忘録のためにメモ。

Onにしたいときは、

<form name='frm' >
<input type="checkbox" name='foo' value='bar' >
<input type="submit">
</form>
<script>
document.frm.foo.checked = "checked";
</script>

Offにしたいときは、
document.frm.foo.checked = "checked";

ある特定のモジュールが、自分のマシンにインストール済みかどうかを調べる方法。

[Perl]定数を使う

いまいちベストなやり方がよくわかりません。

私は定数はあまり使わないが、それで困った事はほとんどない。どうしてもというときは明示的に
sub DEBUG { 1 } # DEBUG 
を定数として使う
http://blog.livedoor.jp/dankogai/archives/50465942.html


ということなので、Danさんのこのやり方に従うことにしてみます。

意外と知られていない技。

C:\>ppm
と入力すると、GUIモードで起動する。 勝手にウィンドウが立ち上がってウザイですね。

C:\p>pm-shell
と入力すればCUIモードで起動する。
昔ながらのコマンドラインモードで操作できます。
お試しあれ。

最近やっとOOPでPerlを書けるようになってきて、Class::Accessor::Fastなるモジュールの存在を知りました。
ところがppmで検索してもClass::Accessor::Fast::** みたいな親戚モジュールばっかり出てきて、肝心のClass::Accessor::Fast本体が見つかりませんでした。

c:\>ppm serach Class-Accessor-Fast
1: Class-Accessor-Fast-Contained
Fast accessors with data containment
Version: 1.01
Released: 2008-11-08
Repo: ActiveState Package Repository

2: Class-Accessor-Fast-Contained
Fast accessors with data containment
Version: 1.01
Repo: trouchelle

3: Class-Accessor-Fast-GXS
generate C::A::Fast compatible XS accessors
Version: 0.01
Released: 2008-05-05
Repo: ActiveState Package Repository

4: Class-Accessor-Fast-GXS
generate C::A::Fast compatible XS accessors
Version: 0.01
Repo: trouchelle

5: Class-Accessor-Fast-XS
XS replacement for Class::Accessor::Fast
Version: 0.02
Released: 2008-11-12
Repo: ActiveState Package Repository

6: Class-Accessor-Fast-XS
XS replacement for Class::Accessor::Fast
Version: 0.02
Repo: trouchelle

7: MooseX-Emulate-Class-Accessor-Fast
Emnulate Class::Accessor::Fast using attributes
Version: 0.00600
Released: 2008-12-17
Repo: ActiveState Package Repository

8: MooseX-Emulate-Class-Accessor-Fast
Emnulate Class::Accessor::Fast using attributes
Version: 0.00500
Repo: trouchelle

調べたら、cpanコマンドでインストールできるようです。
Windowsでもcpanコマンド使えるの知りませんでした。(><)

c:\>cpan
cpan> i Class::Accessor::Fast
cpan> q
c:\>perl -MClass::Accessor::Fast -e "print 1;"
1

無事インストールできました。^^

9ヶ月前に書いた記事の続き。

反省点

環境エラー

  • ローカル環境(windows)で作って、本番環境(linux)に移行した段階でエラー多発。
  • ブックマークが使えなくなって作業効率低下。
  • FTPアップロード忘れが多発して作業効率低下。
  • PHP.iniの設定が違うので挙動が変わり、作業効率低下。
     → 早い段階から本番環境で開発してればよかった。

ファイル命名規則の失敗

当初、confirm_form のように動詞_名詞方式でやっていたが、これがいけなかった。
ファイルを探すのにう~んと考える →作業効率低下・ストレス増大
form_confirmのように名詞_動詞方式でやっていれば、先頭の名詞をカテゴリラベル代わりに使えた。
→ phpのファイル名は、名詞_動詞.php 方式がよい。

ページ遷移図、ファイルリストの不備

実装を最優先にして、整理業務を怠ったために、どこに何があるか収集がつかなくなった。
そのため、後半に能率が大幅ダウン。
→ 最低限のドキュメントを、開発初期に作るべき。

いろんなファイルにコードを分散

いろんなphpファイルに、コードを書き散らして収集つかなくなった。
最初から、全ての関数をプロジェクト共通ファイルにまとめて書けばよかった。
個々のPHPファイルからは、それらの関数を呼び出すだけにするべき。
→関数を作る時点では、その関数を後で使いまわすかどうかは予測できない。
最初からライブラリに書くべき。

配列の使い方のルール

・二次元配列を多用して自爆
→ 二次元配列はなるべく使わないこと。 foreachループがネストして苦労する。

・配列の添字に0始まりと1始まりといろいろあって統一してなかった。
→ 配列の添え字は0始まりに統一すること。

関数の仕様を途中で変更して自爆

関数の戻り値を1次元配列→2次元配列に変更したら、これが原因で大量のエラー発生。
元の関数は保持したまま、新しい別の関数を作って徐々に移行すればよかった。

セッション変数はデフォルトでダンプすべき

良かった点

  • ieHTTPHeaderが超便利
  • クッキーの値を確認するのに役立った。
  • PHPはオンラインマニュアルが充実している
  • 定数を使ってページ先頭で遷移先を記述。define("NEXT","form.php"); これで可読性向上した。

ソースコードをUTF8で書いて、print文をUTF8で出力したい場合。

自分でもよく忘れるのでメモ。

#!/usr/bin/perl

use strict;
use warnings;
use utf8; # このスクリプトはUTF8で書かかれていますよ、という宣言

binmode STDOUT, ":encoding(utf8)";  # 以下のPrint文を自動的にUTF8として出力せよ、という命令

my $str ="あいうえお\n";
print substr($str,2,1)."\n;"    # 'う'  と出力される。

Perl/CGIをWindows+Apache+ActivePerlで開発して、本番環境はLinuxで動かすような場合、
Perlスクリプトの1行目を環境に応じて書き換える必要がありますよね。

#!/usr/bin/perl  (Linuxの場合)
 ↓
#!c:¥perl¥bin¥perl  (Windowsの場合)
これって不便ですよね。
書き換え忘れてLinux上で動かないことがありますよね。

JavaScriptにおける、送信前確認ボタンの出し方。

<input type='submit'  value='送信' onclick='return confirm("よろしいですか?");'/>

フォーム送信前に確認メッセージを出して、ユーザが「はい」をクリックすると送信され、「いいえ」をクリックすると何も起こらない。

js-confirm.JPG

人気記事

このアーカイブについて

このページには、2008年12月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2008年10月です。

次のアーカイブは2009年1月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

最近の人気記事