2009年3月31日火曜日

一年ぶりのFisshplate(Seasar2)

スズキです。

最後に記事を書いてから一年以上たっていますが、案件で使う可能性が出てきたので、復習です。
http://suz-lab.blogspot.com/2008/01/fisshplateseasar2excel.html

Fisshplateとは、
> Excelにテンプレート式を書くことによって、
> 動的にデータが埋め込まれたExcelファイルを出力する事ができる
ライブラリです。
http://fisshplate.sandbox.seasar.org/ja/

とりあえず、Fisshplateのみを使ったサンプルです。(Seasar2との連携無し)

--------【Java】--------
// 埋め込みデータの作成
Map<String, Object> data = new HashMap<String, Object>();
data.put("title", "タイトルです。");

// Fisshplateの準備
FPTemplate template = new FPTemplate();
HSSFWorkbook workbook = null;

// テンプレート(INPUT_PATH)と埋め込みデータのマージ
InputStream inputStream = getClass().getResourceAsStream(INPUT_PATH);
try {
  workbook = template.process(inputStream, data);
} finally {
  inputStream.close();
}

// マージ結果をファイル(OUTPUT_PATH)に出力
OutputStream outputStream = new FileOutputStream(OUTPUT_PATH);
try {
    workbook.write(outputStream);
  } finally {
    outputStream.close();
}
--------
http://code.google.com/p/suz-example-s2/source/browse/trunk/suz-example-s2-common/src/test/java/suz/example/s2/common/test/FisshplateTest.java

S2連携も試したいぢ、いろいろなテンプレートロジックも確認したいけど、それは、また今度...

--
http://suz-lab.blogspot.com/

Eclipseのデフォルトのテキスト・ファイル・エンコードをUTF-8に

スズキです。

"eclipse.ini"に下記を追記することで実現できます。
-Dfile.encoding=utf-8

"eclipse.ini"全体は下記となります。(Pleiades導入済みのものです)

--------【eclipse.ini】--------
--launcher.XXMaxPermSize
256M
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms1024m
-Xmx1024m
-Declipse.cvs.anon=true
-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
-Dfile.encoding=utf-8
--------

これでプロジェクト作成時に、いちいち、プロパティから
テキスト・ファイル・エンコードを変更する必要がなくなります。

次はMavenプラグイン入れよう。

--
http://suz-lab.blogspot.com/

CentOS(5.2)にProFTPD

スズキです。

インストールと起動/停止は、下記のようにいつものパターンです。

# yum install proftpd
# service proftpd start
# service proftpd stop

※Yumのリポジトリは、下記のようにしてあるのが前提です。
http://suz-lab.blogspot.com/2009/03/yumepelremicentos-52.html
http://suz-lab.blogspot.com/2009/02/yumcentos-52pound.html

次に設定ですが、ProFTPD設定は、/etc/proftpd.confで行います。
今回は、専用のpasswd/groupファイルを利用するようにしました。

--------【etc/proftpd.conf】--------
# Use pam to authenticate (default) and be authoritative
#AuthPAMConfig proftpd
#AuthOrder mod_auth_pam.c* mod_auth_unix.c
AuthUserFile /etc/proftpd.passwd
AuthGroupFile /etc/proftpd.group
AuthOrder mod_auth_file.c
--------

--------【etc/proftpd.passwd】--------
ftp:IbLcL/9CBm0MA:14:50::/var/ftp/ftp:/bin/bash
--------
※"/etc/passwd"ファイルと同じ形式です。

--------【etc/proftpd.passwd】--------
ftp:x:50:
--------
※"/etc/group"ファイルと同じ形式です。

"proftpd.passwd"にはcryptしたパスワードが必要ですが、こちらは下記のように
htpasswdコマンドで作成できます。

# htpasswd -nb ftp ftp
ftp:IbLcL/9CBm0MA

そして、以下のようなログを確認することで、動作のチェックを行うことができます。

/var/log/messages : 起動/停止などのシステムに関する情報
/var/log/secure : ログインなどの認証に関する情報

でも、ファイルアップロードが"550 Permission denied"のままだ...

--
http://suz-lab.blogspot.com/

2009年3月30日月曜日

「IrfanView」ラベルの整理

スズキです。

IrfanViewネタも多くなってきたので、今までの記事をラベルをつけて整理しました。
http://suz-lab.blogspot.com/search/label/IrfanView

次は、何を整理しようか...

--
http://suz-lab.blogspot.com/

IrfanViewの設定ファイルを外部のフォルダに

スズキです。

デフォルトだと"i_view32.exe"と同じ場所にある、IrfanViewの設定ファイル"i_view32.ini"を
任意の場所(フォルダ)のものに変更する方法です。

下記のように起動オプションで可能です。

--------【BAT】--------
@echo off
start \sbin\iview\i_view32.exe /ini="S:\etc\ivew" %1
exit
--------

IrfanViewのネタも多くなってきたなー。

--
http://suz-lab.blogspot.com/

2009年3月28日土曜日

"jQuery Validation Plugin"のルールに関数が使える!

スズキです。

もはや不動のsuz-lab標準jQueryプラグインとなっている"jQuery Validation Plugin"ですが、
http://suz-lab.blogspot.com/2008/11/jquery-validate-jquery-form.html
ルールの設定に関数が使えるようです。

たとえば、 <input name="title"/> に必須チェックを入れるとき、下記のように設定するのですが、

var param = { rules: {
  title: {
    required: true
  }
}};

次のように関数の戻り値でもOKのようです。

