2007年5月31日木曜日

一献楽食とらに行って来ました。

地元友がニートを卒業してしまうので、お祝いをしようと
久し振りに飲みを開催。
場所は大宮ロフトの近く一献楽食とら


写真は唐辛子がひっついてる手羽先。
俺は旨いっす。でも友達は辛くて食えないらしい(笑


2007年5月30日水曜日

三国志大戦のversion up

が明日からと噂されています。

ロケテ情報だと自分のメインデッキのカードがほぼ弱体化。。。
手腕と双弓はそんなに痛く無いけど、阿蒙が痛い。
とてつもなく痛い。

攻め手を探さないとな、、、どうやって攻めよう。
今のスタイルを維持するなら、思いつくのは
槍策か分鴬しかいませんよ。



デジカメ新調!! IXY DIGITAL 10

以前使っていたデジタルカメラが壊れてしまってから何ヶ月か経ったけど、
何とか新しいのを買いました(^^)

自分で言うのも何ですが、今度のはかっこいいっす♪
今回のお買い物は,,,見た目で選びました(笑


Canon デジタルカメラ IXY (イクシ) DIGITAL 10 ブラック IXYD10(BK)

2007年5月27日日曜日

車検

昨日の晩から実家近くのマツダディーラーに愛車を預けて
車検をしてもらいました。

車検ってやっぱ高いよな。。。1/3以上も税金と自賠責ですよ。
先月も苦しかったが今月も苦しい(^^;
自賠責って任意の入ったら辞める事出来ないんかな?
結構年数乗っているので、任意のが安いんだよね。



2007年5月24日木曜日

robocopyとeclipseとant

windows上でrobocopy&eclipse&antで
1.フォルダの同期
2.バックアップ
を自動化してみた。

以下のxmlをeclipseに読ませて外部ツールのantを実行すると、
xmlのあるプロジェクトのsrc以下のファイルを一度c:\export\srcへエクスポートして、エクスポート先と目的のフォルダが同期をとります。
そして同期前にバックアップをc:\export\bkに作成する。
ちなみに同期時のrobocopyのログはc:\export\logに吐き出すようにしてます。
一応動いたので満足w

昨今はeclipseをみんな良く使うなーと思って、でも、実際に実行環境(テスト、ステージング、本番含む)にアップする
時に人手が介在すると結構余分なファイルがアップされる(.svnとか平気でアップされる)のが嫌なんです。
かと言って、限られた人しかアップしないとかナンセンス。
なので、人手が介在しないようなシステム(仕組みというか手順)を用意するのがそもそもですよね?
って感じでこれからも研究していきたいと思われ。
人類猿化計画にまた一歩近づいた気がするw
<?xml version="1.0" encoding="UTF-8"?>
<project name="upload_test_up" default="test_up" basedir=".">

  <!-- *** properties *** -->
  <property name="export.src.path" value="c:\export\src" />
  <property name="export.target.path" value="${basedir}\src" />
  <property name="bkup.path" value="C:\export\bk\src_" />
  <property name="syncronize.log.path" value="C:\export\log\syncronize_" />
  <property name="syncronize.command" value="robocopy" />
  <property name="syncronize.option" value="/E /PURGE" />
  <property name="syncronize.src.path" value="c:\export\src" />
  <property name="syncronize.target.path" value="c:\export\syncronize\src" />

  <target name="init" depends="export">
    <tstamp></tstamp>
  </target>

  <!-- *** control this project *** -->
  <target name="test_up" depends="init,export,syncronize">
  </target>

  <!-- *** update from SVN *** -->
 
  <!-- *** export without svn directory *** -->
  <target name="export">
    <copy todir="${export.src.path}">
      <fileset dir="${export.target.path}" />
    </copy>
  </target>

  <!-- *** syncronize target directory *** -->
  <target name="bkup" >
    <!--
    <copy todir="${bkup.path}${DSTAMP}${TSTAMP}">
      <fileset dir="${syncronize.target.path}" />
    </copy>
    -->
    <zip destfile="${bkup.path}${DSTAMP}${TSTAMP}.zip" basedir="${syncronize.target.path}" />
  </target>

  <target name="syncronize" depends="bkup">
    <exec executable="${syncronize.command}" os="${os.name}" output="${syncronize.log.path}${DSTAMP}${TSTAMP}.log">
      <arg line=" ${syncronize.option} '${syncronize.src.path}' '${syncronize.target.path}'" />
    </exec>
  </target>
</project>


2007年5月19日土曜日

IEとfirefoxのremoveChildの挙動

javascriptである要素内に在る、特定の要素を消す処理を実装してみました。
parentObj = document.getElementById('parent');
sunObj = document.getElementById('sun');
parentObj.removeChild(sunObj);
そしたらfirefoxではparentObjからsunObjを削除する挙動を示したんだけど、
IEではエラーになってしまいました。

私がDOMとかでネットを検索すると、どうやらremoveChildの引数は
Nodeを設定するらしい。Elementじゃー無いと言う事??
Elementなら削除されてはいけないので仕様通りなのはIEって事ですかね?
あんまりここら辺の詳しい話までは調べられず(^^;

で、あんまりキレイでは無いけどどっちでもいけるのを考案。
for(i=0;i<parentobj.childnodes.length;i++){
  if(parentObj.childNodes[i].id == 'sun'){
    parentObj.removeChild(parentObj.childNodes[i]);
  }
}
浅い知識が1上がったw

2007年5月18日金曜日

T.Yハーバルワリーに行って来た。のか?

愛知から久々に関東平野に帰って来た友達の、
オススメの場所に案内してもらいました。
T.Yハーバルワリー

場所は天王洲アイル。わざわざ品川で降りて、天王洲アイル方面へ野郎二人で徒歩15分ぐらい。タクシーあんじゃね?とか思いつつも、海が近い事を匂わせる雰囲気が良いかと思わせる。

で、着いた!!見た目からしてオサレだ。
川のそばにオープンテラスとは憎いねー。
と思ったら17:30まではclosed。
かわいい定員さんに笑顔で断られちゃいました。えー。

友人は新幹線にあわせて帰らないといけんと。
17:30まで待てませんって、じゃー品川もどんなきゃじゃん。

まー場所は抑えたから良しとしよう。



2007年5月17日木曜日

robocopyを使ってみた

Windowsの初期インストール時には入って無いけどMSのサイトからダウンロード出来るツールの中に、ファイルの同期バックアップをしてくれるのがあるらしい。
その名もrobocopy。シンプルな響きだ。

Linuxだとrsyncだけど、windowsベースでやりたくてrobocopyを進められて
使ってみた。オプションや引数もシンプルでとっても素敵。
個人的にはバックアップではなくてデプロイ用にeclipse&ant&rsyncで
凄い夢が見れると踏んでますw

え、antで十分?いやいやいや。

2007年5月15日火曜日

logrotateでもハマってみた

仕事でlogrotateというLinuxのログバックアップみたいなのを使ってみたん
ですが、同じ環境でA端末、B端末でそれぞれApacheのログをローテートしたら
Aはうまく行ったけど、Bは動かなかった。。。

環境が一緒なのに何故に!?

しょうがないので、ログを観よう!
と思ったらログってどこに出るんだか知らないorz
明らかに/var/log/に出てないぞ

どうする?どうする!俺?

あ、そうだヘルプ(help)があるじゃまいか!

ってわけで、--helpを付けてみると、-vで実行の詳細が出力されるverboseで、
-dだと実際にローテーションはしないでくれるらしい。おお、素晴らしいw

で、早速/usr/sbin/logrotate -vdを実行すると、いっぱい英語が出てきた。
読むとファイルサイズが設定された値(デフォルト1M)よりちっちゃいから
やらないと言ってるらしい。

あ、そういう事?仕様ですか、そうですか。
そういやA端末にはガンガンアクセスするけど、Bにはたまーにだよな。
原因はそこだったか。

今日学んだ事、、、それは困ったらhelpをみるべし(^^;




2007年5月14日月曜日

RSSのチェック

RSSのValidator、その名もRSS Validator。ってかそのまんまだし。

RSSを自作アプリで作っちゃう人には朗報かと思いきや、自分でチョロっと
やった感じではあんま要らなかったかな(^^;


2007年5月12日土曜日

久々にジャッキー観た

��Wに落語(歌丸師匠)を観ようとして定員オーバーで観れず、バベルを観よう
として時間が合わず、結局プロジェクトBBを観た。

久し振りにジャッキーの映画を観たけど、面白さは健在(笑
この人の映画は自分のツボを見事ついてくるんだよな~。
いつもはオマワリみたいな役だけど、今回は泥棒のダメンズ系の役だった。
結構ハマり役だったw
でも4月からやってるからそろそろ終わるな。

2007年5月9日水曜日

なかの人追加

なかの人タグを追加してみた。
追加すると日本地図が出てきて、アクセスした人の場所が出てくるらしい。
ちょっと面白いかもw


2007年5月6日日曜日

PHPのparse_ini_fileでもハマってみた

PHPの関数で設定ファイルを読み込んで配列にしてくれるparse_ini_fileという
のを使ったら予想外の結果が出てビックリした。

設定ファイルを下のようにした場合、
01=taro
02=jiro
03=saburo
04=siro
05=goro
06=rokuro
07=sitiro
08=hatiro
09=kyuuro
10=juuro

配列の結果は
arr['01']=taro
arr['02']=jiro
arr['03']=saburo



arr['07']=sitiro
arr['08']=hatiro
arr['09']=kyuuro
arr['10']=juuro
だと思うじゃないですか?

違うんです。
結果は
arr['01']=taro
arr['02']=jiro
arr['03']=saburo



arr['07']=sitiro
arr['0']=kyuuro
arr['10']=juuro
でした。
「hatiro」が無くなって、「kyuuro」が[0]に振られているでは
無いですか。
なんで~。っと思って調べてみたらキーを数字に
した場合に先頭を0にすると8進数で数えるらしいです。っと
0xだと16進数だとさ。すっげー落とし穴にハマった。
だから0を先頭にした場合に、そもそも8、9が出てくる事自体がありえない
と。
言われて見ればそうだろうけど、そこはかなり意識の外。
私もまだまだだな。



2007年5月4日金曜日

ボルボ TheHunt

ボルボ×パイレーツオブカリビアンのコラボキャンペーンがまた始まった。
前もチャレンジしたんだけど、途中で謎が解けなくて時間切れ。
結構レベル高い問題が多いので謎解き好きな人はいかがっすかね?
ちなみに日本で優勝すると世界チャレンジが出来て、最後まで行くと豪華な賞品が貰えるらしい。
まー商品も良いけど、こういう遊びが楽しいよねw
ボルボ TheHunt


2007年5月3日木曜日

PHPMailerの拡張でつまらない罠が、、、

最近遊んでるとの噂を耳にしたので技術的な話を(^^;

PPHMailerなる物を見つけて余りに便利そうなんでラップしてみた。
まーぶっちゃけ拡張の必要もあんまり無いんだけど拡張してみた(笑
smartyとの夢のコラボでメール本文をテンプレートから生成。
おおまかなコードは以下

require("Smarty.class.php");
require("class.phpmailer.php");

class ExtMailer extends PHPMailer{
  var $tmpEngine;
  var $tpl;

  function MailWrapper($confFile,$confname){
    $templateEngine = new Smarty();
    $templateEngine->template_dir = "template";
    $templateEngine->compile_dir = "template_c";
    $templateEngine->config_dir = "config";
    $templateEngine->cache_dir = "cache";
    $this->tmpEngine = $templateEngine;    if($confFile != null || $confFile != ""){
      $this->initMailSettings($confFile,$confname);
      }
}

  function initMailSettings($confFile,$confname){
    $mailconf = parse_ini_file($confFile,TRUE);
    $conf = $mailconf[$confname];
    $this->From = $conf['From'];
    $this->FromName = $conf['FromName'];
    $this->Host = $conf['Host'];
    $this->Subject = $conf['Subject'];
    if($conf['Mailer'] == null || $conf['Mailer'] == ""){
      $this->Mailer = 'SMTP';
    }else{
      $this->Mailer = $conf['Mailer'];
    }
    if($conf['CharSet'] == null || $conf['CharSet'] == ""){
      $this->CharSet = 'iso-2022-JP';
    }else{
      $this->CharSet = $conf['CharSet'];
    }

    $this->body = "";
    $this->ClearAttachMents();
    $this->ClearAddresses();
    if($conf['To'] != null || $conf['To'] != ""){
      $addresses = explode(',',$conf['To']);
    foreach($addresses as $address){
      $this->AddAddress($address);
    }
    }
  }

  function assign($name,$value){
    $templateEngine = $this->tmpEngine;
    $templateEngine->assign($name,$value);
    $this->tmpEngine = $templateEngine;
  }

  function setMailTemplate($tpl){
    $this->tpl = $tpl;
  }

  function createBody(){
    $this->Body = "";
    $templateEngine = $this->tmpEngine;
    $tmpbody = $templateEngine->fetch($this->tpl);
    $this->Body = $tmpbody;
  }

}
概要は、
インスタンス作成時に設定ファイルを読み込んでメールの設定
を済ませてしまう。その時にSmartyのオブジェクトも生成。
あとは変数の設定(assign)とテンプレートセット(setMailTemplate)で
本文の作成。
あとはメールを送信するだけのシンプル拡張、、、のはずでしたが、
何故かメールが送信されずに困っちゃいました。。。

かなーり調べてからどうも根本的におかしいようなので、PHPMailerのソース
を見てみる事に。
そしたら原因はcreateBodyというメソッドがprivateメソッドとして存在する
みたいで、自分が拡張した奴が丁度オーバーライドしてたのがマズッた
ようでした。
名前をcreateBody()から変更したらうまくいきましたとさ。

P.S
PHPdocにcreateBodyのAPIが載ってなかったぞ~。