2009年11月30日月曜日

Sumatra PDF Portable 1.0 リリース

スズキです。

下記よりアナウンスされています。
http://portableapps.com/news/2009-11-18_-_sumatra_pdf_portable_1.0

"Foxit Reader Portable"もリリースされてる...
http://portableapps.com/news/2009-11-24_-_foxit_reader_portable_3.1.3.1030

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

2009年11月26日木曜日

マウスオーバーで拡大画像を表示(jQuery)

スズキです。

こちらのjQueryツールチッププラグインを利用すると簡単にできます。
http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/

こちらのデモの"An image with a tooltip"がまさにそれって感じです。
http://jquery.bassistance.de/tooltip/demo/

--------【HTML】--------
<link rel="stylesheet" href="/css/tooltip.css" />
<script type="text/javascript" language="javascript"
src="/js/jquery.js"></script>
<script type="text/javascript" language="javascript"
src="/js/tooltip.js"></script>
...
$('#image').tooltip({
  delay: 0,
  showURL: false,
  bodyHandler: function() {
    return $("<img/>").attr("src", "img/suz_large.jpg");
  }
});
...
<img id="image" src="img/suz_small.jpg" />
--------

CSSの読み込みを忘れないように...

いろんなことが中途半端だ...

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

2009年11月24日火曜日

PHPでディレクトリの中のディレクトリを出力

スズキです。

こんな感じです。

--------【PHP】--------
$base_path = "/home/suz";
$base_dir = opendir($base_path);
while($tmp = readdir($base_dir)) {
  if($tmp != ".." && $tmp != "." && is_dir($base_path . "/" . $tmp)) {
    print($tmp);
  }
}
closedir($base_dir);
--------

次は、久しぶりのImageMagickだ。

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

PushGmailでPOP通知(iPhone)

スズキです。

よく、GmailをiPhoneで見るのですが、
どうせなら、メールが来たらPOP通知してくれないかなー、と思い、
いろいろと調べてみたら、PushGmailというものを発見しました。

有料アプリ(115円)ですが...

受信トレイに入ってきたメールがPOP通知されます。
ですので、POP通知したくないメールとかは、Gmailのフィルタ機能などで、
調整する必要があります。

実際に使ってみると、現在、GmailでGTD的なことを試しており、
それとも相性抜群で、いきなり重宝するようになってしまいました。

こちらにも載せておこう...
http://jbbs.livedoor.jp/bbs/read.cgi/computer/41921/1235187679/

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

HTMLのテキストフォームでENTER押して...

スズキです。

HTMLの検索フォームで、テキストボックスに文字を入力して、
ENTER押したら検索結果表示して欲しいってのがあったので、
jQuery使って実装してみました。
(今までは検索ボタン(画像)押したら検索でした...)

--------【HTML】-------
...
<script language="javascript">
$(function(){
  $("#search").keypress(function(e) {
    if($("#search").val() != "" && e.which == 13) {
      // 検索結果表示処理
    }
  });
})
</script>
...
<form action="javascript:void(0)">
  <input type="text" id="search"/>
</form>
...
--------

まあ、ENTERキー(13)押したら...って処理ですね。
formタグのactiono属性を"javascript:void(0)"にしておくのもポイントでしょうか...

最近、いろいろと、ペースが落ちてる...

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

2009年11月19日木曜日

TomcatのContextパラメータのreloadableの対象はクラスのみ

スズキです。

こんなやつの話です。

<Context path="/examples" docBase="examples" reloadable="true">
...
</Context>

propertiesなどのファイルのみ更新してもリロードはされません。
なので、反映したいときは、適当なクラスファイルも更新させる必要があります。

ブログのネタになる調査は、ポジティブにいこう...

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

"Jiemamy API"で列の作成(型編)

スズキです。

こちらの続きです。
http://blog.suz-lab.com/2009/11/jiemamy-api.html

このスプレッドシートに対して、
http://spreadsheets.google.com/pub?key=tWC2LhgkL2-xZIb1Wpc9b6w&gid=0