var param = { rules: {
  title: {
    required: function() { return true; }
  }
}};

ということは、こんか感じに場合わけもできます。

var param = { rules: {
  title: {
    required: function(){
      if( 条件 ) { return true; }
      else { return false; }
    }
  }
}};

そして、"required"だけでなく、"minlength"でも同様だったので、
下記のすべてに成り立つのではないかと思っています。
http://docs.jquery.com/Plugins/Validation#List_of_built-in_Validation_methods

いろんな意味で、そろそろ、本気だしてかないとまずいなー…

--
http://suz-lab.blogspot.com/

今日のブックマーク 03/28/2009


Posted from Diigo. The rest of my favorite links are here.

2009年3月26日木曜日

AS3のNumber型の初期値は"NaN"

スズキです。

何も考えずに"0"だと思っていたのですが、まんまとはまってしまいました...

ちなみに、"NaN"かどうかのチェックは"isNaN(...)"で行います。

他は大丈夫かなー?

--
http://suz-lab.blogspot.com/

メールアドレスの@以降を取得するSQL(MySQL)

スズキです。

具体的には下記mailテーブルのaddress列のデータ(hoge@hoge.hoge)から、
@以降(hoge.hoge)をSQL(MySQL)でどう取得するか?です。

address
------------------------
hoge@hoge.hoge
hoge1@hoge.hoge
hoge@hoge1.hoge
hoge1@hoge1.hoge
...

SQLはこんな感じになります。

--------【SQL】--------
select substring(address, locate('@', address) + 1) from mail;
--------

ポイントはlocateで@を位置を取得して(indexOfみたいなもの)、
その値を使って、substringってところです。

SQLだけで解決できてよかった...

--
http://suz-lab.blogspot.com/

FlashDevelopの"AS3 Project with Preloader"で"Google Maps API"

スズキです。

下記のFlash版"Google Maps API"を
http://code.google.com/intl/ja/apis/maps/documentation/flash/
FlashDevelopの"AS3 Project with Preloader"で使ってみました。

--------【AS3】--------
package suz.example.as3.gmap {

  import flash.display.Sprite;
  import flash.events.Event;
  import flash.geom.Point

  import com.google.maps.LatLng;
  import com.google.maps.Map;
  import com.google.maps.MapEvent;
  import com.google.maps.MapType;

  public class Main extends Sprite {

    private var map:Map;

    public function Main() {
      if(stage) {
        init();
      } else {
        addEventListener(Event.ADDED_TO_STAGE, init);
      }
    }

    private function init(e:Event = null):void {
      removeEventListener(Event.ADDED_TO_STAGE, init);
      // entry point
      var map:Map = new Map();
      map.key = "your_api_key";
      map.setSize(new Point(stage.stageWidth, stage.stageHeight));
      map.addEventListener(MapEvent.MAP_READY, onMapReady);
      this.addChild(map);
    }

    private function onMapReady(event:Event):void {
      map.setCenter(new LatLng(40.7, -73.9), 14, MapType.NORMAL_MAP_TYPE);
    }

  }

}
--------

当然、"Google Maps API"のSWCの設定は必要です。

Eventの復習もかねて、Geocodingくらいまではやっておくか。

--
http://suz-lab.blogspot.com/

2009年3月25日水曜日

AS3で抽象メソッドっぽいこと

スズキです。

以前、AS3でのメソッドのオーバーライドに関して書きましたが、
http://suz-lab.blogspot.com/2009/03/as3.html
そこで、AS3には抽象クラス(メソッド)の仕組みが無いとぼやいていましたが、
それっぽいことを、下記のように実現することにしました。

--------【AS3】--------
package {
  public class NotOverriddenError extends Error {
    public function NotOverriddenError() {
      super("子クラスでオーバーライドして下さい。");
    }
  }
}
package {
  public class AbstractParent {
    public function AbstractParent {}
    public function hoge():void { throw new NotOverriddenError(); }
  }
}
--------

AbstractParentを継承して、hogeをオーバーライドせずにhogeを呼ぶと、
NotOverriddenErrorがスローされるってことです。

AS3のノウハウもたまってきたぞ。

--
http://suz-lab.blogspot.com/

GIMP Portable 2.6.6 リリース

スズキです。

まったく使っていない、"GIMP Portable"ですが、アップデートしています。
http://portableapps.com/news/2009-03-22_-_gimp_portable_2.6.6

とりあえずのアップデートですが、今回は、IrfanViewの外部エディタとしても登録しておきました。
登録の仕方は、IrfanViewのメニューの「オプション」 → 「その他3」で"外部エディタを設定"の項目に
"S:\sbin\gimp\GIMPPortable.exe"などを指定する形になります。(三つ指定できます)

とりあえず、画像はIrfanViewで開いて、状況に応じて、GIMPを利用するって感じかな?

--
http://suz-lab.blogspot.com/

「RSS」ラベルの整理

スズキです。

「RSS」のキーワードでブログ内検索してみたら、下記の通り、そこそこ記事がでてきたので、
http://dl.getdropbox.com/u/191713/search.html?cx=partner-pub-2621057045311522%3Ac16gj02a3ru&cof=FORID%3A9&ie=UTF-8&q=RSS&sa=%E6%A4%9C%E7%B4%A2#1275
その記事に対して「RSS」のラベルをつけて、まとめなおしておきました。
http://suz-lab.blogspot.com/search/label/RSS

定期的にラベルの整理はしたいなー。

--
http://suz-lab.blogspot.com/

