Category Archives: 未分類

VMWareでコピーしたマシンがネット接続できなくなった(Macアドレス的な)

VMWareが好きです。

とても好きです。

IEとか全バージョンの環境揃えています。

Officeも全部のバージョン揃えたいです。

OSも全部揃えたいです。

掛け算式に全パターン揃えたいです。

リンゴの形したOSも動かしたいです。

自分のローカルPCでVMWareを3つとか同時起動していると訳も無く強気になれます。

何故か自分が凄いやつのように思えてきます。錯覚です。でも気持ちいいです。

さて、仮想マシンをコピーしまっくているうちにブリッジでネットに接続できない可哀想な子が出てきました。WindowsXPです。

おそらく、コピー後に出てくる質問で「移動しました」を選択してしまったのでしょう。

調べてみたらMacアドレスが他の仮想マシンと被っていました。

ipconfig -all

とかやってPhysical Address.とか出てくるアレの事ね。

まずは仮想マシン設定の「ネットワークアダプタ」「詳細ボタン」からMacアドレスを新しく生成してあげます。

でもコレだけではWindows側で保存されているMacアドレスは変わってくれません。レジストリのどっかにでも抱えているんでしょう。

次にコチラで紹介されている手順でさきほど生成したMacアドレスと同じ値を指定してあげます。

自分のVMWareの場合、プロパティ名は「ローカル管理されるアドレス」では無く「Network Address」でした。

http://www.atmarkit.co.jp/fwin2k/win2ktips/356macaddr/macaddr.html

Macアドレスの変更をOKしたら反射的にOS再起動しておきます。

すると繋がるようになりました。

さて、繋がるようになったのでIE7での検証がんばりますか。(半泣き)

プログラミング一般化について

「全ての人よ、プログラミングを!」

http://life-is-tech.com/blog/programming/messagefrompresidentobama-5843

オバマ大統領からアメリカ全国民へ向けたメッセージ。らしい。

「我が国の将来に必要なのです。」

この言葉は、かなり強いものがある。

仮に全国民がプログラミングを習得した場合。

どのような未来が世界に訪れるのか。

家庭の主婦は、自分の家の家計簿をマクロで組むだろうし、スーパーのオーナーは自分で会計システムを構築してしまうかもしれない。

学生達はLineよりも、よりクローズドなコミュニティシステムを自作し、大人達に決して覗かれないような自分達にとって最も都合の良いコミュニティを構築するのかもしれない。

社会人に至っては(営業職でさえも)自身のタスクを管理するシステムを作り、それらを業務に大いに活用するかもしれない。

伴い世界中のシステムはもっと高度なものになるだろうし、プログラマーのレベルも今とは比較にならないほど高くなる。はず。

そしてプログラミングを生業としている我々は商売あがったりになるかもしれない。

しかし、国や世界レベルの発展においては「誰しもがプログラミング」は非常に大きな要素になると思っている。

これって「字を書く」「掛け算ができる」と同レベルの話で、数百年前では読み書きも算数もできない大人は沢山いたんだろうけど

現代においては、できないとアウトなレベルであって。

これと同じ事がプログラミングにも当てはまる世の中が訪れるのかもしれない。

利便性や世の中の発展性において、「誰しもが掛け算ができる」といった要素は大いに貢献している事実があり、それと同等の可能性をプログラミングは秘めている。と。

周囲で字の書ける人間が少ない環境においては字を書ける事はビジネスとして成り立つだろうし、計算についても同様。

プログラミングについても同様。これが現代。

世界的な発展性のためにはプログラミングの一般化は必要。

そして、そのうち字を書くのと同レベルでの常識化するんだと思う。

そうなったら、本当の意味でITによって世界が変わる日が訪れるんじゃないかと。

PHPで設定値。defineだのconstだの

PHPで設定値。
これって実は人によってやり方が様々で、それぞれの実装方法によって使い勝手も違うらしい。