こんな感じに実装すると、
http://code.google.com/p/suz-lab-gae/source/browse/trunk/suz-lab-apps/src/suz/lab/apps/page/sandbox/DownloadPage.java?r=30

こんな感じになります。
http://www.suz-lab.com/sandbox/download

とりあえず、

int(11)

DataTypeCategory: INTEGER
SizedDataTypeAdapter: 11

char(3)

DataTypeCategory: CHARACTER
SizedDataTypeAdapter: 3

varchar(255)

DataTypeCategory: VARCHAR
SizedDataTypeAdapter: 255

といった感じにしています。

型自体の設定は直感的でしたが、サイズの指定とかで、Adapterを利用するなどは、
ちょっと調べないとわからないかもしれません。

とりあえず、実行できるDDLになったぞ!

次は、非公開スプレッドシートも認証とAPI使ってDDL作れるかだなー...

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

心が変われば、... 人生が変わる。

スズキです。


> 心が変われば、態度が変わる。
> 態度が変われば、行動が変わる。
> 行動が変われば、習慣が変わる。
> 習慣が変われば、人格が変わる。
> 人格が変われば、運命が変わる。
> 運命が変われば、人生が変わる。

ヒンズー教の教えのようです。
http://meigen.shiawasehp.net/prov/019.html

「コンバージョンレート」はどれくらいなんだろう?

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

2009年11月18日水曜日

"Jiemamy API"で列の作成

スズキです。

こちらの続きです。
http://blog.suz-lab.com/2009/11/google-spreadsheet-poi-jiemamy.html

テーブル(だけ)定義までのなんちゃってCREATE文まで作ったので、
今度は列定義です。

こちらを参考に、
http://docs.jiemamy.org/release/0.2.0/api-quickstart/htmlsingle/api-quickstart.html#d0e163

こんなソースで、
http://code.google.com/p/suz-lab-gae/source/browse/trunk/suz-lab-apps/src/suz/lab/apps/page/sandbox/DownloadPage.java?r=29

こんな結果になるように作ってみました。
http://www.suz-lab.com/sandbox/download

でも、型指定がまだまだです...
(Spredsheetのフォーマットをどうするか?)
(文字型の桁数などはどう指定するか?)

難易度が高くなってきたぞ...

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

組織について

スズキです。


> 我々の間には「チームプレイ」などという都合のいい言い訳は存在せん。
> あるとすれば、スタンドプレーから生じる「チームワーク」だけだ。

いまさらですが、攻殻機動隊の「公安9課課長 荒巻大輔」の言葉です。

今までいろいろ考えてきたけど、この言葉に落ち着いてしまった...

ってことは、大規模な組織運営を
自分のビジョンからはずしてしまったってことなんだよねー...

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

2009年11月13日金曜日

"Google Spreadsheet" → "POI" → "Jiemamy" → "blancoSqlFormatter" → "SQL"

スズキです。

これや、
http://blog.suz-lab.com/2009/11/google-docsspreadsheet.html
これや、
http://blog.suz-lab.com/2009/11/gae-t2-poigoogle-spredsheet.html
これの流れです。
http://blog.suz-lab.com/2009/11/blancosqlformattersqljava.html

で、下記の"Google Spreadsheet"から、
http://spreadsheets.google.com/pub?key=tWC2LhgkL2-xZIb1Wpc9b6w&gid=0

DDLを生成するサンプルプログラムをGAE/Jで作ってみました。
http://code.google.com/p/suz-lab-gae/source/browse/trunk/suz-lab-apps/src/suz/lab/apps/page/sandbox/DownloadPage.java?r=28
(でも、まだ、列の定義まではできていません...)

Jiemamyは下記のようにAPIがしっかりと定義され、ドキュメント化もされていたので、
http://docs.jiemamy.org/release/0.2.0/api-quickstart/htmlsingle/api-quickstart.html
かなり助かりました。

週末に、多少実用的なものにしよう。

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

"iknow"が"smart.fm"になってた

スズキです。

昔、英語の勉強で"iknow"ってことで記事書いたのですが、
http://blog.suz-lab.com/2008/04/iknow.html
三日坊主で利用しなくなり、すっかり忘れていたのですが...