RSS2.0のサンプル

スズキです。

全網羅した例をすぐに見つけることができなかったので、自分で作ってメモしておきます。

--------【XML】--------
<?xml version='1.0' encoding='UTF-8'?>
<rss version="2.0">
  <channel>
    <title>suz-lab - blog</title>
    <link>http://suz-lab.blogspot.com/</link>
    <description>weblog edited by suz-lab.</description>
    <language>ja-jp</language>
    <copyright>Copyright 2009, suz-lab</copyright>
    <managingEditor>noreply@blogger.com (iretsuzuki)</managingEditor>
    <webMaster>noreply@blogger.com (iretsuzuki)</webMaster>
    <rating>rating</rating>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>Blogger</generator>
    <ttl>60</ttl>
    <pubDate>Wed, 25 Mar 2009 10:30:24 +0000</pubDate>
    <lastBuildDate>Wed, 25 Mar 2009 10:30:24 +0000</lastBuildDate>
    <cloud domain="rpc.sys.com" port="80" path="/news"
        registerProcedure="xyz" protocol="http-post"/>
    <category domain="http://www.blogger.com/atom/ns#">Java</category>
    <category>AS3</category>
    <image>
      <title>suz-lab - blog</title>
      <url>http://suz-lab.blogspot.com/logo.png</url>
      <link>http://suz-lab.blogspot.com/</link>
      <description>weblog edited by suz-lab.</description>
      <width>40</width>
      <height>40</height>
    </image>
    <skipDays>
      <day>Sunday</day>
      <day>Monday</day>
    </skipDays>
    <skipHours>
      <hour>10</hour>
      <hour>20</hour>
    </skipHours>
    <item>
      <title>AS3のE4XでXML中の変数展開</title>
      <link>http://suz-lab.blogspot.com/2009/03/as3e4xxml_25.html</link>
      <description>AS3のE4XでXML中の変数展開の内容</description>
      <author>noreply@blogger.com (iretsuzuki)</author>
      <comments>http://suz-lab.blogspot.com/comments.cgi?id=1</comments>
      <pubDate>Wed, 25 Mar 2009 10:30:24 +0000</pubDate>
      <enclosure url="http://suz-lab.blogspot.com/sample.mp3"
          length="10" type="audio/mpeg"/>
      <guid isPermaLink="true">tag:blogger.com,1999:blog-6.post-2</guid>
      <source url="http://suz-lab.blogspot.com/rss.xml">suz-lab</source>
      <category domain="http://www.blogger.com/atom/ns#">Java</category>
      <category>AS3</category>
    </item>
    <item>
      <title>AS3のE4XでXML中の変数展開</title>
      <link>http://suz-lab.blogspot.com/2009/03/as3e4xxml_25.html</link>
      <description>AS3のE4XでXML中の変数展開の内容</description>
      <author>noreply@blogger.com (iretsuzuki)</author>
      <comments>http://suz-lab.blogspot.com/comments.cgi?id=1</comments>
      <pubDate>Wed, 25 Mar 2009 10:30:24 +0000</pubDate>
      <guid isPermaLink="true">tag:blogger.com,1999:blog-6.post-2</guid>
    </item>
  </channel>
</rss>
--------

だいぶRSSに詳しくなったぞ。

--
http://suz-lab.blogspot.com/

AS3のE4XでXML中の変数展開

スズキです。

タイトルが何いってるかよくわからないと思いますが、要は下記です。

--------【AS3】--------
var hoge:String = "test";
var xml:XML = <sample>{hoge}</sample>;
--------

変数を「{}」で囲むと結果がその部分にその変数の値を代入したもの

<sample>test</sample>

になります。

まだ、調子悪いなー...

--
http://suz-lab.blogspot.com/

今日のブックマーク 03/25/2009


Posted from Diigo. The rest of my favorite links are here.

2009年3月24日火曜日

AS3でDateオブジェクトの文字列化

スズキです。

簡単にRFC822の形式にしたいなー、といろいろ調べついでにまとめてみました。
最初の三つは、Dateクラスのメソッド、残りの二つは、as3corelib内のクラスのメソッドです。
http://code.google.com/p/as3corelib/

--------【AS3】--------
var date:Date = new Date();
trace("toString : " + date.toString());
trace("toLocaleString : " + date.toLocaleString());
trace("toUTCString : " + date.toUTCString());
trace("DateUtil.toRFC822: " + DateUtil.toRFC822(date));
trace("DateUtil.toW3CDTF: " + DateUtil.toW3CDTF(date));
--------
※出力
toString : Tue Mar 24 23:17:32 GMT+0900 2009
toLocaleString : Tue Mar 24 2009 11:17:32 PM
toUTCString : Tue Mar 24 14:17:32 2009 UTC
DateUtil.toRFC822: Tue, 24 Mar 2009 14:17:32 GMT
DateUtil.toW3CDTF: 2009-03-24T14:17:32-00:00

ということで、当初の目的であったRFC822での形式の出力は、
as3corelibのDateUtil.toRFC822で簡単に実現することができます。

でも、GMTなんだよねー...

--
http://suz-lab.blogspot.com/

AS3でのメソッドオーバーライド

スズキです。

Javaのようにはいかないので、要注意です。

--------【AS3:親】--------
public function hoge():void {
}
--------【AS3:子】--------
public override function hoge():void {
}
--------
※メソッドをオーバーライドするには「override」キーワードが必要です。

ちなみに、AS3はJavaで言う抽象クラスのようなものはありません...インターフェースはあるけど...

