2011年3月17日木曜日

ISOファイルをDVDドライブとしてマウントできる外付けHDDケース UMA-ISO2

過去にバッファローとIO-DATAから同じようなHDDが発売されていました。
IO-DATAの方はメチャクチャ高かったけど、バッファローの方はまぁまぁの値段だったので購入したかったんですけど、どこ見ても売り切れです。

同じようなものを探して見つけたのがUMA-ISOなんですけど、それも売り切れ・・と思ってもうちょっと探してみるとUMA-ISO2というのが出たという情報にたどり着きました。
UMA-ISO2はHDDではなくHDDケースということですが、1万円くらいしました。
でもこういうのが一個あると本当に便利なので迷わず購入しました。

送料無料! UMA-ISO2 光学ドライブエミュレーション機能搭載 2.5インチ HDDケース [NTFS対応]
UMA-ISO2

実はまだ使ってませんが、近々ネットブックを購入する予定なので、それのドライブとして使うことになります。
ネットブックはこれの予定。
ASUS Eee PC 1015PEM with Office wimax Black 10.1型ワイドTFTカラー液晶 非光沢 ネットブック ブラック EPC1015PEM-WIBK
EPC1015PEM-WIBK

今までドライブ無しのノートパソコンは絶対に候補に上がることはなかったんですけど、外付けHDDでISOをマウントできるってのなら色々と問題が解決します。
DVDドライブだけ持ち歩くのは面倒ですけどHDDなら持ち歩けます。
1TBのHDDは無理という情報があったんですけど、まぁ750GBならいけるようなので十分です。

ディスクを一度ISOにする手間があるので最初は面倒ですけど、取り込んでしまえばあとは楽なもんです。
まぁインストール作業なんてのは滅多にしないと思いますけどね・・
僕が使うアプリの大半はフリーウェアでネット上からダウンロードできるものばかりです。

そう思うと、このHDDの出番は少ないかも・・
まぁ外付けHDDとして使うし問題ないか・・

2011年3月4日金曜日

苦労して作ったフラッシュが・・

結構苦労して作ったフルフラッシュサイトが2つありました。
両方とも半年くらい使われてたようですが、もう違うやつに入れ替わってました・・
今はフラッシュではなくHTMLになっています。
まぁ納品してしまったものがその後どうなろうと関係ないんですけどね。

こんな時代にフルフラッシュなんか提案するディレクターに問題があります。
バカなディレクターの案に乗ってしまったクライアントにも責任はあるんですけどね。
でもクライアントはWebのことなんて何も知らないから、ディレクターの言うがままになりがちです。
クライアントは、高い買い物なんだから最低限の知識を持ってディレクターと話すべきだと思います。

フルフラッシュというと、クライアントにとってはただの自己満足で、制作会社から見ると金の種ですが、プログラマーにしてみると面倒で割りに合わない作業です。
ユーザーから見るとただただ面倒臭いサイトです。
得するのは制作会社だけで、それ意外はあんまり良いことがないんじゃないかな?

フラッシュって制作会社からすると値段を釣り上げる為だけの要素ってことがあります。
特に安い案件の依頼を請けた時に、フラッシュを提案して3万〜5万くらい上乗せするというようなことを時々聞きます。

まぁフラッシュが悪いとは言いませんが、劇的に何かが変わることはそうないでしょう。
ユーザーがじっと我慢して見てくれる時間はせいぜい3〜5秒です。
それ以上長いと面倒臭くなってそのサイトから出ていってしまうかもしれません。

今時はフラッシュみたいなことをJavascriptでやってしまうことが多いし、その方が管理しやすいと思います。