メールを整理していると、"smart.fm"というよくわからんところからメールがあり、
サイト見てみたら、"iknow"っぽくて、もしや、と思って、調べてみたら...

"iknow"が"smart.fm"になってたってことでした。

せっかくだから、学習はじめるか... 英語じゃなくて、中国語を...

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

2009年11月12日木曜日

BlancoSqlFormatterでSQLを整形(Java)

スズキです。

後で使うと思うので、使い方だけメモ。

--------【Java】--------
BlancoSqlFormatter formatter = new BlancoSqlFormatter(new BlancoSqlRule());
String before = "select * from SUZ_LAB";
String after = formatter.format(before);
--------

Jiemamyを研究しなければ...

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

2009年11月10日火曜日

mysqlbinlogで日時指定

スズキです。

下記となります。

# mysqlbinlog --start-datetime="2009-11-10 07:22:37" mysqld-bin.log

他にも下記にいろいろ紹介されています。

http://beausoir.blog100.fc2.com/blog-entry-86.html

とりあえず、MySQLモード終了。

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

2009年11月9日月曜日

"Servlet & DbUtils & JSONIC"でDBデータをJSON出力

スズキです。

縁あって、作ってみました。

--------【Java】--------
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
  Connection connection = null;
  try {
    Class.forName("com.mysql.jdbc.Driver");
    String url =
"jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF8";
    connection = DriverManager.getConnection(url, "root", "");
    QueryRunner runner = new QueryRunner();
    String sql = "SELECT * FROM SUZ_LAB";
    List<Map<String, Object>> list = (List<Map<String, Object>>)runner.query(
      connection, sql, new MapListHandler()
    );
    resp.setContentType("text/javascript");
    resp.setCharacterEncoding("UTF-8"); // 無いと文字化け
    JSON.encode(list, resp.getOutputStream(), true);
  } catch(Exception e) {
    e.printStackTrace();
  } finally {
    DbUtils.closeQuietly(connection);
  }
}
--------

▼ DbUtils
http://commons.apache.org/dbutils/

▼ JSONIC
http://jsonic.sourceforge.jp/

JSONにしてしまえば、後はjQueryで...

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

Androidの開発環境

スズキです。

AndroidはJavaで開発できます。

そして、AndroidのサイトにはEclipseのプラグインがありました。
http://developer.android.com/sdk/eclipse-adt.html

上記サイトの詳しい手順があるので、それにそって行えば、
簡単にインストールできます。(まあ、結局は下記をおさえておけばOKですが...)

▼アップデートサイト
https://dl-ssl.google.com/android/eclipse/
▼インストールパッケージ
Android DDMS
Android DevelopmentTools

でも、これだけでは、だめで、
"Android SDK"をちゃんとインストールしておく必要があります。
http://developer.android.com/sdk/index.html

インストールは適当な場所にアーカイブファイルを展開するだけですが、
その中に、"SDK Setup.exe"あり、それを起動し、
"Android SDK and AVD Manager"を立ち上げ、
パッケージというものを、インストールしていきます。

"Android SDK and AVD Manager"の左側に"Available Pakages"という項目があり、
そこから、インストール可能なパッケージを確認できます。

とりあえず、下記の2.0系を入れてみました。
- Documentation for Android SDK, API 5, revision 1
- Android SDK Tools, revision 3
- SDK Platform Android 2.0, API 5, revision 1
- Google APIs by Google Inc., Android API 5, revision 1
- Usb Driver package, revision 2

利用するには、"Android SDK and AVD Manager"の左側一番上の、
"Virtual Devices"も作っておく必要があります。

ここまで準備できたら、Eclipseに戻って、"Preferences(設定)"から、
Androidの項目を選択し、上記でインストールしてSDKのパスを設定します。

これで、Androidプロジェクトを作成し、実行すると、
エミュレーターが立ち上がり、製作物を確認することができます。

iPhoneもやらないと...

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

"suz-lab - search" 復活!

スズキです。

独自ドメインにして、使い物にならなくなっていた、
右上の検索ボックス(suz-lab - search)ですが、復活させました。