--
http://suz-lab.blogspot.com/

AS3のE4XでXMLの作成

スズキです。

E4X、かなり便利です。

--------【AS3】--------
var xml:XML = <parent />;
xml.parent += <child />;
trace(xml.toXMLString());
--------
※出力
<parent>
  <child />
</parent>

下記でもOKです。

--------【AS3】--------
var xml:XML = new XML("<parent />");
xml.parent += new XML("<child />");
trace(xml.toXMLString());
--------
※出力
<parent>
  <child />
</parent>

体調不良で遅れた分を挽回しなければ...

--
http://suz-lab.blogspot.com/

2009年3月19日木曜日

LinuxのhtpasswdがWindowsのApacheで使えない

スズキです。

LinuxのApacheで利用できている、htpasswdコマンドで作成したパスワードファイルを、
WIndowsのApacheで利用しようとすると、何故か利用できません。

原因は、Linuxのhtpasswdコマンドはデフォルトでcrypt関数を使って
パスワードファイルを作っていますが、WindowsのApacheでは、
そのcrypt関数を使ったパスワードファイルに対応していないからでした。

実際、Windowsのhtpasswdでパスワードファイルを作成してみると、
MD5を利用したもので作成されます。

ということで、WindowsのApacheで利用するパスワードファイル(htpasswd)は
MD5を使ったものでないといけません。要注意です...

ついでに、Apacheのバージョンアップ(2.2.11)もできたぞ。

--
http://suz-lab.blogspot.com/

今日のブックマーク 03/19/2009


Posted from Diigo. The rest of my favorite links are here.

"FlashDevelop 3.0.0 RC2"を日本語化

スズキです。

こちらでメニューを日本語化する差し替えファイルが公開されています。
http://www.logicalyze.net/blog/?p=1928

展開したフォルダの中にあるXMLファイルを、Settingsフォルダ以下のものと差し替えるだけで、
メニューを日本語化できます。

あとは、Bazaarでソース管理だけか…(ずっと言ってるけど…)

--
http://suz-lab.blogspot.com/

2009年3月18日水曜日

今日のブックマーク 03/18/2009


Posted from Diigo. The rest of my favorite links are here.

2009年3月17日火曜日

"IrfanView & Ruby"でフォルダ以下の画像を一括変換

スズキです。

こちらのIrfanViewを使った画像処理コマンドを、
http://suz-lab.blogspot.com/2009/03/irfanview.html
特定のフォルダ以下の画像に対して行うRubyスクリプトを作ってみました。

--------【Ruby】--------
Dir::entries("SRC_DIR").each { |file|
  system(
    "S:\\sbin\\iview\\i_view32.exe SRC_DIR\\" + file +
    "/resize=(170,170) /convert=DST_DIR\\" + file
  )
}
--------

ポイントは下記でしょうか?

- フォルダ以下のファイル一覧(配列)取得は"Dir::entries"
- 外部コマンド呼び出しは"system"(他にもあるようだけど...)
- "each"で各配列の要素に対する処理

初めて、Rubyを仕事で使ったぞ。

--
http://suz-lab.blogspot.com/

IrfanViewでコマンドラインの画像処理

スズキです。

IrfanViewでUIを使わず、コマンドラインのみで、画像処理する場合は、
下記(リサイズ)のように行います。

>S:\sbin\iview\i_view32.exe original.jpg /resize=(170,170) /convert=170.jpg

他のオプションはこちらでいろいろと紹介されています。
http://ank-holder.blogspot.com/2008/11/optionstxt-irfanview.html

あとはフォルダ下の画像一括変換バッチにするだけだ...

> /ini="Folder" - 指定したフォルダに INI/LST ファイルを保存する
も試してみたい...

--
http://suz-lab.blogspot.com/

今日のブックマーク 03/17/2009


Posted from Diigo. The rest of my favorite links are here.

2009年3月16日月曜日

FlashDevelopでAIRのASDoc

スズキです。

表記、いろいろ調べないとできなかったので...自分メモとして...

まず、FlashDevelopでのドキュメントの生成ですが、
上部メニューの「Tools」→「Flash Tools」→「Documentation Generator」から行います。

そして、Projectのタブで、

Page Title: suz-lab
Output directory: S:\var\flashdevelop\suz-lab\doc
Classpaths: S:\var\flashdevelop\suz-lab\src
Compiler: ASDOC(AS3)

おそらく、AIRでなければ、以上でいいはずだと思いますが、
AIRの場合は、さらに下記が必要になります

Extra options: -library-path+=S:\sbin\flex\frameworks\libs\air\airglobal.swc

次に、Settingsのタブですが、ここでは、下記のように"ASDoc location"に
asdoc.exeのある場所を指定します。

ASDoc location: S:\sbin\flex\bin

これで、右下の"Generate!"ボタンを押すと、"Output directory"にドキュメントが出力されます。

その前に、ASDoc書かなきゃ...

--
http://suz-lab.blogspot.com/

「Cassava Editor」を使ってみた

スズキです。

たまに、「データをCSVファイルで提供」って仕事があるので、
「Cassava Editor」というものを使ってみました。
http://www.asukaze.net/soft/cassava/index.html

デフォルトでは設定ファイルを"AppData/Roaming/Asukaze/Cassava"に置くようなので、
「ポータブル」にはなりませんが、Cassava.exeがあるフォルダに、Cassava.iniを置いておくと、
そちらに設定が記録され、ポータブルアプリケーションとして使うことができます。

