活動記録の最近のブログ記事

その悲劇は、PHPの巨大なクラスをリファクタリングしたのが原因で起こりました。


「フォームの送信ボタンを連打すると発生するとDB上で2重登録されてしまうバグがあり、その問題に対処するために確認画面に遷移したときに重複レコードを削除することになっているはずが削除されない」というものでした。


2006年から使っていたs225サーバが異常な高付加になっていたので、同じXrea内の新しいサーバに引越ししました。
その結果、嘘みたいにレスポンスが速くなりました。

今のところ大満足です。
ここ数ヶ月、サーバが遅すぎてブログ記事を書く気にならなかったのですが、これからはどんどん記事を投稿していけそうです。

話の経緯

Xreaのs225サーバのレスポンスがすごく遅くいことに気づく。
ブログやWikiのページ遷移に10秒異常かかる状態。

サーバ負荷観測所で負荷を見ると、何とロードアベレージが20以上!これはヤバイ。

カスタマーサポートに問い合わせて改善を要望したが返事なし。

もうXreaを卒業しようと、さくらインターネットや他のVPS業者を検討。

Serversman、Osukiniサーバなどに申し込んでみる。
申し込みが混雑しているらしく、音沙汰なし。

Xrea内の別サーバへ移管することを決心する。


最後の結論にいたるまでが長かった。。。反省。


サーバ移管のやり方

  • サーバ負荷情報を見て、負荷の低いサーバを探す
  • 無料サーバアカウントを新規で申し込む
  • 有料権限をその新規サーバに移管する
  • 旧サーバでDBをダンプする。
  • 新規サーバの管理画面でサーバ間コピーをする
  • ValueDomainのDNS管理画面で、ドメインと紐付くIPアドレスを旧→新サーバのIPアドレスに変更する
  • 新規サーバでドメインウェブの設定をする。(DNSが浸透する前に設定するとエラーが出て設定できないので注意)
  • 新規サーバでDBの復元をする
  • Pukiwikiなどでパーミッションエラーが出たらパーミッションを適切に変更する
  • MovableTypeで管理画面ログインしようとするとエラーが出るので、mt-config.cgiのDB接続情報を変更する(パスワード変更)


気をつけるポイントは下記のとおり。


  • サーバ間コピーは、コピー先のサーバの管理画面から行うこと(逆はできない)
  • サーバ間コピーは、無料→有料へコピーする(逆はできない)
  • サーバ間コピーでは、パーミッションは維持されるが、ファイルによってはオーナーが変わってしまうことがある。(apache → dqneoなどに変更される)。そのため、Pukiwikiでパーミッションエラーが出る。これは、コピー後にパーミッション設定を変更したら解決できた。

なお、旧・新サーバでのアカウント名を同じにしておくと移管が楽なのでオススメです。

参考にしたサイト
このサイトあのサイトこのサイトなんかで、デュアルモニターの快適性に書かれていたのを読んで、自分もいつかはとタイミングをねらっていました。
丁度、ずっと使ってきた三菱の17インチモニター(2001年末に6万円ほどで購入)がだんだんガタがきて、表示も暗いし色もときどき変になるしで、先月思い切って買い換えました。

デルの19インチワイドモニター(SE198WFP)を2つ。合わせて4万円。
注文確定をクリックするのに勇気が要りましたが、設備投資じゃーと自分に言い聞かせて注文クリック。
これが12/11ごろのこと。

さすがはDELLで、わずか3日後に家に届きました。
早速梱包を解いてセッティングと。
何も考えずにディスプレー2台をデスクトップPCにつなげようとしたら、アレ?
PC側には出力端子がオンボードのやつ1つしかない。

うぐぅ。