単純に、組み込みで用意されているものを使うのであれば

define("CONF_A", "設定値");
echo CONF_A;

的な。

他にも

final class Config {
  const DATA_A  = "設定値";
}
echo Config::DATA_A;

とか。

クラス&const方式はまあ悪くないのかな?って思ってた。
設定の種類ごとにクラス名を変えるって事も可能だしね。

でもコイツって、

class Config {
	const B = "aa"."asd";
}

ができないんだよね。
式は基本何も使えない。

文字列結合くらい許せや。っていう・・・

実際問題、URLなんかを定義する時って
1) トップのURLを定義
2) 1で定義した設定値に文字列結合で配下のURLを設定
っていうのが当たり前だと思うんだ。

ドメイン変更とかURL変更に伴って大量の設定値の変更なんてやりたくありませんからね割とマジで。

constが悪いのかと思い

class Config {
	public static $B = "aa"."asd";
}

みたいしてみてもやっぱりダメ。

って事でclassで設定値を定義するのは諦めました。
やっぱdefineさん最高だよね。

で、defineについては基本的に式を受け付けてくれる

define("AAA", dirname(__FILE__)."/aaa.php");
define("BBB", "aaa"."bbb");

なんでもOK。

でもdefineって配列使えないんだよね。

define("CONF_A", array(1, 2, 3));

これはエラーがでます。

実際システム作っている時って設定値に配列使いたいときってよくあるんだよね。
で、みんなどうしているかっていうと、よく見かける設定値はこんな感じです。

define("CONF_A", "123456");
$CONF_B = array(1, 2, 3);

あれ?だったら全部いっその事変数にした方がいいんじゃないか?

$CONF_A = "123456";
$CONF_B = array(1, 2, 3);

これでglobalで呼び出す事で全部解決。
式も配列も全部使えて効率的だしスッキリした設定ファイルになるぞ。

あれ・・・・?ところで定数って何だっけ・・・

で、個人的には変数でも良いと思っています。
書き換えができてしまう。とは言ってもその辺はコーディングルールでカバーする形にできれば。
要はルール決めさえしっかりとあれば良くって、
必ず大文字で定義しましょう。でも効果も可読性もあると思う。

あとは好みの問題もあると思うけど、無理やりdefineでやる方法も何となくあみだした。

define("CONF", serialize(array(1, 2, 3)));
var_dump(unserialize(CONF));

serializeで無理やり文字列に変換して、
取り出す時はunserializeで配列に復元。

なんか一見微妙っぽいけど、ある意味やりたい事は全部できているような気がする。

・「定数」として定義したい
・配列を使いたい
・式を使いたい
・globalとか使わずに使いたい

うん、全部満たせているわ。なんか微妙っぽい感じもあるけど。

そして若干気に入りました。

【AmazonAPIの仕様変更】リクエストには、必要なパラメータが含まれていません。必要なパラメータには、AssociateTagなどがあります。

運営しているサイトにてある日突然AmazonAPIで取得しているアフィリエイトリンクが出なくなってしまった。
これまで安定して動いていたのにある日突然だったので、
「うん?Amazonの調子が悪いのか?それともレンサバのcrontabでも狂ったのか?」
としばらく放置していた。
まあAmazon広告が出なくなったからといってサイトが動かなくなる訳じゃないしね。

が、何日たっても一向に治る気配がない。

やれやれとログを見てみるとこんなエラーが・・・

リクエストには、必要なパラメータが含まれていません。必要なパラメータには、AssociateTagなどがあります。

ん?んん???

どうやらAmazonAPIの仕様変更があって
「AssociateTag」
というパラメータが追加になったらしい。
しかも必須かよオイ・・・・

アフィリエイトIDを指定してやれば良いだけなので修正はすぐ何とかなったけれども。
これがカテゴリーやノードに関わってて何か調べごとが必要なパラメータとかだったら涙目になってたかもしれない。