今回の検索対象は、

- www.suz-lab.com(GAE/J)
- blog.suz-lab.com(Blogger)
- http://jbbs.livedoor.jp/computer/41921/(livedoorしたらば掲示板)
- memo.suz-lab.com(Twitter, Tumblr, Delicious)

です。

まあ、自分用です。

そろそろ、画像系、いくか...

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

"mysqlbinlog"使ってみた

スズキです。

"mysqlbinlog"は「バイナリログファイルを処理するためのユーティリティ」です。
http://dev.mysql.com/doc/refman/5.1/ja/mysqlbinlog.html

バイナリログファイルは下記のようにmy.confに記述していると、

--------【my.conf】--------
...
datadir = /usr/local/mysql
log-bin=mysql-bin
...
--------

"mysql-tritonn-bin.XXXXXX"といった形で出力されているはずです。

これを、下記のように実行すると、
# mysqlbinlog mysql-tritonn-bin.XXXXXX
実際に実行されているSQL(人間が読める形)に変換されます。

"MySQL & DRBD & Heartbeat"もそろそろやっておきたいなー。

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

2009年11月6日金曜日

Google Chrome Portable 3.0.195.27 Revision 2 リリース

スズキです。

下記で、"Google Chrome"を"Portable App"のものに切り替えたのですが、
http://blog.suz-lab.com/2009/10/portableappscomgoogle-chrome-portable.html
さらにアップデートしたものが出ています。
http://portableapps.com/news/2009-10-28_-_google_chrome_portable_3.0.195.27_rev_2

"Google Chrome 4"の"Bookmark Sync"はよくわからなかった...

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

"GAE & T2 & POI"で"Google Spredsheet"を読み込み

スズキです。

下記"Google Spredsheet"のテーブル定義から
http://blog.suz-lab.com/2009/11/google-docsspreadsheet.html
DDLを作成したいと思い、せっかくなんでGAE/JのWebアプリでってことで、
実験してみました。

上記のテーブル定義は、下記でExcelのファイルとして取得できるので、
http://spreadsheets.google.com/pub?key=tWC2LhgkL2-xZIb1Wpc9b6w&output=xls
これをPOIで処理できれば、って考えてます。

結果はこんな感じで、無事読み込めました。
http://www.suz-lab.com/sandbox/download

ソースはこんな感じです。
▼JAVA
http://code.google.com/p/suz-lab-gae/source/browse/trunk/suz-lab-apps/src/suz/lab/apps/page/sandbox/DownloadPage.java
▼JSP
http://code.google.com/p/suz-lab-gae/source/browse/trunk/suz-lab-apps/war/sandbox/download.jsp

ということで、次は、POIでテーブル定義情報を取得して、DDLの作成です。

いつになるかは、未定...

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

2009年11月5日木曜日

コマンドプロンプトでのリネームコマンドは"ren"

スズキです。

使う機会がめったに無かったので...

ということで、"Command Prompt Portable"の
"commandprompt.bat"にも追加です。
http://blog.suz-lab.com/2009/10/command-prompt-portable-bazaar-portable.html

当然、「mv」として!

--------【commandprompt.bat】--------
@echo off
color 07
prompt $p$g
title Command Prompt Portable
set BZR_HOME=S:\windows\sbin\bzr
set PATH=%PATH%;%BZR_HOME%;
doskey cat=type $*
doskey ls=dir $*
doskey rm=del $*
doskey pwd=cd
doskey mv=ren $*
cls
ver
cd \common\home
--------

Windows7でポータブルアプリ動くのかなー...

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

EBSのスナップショットをローテーション

スズキです。

タイトルがわかりづらいかも知れませんが、
常にEBSのスナップショットを、例えば3世代といったかたちで、
ローテーションさせて作成するシェルスクリプトです
ってことです。

まず、スナップショットの作成です。

ec2-create-snapshot \
-K $AWS_PRIVATE_KEY \
-C $AWS_CERTIFICATE \
$EBS_VOLUME

次にスナップショットのIDリストの取得です。
とりあえず、スナップショットリストの取得はこんな感じです。