グラフィックカードを買わないといけないのね。。
すぐさまヤフオクで1500円のDVI出力ロープロファイルビデオカードを購入し、PCに装着。
よっしゃこれでデュアルディスプレイや!とディスプレイつないでみたら、何故かオンボードでつないだ方のディスプレイに映像が出ない。
この時点でPCにはマザーボードオンボードのDSUB出力端子が1個と、後から装着したグラボのDVI出力端子が1個あるわけですが、私はこれでデュアルディスプレイができると思い込んでいたわけです。
ところが、グラボとディスプレイをつないだ瞬間に、オンボードの方が表示されなくなる。

ちょっと調べてみたら、たいていのマザーボードはこういう仕様になっていて、グラボから映像出力するとオンボードの方が自動的に無効になるそうですね。

うぐぐぅ。。。

しょーがない。気を取り直して、カカクコムでデュアル出力対応のロープロファイルグラフィックカードを買う。玄人志向のGFX5200-LA18Cというやつ。4500円なり。
(結局、先ほど購入したグラボはお蔵入りにorz )

発送でかなり待たされて、やっと届いた新グラボをさっそく装着。
よく見たら片方がDVIで片方がDSUBなんですね。ちょっと残念。

気を取り直して接続。
ちゃんと2画面に映像が表示されました。
おーっと感動しようとしたが、よく見るとDVIから出力した方の映像がちょっとおかしい。
気持ち映像が横長に伸びて見えるし、文字が横につぶれてかすんで見える。DOS窓で字が読みにくい。
ウィドウを最大化すると横がちょっとだけ画面からはみ出す。

なんじゃこりゃ?
どう見てもモニタの解像度と出力映像の解像度があっていない。

しかしデスクトップのプロパティを見ても、ちゃんと解像度1440x900に設定されている。

うごごぉぐぅあおお~~~~

DELLのモニタが悪いのか、グラボのハードウェアの故障か、ドライバの不具合か、さっぱりわからん。。。いったい誰に文句を言えばいいのか?

とりあえず抱えているWEBサイト開発案件が手一杯だったので、不具合解決はいったんあきらめて、片方のディスプレイの映像がかすんだままプログラム開発を続行。
perlの文字化け問題(0x5C問題)と格闘しながら年が暮れる。

年が明けてちょっとスケジュールに余裕が出来たので、改めてこの「かすれ」問題に取り組む。

まず、DELLの不良かどうかを確かめるために、2台のディスプレイのDVIとDSUBを逆にしてみる。
お、今度もDVIでつないだ側がかすれて表示される。DSUBでつないだらきれいに表示される。
ということはモニタの以上ではないな。

次に、ドライバを疑ってみる。
天下のnVIDIAに限って、ドライバの不具合などないだろうとタカをくくっていたのだが、nVIDIAのサイトから最新のドライバをインストールしたらあっさり解決した。

あ、ドライバの不具合だったの。
なんてあっけない結末。

というわけで、かれこれ1ヵ月の格闘の末、やっとデュアルディスプレー環境が構築できました。

こんな感じです。
dual_monitor.JPG

めちゃめちゃ快適です。
作業効率が数十%向上するというのもあながち嘘ではないかも。

(ちょっと横の広さを持て余し気味ですがw)


というわけでみなさん、デュアルディスプレーにするときは、一筋縄でいかないことがあるのでよく調べてから環境構築をしましょう。


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"); これで可読性向上した。

Softbank 820SHを買いました。

大学生の頃から10年間ずっとウィルコム(旧DDIポケット)を使っていたのですが、
ついにソフトバンクに乗り換えました。

「携帯電話」を持つのは始めてです。

近所のサクラヤでキャンペーンをやっていて、端末代が一括払いで22,800円。
さらにそこから24ヶ月の間、毎月通信料金が2、200円割引になるという。
つまり、端末代としては22、800円で買って52、000の割引なので、実質マイナス30、000円。
これは買うしかないと、その場で即決しました。

夫婦でソフトバンクに乗り換えたので、5000円x2のキャッシュバック付き。

820SH、いいですねこれ。
この値段で、ワンセグついて2M画素のカメラ付きでお財布ケータイもついてる。
画面も大きいし、きれいだし、文字変換賢いし、ボタンも押しやすい。