また、外部アプリケーションを登録することができ、現在開いている、CSVファイルを、
登録した外部アプリケーションで開きなおすこともできます。

なので、同じポータブル環境下にある、サクラエディタとCalc(OpenOffice)を登録しておくと、
かなりいい感じになります。

当然、TabFolderで、csv拡張子の関連付けは「Cassava Editor」にしています。

マクロとか覚えて、テストデータとか簡単に作れるようになるといいなー。

--
http://suz-lab.blogspot.com/

ファイラーを「TabFolder」変更

スズキです。

X-Finder、あふ、と試してきた、ポータブル環境のファイラーですが、
今回、さらに、「TabFolder」に乗り換えてしまいました。
http://tmsoft.webhop.net/tf/

「あふ」はマウス操作が前提では無いので、結局、
マウス前提でPCを利用している私には、使いこなすことができませんでした...

ファイラーも、早く、決定版を見つけたい...

--
http://suz-lab.blogspot.com/

PeaZip Portable 2.5.1

スズキです。

ポータブル環境で利用している圧縮・解凍ソフト、PeaZipの
バージョンが上がっていたので、アップデートしておきました。
http://peazip.sourceforge.net/

未だ、ポータブル圧縮・解凍ソフトは模索中...
誰か決定版を教えて欲しい...

--
http://suz-lab.blogspot.com/

2009年3月12日木曜日

AIRでファイルの内容を一行ずつ取得

スズキです。

AIR、だんだん思い出してきました。

表記を実現する下記コードに関してですが、一気にファイルの内容読み込んで、
行の終わり(File.lineEnding)でスプリットして、一行づつArrayに入れている感じです。
(ファイルサイズが小さいということが前提です...)

--------【AS3】--------
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
...
private function readFile(path:String):void {
  var stream:FileStream = new FileStream();
  stream.open(new File(path), FileMode.READ);
  var tmp:String = stream.readUTFBytes(stream.bytesAvailable);
  stream.close();
  var lineArray:Array = tmp.split(File.lineEnding);
  lineArray.forEach(printLine);
}
...
private function printLine(line:String, index:int, lineArray:Array):void {
  trace(line);
}
--------

AIRモードまで、もう少しだ...

--
http://suz-lab.blogspot.com/

AIRでファイル出力

スズキです。

表記、AIRだと下記のような感じになります。

--------【AS3】--------
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
...
var file:File = new File("PATH");
var stream:FileStream = new FileStream();
stream.open(file, FileMode.WRITE);
stream.writeUTFBytes("test");
stream.close();
--------

まだ、Javaの文法で書いてしまう...

--
http://suz-lab.blogspot.com/

Portable IrfanView 4.23

スズキです。

以前、自分のポータブル環境に導入したIrfanViewのPortable版が4.23になっていました。
http://suz-lab.blogspot.com/2008/07/jtrimirfanview.html

再度、日本語化して、アップデート完了。

--
http://suz-lab.blogspot.com/

今日のブックマーク 03/12/2009


Posted from Diigo. The rest of my favorite links are here.

2009年3月10日火曜日

FlashDevelopでのFlexSDKの指定と外部SWCの利用

スズキです。

FlashDevelopを利用する上で、まず初めに行わなければならないことは、
FlexSDKの指定です。上部メニューから、

「Tools」 → 「Program Settings」 → 「AS3Context」 → 「Flex SDK Location」

で、FlexSDKのパス("S:\sbin\flex"など)を指定します。

そして当然、外部のSWCも利用する必要性が出てくるはずです。
こちらは、右側のプロジェクトパネルの実際のプロジェクトを右クリックして、

「Properties」 → 「Compiler Options」 → 「SWC Libraries」

に、SWCのパス("lib\as3unit-1.2-sdk3.swc"など)を指定します。

Bazaarとうまく連携できるといいなー。

--
http://suz-lab.blogspot.com/

FlashDevelop 3.0.0 RC2 リリース

スズキです。

ちょうど、Airをいろいろいじっていたところなので、かなりタイムリーなリリースです。
http://www.flashdevelop.org/community/viewtopic.php?f=11&t=4374

そういえば、知らないうちに、traceも出力されるようになってたなー。

--
http://suz-lab.blogspot.com/

2009年3月9日月曜日

PoundでSSLラッパー再びの再び

スズキです。

たまたま、こんなブログの記事を見つけました。
http://www.burnsworth.jp/blog/614

うれしいことに、以前、僕が書いた下記記事を参考にしていただいてるようです。
http://suz-lab.blogspot.com/2007/08/openssl.html

さらに、PoundのSSLの設定で、下記記述もあったほうがいいこともわかりました。
--------
AddHeader "X-Forwarded-Proto: https"
HeadRemove "X-Forwarded-Proto"
(元ネタはこちらのようです)
--------
http://ecpplus.net/weblog/linux/pound%E3%81%A7ssl%E3%83%A9%E3%83%83%E3%83%91%E3%83%BC%E3%82%92%E4%BD%9C%E3%82%8B/

全体としては、こんな感じになります。

--------【pound.cfg】--------
ListenHTTPS
  Address 192.168.1.2
  Port 443
  Cert "/home/suz-lab/etc/ssl/pound02.crt"
  AddHeader "X-Forwarded-Proto: https"
  HeadRemove "X-Forwarded-Proto"
  Service
    HeadRequire "Host: .*ssl02.suz-lab.xxx.*"
    BackEnd
      Address 127.0.0.1
      Port 8080
    End
  End
End
--------

