UQコミュニケーションズ(UQ Com)が2/26からWiMAXのサービスを開始するというアナウンスがINTERNET Watchに流れていた。モニターを募集するということなので申し込みをした。
6/30からモニターから正式申し込みになるようなので、クレジットカード情報の入力も必要。
アンケートには、ブログで知り合いに紹介するかの質問もあった。当たれば、ここ使用状況など書かせていただきます。
とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。
作業した際の覚え書き。
UQコミュニケーションズ(UQ Com)が2/26からWiMAXのサービスを開始するというアナウンスがINTERNET Watchに流れていた。モニターを募集するということなので申し込みをした。
6/30からモニターから正式申し込みになるようなので、クレジットカード情報の入力も必要。
アンケートには、ブログで知り合いに紹介するかの質問もあった。当たれば、ここ使用状況など書かせていただきます。
デザイナーからヘルプがありまして、プロバイダのWAKWAKが用意しているCGIで、sendmailの送信できないとものでした。
WAKWAKのサーバー上では、PHPは動かなくて、perlを使ったCGIでメールの送信をしなければいけません。お客様から提供されたのはperlで作成されたメールフォールのプログラムを設定します。
最近ご無沙汰のperlですが、プログラムの説明通り、パーミッションを設定したり、文字コードをシフトJIS(!)に変換してみたり、アスキーでアップロードしたりと設定してきました。入力項目のチェックも通っていますし、メールを送信のサンキューページも表示されます。しかし、メールが送信されてきません。
Googleで調べてみると、何とWAKWAKて提供するメールサーバーは、宛先のメールアドレスのドメインに-(ハイフン)が含まれているとメールが送信されないという報告が見つかりました。
試しに、ハイフンがドメインが含まれていないgmailのメールアドレスにしてみると、正常にメールが送信されました。
そんなのあり? お客様には現象を説明して、どうするかを考えてもらいましょう。
一番は、WAKWAKのサーバーでCGIを動かさないこと。別のサーバーを借りてもらうことです。
すべてのプロジェクトは、Subversionでバージョン管理しています。プログラムのソースコードはもちろんのこと、ドキュメント、メモ書きなど、プロジェクトで作成されたファイルはすべてSubversionのリポジトリに入れています。
これで安心して修正できますし、どこを修正したかの履歴もわかりますので、たとえ一人でプロジェクトを回していてもバージョン管理をすべきです。複数のPCに分散してもアップデート一発で最新の開発環境を手に入れることができますし、万が一PCがつぶれても、他のPCにファイルがありますのでバックアップとしても使えます。
しかし、バージョン管理は面倒なようで、公開する前にコミットするという癖は、なかなかメンバー(特にデザイナー)に浸透しません。
私なんかは、プログラム開発はEclipseの上で行っていますので、Subvesionを使いながら開発を進めて行くことは苦ににはなりませんが、デザイナーにとっては、エクスプローラからTortoiseSVNでコミットは面倒なのでしょう。
デザイナーが普段使っているDreamweaverからSubversionが使えればいいのでないかと思い探してみまして、やはりありました。「SubWeaver」というDreamweaverのextentionです。ダウンロードやインストール方法は、ここのサイトを参照すれば丁寧に書かれています。何と、日本語化もされています。感謝!
後は、これでもデザイナーが使ってくれるかどうかですね・・・。
現在は、すべてGitに移行してSubversionは全く使っていません。
VistaにXAMPPをインストールしようとしましたがうまくいかない。管理画面(http://localhost/)にアクセスできない。それとローカルのテストサイト(http://localhost/XXXX)にもアクセスできない。
再インストールしてもダメ。いろいろやってみると、http://127.0.0.1/ならアクセスできる。ということは、IPv6が原因か?
調べてみると、hostsファイルの
::1 localhost
をコメントアウトすればいいらしい。しかし、テキストエディタで編集しようとすると、読み出し専用になってしまう。そこで、メモ帳を管理者権限で起動して編集する。これで無事に管理画面にアクセスできるようになった。
結局、Vistaの設定のようです。
以上、覚え書き。
CakePHPを使っていると、ヘルパーなどのリファレンスを解説本では簡単に説明を済ませているところに当たります。CakePHPのマニュアルをよく見れば書いているのですが(ただし、日本語サイトは遅れている場合があり)。
例えばhtmlヘルパーのlinkの説明ところ。Webとか解説本には、
HtmlHelper::link($title, $url = null, $htmlAttributes = array(), $confirmMessage = false, $escapeTitle = true)
$title : タイトル
$url : リンク先URL
$htmlAttributes : 属性
$confirmMessage : 確認メッセージの有無
$escapeTitle : エスケープの有無
などど書いていています。$urlは、”http://testtest.jp/”のようなURLをテキストで設定するようにサンプルに書かれています。
しかし、CakePHPではURLの指定は、
array('controller' => コントローラ名, 'action'=>アクション名)
のように連想配列で指定可能なのです。もし、管理者サイトでは、
array(Configure::read('Routing.admin') => true,'controller' => コントローラ名, 'action'=>アクション名)
のようにすればいいのです。アクション名には’admin_’とかは付ける必要はありません。
CakePHPを使いこなしている人なら当たり前かもしれませんが。一応、自分の覚え書きです。
あとlinkのURLに関連して、ここのサイトに書かれていますが(感謝!)、IDなどの検索条件のパラメータをpaginatorヘルパーに含めるには、 Veiwで$paginator->optionsにurlをキーにした連想配列を設定すればいいようです。Veiwで$paginator->optionsのurlに設定してしまうと、View内のpaginatorヘルパーでsort()などのリンク先には、’val1/val2’が勝手に付けてくれます。
もし、このようにパラメータが付けてアクセスしたときに、
http://testtest.jp/コントローラー/アクション/val1/val2/
ビューの最初で
<?php
$paginator->options = array(
'url' => $this->passedArgs
);
?>
とすると、passedArgs変数は、パラメータを持っていますので、ビュー内の
<?php echo $paginator->sort('title');?>
は、
http://testtest.jp/コントローラー/アクション/val1/val2/page:1/sort:title/direction:asc
というようなパラメータを付けたリンクを作ってくれます。
現在、CakePHPでニュースリリース管理を作成しています。そこで、リリースの日付を入力するところがあるのですが、CakePHPのそのままのHtmlヘルパーを使って日付を入力してしまうと、日本人向けではないフォーマットで選択させてしまう。
例えば、
$option_datetime = array(
'type' => 'datetime',
'timeFormat'=> 24,
'dateFormat'=> 'YMD',
'legend' => false,
'label' => false,
'div' => false,
'interval' => 15,
);
echo $form->input('release_date', $option_datetime);
のようにする。
これだと、月が英文(”Januaru” ~”December”)で選択させる。dateFormat属性の指定は、date()のfomartになるかと思えば違っていた。仕方ないので、formヘルパー(/cake/libs/view/helpers/form.php)に手を入れようとした。しかし、FormHelperクラスの__generateOptionsメソッドのこの部分
case 'month':
if ($options['monthNames']) {
$data['01'] = __('January', true);
$data['02'] = __('February', true);
$data['03'] = __('March', true);
$data['04'] = __('April', true);
$data['05'] = __('May', true);
$data['06'] = __('June', true);
$data['07'] = __('July', true);
$data['08'] = __('August', true);
$data['09'] = __('September', true);
$data['10'] = __('October', true);
$data['11'] = __('November', true);
$data['12'] = __('December', true);
} else {
for ($m = 1; $m <= 12; $m++) {
$data[sprintf("%02s", $m)] = strftime("%m", mktime(1, 1, 1, $m, 1, 1999));
}
}
break;
を見ると、マニュアルにないmonthNames属性があることがわかる。上記の$option_datetimeに
'monthNames' => false,
を追加すれば、月が’01’~’12’になる。ソースは読んでみるものだ。
しかし、このソースを書いた人は、date()を頭にないような感じがする。本当ならば、dateFormat属性がdate()のフォーマット指定のように振る舞えればいいのだが。
お客様からRT58iの再設定の依頼。お店を閉めて、別の場所に開店するとのこと。
インターネットプロバイダ(WAKWAK)とフレッツグループアクセスの接続設定、IPアドレスの変更。
最初に、RT58iの設定のバックアップをしてしまいます。こちらは、telnetでtftpを有効にして、ヤマハのRT-Tftp Clientを使えば簡単です。
一旦RT58iを初期設定してしまいます。RESETとINITボタンを押せば初期設定できるとマニュアルには書いていますが、この方法では初期設定できませんでした。代わりにWebブラウザで接続して、かんたん設定ページのメニューから工場出荷設定に戻します。
同じくかんたん設定ページから、新しいIPアドレスのサブネットに合わせて、IPアドレスを設定しておきます。このときかんたん設定ページには、新しいIPアドレスで接続し直すわけですが、接続するPCのIPアドレスはDHCPではなくて、固定のIPアドレスを設定しておきます。
バックアップした設定ファイルから、記述しているIPアドレスを新しいものに変更してしまいます。続いてWAKWAKとフレッツグループアクセスのIDとパスワードも変更してしまいます。
再びtelnetからtftpを有効にして、ヤマハのRT-Tftp Clientを使って、新しい設定ファイルを投入します。これでRT58iの設定は完了です。
ついでに、RT58iの最新のファームウェアをダウンロードして、ヤマハのRT-Tftp Clientから更新してしまいます。
手順を間違えなければ、ヤマハのルーターの設定作業は時間はかかりません。Webブラウザからいちいち画面で設定するよりも、設定ファイルを作って流し込めば、間違いが少なくて済むのがよいのでは。
拠点間や法人向けルーターは、ヤマハのルーターが信頼性があってお勧めしています。私もヤマハのルーターを使っています。
以前からKDDIのサイトにアクセスできないのが気になっていましたが、調べてみると原因はIPv6でした。というよりも、NTTのフレッツが割り当てるIPv6アドレスでした。
フレッツが振るPv6アドレスは、フレッツ網だけしか使えないIPv6アドレスのようで。KDDIのサイトは、IPv6で利用できるので、IPv6で接続しに行こうとする。そこで接続できないことになる。詳しくはここのページを参照のこと。
フレッツのIPv6利用者、Vistaで一部サイトの表示が遅延
INTERNET Watch
どうして気がついたかというと、コマンドプロンプトで
ping www.au.kddi.com
と実行してみたら、IPv6のアドレスが表示されたため。
Vistaでは、デフォルトでIPv6が有効なるために、このような現象が起こるようです。しかも、ルーターがYAMAHAのRTX1000で、こちらもIPv6が有効になっている。
解決方法は、IPv6は無効にすること。RTX1000でIPv6を無効にする方法がわからなかったので、VistaでIPv6を無効にしてみました。
これで、無事にKDDIのサイトにアクセスできるようになりました。
こんなことでIPv6って普及するのだろうか? 何だかIPv6の不幸な話しです。
リモートデスクトップ接続でPCを操作しているとき、そのリモートPCを再起動しなければいけないときがあります。リモートPCには、「スタート」メニューから「再起動」がありません。
よくあるのは、コマンドプロンプトから、
shutdown -r
を実行する方法。これでもいいのですが、タスクマネジャーから再起動する方法。
こちらのほうが、ワンクッションありますので、一旦本当に再起動してもいいか確認してかできます。パラメーターを間違えて、シャットダウンしてわざわリモートPCのある場所に行かなければいかないなんてこともありません。
コマンドプロンプトから
C:\WINDOWS\system32\taskmgr.exe
をタスクマネジャーを実行します。こちらのメニューから再起動を実行します。
いずれにしても、たまに再起動できない場合がありますので賭けになりますが、リモートデスクトップ接続よりもTeamViewerなどのソフトを使ったほうが、もっと簡単に普通通りに再起動ができます。
自作PC用に一番左のWindows11のパッケージを実際に購入しましたが、問題なくインストールできました。Windowsは使うPCの分だけ正しくライセンスを購入しましょう。
ASP.NETでZIPで圧縮して、ダウンロードさせるプログラムを作成。その覚え書き。
ASP.NETでZIPファイルを作成することは、いくつか方法があるが、今回は、ZIP32j.DLLを呼び出して実現することにする。J#のランタイムライブラリをインストールさせたくないし、ライセンスが難しいライブラリをつかいたくないということで。
参考にしたサイトは、ここ。ラッパークラスを頂戴する。感謝。
しかし、ZIPファイルを作成しようとすると、ZipGetRunning()で必ずZIP32j.DLLが動いていると判定してしまう。原因不明。
こちらを回避して、ZIPファイルに圧縮することを確認できた。