そういえば、Amazonのデベロッパー向けメールに何か来ていたのかもしれない。
でも基本アメリカ語は良く分からないのでメールは来ていたけど無意識にスルーしてたぽい。

でもアレって頻繁にメール来るから思わずスルー安定になっちゃう罠。

ああいや、たまにしかメール来なかったとしてもスルーするな自分は。
間違いない。自身ある。

でも、てっきりこうゆのって「Version」パラメータで呼び出すAPIのバージョンをクライアント側が指定できるもんだと思ってた。

要はそんなものに甘えるなと、
そういう事ですね。

SVNでディレクトリを完全削除【Windows】

ローカルWindows環境でsvnを使っているんだけど、間違って1G近いファイルをsvnにコミットしてしまった。
で、単純にdeleteするだけでは履歴が残ったままで何の解決にもならないので、完全にディスク上から削除する方法をメモ。
まずDOS窓から以下のようなコマンドを打つ。

svnadmin dump 【svnディレクトリ】 | svndumpfilter exclude 【消したいsvnパス】 > 【適当なファイル名】

【svnディレクトリ】には、c:\svnなどのディレクトリ名。
【消したいsvnパス】には、/missproject といったようにsvn上のパス
【適当なファイル名】は何でも良い。c:\dumpとでもしておく。

すると、【適当なファイル名】にdumpファイル(バックアップファイル)が出力される。
このファイル内には【消したいsvnパス】で指定したパスに該当するファイル達は既に除外されている。

次に【svnディレクトリ】をディレクトリごと削除、もしくはディレクトリ名を適当な名前に変更する。

で、最後に新しくsvnディレクトリをcreateし、dumpファイルをインポートさせればOK

svnadmin create 【svnディレクトリ】
svnadmin load 【svnディレクトリ】 < c:\dump

要はリポジトリを作り直すって事ね。
ちょっと面倒くさい。

Firefox4でLiveHttpHeadersのかわりにhttpステータスをトレース

昔から愛用していたFirefoxでHttpステータスをトレースしてくれるLiveHttpHeadersプラグインなんだけど、Firefox4にインストールしてみたら、なんぞやきちんと動いてくれなかった。
で、調べてみたらFirefoxには便利な機能が標準搭載されているとの事。

ウィンドウ左上のFirefoxボタン⇒Web開発⇒Webコンソール
と開くと、以下のような感じでHttpステータスがトレースされるようになる。
firefox webコンソール

いいねー。

そしてLiveHttpHeadersさようなら
これまでありがとう

【DOS】日付名でフォルダを作成できるバッチ

出先の別PCで使いたくなる時があるのでメモ
下記コマンドを
適当な名前.bat
で保存

cd /d %0\..
md %DATE:/=%_%TIME::=%

ダブルクリック起動で.batファイルを設置したフォルダ内にフォルダが作成される。
そこはかとなく便利

プログラマーは木曜日にやる気を出す!?

運営しているPGBoxという技術者向けサイトがあるんだけれど、Analiticsを眺めていてふと気になった事があった。

Read more »

windowsファイル共有のパスワードを変更

いつも忘れてしまい、何度もググっているような気がするのでメモ
スタートメニュー⇒ファイル名を指定して実行⇒以下のコマンドを実行

control userpasswords2

ダイアログが開くので
詳細設定⇒パスワードの管理
で、PCに保存されている共有フォルダ用のユーザ名やパスワードの編集が行えるようになる。

PHPで住所から緯度経度を取得【geocoding】

PHPで住所の文字列から緯度経度を取得する方法。
geocodingのAPIを利用する。

$p = urlencode("東京都新宿区うんたらかんたら");
$xml = simplexml_load_file("http://www.geocoding.jp/api/?q=$p");

echo "緯度:".$xml->coordinate->lat;
echo "経度:".$xml->coordinate->lng;

google maps apiと組み合わせるといい感じ。