こんな感じで自分の記事がブラッシュアップできるのは、うれしいなー。

--
http://suz-lab.blogspot.com/

2009年3月7日土曜日

今日のブックマーク 03/07/2009


Posted from Diigo. The rest of my favorite links are here.

2009年3月5日木曜日

"FlashDevelop 3.0.0 RC1"を日本語化

スズキです。

そろそろ、「Air」っぽいので、環境整備モードです。

今回は、IDEは、前々からちゃんと使おうと思っていた、「FlashDevelop」
http://www.flashdevelop.org/community/
ソースコードの管理も、今、いろいろいじっている、「Bazaar」でやってみようと思っています。
http://bazaar-vcs.org/

で、FlashDevelopの日本がですが、以下に日本語化ファイルが用意されています。
http://www.logicalyze.net/blog/?p=1560

ダウンロードして、展開したフォルダ中のファイルを、"Settings"フォルダに上書きするだけで、
メニューなどが日本語になります。

とりあえず、今日は、ここまで。

--
http://suz-lab.blogspot.com/

"Dropbox"から"ZumoDrive"へ

スズキです。

今まで、オンラインストレージとローカルのフォルダ(ファイル)を同期させるサービスに、
「Dropbox(http://www.getdropbox.com/)」利用してきました。

iPhoneを購入するまでは、すべてDropboxで事足りたのですが、やはりiPhoneを
利用してしまうと、オンラインストレージのファイルを「効率よく」iPhoneで利用したくなります。

DropboxもiPhone用のWebインターフェースを持っているので、そこから、
ダウンロードする形で、オンラインストレージ上のファイルを利用することはできるのですが、
やはり、この方法では「効率がいい」とは言えません。

そこで、「ZumoDrive (http://zumodrive.com/)」です。

「Dropbox」と「ZumoDrive」の決定的な違いは、ローカルにあるファイルの扱いです。
Dropboxは勝手にオンラインストレージとローカルのフォルダ(ファイル)が完全に同期しますが、
ZumoDriveはファイルを利用するときに、初めてダウンロード(ストリーム配信)されます。
そして、ダウンロードされたファイルはキャッシュとして残るようになっています。

ですので、Dropboxでは、ローカルにもDropboxと同じサイズのディスク領域が必要ですが、
ZumoDriveは必要なく、キャッシュに利用するディスク領域を調整する形になります。

ですので、iPhoneのような、ストレージの小さなデバイスにも対応することができ、
実際、iPhoneアプリもリリースされています。

ZumoDriveを使うことで、念願のiPhoneでの効率的なファイル共有が実現できました。
あとは、Dropboxで実現している、ポータブル環境の同期が可能であれば、
そのまま、ZumoDriveに移行できます。

ZumoDriveにもお金払わないといけないなー…(Dropboxにも払ってるのに…)

--
http://suz-lab.blogspot.com/

やっぱりPythonは"/usr/local"に

スズキです。

CentOSに標準で入っているPythonは2.4系で、ま、それでも、Bazaarは対応している
ということで、そのPythonを利用してBazaarをインストール("/usr/bin"に)していました。
http://suz-lab.blogspot.com/2009/03/centos52bazzar.html

そして、SVNと連携するために、"bzr-svn"を導入しようとしたのですが、
http://bazaar-vcs.org/BzrForeignBranches/Subversion

「INSTALL」ファイルに下記の記述がありました…

You need Python 2.5 or higher.

ということで、やっぱり、Pythonは"/usr/local"にtarballからインストールです。

# cd /usr/local/src/
# tar xvzf Python-2.6.1.tgz
# cd Python-2.6.1
# ./configure
# make
# make install

このPythonを利用して、Bazaarをインストールすると、
Bazaarのコマンドも"/usr/local"にインストールされます。

次は、"bzr-svn"のインストールだ。

--
http://suz-lab.blogspot.com/

今日のブックマーク 03/05/2009


Posted from Diigo. The rest of my favorite links are here.

2009年3月4日水曜日

今日のブックマーク 03/04/2009

  • * virtual_alias_maps に記述できるのは、別のメールアドレスだけであり、コマンドやメールボックスは指定できない。 バーチャルドメイン宛のメールをコマンドに渡すには、virtual_alias_maps で変換した後の実ユーザで .forward または /etc/aliases ファイルでコマンドを記述するようにする。 また、virtual_mailbox_maps に登録されたメールアドレス宛の場合は、transport_maps で pipe デーモンのエージェント等に配送することで、コマンドを実行できるようになる。

    tags: postfix


Posted from Diigo. The rest of my favorite links are here.

2009年3月3日火曜日

CentOS(5.2)でPostfixを"/usr/local"にインストールすると...

スズキです。

表記、はまりました。具体的には下記が実現できずに、試行錯誤してしまいました。

(1) "/usr/local/sbin/sendmail"コマンドでめーるが送れない
(2) PHPのmb_send_mail関数(/usr/local/sbin/sendmail)でメールが送れない

原因は、設定ファイルのパスがインストール時に指定した"/usr/local/etc/postfix"ではなく、
"/etc/postfix"と認識されて、上記が実行されていたからです。

いろいろ調べていると、下記の環境変数を設定してから、上記の実行すると解決するようです。

# export MAIL_CONFIG=/usr/local/etc/postfix

これで(1)は解決しましたが、(2)では、まだ、下記エラーが発生してしまいます。
((2)のPHPはApacheの起動前に上記を実行して確認しています)

--------【/var/log/maillog】--------
Mar 3 09:34:58 ivanov-guest4 postfix/postdrop[4721]:
error: untrusted configuration directory name: /usr/local/etc/postfix
Mar 3 09:34:58 ivanov-guest4 postfix/postdrop[4721]:
fatal: specify "alternate_config_directories = /usr/local/etc/postfix"
in /etc/postfix/main.cf
Mar 3 18:34:59 ivanov-guest4 postfix/sendmail[4720]:
warning: command "/usr/local/sbin/postdrop -r" exited with status 1
Mar 3 18:34:59 ivanov-guest4 postfix/sendmail[4720]:
fatal: apache(48): unable to execute /usr/local/sbin/postdrop -r: Success
--------

これは、

【alternate_config_directories】
--------
> コマンドラインの "-c config_directory" で指定されたり MAIL_CONFIG 環境変数パラメータで
> 指定される、非デフォルトな Postfix 設定ディレクトリのリスト。このリストはデフォルトの
> Postfix 設定ディレクトリで指定されなければなりません。またこのリストは postqueue(1)
> や postdrop(1) のような set-gid された Postfix コマンドによって使われます。
--------
http://www.postfix-jp.info/trans-2.1/jhtml/postconf.5.html

ということなので、デフォルトのPostfix設定ディレクトリのmain.cfに下記内容を追加しました。
((1)もrootで実行してなかったら、同じ現象になったでしょう...)

--------【/etc/postfix/main.cf】--------
alternate_config_directories=/usr/local/etc/postfix
--------

これで、(2)のPHPでも、無事メールが送信されることが確認できました。

長かった...

--
http://suz-lab.blogspot.com/

バーチャルドメイン(Postfix)をMySQLで管理

スズキです。

「MySQLをサポートしたPostfixの構築」が終わり、いよいよ設定です。
http://suz-lab.blogspot.com/2009/02/mysqlpostfix.html

まずは、"main.cf"を編集し、バーチャルドメインのエイリアスのマッピングに
MySQLのテーブルを指定するようにします。

--------【main.cf】--------
virtual_alias_maps = mysql:/usr/local/etc/postfix/virtual_alias_maps-mysql.cf
--------

"virtual_alias_maps-mysql.cf"の内容は下記の通りです。

--------【virtual_alias_maps-mysql.cf】--------
user = mysql_user
password = mysql_pass
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address
--------

メールアドレスを比較する列を"where_field"で指定し、
配送先ユーザーの列を"select_field"で指定します。

対象のテーブルは下記のようなものを想定しています。

--------【DDL】--------
CREATE TABLE alias (
  address VARCHAR(256) NOT NULL,
  goto TEXT NOT NULL,
  PRIMARY KEY (address)
)
--------

次のようでデータを登録すると、"test@test.test"宛てのメールが、
"test-regist"に配送されます。

--------【DML】--------
INSERT INTO alias (
  address,
  goto
) VALUES (
  'test@test.test',
  'test-regist'
)
--------

久しぶりのPostfix、かなり思い出したぞ!

--
http://suz-lab.blogspot.com/

シェルスクリプトで標準入力の取得

スズキです。

そういえば、シェルスクリプトでやったことは無かったので...

--------【Shell】--------
#!/bin/sh
while read LINE; do
  echo $LINE >> /tmp/test.txt
done
--------

Postfixまわり...もう少しだ...

--
http://suz-lab.blogspot.com/

2009年3月2日月曜日

(書評) ブランドづくりの教科書

スズキです。

本当に久しぶりの、書評です。
書評が書けなかった理由は、「忙しい」からと一言で言えそうなんですが、
それ言ったら、SUZ-LABブランドが失墜しそうなので、金輪際、言いません。

で、今回は「ブランドづくりの教科書」です。
http://www.amazon.co.jp/gp/product/4860633180?tag=iretsuzusblog-22

これは、僕が、いろいろな場所で、ブランドという言葉を口にしておきながら、、
実際、そのブランドという言葉を、まったく前進させることができていない現状に反省し、
本書を購入しました。

目次は以下の通りです。(Amazonより)
--------
第1章 ブランドとは何か - 私たちがブランド化すべきものは何か
第2章 会社ブランドをつくり方 - ザ・リッツ・カールトン大阪のブランド戦略に学ぶ
第3章 自分ブランドをつくり方 - 自分のバリュー(価値)をどうやって高めるか
--------
http://www.amazon.co.jp/gp/product/toc/4860633180?tag=iretsuzusblog-22

目次を見るとわかるように、本書は、会社だけでなく、「自分ブランド」に関しても、
言及しています。「自分のブランドづくり」ができない人間が、「会社のブランド」に関して
話すのは笑止千万な感じがするので、当面は本書も含め「自分ブランド」を
テーマにしたものを、読んでいこうと思っています。

そして、内容に関してですが、成功事例として、
「ザ・リッツ・カールトン・大阪」のノウハウを中心に書かれています。

「ザ・リッツ・カールトン・大阪」は「最高のサービスを提供するホテル」という
ブランドの確立に成功しており、それは以下のように表現されるサービスによっています。

- 神秘的なサービス
- 「NO」と言わないサービス
- 「そこまでやってくれるのか」と驚かれるサービス

このブランド化したサービスは「クレド」に書かれた価値観に沿って、
全従業員が行動することにより、生み出されています。
http://corporate.ritzcarlton.com/ja/About/GoldStandards.htm

ここまでは「会社ブランドをつくり方」に関する内容ですが、
「自分ブランドをつくり方」の方では、一流のものに触れることの重要性についても
いろいろと書かれています。

僕の中では、この「一流のものに触れる」の部分が非常に印象に残りました。
(他にコミュニケーションとかいろいろ書いてありましたが…)

ということで、SUZ-LAB(=自分)のブランディングの最初の一歩として、
一流のホテルである「ザ・リッツ・カールトン」を利用してみようと思います。
http://www.ritzcarlton.com/ja/Properties/Tokyo/Default.htm

高いけど…

--
http://suz-lab.blogspot.com/

Rubyでフィード(Blogger)の取得

スズキです。

重い腰がようやく上がりました。
http://suz-lab.blogspot.com/2009/02/windowsruby.html

とりあえず、Bloggerのフィードを取得して、エントリ毎に処理するところまでです。
(各エントリのタイトルを出力しているだけです…)

--------【Ruby】--------
# モジュールのインポート
require 'net/http'
require 'rss'

# フィードの取得先情報
HOST = 'www.blogger.com'
PATH = '/feeds/6373299112985466176/posts/default'

# フィードの格納先
feed = nil

# フィードの取得
Net::HTTP.start(HOST) {|http|
  response = http.get(PATH)
  feed = RSS::Parser.parse(response.body)
}

# エントリ毎の処理
feed.entries.each{|entry|
  puts entry.title.content
}
--------

残作業は下記となります。
- 追加/変更エントリをDBで管理
- 追加/変更エントリを"@nifty TimeLine"に追加

次のポイントはRubyでのDB処理だな。

--
http://suz-lab.blogspot.com/

今日のブックマーク 03/02/2009


Posted from Diigo. The rest of my favorite links are here.

CentOS(5.2)にBazaarをインストール

スズキです。

分散バージョン管理システムにBazaarを利用すると決めてもうすぐ一ヶ月、
未だ下記より何も進めていません…
http://suz-lab.blogspot.com/2009/02/bazaar.html

ということで、近頃CentOSのyum周辺をいろいろといじっており、幸いepel、
にBazaarのパッケージがあるようなので、下記の通りyumでインストールしてみました。

# yum install bzr
# bzr version
Unable to load plugin 'netrc_credential_store' from
'/usr/lib/python2.4/site-packages/bzrlib/plugins'
Bazaar (bzr) 1.3.1
...

しかし、バージョンが、1.3.1とちょっと古いようです。
なので、下記のように最新版をインストールです。

# wget https://launchpad.net/bzr/1.12/1.12/+download/bzr-1.12.tar.gz
# tar xvzf bzr-1.12.tar.gz
# python setup.py install
# bzr version
Bazaar (bzr) 1.12
...

"/usr/bin/..."が上書きされてしまうので、yumの管理とずれてしまうなー、と思いつつ、
「ま、いいか」ってことにしておきました。

まずは、SVN連携を形にしよう。

--
http://suz-lab.blogspot.com/

2009年3月1日日曜日

yumのリポジトリに"epel"と"remi"を追加(CentOS 5.2)

スズキです。

下記のDAG(RPMforge)の追加に続いて、"epel"、"remi"も追加しました。
http://suz-lab.blogspot.com/2009/02/yumcentos-52pound.html

【epel】 http://ftp.iij.ad.jp/pub/linux/fedora/epel/5/i386/
【remi】 http://rpms.famillecollet.com/el5.i386/repoview/

リポジトリの追加は次のコマンドで行っています。

# cd /usr/local/src/
# wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
# rpm -Uvh epel-release-5-3.noarch.rpm
# wget http://rpms.famillecollet.com/el5.i386/remi-release-5-6.el5.remi.noarch.rpm
# rpm -Uvh remi-release-5-6.el5.remi.noarch.rpm

上記だけでは、"remi"リポジトリが有効になっていなかったので、
以下のように"/etc/yum.repos.d/remi.repo"の[remi]を"enabled=1"にします。

--------【remi.repo】-------
[remi]
...
enabled=1
...
--------

ついでに、"/etc/yum.repos.d/CentOS-Base.repo"の[centosplus]も
以下のように"enabled=1"にしておきました。

--------【CentOS-Base.repo】--------
[centosplus]
...
enabled=1
...
--------

この状態で"yum update"を行うと、次のようにリポジトリが追加されてることが確認できます。

# yum update
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
* epel: ftp.riken.jp
* addons: ftp.iij.ad.jp
* rpmforge: fr2.rpmfind.net
* remi: iut-info.univ-reims.fr
* updates: ftp.iij.ad.jp
* centosplus: ftp.iij.ad.jp
* base: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
Setting up Update Process
No Packages marked for Update

もっと"CentOS 5.2"に追加できるyumリポジトリを探してみよう。

--
http://suz-lab.blogspot.com/

今日のブックマーク 03/01/2009


Posted from Diigo. The rest of my favorite links are here.

メンバー急募!

スズキです。

そろそろ、チーム作って大会に参加したくなってきたので、フットサルチームのメンバーを募集します。

参加希望者はこちらにレス下さい。
http://jbbs.livedoor.jp/bbs/read.cgi/computer/41921/1235620473/l50
※参加条件は個人サイト/ブログなどを所持していることです。

チームメンバーはこちらから確認できます。
http://www.futone.jp/team/cgi-bin/playerlist.cgi?ORN=6422

5人そろい次第、下記のUBレベルの大会に申し込もうと思います。
http://the.futone.jp/cgi-bin/htm/tt_sel

3月中に実現したいなー。

--
http://suz-lab.blogspot.com/