つまりめちゃ使いやすい。
ほれました。

シャープさんいい仕事してますね。

無職3ヶ月目に突入しますたw

 

友人が独立して受託Web開発をやっているので、そこに弟子入りしました。

PHPを教えてもらいながら初めてWEBサイト開発をやりました。

弟子入りなので、無償ですw  (来月の家賃払えるのか>オレ)

 

延べ1ヶ月かけて、友人に助けてもらいながら小規模なWebサイトを作りました。

内容は、資格試験の自己採点サービスです。

 

最初の方は、PHPを勉強しながらさくさくスクリプトを書く感じで、スピードは遅いものの順調でした。

初期でつまづいたのはこれです。

 

セッション変数? $_SESSION ? 何それ?

 

「セッション変数」という、PerlにはないPHP独自のセッション管理機構を理解するのが難しかったです。


私のようなPerl初級プログラマは、クッキーしかしらないので、

「 は?セッション変数?何それ?

 HTTPにはステータス情報がないからクッキーでセッションIDをやりとりするのは知ってる。
 けど、セッション変数って何?クッキーのことじゃないの?」

というありさま(><)

 

結局、

「セッションIDに紐づくユーザの情報を、Apacheがメモリ上に保持してくれるので、ページ間で変数を共有できる」

ということだったようです。
いわゆるショッピングカートとかのあれですね。

これを理解するのに3日かかりました。

 

だってPerl/CGIには、Apacheのメモリ上にデータを保存するなんて発想はできないんですもの。

しかし覚えると便利ですね、$_SESSION。

根気よく教えてくれた友人に感謝。^^

ついに退職。

前回、宣言したとおり、3年勤めた会社を12月末で退職しました。いわゆる脱サラというやつです。

辞めた理由は、独立起業しようと思ったからです。
なんで待遇のよい安定した大企業を捨てて独立しようと思ったか、その理由と決断にいたるまでの心境の変化をここに記録しておきます。
誰かの役に立つかもしれないし、自分でも初心を忘れないために。

1.もともと起業するのが夢だった。


一番大きい理由はこれです。
なんで起業する夢を持っていたのかはよくわかりません。
僕が社会に出た2001年という年が影響しているかもしれません。
その年はまさに起業ブームでした。

前の会社に転職したとき、次辞めるときは起業するときだと決めていました。
ただ、そのときは個人投資家として株式投資でやっていく計画でした。
実際、株の運用成績はかなり上出来で、このままいけば数年後には独立できるはずでした。

2.新興株バブルに乗って大敗北


2005年夏から冬にかけてホリエモンが活躍していたころ、新興市場バブルにのっかってしまい、ホリエモン逮捕とともに大敗北を喫しました。
幸いライブドア株は持ってなかったですが、市場全体が冷えこんだのに巻き込まれ、大損。
このとき、自分は投資家としての重要な資質を欠いていると自覚しました。
このときの損は結果的にほぼ取り戻したけど、やはり投資家は向いていないなと自覚。

3.プログラムを書き始める


株式投資以外の新しい軸を模索していて、学生の頃やっていたプログラミングを再開しました。
これがまた面白くてのめりこみ、ぐんぐん上達しました。
そんなおり、自分が使っていた「早起き生活」というWebサービスが、個人によって運営されていることを知りました。
他にも、グリー、del.icio.us、frendsterなんかも開発者が一人で始めたサービスだと知り、衝撃を受けました。
そして自分もそういうサービスを作りたいと思うようになりました。

4.他にいろいろなとこから影響をうける


いろんな人やメッセージから影響をうけました。
・大学時代の後輩sinjiが先に起業したこと
・スティーブジョブズのスピーチ
・はてなの近藤社長

5.サイドビジネスでやろうと試行錯誤


副業でWebサービスを作って大きくして、それが軌道にのったら起業しようなどと甘いことを、最初は考えてました。
でも、本業があるとなかなか時間がとれず、思うようにサービス開発ができませんでした。
すごく焦りました。

