事務所の壁時計がとうとう止まってしまいました。1983年購入ということなので、26年近く動いていたことになります。
どうして1983年に買ったことがわかるかといいますと、亡くなった父のメモが時計に貼ってあるからです。しかも、いつ電池を交換したかもメモに残しているのです。
送信者 北青山通信 |
父はとてもマメな人でした。こればかりは真似できません。
とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。
事務所の壁時計がとうとう止まってしまいました。1983年購入ということなので、26年近く動いていたことになります。
どうして1983年に買ったことがわかるかといいますと、亡くなった父のメモが時計に貼ってあるからです。しかも、いつ電池を交換したかもメモに残しているのです。
送信者 北青山通信 |
父はとてもマメな人でした。こればかりは真似できません。
CakePHPで実現するBaserCMSというCMS(コンテンツ管理システム)をここのサイトから知りました。
BaserCMSのサイトでマニュアルを見てみても、どんなことができるかわかりませんでした(見落としているかもしれません)。おそらくメニューの生成と、ページをWebの管理ページから作成、ブログやフォーラムの配置ができるものと推測されます。BaserCMSは、企業向けのサイトができるとは謳っていますが、具体的な機能があるか書かれていないのは残念です。やはり自分でBaserCMSをインストールしてみないといけないのでしょうか? 自由に管理ページまで触れるデモサイトがあればいいのですが。あと、ユーザーフォーラムに記事が0というのも寂しいです。
CMSは、ユーザーにとってはWeb上でページを追加できることが一番のメリットと思いますが、開発側からはモジュールの追加による機能の追加がメリットかもしれません。用意されているモジュールを組み合わせてサイトを構築できるというのはありがたいです。
CakePHPの上で開発されていることは、PHPで有名な某CMSよりは、モジュールを作成してカスタマイズの見通しがよいと考えられます。この点は、BaserCMSはCMSの正しい方向かもしれません。
実は今日、ニュースリリースやお知らせのページをユーザーが作成したり、カレンダーで日程を表示したりなど、CMSで実現できそうな案件がお客様から来ましたが、一から開発ということになりそうで、費用とスケジュールが合わないのでお断りの連絡を入れたところでした。BaserCMSのようなCMSが具体的になっていけばいいかもしれません。
普段、Webブラウザのホームページは、Google Appsのスタートページにしています。スタートページに、Remember the milk、Gmail、Googleカレンダーのコンテンツを配置しています。
最近、Gmailコンテンツでメールサブジェクト一覧が表示しなくなりました。原因は、Gmailの設定で「接続方法」を「常に https を使用する」したためです。こちらを「https の使用を選択制にする」にすればいいのですが、GoogleAppsは「https の使用を選択制にする」は選択できなくなっています。
使っているGmailコンテンツはGoogle純正(?)ですので諦めていましたが、ふと他のGmailコンテンツを試すことにしました。いくつかインストールしてみると、うまく行くコンテンツがありました。インストールページをリンクしようとしましたが、GoogleAppsの内部のリンクになりますのでできませんが、「Gmail Gadget」でコンテンツを探してみればよろしいかと。
これでGoogleAppsトップページでメールを確認できます。
ツレの昔の会社の人のメールの設定でサポートした。2つのメールアドレスでどちらに届いたメールをどちらのアカウントでもメールを読みたいとのこと。
片方でPOPでメールを取得して削除してしまっているので、もう片方のアカウントではメールがなくなっているのが原因。
解決方法は、一つにメール転送させてまとめ、もう一つのアカウントでPOPでもメールの残す設定をすればよい。メールを読むのはメール転送していないアカウントで読む。
こうなると面倒。そこで、Gmailでまとめて読む方法を教える。方法はこの通り。
とりあえず、これで2つのメールアドレスに来たメールはGmailで読めるようになる。電話で指示しながら30分近くかかって1.と3.までサポートした。
オプションとして、
も伝えた。このオプションまでサポートしたのがダメだったらしい。とても面倒に思ってしまったようだ。
結局は、2.ができなかったようだ。メールアドレスを管理しているプロバイダに連絡したようだが、最初のPOPでため込むようにしたとのこと。
サポートが無駄になった。サポートしていると、よくある気抜けの結果でした。よけなことを言い過ぎた・・・。
お客さんとの情報のやりとりを共用しようと、最初はDokuWikiをインストールして構築していったが、万が一サーバーが潰れたら元もこもないとバックアップの設定。こんな面倒なら代わりに何かいいものはないかと思ったらありました。
Googleグループならば、サーバーの心配することのないし、データも飛ぶこともないだろうと(だいぶ楽観的)、Googleグループにグループを作成してみました。Wikiよりも書式が少ないので簡単なので気に入ったのですが、大きな問題がありました。
ページ名が日本語のページにリンクができないのです。例えば、「テスト1」というページにリンクを貼ると
http://groups.google.com/group/XXXXXXXXX/web/%E3%83%86%E3%82%B9%E3%83%88%EF%BC%91
となります。このままですと、不正なリンクになります。
http://groups.google.com/group/XXXXXXXXX/web/テスト1
と無理矢理ページ名を日本語にしてしまえばいいのですが、これも面倒です。
解決方法がないかと調べましたが、解決ではありませんがありました。
Googleグループ ヘルプフォーラム 「ページ名のリンクが不正になる」
Googleのヘルプフォーラムにコメントがないところを見ると、まだ解決されていないようです。
Googleグループのページは、あまり文書を分割してリンクを貼るなということでしょうか・・・。
CakePHPで開発していて、ローカルのサーバーにテストサイトで動かしたいとき、まともにlocalhost直下に置ければいいのですが、いろいろとプロジェクトを抱えていると、たくさんのテストサイトを同時に動かしたいときがあります。サブディレクトリごとに設定してあげてもいいのですが、これだと.htaccessの設定が面倒であったり、絶対アドレスでリンクを指定できないとか制限があります。
ドメイン直下にドキュメントルートを配置できればいいのですが、一つ考えられるのはサブドメインを指定するというのがあります。しかし、これではlocalhostでは指定できないととか、わざわざローカルのPCにサブドメインを指定するのもやっかいであるとなります。
次に考えられるのはポート番号で分けてしまう方法があります。例えば
などでアクセスすることになります。これですと、ポート番号を適当に追加していけばプロジェクトを分けてアクセスすることが可能にになります。
簡単にローカルのPCにCakePHPのテスト環境を構築するにはXAMPPをインストールしてしまうのが一番簡単です、XAMPPを一つインストールしてしまえば、CakePHPのテスト環境で必要なApacheや、PHP、MySQLも動かすことがことができます。
ポート番号で分けてCakePHPの環境で動かすには、Apacheのhttpd.confにバーチャルホストの設定を追加してしまいます(ここからが本題)。上記のAプロジェクトの場合はApacheのhttpd.confに以下のバーチャルホストの設定を追加します。
Listen 8080
DocumentRoot C:/workspace/TestProject/app/webroot
DirectoryIndex index.html index.php
ServerName localhost
<Directory C:/workspace/TestProject/app/webroot>
Options Indexes FollowSymLinks MultiViews Includes ExecCGI
AllowOverride All
Order deny,allow
Allow from all
</Directory>
この場合、ダウンロードしたCakePHPは、c:\workspace\TestProjectにコピーしてしますと(EclipseのPDTで開発しているためこんなディレクトリにプロジェクトを入れています)、ドキュメントルートはその下の\app\webrootになります。プロジェクトを増やす場合は、赤字の部分を変更すればいいでしょう。
Optionsは、適当に動作させる環境に合わせて設定してください。これは、テスト環境を自分のローカルPC以外からアクセスできないようにしたり、ましてインターネットからアクセスできないようにしたり(もちろん当たり前ですが)してしまえば、あまり気にしなくてもよいかもしれません。
以上、いつもhttpd.confの設定でつまずく覚え書きです。
せっかくこの記事にたどり着いて読んでくれたところ申し訳ありませんが、現在(2014/04/28)のところ、この方法は使っていません。今はVirtual Box+Vagrant+Chefでローカルのテストサイトを構築しています。
またまた、上記の追記のVirtual Box+Vagrant+Chefはもう使っていません。現在は、Dockerでテストサイトを実現しています。その方が簡単です。
チビと鉄道博物館に行ってきました。三連休の初日ということで混んでいるのを覚悟していましたが、そんな心配は全く無しでした。
チビの大きなイベントは、ミニ運転列車。小さな電車をマスコン、ブレーキを操作しながら運転できる体験ものです。もちろん、信号を守って運転しなければいけません。安全第一なのです。
私と言えば、一番感動したのは、0系新幹線でした。とっても美しい造形なのです。車内もオリジナルに近い座席があったりと、とても懐かしかったです。
お昼は、館内で駅弁を買って、車内で食べられる車両がたくさんありますので、お昼を買わずに行くのはお勧めです。食堂車のメニューがあるカフェテリアもあります。
最後に体験イベントで、みどりの窓口の切符の販売の体験もやってきました。切符も発券してくれます。
増築工事もやっていましたので、また行きましょうか・・・。
今開発しているWebサイトは、別の開発会社が別の機能を開発している。時間の関係で私がすべて開発できないので、発注元が別の開発会社を割り当てている。
その会社からの質問。
本番サーバーのDBにアクセスしたら文字コードの関係でデータが抽出できない。
そういえば、本番サーバーはTurboLinuxで文字コードがEUCだっけ。インストールされているPostgreSQLも7.x系で、テストサーバーとは違っていたような。テストサーバーは8.x。この辺りは自分がサーバーの面倒を見ている訳ではないから伝えていなかった。失敗。
PostgreSQL上にUTF-8でデータベースをcreatedbで作成しておいて、UTF-8でダンプしたSQLでリストアしておいた。システムの想定する文字コードはUTF-8。この辺りが怪しそうなので連絡しておいた。
私はCakePHPで開発していて、別の開発会社はperlのCGIで開発。CakePHPの経験がないので、perlのCGIになったようだ。
こちらは全く文字コードの意識はしていない。なにかうまく動いている。結果オーライ。apps/config/database.phpでencodingの設定もしていない。データベースが絡んだ案件は、必ず最初に文字コードでトラブルが起こる。
後から、私は非協力的だと開発会社から言われるのでしょうね。psqlコマンドで一発でわかりそうなものだが、そういえば発注元はその開発会社に、サーバーにシェルでアクセスさせる権限が与えていないかも・・・。
現在開発中のWebサイトはCakePHPで開発しています。今回は、PCと携帯電話の両方をサポートしています。どちらもコントローラーとアクションは共通でビューだけが異なります。携帯かどうかの判定をして、携帯電話であったらm_*.ctpという名前のビューを取り込むようにしています。
携帯電話の場合の文字コードは、基本的にシフトJISになります。通常はPHP、HTML、DBはUTF-8にしていますので、表示するときに強制的にシフトJISに文字コードを変換して、英数字カタカナを1バイト文字に変換してしまいます。この辺りはレイアウトに処理を書いておけばCakePHPだと簡単です。
ここから本題です。失敗したこと。
携帯電話の画面で矢印の代わりに<と>を使っていました。<>は2バイトコードです。例えば
<前へ 後ろへ>
のようにリンクを設定します。
しかし、お察しのとおり携帯電話のブラウザだとおかしなコードが表示されてしまいます。つまり<>がHTMLタグの始まりと終わりになって認識されてしまいます。
解決方法は簡単です。面倒がらずにHTMLの特殊文字でまじめに指定することです。<は<>は>です。これで正しく表示できます。
やはり基本は大事です。
Firefox + Google リーダー + Greasemonkey + Google Reader Full Feed + RefControl で快適にサイトを読めるということを書きましたが、中にはどうしても画像が読み込めないサイトがあります。
例えば、blog.goo.ne.jpとかwebry.info(このサービスはどこ?)とか。
試しにRefControl のオプション設定で、動作を「偽装」にすれば上記の2つのサイトは正常に画像が表示するようになった。