ec2-describe-snapshots \
-K $AWS_PRIVATE_KEY \
-C $AWS_CERTIFICATE

SNAPSHOT snap-1 vol-0 completed 2009-11-05T07:12:25+0000
SNAPSHOT snap-2 vol-0 completed 2009-11-05T09:20:17+0000
SNAPSHOT snap-3 vol-0 completed 2009-11-05T09:23:41+0000

これを5列目の日付で降順にソートします。

ec2-describe-snapshots \
-K $AWS_PRIVATE_KEY \
-C $AWS_CERTIFICATE \
| sort -k5 -r

SNAPSHOT snap-3 vol-0 completed 2009-11-05T09:23:41+0000
SNAPSHOT snap-2 vol-0 completed 2009-11-05T09:20:17+0000
SNAPSHOT snap-1 vol-0 completed 2009-11-05T07:12:25+0000

※"-k5"で5列目の日付をソート対象にいして"-r"で降順にしています。

さらに、2列目のスナップショットIDのみにしぼります。

ec2-describe-snapshots \
-K $AWS_PRIVATE_KEY \
-C $AWS_CERTIFICATE \
| sort -k5 -r | awk '{print $2}'

snap-1
snap-2
snap-3

※"$2"で2列目のみ表示しています。

そして、上記で作成したスナップショットIDリストに対して、
新しい順で世代分はそのまま残し、それより古いものは削除処理をします。

COUNT=1
for SNAPSHOT in $SNAPSHOTS; do
  if [ $COUNT -le $EBS_GENERATION ]; then
    echo $SNAPSHOT "remained"
  else
    ec2-delete-snapshot \
    -K $AWS_PRIVATE_KEY \
    -C $AWS_CERTIFICATE \
    $SNAPSHOT
    echo $SNAPSHOT " deleted"
  fi
  COUNT=`expr $COUNT + 1`
done

最後に、あらためて全スクリプトです。

--------ここから-------
ec2-create-snapshot \
-K $AWS_PRIVATE_KEY \
-C $AWS_CERTIFICATE \
$EBS_VOLUME

SNAPSHOTS=`ec2-describe-snapshots \
-K $AWS_PRIVATE_KEY \
-C $AWS_CERTIFICATE \
| sort -k5 -r | awk '{print $2}'`

COUNT=1
for SNAPSHOT in $SNAPSHOTS; do
  if [ $COUNT -le $EBS_GENERATION ]; then
    echo $SNAPSHOT "remained"
  else
    ec2-delete-snapshot \
    -K $AWS_PRIVATE_KEY \
    -C $AWS_CERTIFICATE \
    $SNAPSHOT
    echo $SNAPSHOT " deleted"
  fi
  COUNT=`expr $COUNT + 1`
done
--------ここまで--------

AMIに反映しなきゃ。

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

2009年11月4日水曜日

"Google Docs(Spreadsheet)"でテーブル定義

スズキです。

いろいろ試してみたけど、
共同開発では、これが一番いいような気がする。
(みんなでリアルタイムでいじれるから)

ということで、よくある、都道府県、市区町村、郵便番号で作ってみた。
http://spreadsheets.google.com/pub?key=tWC2LhgkL2-xZIb1Wpc9b6w&gid=0

API使ってDDL生成できれば...

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

OpenOffice.org Portable 3.1.1 リリース

スズキです。

"3.1.1"がリリースされています。
http://portableapps.com/news/2009-11-02_-_openoffice.org_portable_3.1.1

近頃、CalcでDB定義書書いていますが、。
ちょっと挙動が不安定だったので、このアップデートでなおったらなー、
と思っています。

アップデートしたアプリ、まだまだあるなー。

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

2009年11月2日月曜日

MySQLでインデックス情報を取得

スズキです。

下記で取得できます。

mysql> show index from SUZ_LAB;

*************************** 1. row ***************************
Table: SUZ_LAB
Non_unique: 1
Key_name: U1
Seq_in_index: 1
Column_name: SUZ_LAB_MAIL
Collation: A
Cardinality: 4426
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:

DBドキュメント作成も、もう少しだ...

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