6.宮崎駿


あるテレビ番組でスタジオジブリのドキュメンタリーを見ました。
テレビ画面に、宮崎駿が作った作品が走馬灯のように流れるのを見てこう思いました。

そうだ、何かをつくりたい。
自分のつくったもので人を感動させたい。
寝食も忘れて、何かをつくりたい。
集中したい。のめりこみたい。
その中で、笑ったり泣いたり悔しがったりしたい。

大企業で係長とか課長とかになりたくない。
自分の作品を世に出したい。
スティーブ・ジョブズや宮崎駿みたいに。

これが最後の一押しになって、去年の6月ごろ、独立を決心しました。
起業する理由としてはヘンかもしれません。まあ起業の理由に正解とかないと思います。

上記で思い描いた自分に近づけるように、死ぬ気でがんばりたいと思います。

無線LANを導入

引越して部屋が広くなったので、無線LANを導入した。

まず無線LANルータ。
友人が古いやつを5000円くらいで売ってくれた。
Buffalo WLAR-L11-L

次に無線LANカード。
カカクコムで一番安いのを探していたら、Amazonが出品していてびっくりした。
何かAmazonを一気に身近に感じた瞬間だった。
しかもAmazonが一番安かった。

というわけで、早速購入しますた。
Planex製 11.b/g対応の無線LANカード
送料込みで1780円。

まだ大学生だった2000年ごろ、実家で父親が無線LAN(11b)を導入した。
そのときはとにかく高い・設定が大変というイメージがあった。
ずいぶん安くなったなぁ。

いざ取り付けみたら、全然スピードが出ない。数kbps。(T T)
ネットやら取説やらで調べまくったところ、どうやら隣の家の11gと電波干渉してたみたいだ。
お隣さんが13chで、自分のが11chで、チャネルが違うから大丈夫と思っていたのだが、
実は11b/gは、隣のチャネルと周波数が重なっているから4ch以上間を空けないといけないらしい。。。
難しすぎるわい!!
周波数を意識して設定しないといけないなんて、ユーザビリティ的にありえないと思う。

ルータの設定画面にアクセスしようとしたらパスワードがかかってたので、友人に電話できいた。
再度アクセスしてチャネルを変えてみたら、
なんとかそこそこの速度(2-3Mbps)が出るようになった。
ほっ。。。

しかし設定に休日まる1日を費やしてしまった。
7年前といっしょか~ とほほ。

引越し完了。

来年の起業にそなえて、自宅を引越しました。
1R→2DK。
一気に居住面積が倍に!
だいぶ広くなった。

まるごとPerl! Vol.1 という本を見ながら、自宅LinuxサーバにCatalystをインストールしてみました。

あらかじめCPAN::Miniを使って全CPANデータをローカルにコピーしてからCatalystのインストールを始めたんですが、
それでもめちゃくちゃ時間かかりました。3~4時間はかかった。
途中でちょこちょこ意味のわからない質問を聞いてきて一時停止するので、エンターキーをセロテープで止めとけばよかったかも。

さて、無事インストールが終わって、本どおりにBookmarkアプリを作ってみる。
・・・んがっ、Bookmark::Schemaが動かなくてエラー。
あえなく頓挫。(><)
MySQLのDBとの接続がうまくいってないのかな?原因がさっぱりわからん。

前々から、マスターしたいと思いながら何回も挫折したemacs。
使い方がさっぱりわからないまま放置してました。

昨日、たまたまメニューを触ってたらチュートリアルを発見。
これはわかりやすい!!
指示通りに指を動かすだけで、emacsの基本操作が身に付きそうです。



英語の勉強がてら、米国人のふりして登録してみますた。
何か面白いこと起こらないかなー。
11日間もあった夏休みが、終わっちゃいました。
昨日から会社始まりました。

ちょっとここで夏休みを振り返ってみる。