たった半年ほどでボツになったフルフラッシュは、バカなディレクターの要求を全て満たしましたが、修正に修正を重ねた結果、制作者の僕も全く読めないコードになってました(w
最初の案と最終的にできたものは全く違うものでした。

Web系のディレクターはプログラムとか全く知らないのかな?
デザインはできるかもしれないけど、あまりにも簡単にプログラムの仕様変更を要求してきます。
微々たる修正ではなく、方向性が変わってしまうくらいの修正を何度もやりました。
プログラムを知らない奴がプログラムの案件に関わったらダメですよね。

2011年3月1日火曜日

64bitパソコンでMSCommコンポーネントを動かすには?

Windows2000のOffice2000で動いていたプログラムがありました。

ExcelのVBAとMySQLをODBCで接続して使うレジのアプリです。
これは、僕がまだまだプログラムの「プ」くらいが分かり始めたころに作ったプログラムなので今見ると無駄だらけでした・・

DWB48MRSというキャッシュドロワとパソコンを繋いでいて、会計処理が終わると同時にドロワが開くというプログラムが書かれています。

今回、パソコンの買い替えに伴って今までWindows2000のOffice2000で動かしていたそのExcelのレジを64bitのWindows7、Office2010環境に移すことになりました。

バージョンが随分離れているので、不具合は絶対に避けられないと思っていましたが案の定です。

まずキャッシュドロワを動かすのにMSCommコンポーネントというコンポーネントを使っていましたが、これはVB6の頃のコンポーネントなので64bitでは動きません。

OSが64bitだったとしても、Officeが32bit版だったら何とか動かせたと思うんです。
でも多分そのパソコンのOfficeは64bit版でした。動かなかったので・・

MSCOMM32.OCXというファイルをダウンロードして、コマンドプロンプトを管理者権限で起動して「regsvr32 c:\windows\system32\MSCOMM32.OCX」とかやれば動くようなことを書いてあったのでやってみたんですけど、やっぱりVBAのフォーム編集画面にコンポーネントのアイコンが出ませんでした。

まぁ無理なものは仕方ないし、結構急ぎの要件だったので、32bitのパソコンで動かすことになりました。OSはVistaでOffice2007です。

とりあえず動いたんですけど、やっぱりバージョンの違いのせいか思ったように動かないことが多々あります。
もう一度調整しないといけません。

結果として、まだやってませんけど、仮想環境にWindows2000、Office2000の環境を構築してそっちで動かすのが一番確実かな・・という結論を出しています。

その方法を使えば、今後どんなにOSがバージョンアップしても、Win2000環境を保持することが可能ですし、バックアップも移行も簡単に行えて理想的だと考えています。

とりあえずVMWare PlayerかVirtualPC辺りで試してみようと思っています。
仮想化って古い環境をそのまま新しい環境上で使えるのでとても便利だと思います。
この件がうまく動けば今後もしばらく安泰です。

2011年2月25日金曜日

MySQL テーブルのIDにbigintはどうか

毎週1回必ず40万レコード追加するテーブルがあります。
データ型はintで十分です。
unsignedにして約40億レコード登録できる計算なので約1万日は使えます。
毎週1回の処理を1万回なので約2,500ヶ月・・200年くらいの計算ですね。

それまでそのシステムが動いてるとは思えないし、僕は間違いなくこの世にはいません。

そのテーブルはintで十分なテーブルだったんですが、あまりそういう計算をせずに作ったので、bigintでやってしまいました・・何となくデカいデータになりそうだと思ったので・・・
実際のところ、int unsignedで毎日40万レコード追加だったとしても20年以上いけます。
bigintをIDのauto_incrementで使う時なんて、ちっぽけなアプリを作ってるうちはなさそうですね。
Twitterみたいなのを作ったら必要かもしれないけど。

もう納品したし、問題なく動いているので別にいいんですけど、やっぱりこういうのはしっかりと計算してからやらないとダメですね。

VARCHARの文字数とかも結構適当にやってしまいます。
メールアドレスは300くらいとか住所は200とか、電話番号は20とか、ちょっと余裕があるくらいで調整してますが、これも実際どうなんでしょうか?
余裕は必要だけど、余りすぎても問題だと思います。

今回納品した制作物と関連する別のパートで、別の業者が手がけてたんですが、VARCHARでやるようなところを全部TEXT型で宣言してました・・
これもちょっと良くないんじゃないの?と思ったけど、問題なく動いているのでいいのかなぁ??

何かプログラマーって結構適当ですよね(^^;
僕も含めて、なんちゃってプログラマーが増えすぎたのかな?
本物のプログラマーならこんな適当な仕事しないでしょうね。

悪いのは厳しい納期だ!と自分に言い訳をして放置します(w
今回のはコメントもほとんど書いてないや・・もうどんなプログラム書いてたか分からん(--;

2011年2月22日火曜日

ASUSのU30Jc-QX075VSを買おうかな・・

今、次のパソコンをどうするか考えているところです。
Windowsにすることはもう確定しました。

たまたまソフマップに寄ることができたので、ちょっとパソコン見学してみたところ、ASUSのU30Jc-QX075VSが良さそうな感じでした。

Windowsのノートって、今までPentium Mの頃のMebiusしか使ったことがないんですよね。
それまではショップブランドのデスクトップが中心だったし、ノートをメインに使うようになったのもここ4、5年の間です。
今はMacBookだし、Windowsノートを買うのってホント久しぶりです。

ASUSのノートってどうなんだろう?
値段が安いのは嬉しいです。
でも、パソコンは長く使うものだから、値段で妥協した買い方は絶対にしたくないです。
例えば、安物のパーツを使って安いパソコンを作っているのなら、僕はもう5万払ってでも良いパーツを使ったパソコンにしたいと考えます。

まぁスペックだけで見るなら、かなり理想に近い感じです。
64bitでCPUがi5、液晶が13.3インチ、メモリはデフォが2Gだけど、増設して8Gにします。
仮想環境を作るからi7が本当は欲しいんですけどね・・。
まぁ13.3インチなのでそこは仕方ないのかな・・。

メモリが2Gしか入ってないことが逆に良いかもしれないですね。
大概のパソコンは2Gのメモリ2枚で4Gで売っています。
これを8Gにしようと思ったら2枚とも外して4Gのメモリ2枚買わないといけないんですよね。かなり無駄です。

本体が安いからSSDへの換装もちょっと視野に入れてるんですけど、まだ高いですね・・。
しばらくはHDDで様子見た方がいいのかな・・

2011年2月18日金曜日

MacからWindowsに乗り換え〜次は64bit機で仮想環境を

今年やっとMacに乗り換えたところですが、またWindowsに戻ることにします。

やっぱりテキスト処理の問題でMacはちょっと使いにくいことがあります。
エディタで使ってるmiが悪いのか、Macそのものが悪いのかは分かりませんが、3Mb程度のテキストファイルの正規表現置き換えなんかで固まってしまいます。

5,000行程度のログファイルを一旦クリアしようと全選択して削除した時も固まりました。
元々テキストファイルを扱うことが多いので、こんなことではダメなんです・・

と言ってもMacをやめるわけではありません。
次のMacはWindows上の仮想環境で動かします。

次のパソコンは仮想環境をもっと充実させたいので、64bit機にメモリ8G積んでVMWare Workstationを導入するつもりです。

母体となるOSはWindows7になると思います。できればProfessionalがいいかな。
母体は必要最小限のアプリだけをインストールして、仮想環境に開発環境を整えていきたいところです。

多分Web閲覧とか普段使いのOSは仮想環境のMacになるような気がします。

2011年2月15日火曜日

XERAでPHPのsystem関数を使ってmysqlのバックアップデータを復元

XREAに限らず、PHPがセーフモードで動いているサーバーがけっこう多いと思います。

MySQLのバックアップデータをWeb上で復元するという処理が必要だったので、PHPのsystem関数を使わないといけませんでしたが、system関数ってのはセーフモードでは動かないので、XREAの場合はCGI版のPHPで実行しないといけません。

まずは.htaccessを編集して、system関数を実行するphpファイルをCGIとして動かすようにします。

<Files ファイル名.php>
AddHandler application/x-httpd-phpcgi .php
</Files>

それでsystem関数でバックアップデータ復元のコマンドを指定するんだけど、ここで一回つまずいた・・

$command = "mysql -u ログインID -pパスワード データベース名 < /virtual/XREAのユーザー名/バックアップファイル";
system($command);

と書いて実行してみたけど、うまくいかない。
sh: mysql: command not found となってしまいます。

パスが通ってないのかな?と思ってSSHで同じコマンドを実行すると正常にバックアップを復元できました。
パスは通ってるのに・・と思ったけど、とりあえずsystem関数でmysqlのフルパスを指定してみました。

$command = "/usr/local/mysql/bin/mysql -u ログインID -pパスワード データベース名 < /virtual/XREAのユーザー名/バックアップファイル";
system($command);

こうするとうまくいきました。

phpMyAdminからだと、アップロード可能容量の制限で大容量のバックアップファイルを復元することができないと思うので、一度サーバーにFTPでバックアップファイルをアップしてからこの方法で復元するということもできますね。