夏休み1~3日目の進捗報告 ( 2007-8-10 ~ 2007-8-12 )
3年前に友人のために作ったWeb家計簿をリニューアル。(現在ユーザ1人 orz)
コードを全面的に書き直してすっきりした。
当時は、Perl/CGIをはじめたばっかりで、use strictもCGI.pmも何も知らずに作った。
とほほのCGI入門を見て、掲示板サンプル(wwwboard)を改造して作った。
よく今までトラブルなく動いてたなー。
友人も、よく3年も使い続けたなー。びっくり。

3日間家に引きこもってひたすらコードを書き直してました。
科目編集機能など、新しい機能も追加。気に入ってくれるといいんだけど。
あと、パスワード認証機能を実装しないと。

そのうち完成したら、Webアプリとしてリリースしよう。

WSHでWiki

ふと思いついて、
WSHでWikiシステムを開発してます。

目的は、「会社の部署内での情報共有」。
イントラWebサーバを部署で自由に使えない会社って多いと思うので、結構需要あると思われます。

ポイントは、

・既存のWiki整形ルールを採用しない。
 PukiwikiやPyukiwikiがキャズムを超えられない(=技術に詳しい人しか使わない)のは、あの整形ルールにあると思います。
 WSH Wikiでは、ぜひとも人間にやさしくいWiki文法を採用したいと思っています。
 Wikiが生成したHTMLビューと、もとの整形前テキストを見比べて、違和感がないシステムを提供するのが重要だと思います。

サーバ不要・インストール不要
 PyukiwikiもMovableTypeもそうですが、CGIスクリプトをいじってFTPでアップロードしなきゃならないシステムというのは、それだけでキャズムを超えられない十分な要因になるのです。
 また、個人でブログやWikiを立ち上げるよりも、部署で社内ブログや社内Wikiを立ち上げる方が何十倍も敷居が高いものです。特に非IT業界の大企業ではそう。社内Wikiなど夢のまた夢。

添付ファイル
大企業では、添付ファイルこそが情報共有のすべて(いや、8割?)といっても過言ではない。
Wikiよりもブログよりも何よりも、まずエクセルやパワポでファイルを作ってメールに添付することで仕事がまわる。この慣習にうまく応えることが重要。

ファイル/フォルダシステムを覆す
 みんなWindowsのファイル/フォルダシステムを当たり前のように使っている。
 はっきり言おう。フォルダなど必要ないと。
 フォルダというシステムは、「ファイルは分類して整理しないといけない」という間違った考え方を人間に押し付ける。
 フォルダにファイルを整理保存する行為は、情報を埋葬しているに等しい。
 フォルダとは、情報の墓場である。

Web出勤簿作成中

この週末、家に引きこもってWeb出勤簿の作成に熱中してました。
何でそんなものを作るのか?
会社の出勤簿(エクセル)って、毎日チマチマ入力するのめんどくさいし、何日分かまとめて入力しようとすると、数週間前のの出社退社時間を思い出すのが大変!

そこで考えたのが(たぶん誰でも思いつくけど)、ケータイから入力できるWeb出勤簿

決心しました。

今年の12月末で会社辞めます。

そして独立・起業します。

Ruby on Rails やMVCの話でよくでてくるO/Rマッピング。

なんじゃそりゃ?と思ってましたが、Webでいろいろ調べてやっと意味がわかってきました。
Web上のわかりやすい解説を収集しました。

O/Rマッピングの効用については賛否いろいろあるようです。


それにしてもdel.icio.usは便利。

Amazon アフィリエイトを導入しますた。

使い方難しい。。。

MovableType(ver3.34-ja)を導入しますた。 (今までBloggerを使っていた)
(参考ページ:XREAでMTを!

人気記事

このアーカイブについて

このページには、過去に書かれたブログ記事のうち活動記録カテゴリに属しているものが含まれています。

前のカテゴリはMSDEです。

次のカテゴリは雑感です。

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

最近の人気記事