<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6893066444640170817</id><updated>2011-11-28T10:19:20.400+09:00</updated><category term='H2Database_Twitter4J'/><category term='XWiki'/><category term='H2Database_ApachePOI'/><category term='H2Database_ApacheCommonsNet'/><category term='ApacheDerby'/><category term='FUSE'/><category term='H2Database_JRedis'/><category term='まとめ'/><category term='H2Database_JCIFS'/><category term='H2Database_OrionSSH2'/><category term='JTrac'/><category term='H2Database_LocalFileSystem'/><category term='H2Database_etc'/><category term='Ubuntu'/><category term='H2Database_Sardine'/><category term='Liferay'/><category term='JSPWiki'/><category term='H2Database_SchemaCrawler'/><category term='H2Database'/><category term='hadoop'/><title type='text'>serverあれこれ</title><subtitle type='html'>各種serverについてのTipsを書いていきます。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default?start-index=101&amp;max-results=100'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>245</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-2082674631726281344</id><published>2011-06-30T22:19:00.000+09:00</published><updated>2011-06-30T22:20:49.965+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_Sardine'/><category scheme='http://www.blogger.com/atom/ns#' term='まとめ'/><title type='text'>H2 Database上でsardineでWebDAVサーバと連携するユーザ定義関数のまとめ</title><content type='html'>&lt;h3&gt;WebDAVサーバ上のリソース情報の取得&lt;/h3&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2010/11/h2-databasesardinewebdav.html'&gt;WebDAVサーバ上のファイルを列挙する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2010/11/h2-databasesardinewebdav_21.html'&gt;WebDAVサーバ上のファイルの最終更新日時を取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2010/11/h2-databasesardinewebdav_20.html'&gt;WebDAVサーバ上のファイルの作成日時を取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2010/11/h2-databasesardinewebdav_25.html'&gt;WebDAVサーバ上のファイルのサイズを取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2010/11/h2-databasesardinewebdav_23.html'&gt;WebDAVサーバ上のファイルのコンテントタイプを取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2010/11/h2-databasesardinewebdavurl.html'&gt;WebDAVサーバのディレクトリ上のファイルのURLを列挙する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2010/11/h2-databasesardinewebdav_26.html'&gt;WebDAVサーバ上のリソースが存在するか調べる関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2010/11/h2-databasesardinewebdav_24.html'&gt;WebDAVサーバ上のディレクトリを列挙する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;WebDAVサーバ上のリソースの操作&lt;/h3&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2010/11/h2-databasesardineblobwebdav.html'&gt;BLOBをWebDAVサーバ上のファイルとしてアップロードする関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2010/11/h2-databasesardineclobwebdav.html'&gt;CLOBをWebDAVサーバ上のファイルとしてアップロードする関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2010/11/h2-databasesardinewebdavblob.html'&gt;WebDAVサーバ上のファイルをBLOBとして返す関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2010/11/h2-databasesardinewebdavclob.html'&gt;WebDAVサーバ上のファイルをCLOBとして返す関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2010/12/h2-databasesardinewebdav_03.html'&gt;WebDAVサーバ上のファイルをリネームする関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2010/12/h2-databasesardinewebdav_02.html'&gt;WebDAVサーバ上のファイルをコピーする関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2010/12/h2-databasesardinewebdav.html'&gt;WebDAVサーバ上のファイルを削除する関数を作成する&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-2082674631726281344?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/2082674631726281344/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/06/h2-databasesardinewebdav.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/2082674631726281344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/2082674631726281344'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/06/h2-databasesardinewebdav.html' title='H2 Database上でsardineでWebDAVサーバと連携するユーザ定義関数のまとめ'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-1905895123784752713</id><published>2011-06-22T22:07:00.001+09:00</published><updated>2011-06-22T22:07:42.617+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_OrionSSH2'/><category scheme='http://www.blogger.com/atom/ns#' term='まとめ'/><title type='text'>H2 Database上でOrion SSH2を使用するユーザー定義関数のまとめ</title><content type='html'>&lt;h3&gt;SSH2でコマンド実行&lt;/h3&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2.html'&gt;サーバ上でコマンドを実行する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;SFTPサーバ上のファイル・ディレクトリの情報取得&lt;/h3&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/01/h2-databaseorion-ssh2.html'&gt;サーバ上のファイルを列挙する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/01/h2-databaseorion-ssh2sftp_24.html'&gt;ファイルのサイズを取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/01/h2-databaseorion-ssh2sftp_26.html'&gt;ファイルの最終更新日時を取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/01/h2-databaseorion-ssh2sftpuid.html'&gt;ファイルのUIDを取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/01/h2-databaseorion-ssh2sftpgid.html'&gt;ファイルのGIDを取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftp.html'&gt;ファイルのパーミッションを取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftp_09.html'&gt;フルパスを取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftp_07.html'&gt;シンボリックリンクのターゲットを表示する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;SFTPサーバ上のファイル・ディレクトリに対する操作&lt;/h3&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2blobsftp.html'&gt;BLOBをSFTP上へアップロードする関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftpblob.html'&gt;ファイルをダウンロードしてBLOBとして返す関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftp_11.html'&gt;ファイルを移動・リネームする関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftp_05.html'&gt;ディレクトリを削除する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftp_03.html'&gt;ディレクトリを作成する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/01/h2-databaseorion-ssh2sftp.html'&gt;シンボリックリンクを作成する関数を作成する&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-1905895123784752713?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/1905895123784752713/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/06/h2-databaseorion-ssh2.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1905895123784752713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1905895123784752713'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/06/h2-databaseorion-ssh2.html' title='H2 Database上でOrion SSH2を使用するユーザー定義関数のまとめ'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-7863985187105131804</id><published>2011-06-19T18:21:00.001+09:00</published><updated>2011-06-19T18:23:14.605+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_SchemaCrawler'/><category scheme='http://www.blogger.com/atom/ns#' term='まとめ'/><title type='text'>H2 Database上でSchemaCrawlerを使用するユーザー定義関数のまとめ</title><content type='html'>H2 Database上でSchemaCrawlerを使用するユーザー定義関数のまとめ&lt;br /&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/03/h2-databaseschemacrawler_22.html'&gt;スキーマを列挙する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/04/h2-databaseschemacrawler.html'&gt;テーブルを列挙する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/04/h2-databaseschemacrawler_04.html'&gt;テーブルのカラムを列挙する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/02/h2-databaseschemacrawler.html'&gt;データベースの情報を取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/03/h2-databaseschemacrawler.html'&gt;データベースのプロパティ情報を取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/03/h2-databaseschemacrawler_12.html'&gt;SchemaCrawlerの情報を取得する関数を作成する&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-7863985187105131804?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/7863985187105131804/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/06/h2-databaseschemacrawler.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7863985187105131804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7863985187105131804'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/06/h2-databaseschemacrawler.html' title='H2 Database上でSchemaCrawlerを使用するユーザー定義関数のまとめ'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-6809354019676891330</id><published>2011-06-11T12:49:00.002+09:00</published><updated>2011-06-11T13:02:29.996+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_Twitter4J'/><category scheme='http://www.blogger.com/atom/ns#' term='まとめ'/><title type='text'>H2 Database上でTwitter4Jを使用するユーザー定義関数のまとめ</title><content type='html'>H2 Database上でTwitter4Jを使用するユーザー定義関数のまとめ&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;ツィート関連&lt;/h3&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/01/h2-databasetwitter4j.html'&gt;ツィートする関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_10.html'&gt;&lt;br /&gt;ツィート回数を取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;ユーザ情報取得&lt;/h3&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_18.html'&gt;接続ユーザーのタイムラインを取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j.html'&gt;&lt;br /&gt;ユーザー名を取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_12.html'&gt;&lt;br /&gt;お気に入りの数を取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;フォロー/フォロワー関連&lt;/h3&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_16.html'&gt;フォローしている数を取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_14.html'&gt;&lt;br /&gt;フォロワー数を取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_22.html'&gt;&lt;br /&gt;フォローしているユーザ名を取得する関数を作成する&lt;/a&gt;&lt;br /&gt;&lt;a href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_20.html'&gt;&lt;br /&gt;フォロワーのユーザ名を取得する関数を作成する&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-6809354019676891330?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/6809354019676891330/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/06/h2-databasetwitter4j.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/6809354019676891330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/6809354019676891330'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/06/h2-databasetwitter4j.html' title='H2 Database上でTwitter4Jを使用するユーザー定義関数のまとめ'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-8633744610528152189</id><published>2011-04-04T10:11:00.000+09:00</published><updated>2011-04-04T10:11:00.362+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_SchemaCrawler'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとSchemaCrawlerでテーブルのカラムを列挙する関数を作成する</title><content type='html'>H2 DatabaseとSchemaCrawlerでテーブルのカラムを列挙する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists sc_get_columns as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import schemacrawler.schema.*;&lt;br /&gt;import schemacrawler.schemacrawler.*;&lt;br /&gt;import schemacrawler.utility.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet sc_get_columns(String jdbcDriver, String url, &lt;br /&gt;  String user, String password, String schemaName,&lt;br /&gt;  String tableName)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( jdbcDriver == null ){&lt;br /&gt;    throw new Exception(&amp;quot;jdbcDriver is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( url == null ){&lt;br /&gt;    throw new Exception(&amp;quot;url is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null ){&lt;br /&gt;    throw new Exception(&amp;quot;password is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( schemaName == null ){&lt;br /&gt;    throw new Exception(&amp;quot;schemaName is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( tableName == null ){&lt;br /&gt;    throw new Exception(&amp;quot;tableName is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  Class.forName(jdbcDriver);&lt;br /&gt;  Connection conn = null;&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;POS&amp;quot;, Types.NUMERIC, 4, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;NAME&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;TYPENAME&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;DECIMAL_DIGITS&amp;quot;, Types.NUMERIC, 4, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;SIZE&amp;quot;, Types.NUMERIC, 10, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;WIDTH&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;NULLABLE&amp;quot;, Types.BOOLEAN, 1, 0);&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    conn = DriverManager.getConnection(url, user, password);&lt;br /&gt;    SchemaCrawlerOptions options = new SchemaCrawlerOptions();&lt;br /&gt;    options.setSchemaInfoLevel(SchemaInfoLevel.maximum());&lt;br /&gt;    Database db = SchemaCrawlerUtility.getDatabase(conn, options);&lt;br /&gt;    Schema schema = db.getSchema(schemaName);&lt;br /&gt;    if( schema != null ){&lt;br /&gt;      Table table = schema.getTable(tableName);&lt;br /&gt;      if( table != null ){&lt;br /&gt;        Column columns[] = table.getColumns();&lt;br /&gt;        for(int li=0;li&amp;lt;columns.length;li++){&lt;br /&gt;          rs.addRow(columns[li].getOrdinalPosition(), &lt;br /&gt;            columns[li].getName(),&lt;br /&gt;            columns[li].getType().getTypeName(),&lt;br /&gt;            columns[li].getDecimalDigits(),&lt;br /&gt;            columns[li].getSize(),&lt;br /&gt;            columns[li].getWidth(),&lt;br /&gt;            columns[li].isNullable());&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( conn != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select * from&lt;br /&gt;sc_get_columns('org.postgresql.Driver',&lt;br /&gt;  'jdbc:postgresql://localhost:5432/postgres', &lt;br /&gt;  'postgres', 'postgres', 'public', 'test1');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;schemacrawler-8.5.1.jar, schemacrawler-postgresql-8.5.1.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07), SchemaCrawler 8.5.1&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;SchemaCrawlerのウェブサイト&lt;br /&gt;&lt;a href="http://schemacrawler.sourceforge.net/" target="_blank"&gt;http://schemacrawler.sourceforge.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-8633744610528152189?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/8633744610528152189/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/04/h2-databaseschemacrawler_04.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8633744610528152189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8633744610528152189'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/04/h2-databaseschemacrawler_04.html' title='H2 DatabaseとSchemaCrawlerでテーブルのカラムを列挙する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-7285404593314389795</id><published>2011-04-03T10:46:00.000+09:00</published><updated>2011-04-03T10:46:00.639+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでキー値が存在しない場合のみ値を設定する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでキー値が存在しない場合のみ値を設定する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_setnx as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Boolean jredis_setnx(String host, Integer intPort, &lt;br /&gt;  String key, String value)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( value == null ){&lt;br /&gt;    throw new Exception(&amp;quot;value is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  return jrc.setnx(key, value);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'key1');&lt;br /&gt;select jredis_del('192.168.1.25', 6379, 'key2');&lt;br /&gt;select jredis_set('192.168.1.25', 6379, 'key1', 'value1');&lt;br /&gt;select jredis_setnx('192.168.1.25', 6379, 'key1', 'modified');&lt;br /&gt;select jredis_setnx('192.168.1.25', 6379, 'key2', 'modified');&lt;br /&gt;select jredis_get('192.168.1.25', 6379, 'key1');&lt;br /&gt;select jredis_get('192.168.1.25', 6379, 'key2');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-7285404593314389795?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/7285404593314389795/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/04/h2-databasejredis_03.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7285404593314389795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7285404593314389795'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/04/h2-databasejredis_03.html' title='H2 DatabaseとJRedisでキー値が存在しない場合のみ値を設定する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-35771336240264082</id><published>2011-04-02T10:20:00.001+09:00</published><updated>2011-04-02T10:20:00.594+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_SchemaCrawler'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとSchemaCrawlerでテーブルを列挙する関数を作成する</title><content type='html'>H2 DatabaseとSchemaCrawlerでテーブルを列挙する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists sc_get_tables as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import schemacrawler.schema.*;&lt;br /&gt;import schemacrawler.schemacrawler.*;&lt;br /&gt;import schemacrawler.utility.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet sc_get_tables(String jdbcDriver, String url, &lt;br /&gt;  String user, String password, String schemaName)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( jdbcDriver == null ){&lt;br /&gt;    throw new Exception(&amp;quot;jdbcDriver is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( url == null ){&lt;br /&gt;    throw new Exception(&amp;quot;url is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null ){&lt;br /&gt;    throw new Exception(&amp;quot;password is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( schemaName == null ){&lt;br /&gt;    throw new Exception(&amp;quot;schemaName is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  Class.forName(jdbcDriver);&lt;br /&gt;  Connection conn = null;&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;NAME&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;FULLNAME&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;REMARKS&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    conn = DriverManager.getConnection(url, user, password);&lt;br /&gt;    SchemaCrawlerOptions options = new SchemaCrawlerOptions();&lt;br /&gt;    Database db = SchemaCrawlerUtility.getDatabase(conn, options);&lt;br /&gt;    Schema schema = db.getSchema(schemaName);&lt;br /&gt;    if( schema != null ){&lt;br /&gt;      Table tables[] = schema.getTables();&lt;br /&gt;      for(int li=0;li&amp;lt;tables.length;li++){&lt;br /&gt;        rs.addRow(tables[li].getName(), &lt;br /&gt;          tables[li].getFullName(),&lt;br /&gt;          tables[li].getRemarks());&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( conn != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select * from&lt;br /&gt;sc_get_tables('org.postgresql.Driver',&lt;br /&gt;  'jdbc:postgresql://localhost:5432/postgres', &lt;br /&gt;  'postgres', 'postgres', 'public');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;schemacrawler-8.5.1.jar, schemacrawler-postgresql-8.5.1.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07), SchemaCrawler 8.5.1&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;SchemaCrawlerのウェブサイト&lt;br /&gt;&lt;a href="http://schemacrawler.sourceforge.net/" target="_blank"&gt;http://schemacrawler.sourceforge.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-35771336240264082?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/35771336240264082/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/04/h2-databaseschemacrawler.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/35771336240264082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/35771336240264082'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/04/h2-databaseschemacrawler.html' title='H2 DatabaseとSchemaCrawlerでテーブルを列挙する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-7543059923828690400</id><published>2011-04-01T10:40:00.000+09:00</published><updated>2011-04-01T10:40:01.045+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisで新しい値を設定して古い値を返す関数を作成する</title><content type='html'>H2 DatabaseとJRedisで新しい値を設定して古い値を返す関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_getset as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;String jredis_getset(String host, Integer intPort, &lt;br /&gt;  String key, String value)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( value == null ){&lt;br /&gt;    throw new Exception(&amp;quot;value is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  byte result[] = jrc.getset(key, value);&lt;br /&gt;  return result==null?null:DefaultCodec.toStr(result);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'key1');&lt;br /&gt;select jredis_set('192.168.1.25', 6379, 'key1', 'value1');&lt;br /&gt;select jredis_getset('192.168.1.25', 6379, 'key1', 'modified');&lt;br /&gt;select jredis_get('192.168.1.25', 6379, 'key1');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-7543059923828690400?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/7543059923828690400/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/04/h2-databasejredis.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7543059923828690400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7543059923828690400'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/04/h2-databasejredis.html' title='H2 DatabaseとJRedisで新しい値を設定して古い値を返す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-8452456954978257643</id><published>2011-03-31T10:34:00.000+09:00</published><updated>2011-03-31T10:34:00.169+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでSorted Setの値のスコアを取得する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでSorted Setの値のスコアを取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_zscore as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Double jredis_zscore(String host, Integer intPort, &lt;br /&gt;  String key, String value)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( value == null ){&lt;br /&gt;    throw new Exception(&amp;quot;value is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  return jrc.zscore(key, value);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'sset1');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 100, 'value1');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 200, 'value2');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 300, 'value3');&lt;br /&gt;select jredis_zscore('192.168.1.25', 6379, 'sset1', 'value3');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-8452456954978257643?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/8452456954978257643/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredissorted-set_31.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8452456954978257643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8452456954978257643'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredissorted-set_31.html' title='H2 DatabaseとJRedisでSorted Setの値のスコアを取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-5510880706791912244</id><published>2011-03-30T10:24:00.001+09:00</published><updated>2011-03-30T10:24:00.650+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでSorted Setから値を削除する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでSorted Setから値を削除する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_zrem as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Boolean jredis_zrem(String host, Integer intPort, &lt;br /&gt;  String key, String value)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( value == null ){&lt;br /&gt;    throw new Exception(&amp;quot;value is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  return jrc.zrem(key, value);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'sset1');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 100, 'value1');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 200, 'value2');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 300, 'value3');&lt;br /&gt;select jredis_zrem('192.168.1.25', 6379, 'sset1', 'value3');&lt;br /&gt;select * from jredis_zrange('192.168.1.25', 6379, 'sset1', 0, -1);&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-5510880706791912244?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/5510880706791912244/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredissorted-set_30.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/5510880706791912244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/5510880706791912244'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredissorted-set_30.html' title='H2 DatabaseとJRedisでSorted Setから値を削除する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-462934073774968365</id><published>2011-03-29T10:18:00.000+09:00</published><updated>2011-03-29T10:18:00.476+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでSorted Setからインデックスの範囲で逆順で値を取得する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでSorted Setからインデックスの範囲で逆順で値を取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_zrevrange as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet jredis_zrevrange(String host, Integer intPort, &lt;br /&gt;  String key, Long from, Long to)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( from == null ){&lt;br /&gt;    throw new Exception(&amp;quot;from is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( to == null ){&lt;br /&gt;    throw new Exception(&amp;quot;to is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;ELEMENT&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  for(byte elem[] : jrc.zrevrange(key, from, to)){&lt;br /&gt;    rs.addRow(elem==null?null:DefaultCodec.toStr(elem));&lt;br /&gt;  }&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'sset1');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 100, 'value1');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 200, 'value2');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 300, 'value3');&lt;br /&gt;select * from jredis_zrevrange('192.168.1.25', 6379, 'sset1', 0, -1);&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-462934073774968365?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/462934073774968365/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredissorted-set_29.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/462934073774968365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/462934073774968365'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredissorted-set_29.html' title='H2 DatabaseとJRedisでSorted Setからインデックスの範囲で逆順で値を取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-1692114323925791355</id><published>2011-03-28T10:13:00.000+09:00</published><updated>2011-03-28T10:13:00.805+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでスコアの範囲でSorted Setの値を取得する</title><content type='html'>H2 DatabaseとJRedisでスコアの範囲でSorted Setの値を取得するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_zrangebyscore as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet jredis_zrangebyscore(String host, Integer intPort, &lt;br /&gt;  String key, Double from, Double to)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( from == null ){&lt;br /&gt;    throw new Exception(&amp;quot;from is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( to == null ){&lt;br /&gt;    throw new Exception(&amp;quot;to is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;ELEMENT&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  for(byte elem[] : jrc.zrangebyscore(key, from, to)){&lt;br /&gt;    rs.addRow(elem==null?null:DefaultCodec.toStr(elem));&lt;br /&gt;  }&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'sset1');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 100, 'value1');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 200, 'value2');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 300, 'value3');&lt;br /&gt;select * from jredis_zrangebyscore('192.168.1.25', 6379, 'sset1', 200, 300);&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-1692114323925791355?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/1692114323925791355/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredissorted-set_28.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1692114323925791355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1692114323925791355'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredissorted-set_28.html' title='H2 DatabaseとJRedisでスコアの範囲でSorted Setの値を取得する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-7850593246479633030</id><published>2011-03-27T10:09:00.001+09:00</published><updated>2011-03-27T10:09:00.643+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでSorted Setの要素数を取得する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでSorted Setの要素数を取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_zcard as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Long jredis_zcard(String host, Integer intPort, &lt;br /&gt;  String key)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  return jrc.zcard(key);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'sset1');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 100, 'value1');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 200, 'value2');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 300, 'value3');&lt;br /&gt;select jredis_zcard('192.168.1.25', 6379, 'sset1');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-7850593246479633030?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/7850593246479633030/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredissorted-set_27.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7850593246479633030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7850593246479633030'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredissorted-set_27.html' title='H2 DatabaseとJRedisでSorted Setの要素数を取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-1227556142189091760</id><published>2011-03-26T10:05:00.000+09:00</published><updated>2011-03-26T10:05:00.453+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでSorted Setの値のスコアをインクリメントする関数を作成する</title><content type='html'>H2 DatabaseとJRedisでSorted Setの値のスコアをインクリメントする関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_zincrby as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Double jredis_zincrby(String host, Integer intPort, &lt;br /&gt;  String key, Double score, String value)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( score == null ){&lt;br /&gt;    throw new Exception(&amp;quot;score is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( value == null ){&lt;br /&gt;    throw new Exception(&amp;quot;value is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  return jrc.zincrby(key, score, value);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'sset1');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 100, 'value1');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 200, 'value2');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 300, 'value3');&lt;br /&gt;select jredis_zincrby('192.168.1.25', 6379, 'sset1', 1000, 'value2');&lt;br /&gt;select * from jredis_zrange('192.168.1.25', 6379, 'sset1', 0, -1);&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-1227556142189091760?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/1227556142189091760/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredissorted-set_26.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1227556142189091760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1227556142189091760'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredissorted-set_26.html' title='H2 DatabaseとJRedisでSorted Setの値のスコアをインクリメントする関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-5753704967175748878</id><published>2011-03-25T10:55:00.001+09:00</published><updated>2011-03-25T10:55:00.407+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでSorted Setからインデックスの範囲で値を取得する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでSorted Setからインデックスの範囲で値を取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_zrange as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet jredis_zrange(String host, Integer intPort, &lt;br /&gt;  String key, Long from, Long to)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( from == null ){&lt;br /&gt;    throw new Exception(&amp;quot;from is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( to == null ){&lt;br /&gt;    throw new Exception(&amp;quot;to is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;ELEMENT&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  for(byte elem[] : jrc.zrange(key, from, to)){&lt;br /&gt;    rs.addRow(elem==null?null:DefaultCodec.toStr(elem));&lt;br /&gt;  }&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'sset1');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 100, 'value1');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 200, 'value2');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 300, 'value3');&lt;br /&gt;select * from jredis_zrange('192.168.1.25', 6379, 'sset1', 0, -1);&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-5753704967175748878?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/5753704967175748878/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredissorted-set_25.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/5753704967175748878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/5753704967175748878'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredissorted-set_25.html' title='H2 DatabaseとJRedisでSorted Setからインデックスの範囲で値を取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-1598142317895075725</id><published>2011-03-24T10:48:00.000+09:00</published><updated>2011-03-24T10:48:00.813+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでSorted Setに値を追加する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでSorted Setに値を追加する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_zadd as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Boolean jredis_zadd(String host, Integer intPort, &lt;br /&gt;  String key, Double score, String value)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( score == null ){&lt;br /&gt;    throw new Exception(&amp;quot;score is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( value == null ){&lt;br /&gt;    throw new Exception(&amp;quot;value is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  return jrc.zadd(key, score, value);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'sset1');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 100, 'value1');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 200, 'value2');&lt;br /&gt;select jredis_zadd('192.168.1.25', 6379, 'sset1', 300, 'value3');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-1598142317895075725?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/1598142317895075725/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredissorted-set.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1598142317895075725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1598142317895075725'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredissorted-set.html' title='H2 DatabaseとJRedisでSorted Setに値を追加する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-4227119949323623198</id><published>2011-03-23T10:41:00.000+09:00</published><updated>2011-03-23T10:41:00.396+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでセットから値を削除する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでセットから値を削除する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_srem as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Boolean jredis_srem(String host, Integer intPort, &lt;br /&gt;  String key, String value)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( value == null ){&lt;br /&gt;    throw new Exception(&amp;quot;value is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  return jrc.srem(key, value);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'set1');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');&lt;br /&gt;select jredis_srem('192.168.1.25', 6379, 'set1', 'value1');&lt;br /&gt;select * from jredis_smembers('192.168.1.25', 6379, 'set1');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-4227119949323623198?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/4227119949323623198/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_23.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4227119949323623198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4227119949323623198'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_23.html' title='H2 DatabaseとJRedisでセットから値を削除する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-1795647145197258814</id><published>2011-03-22T15:09:00.001+09:00</published><updated>2011-03-22T15:09:00.072+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_SchemaCrawler'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとSchemaCrawlerでスキーマを列挙する関数を作成する</title><content type='html'>H2 DatabaseとSchemaCrawlerでスキーマを列挙する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists sc_get_schemas as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import schemacrawler.schema.*;&lt;br /&gt;import schemacrawler.schemacrawler.*;&lt;br /&gt;import schemacrawler.utility.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet sc_get_schemas(String jdbcDriver, String url, &lt;br /&gt;  String user, String password)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( jdbcDriver == null ){&lt;br /&gt;    throw new Exception(&amp;quot;jdbcDriver is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( url == null ){&lt;br /&gt;    throw new Exception(&amp;quot;url is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null ){&lt;br /&gt;    throw new Exception(&amp;quot;password is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  Class.forName(jdbcDriver);&lt;br /&gt;  Connection conn = null;&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;CATALOG&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;SCHEMA&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    conn = DriverManager.getConnection(url, user, password);&lt;br /&gt;    SchemaCrawlerOptions options = new SchemaCrawlerOptions();&lt;br /&gt;    Database db = SchemaCrawlerUtility.getDatabase(conn, options);&lt;br /&gt;    Schema schemas[] = db.getSchemas();&lt;br /&gt;    for(int li=0;li&amp;lt;schemas.length;li++){&lt;br /&gt;      rs.addRow(schemas[li].getCatalogName(), &lt;br /&gt;        schemas[li].getSchemaName());&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( conn != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select * from&lt;br /&gt;sc_get_schemas('org.postgresql.Driver',&lt;br /&gt;  'jdbc:postgresql://localhost:5432/postgres', &lt;br /&gt;  'postgres', 'postgres');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;schemacrawler-8.5.1.jar, schemacrawler-postgresql-8.5.1.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07), SchemaCrawler 8.5.1&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;SchemaCrawlerのウェブサイト&lt;br /&gt;&lt;a href="http://schemacrawler.sourceforge.net/" target="_blank"&gt;http://schemacrawler.sourceforge.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-1795647145197258814?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/1795647145197258814/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databaseschemacrawler_22.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1795647145197258814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1795647145197258814'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databaseschemacrawler_22.html' title='H2 DatabaseとSchemaCrawlerでスキーマを列挙する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-4970828778691765108</id><published>2011-03-22T10:36:00.000+09:00</published><updated>2011-03-22T10:36:00.594+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでサーバの情報を返す関数を作成する</title><content type='html'>H2 DatabaseとJRedisでサーバの情報を返す関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_info as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet jredis_info(String host, Integer intPort)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;KEY&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;VALUE&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  for(Map.Entry elem : jrc.info().entrySet()){&lt;br /&gt;    rs.addRow(elem.getKey(), elem.getValue());&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select * from jredis_info('192.168.1.25', 6379);&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-4970828778691765108?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/4970828778691765108/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_22.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4970828778691765108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4970828778691765108'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_22.html' title='H2 DatabaseとJRedisでサーバの情報を返す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-7427052527023568645</id><published>2011-03-21T10:21:00.000+09:00</published><updated>2011-03-21T10:21:00.636+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisで複数のセットから差集合を作成する関数を作成する</title><content type='html'>H2 DatabaseとJRedisで複数のセットから差集合を作成する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_sdiffstore as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer jredis_sdiffstore(String host, Integer intPort, &lt;br /&gt;  String dest, String set1, String set2)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( dest == null ){&lt;br /&gt;    throw new Exception(&amp;quot;dest is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( set1 == null ){&lt;br /&gt;    throw new Exception(&amp;quot;set1 is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( set2 == null ){&lt;br /&gt;    throw new Exception(&amp;quot;set2 is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  jrc.sdiffstore(dest, set1, set2);&lt;br /&gt;  return new Integer(0);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'set1');&lt;br /&gt;select jredis_del('192.168.1.25', 6379, 'set2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set2', 'value2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set2', 'value5');&lt;br /&gt;select jredis_sdiffstore('192.168.1.25', 6379, 'rs', 'set1', 'set2');&lt;br /&gt;select * from jredis_smembers('192.168.1.25', 6379, 'rs');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-7427052527023568645?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/7427052527023568645/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_21.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7427052527023568645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7427052527023568645'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_21.html' title='H2 DatabaseとJRedisで複数のセットから差集合を作成する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-8029987225199943802</id><published>2011-03-20T10:15:00.000+09:00</published><updated>2011-03-20T10:15:00.279+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisで複数のセットから和集合を作成する関数を作成する</title><content type='html'>H2 DatabaseとJRedisで複数のセットから和集合を作成する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_sunionstore as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer jredis_sunionstore(String host, Integer intPort, &lt;br /&gt;  String dest, String set1, String set2)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( dest == null ){&lt;br /&gt;    throw new Exception(&amp;quot;dest is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( set1 == null ){&lt;br /&gt;    throw new Exception(&amp;quot;set1 is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( set2 == null ){&lt;br /&gt;    throw new Exception(&amp;quot;set2 is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  jrc.sunionstore(dest, set1, set2);&lt;br /&gt;  return new Integer(0);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'set1');&lt;br /&gt;select jredis_del('192.168.1.25', 6379, 'set2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set2', 'value2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set2', 'value5');&lt;br /&gt;select jredis_sunionstore('192.168.1.25', 6379, 'rs', 'set1', 'set2');&lt;br /&gt;select * from jredis_smembers('192.168.1.25', 6379, 'rs');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-8029987225199943802?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/8029987225199943802/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_20.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8029987225199943802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8029987225199943802'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_20.html' title='H2 DatabaseとJRedisで複数のセットから和集合を作成する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-6598593014553406901</id><published>2011-03-19T10:09:00.001+09:00</published><updated>2011-03-19T10:09:00.178+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisで複数のセットから積集合を作成する関数を作成する</title><content type='html'>H2 DatabaseとJRedisで複数のセットから積集合を作成する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_sinterstore as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer jredis_sinterstore(String host, Integer intPort, &lt;br /&gt;  String dest, String set1, String set2)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( dest == null ){&lt;br /&gt;    throw new Exception(&amp;quot;dest is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( set1 == null ){&lt;br /&gt;    throw new Exception(&amp;quot;set1 is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( set2 == null ){&lt;br /&gt;    throw new Exception(&amp;quot;set2 is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  jrc.sinterstore(dest, set1, set2);&lt;br /&gt;  return new Integer(0);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'set1');&lt;br /&gt;select jredis_del('192.168.1.25', 6379, 'set2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set2', 'value2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set2', 'value5');&lt;br /&gt;select jredis_sinterstore('192.168.1.25', 6379, 'rs', 'set1', 'set2');&lt;br /&gt;select * from jredis_smembers('192.168.1.25', 6379, 'rs');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-6598593014553406901?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/6598593014553406901/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_19.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/6598593014553406901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/6598593014553406901'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_19.html' title='H2 DatabaseとJRedisで複数のセットから積集合を作成する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-459948570137800493</id><published>2011-03-18T10:02:00.001+09:00</published><updated>2011-03-18T10:02:00.648+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisで複数のセットから差集合を返す関数を作成する</title><content type='html'>H2 DatabaseとJRedisで複数のセットから差集合を返す関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_sdiff as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet jredis_sdiff(String host, Integer intPort, &lt;br /&gt;  String key1, String key2)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key1 == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key1 is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( key2 == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key2 is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;ELEMENT&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  for(byte elem[] : jrc.sdiff(key1, key2)){&lt;br /&gt;    rs.addRow(elem==null?null:DefaultCodec.toStr(elem));&lt;br /&gt;  }&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'set1');&lt;br /&gt;select jredis_del('192.168.1.25', 6379, 'set2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set2', 'value2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set2', 'value5');&lt;br /&gt;select * from jredis_sdiff('192.168.1.25', 6379, 'set1', 'set2');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-459948570137800493?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/459948570137800493/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_18.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/459948570137800493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/459948570137800493'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_18.html' title='H2 DatabaseとJRedisで複数のセットから差集合を返す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-8861515944422553963</id><published>2011-03-17T10:57:00.001+09:00</published><updated>2011-03-17T10:57:00.461+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisで複数のセットから和集合を返す関数を作成する</title><content type='html'>H2 DatabaseとJRedisで複数のセットから和集合を返す関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_sunion as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet jredis_sunion(String host, Integer intPort, &lt;br /&gt;  String key1, String key2)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key1 == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key1 is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( key2 == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key2 is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;ELEMENT&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  for(byte elem[] : jrc.sunion(key1, key2)){&lt;br /&gt;    rs.addRow(elem==null?null:DefaultCodec.toStr(elem));&lt;br /&gt;  }&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'set1');&lt;br /&gt;select jredis_del('192.168.1.25', 6379, 'set2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set2', 'value2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set2', 'value5');&lt;br /&gt;select * from jredis_sunion('192.168.1.25', 6379, 'set1', 'set2');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-8861515944422553963?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/8861515944422553963/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_17.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8861515944422553963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8861515944422553963'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_17.html' title='H2 DatabaseとJRedisで複数のセットから和集合を返す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-7479448270356738991</id><published>2011-03-16T10:52:00.001+09:00</published><updated>2011-03-16T10:52:00.334+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisで複数のセットから積集合を返す関数を作成する</title><content type='html'>H2 DatabaseとJRedisで複数のセットから積集合を返す関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_sinter as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet jredis_sinter(String host, Integer intPort, &lt;br /&gt;  String key1, String key2)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key1 == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key1 is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( key2 == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key2 is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;ELEMENT&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  for(byte elem[] : jrc.sinter(key1, key2)){&lt;br /&gt;    rs.addRow(elem==null?null:DefaultCodec.toStr(elem));&lt;br /&gt;  }&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'set1');&lt;br /&gt;select jredis_del('192.168.1.25', 6379, 'set2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set2', 'value2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set2', 'value5');&lt;br /&gt;select * from jredis_sinter('192.168.1.25', 6379, 'set1', 'set2');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-7479448270356738991?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/7479448270356738991/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_16.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7479448270356738991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7479448270356738991'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_16.html' title='H2 DatabaseとJRedisで複数のセットから積集合を返す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-3181921711241506190</id><published>2011-03-15T10:45:00.001+09:00</published><updated>2011-03-15T10:45:00.670+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでセットからランダムに値を返す関数を作成する</title><content type='html'>H2 DatabaseとJRedisでセットからランダムに値を返す関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_srandmember as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;String jredis_srandmember(String host, Integer intPort, &lt;br /&gt;  String key)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  byte result[] = jrc.srandmember(key);&lt;br /&gt;  return result==null?null:DefaultCodec.toStr(result);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'set1');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');&lt;br /&gt;select jredis_srandmember('192.168.1.25', 6379, 'set1');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-3181921711241506190?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/3181921711241506190/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_15.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/3181921711241506190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/3181921711241506190'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_15.html' title='H2 DatabaseとJRedisでセットからランダムに値を返す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-792774986301923665</id><published>2011-03-14T10:37:00.000+09:00</published><updated>2011-03-14T10:37:00.386+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでセットの値を別のセットに移動させる関数を作成する</title><content type='html'>H2 DatabaseとJRedisでセットの値を別のセットに移動させる関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_smove as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Boolean jredis_smove(String host, Integer intPort, &lt;br /&gt;  String srcKey, String destKey, String value)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( srcKey == null ){&lt;br /&gt;    throw new Exception(&amp;quot;srcKey is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( destKey == null ){&lt;br /&gt;    throw new Exception(&amp;quot;destKey is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( value == null ){&lt;br /&gt;    throw new Exception(&amp;quot;value is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  return jrc.smove(srcKey, destKey, value);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'set1');&lt;br /&gt;select jredis_del('192.168.1.25', 6379, 'set2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');&lt;br /&gt;select jredis_smove('192.168.1.25', 6379, 'set1', 'set2', 'value2');&lt;br /&gt;select * from jredis_smembers('192.168.1.25', 6379, 'set1');&lt;br /&gt;select * from jredis_smembers('192.168.1.25', 6379, 'set2');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-792774986301923665?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/792774986301923665/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_14.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/792774986301923665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/792774986301923665'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_14.html' title='H2 DatabaseとJRedisでセットの値を別のセットに移動させる関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-2597649683136489722</id><published>2011-03-13T10:10:00.000+09:00</published><updated>2011-03-13T10:10:00.155+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでセットに含まれる値を返す関数を作成する</title><content type='html'>H2 DatabaseとJRedisでセットに含まれる値を返す関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_smembers as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet jredis_smembers(String host, Integer intPort, &lt;br /&gt;  String key)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;ELEMENT&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  for(byte elem[] : jrc.smembers(key)){&lt;br /&gt;    rs.addRow(elem==null?null:DefaultCodec.toStr(elem));&lt;br /&gt;  }&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'set1');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');&lt;br /&gt;select * from jredis_smembers('192.168.1.25', 6379, 'set1');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-2597649683136489722?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/2597649683136489722/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_13.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/2597649683136489722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/2597649683136489722'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_13.html' title='H2 DatabaseとJRedisでセットに含まれる値を返す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-4923588298986627171</id><published>2011-03-12T15:01:00.001+09:00</published><updated>2011-03-12T15:01:00.808+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_SchemaCrawler'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseでSchemaCrawlerの情報を取得する関数を作成する</title><content type='html'>H2 DatabaseでSchemaCrawlerの情報を取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists sc_get_scinfo as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import schemacrawler.schema.*;&lt;br /&gt;import schemacrawler.schemacrawler.*;&lt;br /&gt;import schemacrawler.utility.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet sc_get_scinfo(String jdbcDriver, String url, &lt;br /&gt;  String user, String password)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( jdbcDriver == null ){&lt;br /&gt;    throw new Exception(&amp;quot;jdbcDriver is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( url == null ){&lt;br /&gt;    throw new Exception(&amp;quot;url is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null ){&lt;br /&gt;    throw new Exception(&amp;quot;password is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  Class.forName(jdbcDriver);&lt;br /&gt;  Connection conn = null;&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;NAME&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;VALUE&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    conn = DriverManager.getConnection(url, user, password);&lt;br /&gt;    SchemaCrawlerOptions options = new SchemaCrawlerOptions();&lt;br /&gt;    Database db = SchemaCrawlerUtility.getDatabase(conn, options);&lt;br /&gt;    SchemaCrawlerInfo sci = db.getSchemaCrawlerInfo();&lt;br /&gt;    rs.addRow(&amp;quot;About&amp;quot;, sci.getSchemaCrawlerAbout());&lt;br /&gt;    rs.addRow(&amp;quot;ProductName&amp;quot;, sci.getSchemaCrawlerProductName());&lt;br /&gt;    rs.addRow(&amp;quot;Version&amp;quot;, sci.getSchemaCrawlerVersion());&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( conn != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select * from&lt;br /&gt;sc_get_scinfo('org.postgresql.Driver',&lt;br /&gt;  'jdbc:postgresql://localhost:5432/postgres', &lt;br /&gt;  'postgres', 'postgres');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;schemacrawler-8.5.1.jar, schemacrawler-postgresql-8.5.1.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07), SchemaCrawler 8.5.1&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;SchemaCrawlerのウェブサイト&lt;br /&gt;&lt;a href="http://schemacrawler.sourceforge.net/" target="_blank"&gt;http://schemacrawler.sourceforge.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-4923588298986627171?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/4923588298986627171/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databaseschemacrawler_12.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4923588298986627171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4923588298986627171'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databaseschemacrawler_12.html' title='H2 DatabaseでSchemaCrawlerの情報を取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-2748761235729065453</id><published>2011-03-12T10:59:00.001+09:00</published><updated>2011-03-12T10:59:00.350+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでセットに値が含まれるか確認する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでセットに値が含まれるか確認する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_sismember as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Boolean jredis_sismember(String host, Integer intPort, &lt;br /&gt;  String key, String value)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( value == null ){&lt;br /&gt;    throw new Exception(&amp;quot;value is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  return jrc.sismember(key, value);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'set1');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');&lt;br /&gt;select jredis_sismember('192.168.1.25', 6379, 'set1', 'value1') as result1,&lt;br /&gt;  jredis_sismember('192.168.1.25', 6379, 'set1', 'value0') as result2;&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-2748761235729065453?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/2748761235729065453/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_12.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/2748761235729065453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/2748761235729065453'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_12.html' title='H2 DatabaseとJRedisでセットに値が含まれるか確認する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-2140890952076815910</id><published>2011-03-11T10:52:00.001+09:00</published><updated>2011-03-11T10:52:00.240+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでセットに値を追加する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでセットに値を追加する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_sadd as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Boolean jredis_sadd(String host, Integer intPort, &lt;br /&gt;  String key, String value)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( value == null ){&lt;br /&gt;    throw new Exception(&amp;quot;value is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  return jrc.sadd(key, value);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'set1');&lt;br /&gt;select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-2140890952076815910?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/2140890952076815910/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_11.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/2140890952076815910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/2140890952076815910'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_11.html' title='H2 DatabaseとJRedisでセットに値を追加する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-6106104000412743888</id><published>2011-03-10T10:45:00.000+09:00</published><updated>2011-03-10T10:45:00.375+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでバックグラウンドでDBを保存する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでバックグラウンドでDBを保存する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_bgsave as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Long jredis_bgsave(String host, Integer intPort)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  jrc.bgsave();&lt;br /&gt;  return new Long(0);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_bgsave('192.168.1.25', 6379);&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-6106104000412743888?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/6106104000412743888/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredisdb.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/6106104000412743888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/6106104000412743888'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredisdb.html' title='H2 DatabaseとJRedisでバックグラウンドでDBを保存する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-5284092714433760930</id><published>2011-03-09T10:39:00.001+09:00</published><updated>2011-03-09T10:39:00.346+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでソースリストから最後の要素を取得・削除して値を別のリストの最初に追加する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでソースリストから最後の要素を取得・削除して値を別のリストの最初に追加する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_rpoplpush as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;String jredis_rpoplpush(String host, Integer intPort, &lt;br /&gt;  String srcKey, String destKey)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( srcKey == null ){&lt;br /&gt;    throw new Exception(&amp;quot;srcKey is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( destKey == null ){&lt;br /&gt;    throw new Exception(&amp;quot;destKey is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  byte result[] = jrc.rpoplpush(srcKey, destKey);&lt;br /&gt;  return result==null?null:DefaultCodec.toStr(result);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'list1');&lt;br /&gt;select jredis_del('192.168.1.25', 6379, 'list2');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value1');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value2');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value3');&lt;br /&gt;select jredis_rpoplpush('192.168.1.25', 6379, 'list1', 'list2');&lt;br /&gt;select * from jredis_lrange('192.168.1.25', 6379, 'list1', 0, -1);&lt;br /&gt;select * from jredis_lrange('192.168.1.25', 6379, 'list2', 0, -1);&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-5284092714433760930?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/5284092714433760930/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_09.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/5284092714433760930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/5284092714433760930'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_09.html' title='H2 DatabaseとJRedisでソースリストから最後の要素を取得・削除して値を別のリストの最初に追加する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-8563397562048568970</id><published>2011-03-08T10:25:00.000+09:00</published><updated>2011-03-08T10:25:00.767+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでリストから指定のインデックスの要素を取得する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでリストから指定のインデックスの要素を取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_lindex as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;String jredis_lindex(String host, Integer intPort, &lt;br /&gt;  String key, Long index)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( index == null ){&lt;br /&gt;    throw new Exception(&amp;quot;index is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  byte result[] = jrc.lindex(key, index);&lt;br /&gt;  return result==null?null:DefaultCodec.toStr(result);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'list1');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value1');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value2');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value3');&lt;br /&gt;select jredis_lindex('192.168.1.25', 6379, 'list1', 1);&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-8563397562048568970?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/8563397562048568970/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_08.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8563397562048568970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8563397562048568970'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_08.html' title='H2 DatabaseとJRedisでリストから指定のインデックスの要素を取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-4038133542679945844</id><published>2011-03-07T10:20:00.001+09:00</published><updated>2011-03-07T10:20:00.298+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでリストの最後の要素を取得して削除する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでリストの最後の要素を取得して削除する関数を作成するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_rpop as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;String jredis_rpop(String host, Integer intPort, &lt;br /&gt;  String key)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  byte result[] = jrc.rpop(key);&lt;br /&gt;  return result==null?null:DefaultCodec.toStr(result);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'list1');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value1');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value2');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value3');&lt;br /&gt;select jredis_rpop('192.168.1.25', 6379, 'list1');&lt;br /&gt;select * from jredis_lrange('192.168.1.25', 6379, 'list1', 0, -1);&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-4038133542679945844?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/4038133542679945844/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_07.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4038133542679945844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4038133542679945844'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_07.html' title='H2 DatabaseとJRedisでリストの最後の要素を取得して削除する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-8554892885269501968</id><published>2011-03-06T12:15:00.000+09:00</published><updated>2011-03-06T12:15:00.433+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでリストの最初の要素を取得して削除する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでリストの最初の要素を取得して削除する関数を作成するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_lpop as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;String jredis_lpop(String host, Integer intPort, &lt;br /&gt;  String key)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  byte result[] = jrc.lpop(key);&lt;br /&gt;  return result==null?null:DefaultCodec.toStr(result);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'list1');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value1');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value2');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value3');&lt;br /&gt;select jredis_lpop('192.168.1.25', 6379, 'list1');&lt;br /&gt;select * from jredis_lrange('192.168.1.25', 6379, 'list1', 0, -1);&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-8554892885269501968?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/8554892885269501968/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_06.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8554892885269501968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8554892885269501968'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_06.html' title='H2 DatabaseとJRedisでリストの最初の要素を取得して削除する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-3183139755500550284</id><published>2011-03-05T10:08:00.000+09:00</published><updated>2011-03-05T10:08:00.669+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでリストの指定した要素を削除する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでリストの指定した要素を削除する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_lrem as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Long jredis_lrem(String host, Integer intPort, &lt;br /&gt;  String key, String value, Integer count)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( value == null ){&lt;br /&gt;    throw new Exception(&amp;quot;value is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( count == null ){&lt;br /&gt;    throw new Exception(&amp;quot;count is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  return jrc.lrem(key, value, count);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'list1');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value1');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value2');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value3');&lt;br /&gt;select jredis_lrem('192.168.1.25', 6379, 'list1', 'value1', 0);&lt;br /&gt;select * from jredis_lrange('192.168.1.25', 6379, 'list1', 0, -1);&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-3183139755500550284?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/3183139755500550284/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_05.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/3183139755500550284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/3183139755500550284'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_05.html' title='H2 DatabaseとJRedisでリストの指定した要素を削除する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-5571291257849358641</id><published>2011-03-04T10:47:00.000+09:00</published><updated>2011-03-04T10:47:00.037+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでリストの指定した範囲の要素のみを残す関数を作成する</title><content type='html'>H2 DatabaseとJRedisでリストの指定した範囲の要素のみを残す関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_ltrim as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer jredis_ltrim(String host, Integer intPort, &lt;br /&gt;  String key, Long keepFrom, Long keepTo)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( keepFrom == null ){&lt;br /&gt;    throw new Exception(&amp;quot;keepFrom is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( keepTo == null ){&lt;br /&gt;    throw new Exception(&amp;quot;keepTo is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  jrc.ltrim(key, keepFrom, keepTo);&lt;br /&gt;  return new Integer(0);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'list1');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value1');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value2');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value3');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value4');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value5');&lt;br /&gt;select jredis_ltrim('192.168.1.25', 6379, 'list1', 1, 3);&lt;br /&gt;select * from jredis_lrange('192.168.1.25', 6379, 'list1', 0, -1);&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-5571291257849358641?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/5571291257849358641/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_04.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/5571291257849358641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/5571291257849358641'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_04.html' title='H2 DatabaseとJRedisでリストの指定した範囲の要素のみを残す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-1127594965725832689</id><published>2011-03-03T10:41:00.000+09:00</published><updated>2011-03-03T10:41:01.015+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでリストのインデックスを指定して値を設定する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでリストのインデックスを指定して値を設定する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_lset as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer jredis_lset(String host, Integer intPort, &lt;br /&gt;  String key, Long index, String value)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( index == null ){&lt;br /&gt;    throw new Exception(&amp;quot;index is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( value == null ){&lt;br /&gt;    throw new Exception(&amp;quot;value is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  jrc.lset(key, index, value);&lt;br /&gt;  return new Integer(0);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_del('192.168.1.25', 6379, 'list1');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value1');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value2');&lt;br /&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value3');&lt;br /&gt;select jredis_lset('192.168.1.25', 6379, 'list1', 1, 'modified');&lt;br /&gt;select * from jredis_lrange('192.168.1.25', 6379, 'list1', 0, -1);&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-1127594965725832689?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/1127594965725832689/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_03.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1127594965725832689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1127594965725832689'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_03.html' title='H2 DatabaseとJRedisでリストのインデックスを指定して値を設定する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-4344495130741454174</id><published>2011-03-02T15:47:00.000+09:00</published><updated>2011-03-02T15:47:00.916+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_SchemaCrawler'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとSchemaCrawlerでデータベースのプロパティ情報を取得する関数を作成する</title><content type='html'>H2 DatabaseとSchemaCrawlerでデータベースのプロパティ情報を取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists sc_get_dbprops as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import schemacrawler.schema.*;&lt;br /&gt;import schemacrawler.schemacrawler.*;&lt;br /&gt;import schemacrawler.utility.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet sc_get_dbprops(String jdbcDriver, String url, &lt;br /&gt;  String user, String password)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( jdbcDriver == null ){&lt;br /&gt;    throw new Exception(&amp;quot;jdbcDriver is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( url == null ){&lt;br /&gt;    throw new Exception(&amp;quot;url is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null ){&lt;br /&gt;    throw new Exception(&amp;quot;password is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  Class.forName(jdbcDriver);&lt;br /&gt;  Connection conn = null;&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;NAME&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;VALUE&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;DESCRIPTION&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    conn = DriverManager.getConnection(url, user, password);&lt;br /&gt;    SchemaCrawlerOptions options = new SchemaCrawlerOptions();&lt;br /&gt;    options.setSchemaInfoLevel(SchemaInfoLevel.maximum());&lt;br /&gt;    Database db = SchemaCrawlerUtility.getDatabase(conn, options);&lt;br /&gt;    DatabaseInfo dbi = db.getDatabaseInfo();&lt;br /&gt;    DatabaseProperty props[] = dbi.getProperties();&lt;br /&gt;    for(int pl=0;pl&amp;lt;props.length;pl++){&lt;br /&gt;      rs.addRow(props[pl].getName(), &lt;br /&gt;        props[pl].getValue(), props[pl].getDescription());&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( conn != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select * from&lt;br /&gt;sc_get_dbprops('org.postgresql.Driver',&lt;br /&gt;  'jdbc:postgresql://localhost:5432/postgres', &lt;br /&gt;  'postgres', 'postgres');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;schemacrawler-8.5.1.jar, schemacrawler-postgresql-8.5.1.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07), SchemaCrawler 8.5.1&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;SchemaCrawlerのウェブサイト&lt;br /&gt;&lt;a href="http://schemacrawler.sourceforge.net/" target="_blank"&gt;http://schemacrawler.sourceforge.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-4344495130741454174?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/4344495130741454174/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databaseschemacrawler.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4344495130741454174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4344495130741454174'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databaseschemacrawler.html' title='H2 DatabaseとSchemaCrawlerでデータベースのプロパティ情報を取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-5627640301041256228</id><published>2011-03-02T10:13:00.000+09:00</published><updated>2011-03-02T10:13:00.768+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでリストの要素数を返す関数を作成する</title><content type='html'>H2 DatabaseとJRedisでリストの要素数を返す関数を作成するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_llen as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;long jredis_llen(String host, Integer intPort, &lt;br /&gt;  String key)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  return jrc.llen(key);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_lpush('192.168.1.25', 6379, 'list1', 'value1');&lt;br /&gt;select jredis_llen('192.168.1.25', 6379, 'list1');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-5627640301041256228?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/5627640301041256228/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_02.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/5627640301041256228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/5627640301041256228'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis_02.html' title='H2 DatabaseとJRedisでリストの要素数を返す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-6042506761908161328</id><published>2011-03-01T10:07:00.000+09:00</published><updated>2011-03-01T10:07:00.532+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでリストの最初に値を追加する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでリストの最初に値を追加する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_lpush as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer jredis_lpush(String host, Integer intPort, &lt;br /&gt;  String key, String value)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( value == null ){&lt;br /&gt;    throw new Exception(&amp;quot;value is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  jrc.lpush(key, value);&lt;br /&gt;  return new Integer(0);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_lpush('192.168.1.25', 6379, 'list1', 'value1');&lt;br /&gt;select * from jredis_lrange('192.168.1.25', 6379, 'list1', 0, -1);&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-6042506761908161328?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/6042506761908161328/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/6042506761908161328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/6042506761908161328'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/03/h2-databasejredis.html' title='H2 DatabaseとJRedisでリストの最初に値を追加する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-7443393374942450789</id><published>2011-02-28T10:01:00.001+09:00</published><updated>2011-02-28T10:01:00.618+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでリストの指定した範囲の値を列挙する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでリストの指定した範囲の値を列挙する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_lrange as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet jredis_lrange(String host, Integer intPort, &lt;br /&gt;  String key, Long from, Long to)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( from == null ){&lt;br /&gt;    throw new Exception(&amp;quot;from is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( to == null ){&lt;br /&gt;    throw new Exception(&amp;quot;to is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;ELEMENT&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  for(byte elem[] : jrc.lrange(key, from, to)){&lt;br /&gt;    rs.addRow(elem==null?null:DefaultCodec.toStr(elem));&lt;br /&gt;  }&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select * from jredis_lrange('192.168.1.25', 6379, 'list1', 0, -1)&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-7443393374942450789?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/7443393374942450789/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejredis_28.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7443393374942450789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7443393374942450789'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejredis_28.html' title='H2 DatabaseとJRedisでリストの指定した範囲の値を列挙する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-8709588915038112597</id><published>2011-02-27T10:59:00.000+09:00</published><updated>2011-02-27T10:59:00.290+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでリストの最後に値を追加する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでリストの最後に値を追加する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_rpush as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer jredis_rpush(String host, Integer intPort, &lt;br /&gt;  String key, String value)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( value == null ){&lt;br /&gt;    throw new Exception(&amp;quot;value is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  jrc.rpush(key, value);&lt;br /&gt;  return new Integer(0);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_rpush('192.168.1.25', 6379, 'list1', 'value1')&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-8709588915038112597?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/8709588915038112597/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejredis_27.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8709588915038112597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8709588915038112597'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejredis_27.html' title='H2 DatabaseとJRedisでリストの最後に値を追加する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-7799364795016684387</id><published>2011-02-26T10:46:00.000+09:00</published><updated>2011-02-26T10:46:00.229+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでキーを削除する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでキーを削除する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_del as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;boolean jredis_del(String host, Integer intPort, &lt;br /&gt;  String key)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  return jrc.del(key);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_set('192.168.1.25', 6379, 'key1', 'value1');&lt;br /&gt;select jredis_del('192.168.1.25', 6379, 'key1');&lt;br /&gt;select jredis_exists('192.168.1.25', 6379, 'key1');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-7799364795016684387?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/7799364795016684387/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejredis_26.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7799364795016684387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7799364795016684387'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejredis_26.html' title='H2 DatabaseとJRedisでキーを削除する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-2917684947796112606</id><published>2011-02-25T10:41:00.001+09:00</published><updated>2011-02-25T10:41:00.264+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisで最後にディスクに保存した日付を取得する関数を作成する</title><content type='html'>H2 DatabaseとJRedisで最後にディスクに保存した日付を取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_lastsave as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;java.sql.Date jredis_lastsave(String host, Integer intPort)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  return new java.sql.Date(jrc.lastsave());&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_lastsave('192.168.1.25', 6379);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-2917684947796112606?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/2917684947796112606/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejredis.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/2917684947796112606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/2917684947796112606'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejredis.html' title='H2 DatabaseとJRedisで最後にディスクに保存した日付を取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-813969375668583041</id><published>2011-02-24T10:36:00.000+09:00</published><updated>2011-02-24T10:36:00.550+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでkeyの数を取得する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでkeyの数を取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_dbsize as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;long jredis_dbsize(String host, Integer intPort)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  return jrc.dbsize();&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_dbsize('192.168.1.25', 6379);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-813969375668583041?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/813969375668583041/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejrediskey_24.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/813969375668583041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/813969375668583041'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejrediskey_24.html' title='H2 DatabaseとJRedisでkeyの数を取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-6278067342350516707</id><published>2011-02-23T10:27:00.001+09:00</published><updated>2011-02-23T10:27:00.170+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでkeyの値をデクリメントする関数を作成する</title><content type='html'>H2 DatabaseとJRedisでkeyの値をデクリメントする関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_decrby as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;long jredis_decrby(String host, Integer intPort, &lt;br /&gt;  String key, Integer delta)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( delta == null ){&lt;br /&gt;    throw new Exception(&amp;quot;delta is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  return jrc.decrby(key, delta.intValue());&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_set('192.168.1.25', 6379, 'key1', '10');&lt;br /&gt;select jredis_decrby('192.168.1.25', 6379, 'key1', 2);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-6278067342350516707?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/6278067342350516707/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejrediskey_23.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/6278067342350516707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/6278067342350516707'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejrediskey_23.html' title='H2 DatabaseとJRedisでkeyの値をデクリメントする関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-2231567880216528609</id><published>2011-02-22T10:04:00.001+09:00</published><updated>2011-06-11T13:01:15.461+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_Twitter4J'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとTwitter4Jを使用してフォローしているユーザ名を取得する関数を作成する</title><content type='html'>H2 DatabaseとTwitter4Jを使用してフォローしているユーザ名を取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists twitter_get_friends_ids as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import twitter4j.*;&lt;br /&gt;import twitter4j.http.*;&lt;br /&gt;import twitter4j.conf.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet twitter_get_friends_ids(String consumerKey, &lt;br /&gt;  String consumerSecret, String accessToken,&lt;br /&gt;  String accessTokenSecret)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( consumerKey == null ){&lt;br /&gt;    throw new Exception(&amp;quot;consumerKey is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( consumerSecret == null ){&lt;br /&gt;    throw new Exception(&amp;quot;consumerSecret is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( accessToken == null ){&lt;br /&gt;    throw new Exception(&amp;quot;accessToken is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( accessTokenSecret == null ){&lt;br /&gt;    throw new Exception(&amp;quot;accessTokenSecret is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;ID&amp;quot;, Types.NUMERIC, 20, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;NAME&amp;quot;, Types.VARCHAR, 100, 0);&lt;br /&gt;&lt;br /&gt;  Properties prop = new Properties();&lt;br /&gt;  prop.put(&amp;quot;oauth.consumerKey&amp;quot;, consumerKey);&lt;br /&gt;  prop.put(&amp;quot;oauth.consumerSecret&amp;quot;, consumerSecret);&lt;br /&gt;  prop.put(&amp;quot;oauth.accessToken&amp;quot;, accessToken);&lt;br /&gt;  prop.put(&amp;quot;oauth.accessTokenSecret&amp;quot;, accessTokenSecret);&lt;br /&gt;  PropertyConfiguration pc = &lt;br /&gt;     new PropertyConfiguration(prop);&lt;br /&gt;&lt;br /&gt;  OAuthAuthorization oauth = new OAuthAuthorization(pc);&lt;br /&gt;  TwitterFactory tf = new TwitterFactory();&lt;br /&gt;  Twitter twitter = tf.getInstance(oauth);&lt;br /&gt;  IDs ids = twitter.getFriendsIDs();&lt;br /&gt;  int idns[] = ids.getIDs();&lt;br /&gt;  for(int idx=0;idx&amp;lt;idns.length;idx++){&lt;br /&gt;    User user = twitter.showUser(idns[idx]);&lt;br /&gt;    rs.addRow(user.getId(), user.getScreenName());&lt;br /&gt;  }&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select * from twitter_get_friends_ids('xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'xxxx');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databasetwitter4j.html"&gt;H2 Database上でTwitter4Jを使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-2231567880216528609?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/2231567880216528609/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_22.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/2231567880216528609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/2231567880216528609'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_22.html' title='H2 DatabaseとTwitter4Jを使用してフォローしているユーザ名を取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-3420177108146732638</id><published>2011-02-21T10:22:00.001+09:00</published><updated>2011-02-21T10:22:00.516+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでkeyの値をインクリメントする関数を作成する</title><content type='html'>H2 DatabaseとJRedisでkeyの値をインクリメントする関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_incrby as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;long jredis_incrby(String host, Integer intPort, &lt;br /&gt;  String key, Integer delta)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( delta == null ){&lt;br /&gt;    throw new Exception(&amp;quot;delta is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  return jrc.incrby(key, delta.intValue());&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_set('192.168.1.25', 6379, 'key1', '10');&lt;br /&gt;select jredis_incrby('192.168.1.25', 6379, 'key1', 1);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-3420177108146732638?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/3420177108146732638/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejrediskey_21.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/3420177108146732638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/3420177108146732638'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejrediskey_21.html' title='H2 DatabaseとJRedisでkeyの値をインクリメントする関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-7964096820386597953</id><published>2011-02-20T17:36:00.001+09:00</published><updated>2011-02-20T17:38:00.853+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_SchemaCrawler'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとSchemaCrawlerでデータベースの情報を取得する関数を作成する</title><content type='html'>H2 DatabaseとSchemaCrawlerでデータベースの情報を取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists sc_get_dbinfo as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import schemacrawler.schema.*;&lt;br /&gt;import schemacrawler.schemacrawler.*;&lt;br /&gt;import schemacrawler.utility.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet sc_get_dbinfo(String jdbcDriver, String url, &lt;br /&gt;  String user, String password)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( jdbcDriver == null ){&lt;br /&gt;    throw new Exception(&amp;quot;jdbcDriver is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( url == null ){&lt;br /&gt;    throw new Exception(&amp;quot;url is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null ){&lt;br /&gt;    throw new Exception(&amp;quot;password is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  Class.forName(jdbcDriver);&lt;br /&gt;  Connection conn = null;&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;NAME&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;VALUE&amp;quot;, Types.VARCHAR, 4096, 0);&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    conn = DriverManager.getConnection(url, user, password);&lt;br /&gt;    SchemaCrawlerOptions options = new SchemaCrawlerOptions();&lt;br /&gt;    Database db = SchemaCrawlerUtility.getDatabase(conn, options);&lt;br /&gt;    DatabaseInfo dbi = db.getDatabaseInfo();&lt;br /&gt;    rs.addRow(&amp;quot;ProductName&amp;quot;, dbi.getProductName());&lt;br /&gt;    rs.addRow(&amp;quot;ProductVersion&amp;quot;, dbi.getProductVersion());&lt;br /&gt;    rs.addRow(&amp;quot;UserName&amp;quot;, dbi.getUserName());&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( conn != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select * from&lt;br /&gt;sc_get_dbinfo('org.postgresql.Driver',&lt;br /&gt;  'jdbc:postgresql://localhost:5432/postgres', &lt;br /&gt;  'postgres', 'postgres');&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;schemacrawler-8.5.1.jar, schemacrawler-postgresql-8.5.1.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07), SchemaCrawler 8.5.1&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;SchemaCrawlerのウェブサイト&lt;br /&gt;&lt;a href="http://schemacrawler.sourceforge.net/" target="_blank"&gt;http://schemacrawler.sourceforge.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-7964096820386597953?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/7964096820386597953/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseschemacrawler.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7964096820386597953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7964096820386597953'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseschemacrawler.html' title='H2 DatabaseとSchemaCrawlerでデータベースの情報を取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-1345876558115007235</id><published>2011-02-20T10:57:00.001+09:00</published><updated>2011-06-11T13:01:40.956+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_Twitter4J'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとTwitter4Jを使用してフォロワーのユーザ名を取得する関数を作成する</title><content type='html'>H2 DatabaseとTwitter4Jを使用してフォロワーのユーザ名を取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists twitter_get_follower_ids as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import twitter4j.*;&lt;br /&gt;import twitter4j.http.*;&lt;br /&gt;import twitter4j.conf.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet twitter_get_follower_ids(String consumerKey, &lt;br /&gt;  String consumerSecret, String accessToken,&lt;br /&gt;  String accessTokenSecret)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( consumerKey == null ){&lt;br /&gt;    throw new Exception(&amp;quot;consumerKey is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( consumerSecret == null ){&lt;br /&gt;    throw new Exception(&amp;quot;consumerSecret is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( accessToken == null ){&lt;br /&gt;    throw new Exception(&amp;quot;accessToken is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( accessTokenSecret == null ){&lt;br /&gt;    throw new Exception(&amp;quot;accessTokenSecret is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;ID&amp;quot;, Types.NUMERIC, 20, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;NAME&amp;quot;, Types.VARCHAR, 100, 0);&lt;br /&gt;&lt;br /&gt;  Properties prop = new Properties();&lt;br /&gt;  prop.put(&amp;quot;oauth.consumerKey&amp;quot;, consumerKey);&lt;br /&gt;  prop.put(&amp;quot;oauth.consumerSecret&amp;quot;, consumerSecret);&lt;br /&gt;  prop.put(&amp;quot;oauth.accessToken&amp;quot;, accessToken);&lt;br /&gt;  prop.put(&amp;quot;oauth.accessTokenSecret&amp;quot;, accessTokenSecret);&lt;br /&gt;  PropertyConfiguration pc = &lt;br /&gt;     new PropertyConfiguration(prop);&lt;br /&gt;&lt;br /&gt;  OAuthAuthorization oauth = new OAuthAuthorization(pc);&lt;br /&gt;  TwitterFactory tf = new TwitterFactory();&lt;br /&gt;  Twitter twitter = tf.getInstance(oauth);&lt;br /&gt;  IDs ids = twitter.getFollowersIDs();&lt;br /&gt;  int idns[] = ids.getIDs();&lt;br /&gt;  for(int idx=0;idx&amp;lt;idns.length;idx++){&lt;br /&gt;    User user = twitter.showUser(idns[idx]);&lt;br /&gt;    rs.addRow(user.getId(), user.getScreenName());&lt;br /&gt;  }&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select * from twitter_get_follower_ids('xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'xxxx');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;twitter4j-core-2.1.12-SNAPSHOT.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07), twitter4j-2.1.12-SNAPSHOT&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databasetwitter4j.html"&gt;H2 Database上でTwitter4Jを使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-1345876558115007235?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/1345876558115007235/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_20.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1345876558115007235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1345876558115007235'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_20.html' title='H2 DatabaseとTwitter4Jを使用してフォロワーのユーザ名を取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-7748000533525824447</id><published>2011-02-19T10:14:00.002+09:00</published><updated>2011-02-19T10:14:00.376+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでkeyをリネームする関数を作成する</title><content type='html'>H2 DatabaseとJRedisでkeyをリネームする関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_rename as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer jredis_rename(String host, Integer intPort, &lt;br /&gt;  String oldkey, String newkey)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( oldkey == null ){&lt;br /&gt;    throw new Exception(&amp;quot;old key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( newkey == null ){&lt;br /&gt;    throw new Exception(&amp;quot;new key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  jrc.rename(oldkey, newkey);&lt;br /&gt;  return new Integer(0);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_rename('192.168.1.25', 6379, 'key1', 'newkey1')&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-7748000533525824447?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/7748000533525824447/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejrediskey_19.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7748000533525824447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7748000533525824447'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejrediskey_19.html' title='H2 DatabaseとJRedisでkeyをリネームする関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-4977635297185358032</id><published>2011-02-18T10:49:00.001+09:00</published><updated>2011-06-11T12:58:36.744+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_Twitter4J'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとTwitter4Jを使用して接続ユーザーのタイムラインを取得する関数を作成する</title><content type='html'>H2 DatabaseとTwitter4Jを使用して接続ユーザーのタイムラインを取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists twitter_get_user_timeline as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import twitter4j.*;&lt;br /&gt;import twitter4j.http.*;&lt;br /&gt;import twitter4j.conf.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet twitter_get_user_timeline(String consumerKey, &lt;br /&gt;  String consumerSecret, String accessToken,&lt;br /&gt;  String accessTokenSecret, Integer page)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( consumerKey == null ){&lt;br /&gt;    throw new Exception(&amp;quot;consumerKey is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( consumerSecret == null ){&lt;br /&gt;    throw new Exception(&amp;quot;consumerSecret is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( accessToken == null ){&lt;br /&gt;    throw new Exception(&amp;quot;accessToken is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( accessTokenSecret == null ){&lt;br /&gt;    throw new Exception(&amp;quot;accessTokenSecret is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( page == null ){&lt;br /&gt;    return null;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;ID&amp;quot;, Types.NUMERIC, 20, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;CREATEDAT&amp;quot;, Types.TIMESTAMP, 0, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;NAME&amp;quot;, Types.VARCHAR, 100, 0);&lt;br /&gt;  rs.addColumn(&amp;quot;TWEET&amp;quot;, Types.VARCHAR, 140, 0);&lt;br /&gt;&lt;br /&gt;  Properties prop = new Properties();&lt;br /&gt;  prop.put(&amp;quot;oauth.consumerKey&amp;quot;, consumerKey);&lt;br /&gt;  prop.put(&amp;quot;oauth.consumerSecret&amp;quot;, consumerSecret);&lt;br /&gt;  prop.put(&amp;quot;oauth.accessToken&amp;quot;, accessToken);&lt;br /&gt;  prop.put(&amp;quot;oauth.accessTokenSecret&amp;quot;, accessTokenSecret);&lt;br /&gt;  PropertyConfiguration pc = &lt;br /&gt;     new PropertyConfiguration(prop);&lt;br /&gt;&lt;br /&gt;  OAuthAuthorization oauth = new OAuthAuthorization(pc);&lt;br /&gt;  TwitterFactory tf = new TwitterFactory();&lt;br /&gt;  Twitter twitter = tf.getInstance(oauth);&lt;br /&gt;  ResponseList&amp;lt;Status&amp;gt; rl = twitter.getUserTimeline(new Paging(page));&lt;br /&gt;  for(Status status : rl){&lt;br /&gt;    rs.addRow(status.getId(), &lt;br /&gt;      new Timestamp(status.getCreatedAt().getTime()),&lt;br /&gt;      status.getUser().getScreenName(),&lt;br /&gt;      status.getText());&lt;br /&gt;  }&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select * from twitter_get_user_timeline('xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'xxxx', 1);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;twitter4j-core-2.1.12-SNAPSHOT.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07), twitter4j-2.1.12-SNAPSHOT&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databasetwitter4j.html"&gt;H2 Database上でTwitter4Jを使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-4977635297185358032?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/4977635297185358032/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_18.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4977635297185358032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4977635297185358032'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_18.html' title='H2 DatabaseとTwitter4Jを使用して接続ユーザーのタイムラインを取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-1599308770740430533</id><published>2011-02-17T10:17:00.002+09:00</published><updated>2011-06-23T22:00:38.614+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_OrionSSH2'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとOrion SSH2を使用してサーバ上でコマンドを実行する関数を作成する</title><content type='html'>H2 DatabaseとOrion SSH2を使用してサーバ上でコマンドを実行する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists orionssh2_exec as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import com.trilead.ssh2.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;String orionssh2_exec(String host, String user, &lt;br /&gt;  String password, String cmd)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;server is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null )password = &amp;quot;&amp;quot;;&lt;br /&gt;  if( cmd == null ){&lt;br /&gt;    throw new Exception(&amp;quot;cmd is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  com.trilead.ssh2.Connection conn = null;&lt;br /&gt;  Session sess = null;&lt;br /&gt;  String result = null;&lt;br /&gt;&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    // サーバに接続&lt;br /&gt;    conn = new com.trilead.ssh2.Connection(host);&lt;br /&gt;    conn.connect();&lt;br /&gt;    if( !conn.authenticateWithPassword(user, password) ){&lt;br /&gt;      throw new Exception(&amp;quot;authentication failed.&amp;quot;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // コマンド実行&lt;br /&gt;    sess = conn.openSession();&lt;br /&gt;    sess.execCommand(cmd);&lt;br /&gt;    // 標準出力&lt;br /&gt;    BufferedReader stdout = new BufferedReader(&lt;br /&gt;      new InputStreamReader(&lt;br /&gt;        new StreamGobbler(sess.getStdout()), &amp;quot;UTF-8&amp;quot;));&lt;br /&gt;    StringBuffer sbuf = new StringBuffer();&lt;br /&gt;    String line = &amp;quot;&amp;quot;;&lt;br /&gt;    while((line = stdout.readLine()) != null ){&lt;br /&gt;      sbuf.append(line);&lt;br /&gt;      sbuf.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;    }&lt;br /&gt;    result = sbuf.toString();&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( sess != null )sess.close();&lt;br /&gt;    if( conn != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  return result;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select orionssh2_exec(&lt;br /&gt;  '192.168.1.25',&lt;br /&gt;  'user', 'password',&lt;br /&gt;  'ls -alF')&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;orion-ssh2-214.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07)&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databaseorion-ssh2.html"&gt;H2 Database上でOrion SSH2を使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-1599308770740430533?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/1599308770740430533/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1599308770740430533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1599308770740430533'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2.html' title='H2 DatabaseとOrion SSH2を使用してサーバ上でコマンドを実行する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-1557352894922754424</id><published>2011-02-16T10:49:00.002+09:00</published><updated>2011-06-11T13:00:25.173+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_Twitter4J'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとTwitter4Jを使用してフォローしている数を取得する関数を作成する</title><content type='html'>H2 DatabaseとTwitter4Jを使用してフォローしている数を取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists twitter_get_num_friends as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import twitter4j.*;&lt;br /&gt;import twitter4j.http.*;&lt;br /&gt;import twitter4j.conf.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer twitter_get_num_friends(String consumerKey, &lt;br /&gt;  String consumerSecret, String accessToken,&lt;br /&gt;  String accessTokenSecret)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( consumerKey == null ){&lt;br /&gt;    throw new Exception(&amp;quot;consumerKey is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( consumerSecret == null ){&lt;br /&gt;    throw new Exception(&amp;quot;consumerSecret is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( accessToken == null ){&lt;br /&gt;    throw new Exception(&amp;quot;accessToken is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( accessTokenSecret == null ){&lt;br /&gt;    throw new Exception(&amp;quot;accessTokenSecret is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  Properties prop = new Properties();&lt;br /&gt;  prop.put(&amp;quot;oauth.consumerKey&amp;quot;, consumerKey);&lt;br /&gt;  prop.put(&amp;quot;oauth.consumerSecret&amp;quot;, consumerSecret);&lt;br /&gt;  prop.put(&amp;quot;oauth.accessToken&amp;quot;, accessToken);&lt;br /&gt;  prop.put(&amp;quot;oauth.accessTokenSecret&amp;quot;, accessTokenSecret);&lt;br /&gt;  PropertyConfiguration pc = &lt;br /&gt;     new PropertyConfiguration(prop);&lt;br /&gt;&lt;br /&gt;  OAuthAuthorization oauth = new OAuthAuthorization(pc);&lt;br /&gt;  TwitterFactory tf = new TwitterFactory();&lt;br /&gt;  Twitter twitter = tf.getInstance(oauth);&lt;br /&gt;  return new Integer(twitter.getAccountTotals().getFriends());&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select twitter_get_num_friends('xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'xxxx');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;twitter4j-core-2.1.12-SNAPSHOT.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07), twitter4j-2.1.12-SNAPSHOT&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databasetwitter4j.html"&gt;H2 Database上でTwitter4Jを使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-1557352894922754424?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/1557352894922754424/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_16.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1557352894922754424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1557352894922754424'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_16.html' title='H2 DatabaseとTwitter4Jを使用してフォローしている数を取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-3982091951671139302</id><published>2011-02-16T10:08:00.001+09:00</published><updated>2011-02-16T10:08:00.539+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisで指定したkeyが存在するかどうかを返す関数を作成する</title><content type='html'>H2 DatabaseとJRedisで指定したkeyが存在するかどうかを返す関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_exists as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;boolean jredis_exists(String host, Integer intPort, &lt;br /&gt;  String key)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  return jrc.exists(key);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_exists('192.168.1.25', 6379, 'key1');&lt;br /&gt;select jredis_exists('192.168.1.25', 6379, 'not_exist');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-3982091951671139302?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/3982091951671139302/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejrediskey.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/3982091951671139302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/3982091951671139302'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejrediskey.html' title='H2 DatabaseとJRedisで指定したkeyが存在するかどうかを返す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-4604513201098977435</id><published>2011-02-15T10:01:00.003+09:00</published><updated>2011-06-23T22:04:31.128+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_OrionSSH2'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとOrion SSH2を使用してBLOBをSFTP上へアップロードする関数を作成する</title><content type='html'>H2 DatabaseとOrion SSH2を使用してBLOBをSFTP上へアップロードする関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists orionssh2_put_binary as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import com.trilead.ssh2.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer orionssh2_put_binary(String host, String user, &lt;br /&gt;  String password, String path, Blob blob)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;server is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null )password = &amp;quot;&amp;quot;;&lt;br /&gt;  if( path == null ){&lt;br /&gt;    throw new Exception(&amp;quot;path is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  com.trilead.ssh2.Connection conn = null;&lt;br /&gt;  SFTPv3Client sftpc = null;&lt;br /&gt;&lt;br /&gt;  InputStream bis = null;&lt;br /&gt;  SFTPv3FileHandle fh = null;&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    // サーバに接続&lt;br /&gt;    conn = new com.trilead.ssh2.Connection(host);&lt;br /&gt;    conn.connect();&lt;br /&gt;    if( !conn.authenticateWithPassword(user, password) ){&lt;br /&gt;      throw new Exception(&amp;quot;authentication failed.&amp;quot;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // SFTP client作成&lt;br /&gt;    sftpc = new SFTPv3Client(conn);&lt;br /&gt;    sftpc.setCharset(&amp;quot;UTF-8&amp;quot;);&lt;br /&gt;&lt;br /&gt;    // ファイルをアップロード&lt;br /&gt;    fh = sftpc.createFile(path);&lt;br /&gt;    bis = blob.getBinaryStream();&lt;br /&gt;    byte buf[] = new byte[8192];&lt;br /&gt;    long fo = 0;&lt;br /&gt;    int sz = 0;&lt;br /&gt;    while((sz = bis.read(buf, 0, 8192)) != -1){&lt;br /&gt;      sftpc.write(fh, fo, buf, 0, sz);&lt;br /&gt;      fo += sz;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( bis != null )bis.close();&lt;br /&gt;    if( fh != null )sftpc.closeFile(fh);&lt;br /&gt;    if( sftpc != null )sftpc.close();&lt;br /&gt;    if( conn != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  return new Integer(0);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;drop table if exists blobtest;&lt;br /&gt;create table blobtest (c1 numeric(4), c2 blob);&lt;br /&gt;insert into blobtest values (1, &lt;br /&gt;  orionssh2_get_binary(&lt;br /&gt;  '192.168.1.25',&lt;br /&gt;  'user', 'password',&lt;br /&gt;  'sf.png')&lt;br /&gt;);&lt;br /&gt;select orionssh2_put_binary(&lt;br /&gt;  '192.168.1.25',&lt;br /&gt;  'user', 'password',&lt;br /&gt;  'upload.png', c2)&lt;br /&gt;from blobtest &lt;br /&gt;where c1 = 1;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;orion-ssh2-214.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07)&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databaseorion-ssh2.html"&gt;H2 Database上でOrion SSH2を使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-4604513201098977435?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/4604513201098977435/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2blobsftp.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4604513201098977435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4604513201098977435'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2blobsftp.html' title='H2 DatabaseとOrion SSH2を使用してBLOBをSFTP上へアップロードする関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-303315269275559591</id><published>2011-02-14T10:35:00.001+09:00</published><updated>2011-06-11T13:00:49.356+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_Twitter4J'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとTwitter4Jを使用してフォロワー数を取得する関数を作成する</title><content type='html'>H2 DatabaseとTwitter4Jを使用してフォロワー数を取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists twitter_get_num_followers as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import twitter4j.*;&lt;br /&gt;import twitter4j.http.*;&lt;br /&gt;import twitter4j.conf.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer twitter_get_num_followers(String consumerKey, &lt;br /&gt;  String consumerSecret, String accessToken,&lt;br /&gt;  String accessTokenSecret)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( consumerKey == null ){&lt;br /&gt;    throw new Exception(&amp;quot;consumerKey is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( consumerSecret == null ){&lt;br /&gt;    throw new Exception(&amp;quot;consumerSecret is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( accessToken == null ){&lt;br /&gt;    throw new Exception(&amp;quot;accessToken is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( accessTokenSecret == null ){&lt;br /&gt;    throw new Exception(&amp;quot;accessTokenSecret is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  Properties prop = new Properties();&lt;br /&gt;  prop.put(&amp;quot;oauth.consumerKey&amp;quot;, consumerKey);&lt;br /&gt;  prop.put(&amp;quot;oauth.consumerSecret&amp;quot;, consumerSecret);&lt;br /&gt;  prop.put(&amp;quot;oauth.accessToken&amp;quot;, accessToken);&lt;br /&gt;  prop.put(&amp;quot;oauth.accessTokenSecret&amp;quot;, accessTokenSecret);&lt;br /&gt;  PropertyConfiguration pc = &lt;br /&gt;     new PropertyConfiguration(prop);&lt;br /&gt;&lt;br /&gt;  OAuthAuthorization oauth = new OAuthAuthorization(pc);&lt;br /&gt;  TwitterFactory tf = new TwitterFactory();&lt;br /&gt;  Twitter twitter = tf.getInstance(oauth);&lt;br /&gt;  return new Integer(twitter.getAccountTotals().getFollowers());&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select twitter_get_num_followers('xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'xxxx');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;twitter4j-core-2.1.12-SNAPSHOT.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07), twitter4j-2.1.12-SNAPSHOT&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databasetwitter4j.html"&gt;H2 Database上でTwitter4Jを使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-303315269275559591?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/303315269275559591/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_14.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/303315269275559591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/303315269275559591'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_14.html' title='H2 DatabaseとTwitter4Jを使用してフォロワー数を取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-4985316275778252491</id><published>2011-02-13T10:55:00.003+09:00</published><updated>2011-06-23T22:05:09.112+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_OrionSSH2'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとOrion SSH2を使用してSFTPでファイルをダウンロードしてBLOBとして返す関数を作成する</title><content type='html'>H2 DatabaseとOrion SSH2を使用してSFTPでファイルをダウンロードしてBLOBとして返す関数を作成するには、以下の手順を実行します。&lt;br /&gt;&lt;br /&gt;1.以下のソースファイルをantなどでコンパイルします。&lt;br /&gt;Orionssh2GetBinaryFunction.java&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;package&lt;/span&gt; com&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;serverarekore&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;h2&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;io&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;sql&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; org&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;h2&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;tools&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;net&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; com&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;trilead&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;ssh2&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;public class&lt;/span&gt; Orionssh2GetBinaryFunction&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;static public&lt;/span&gt; &lt;span style="color:#0080c0"&gt;InputStream&lt;/span&gt; &lt;span style="color:#004466"&gt;orionssh2_get_binary&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0"&gt;String&lt;/span&gt; host&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; &lt;br /&gt;    &lt;span style="color:#0080c0"&gt;String&lt;/span&gt; user&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; &lt;span style="color:#0080c0"&gt;String&lt;/span&gt; password&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; &lt;span style="color:#0080c0"&gt;String&lt;/span&gt; path&lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;throws&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Exception&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt; host &lt;span style="color:#ff0080; font-weight:bold"&gt;==&lt;/span&gt; null &lt;span style="color:#ff0080; font-weight:bold"&gt;){&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;throw new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Exception&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#a68500"&gt;&amp;quot;server is not specified.&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt; user &lt;span style="color:#ff0080; font-weight:bold"&gt;==&lt;/span&gt; null &lt;span style="color:#ff0080; font-weight:bold"&gt;){&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;throw new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Exception&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#a68500"&gt;&amp;quot;user is not specified.&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt; password &lt;span style="color:#ff0080; font-weight:bold"&gt;==&lt;/span&gt; null &lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;password &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#a68500"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt; path &lt;span style="color:#ff0080; font-weight:bold"&gt;==&lt;/span&gt; null &lt;span style="color:#ff0080; font-weight:bold"&gt;){&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;throw new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Exception&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#a68500"&gt;&amp;quot;path is not specified.&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    com&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;trilead&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;ssh2&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#0080c0"&gt;Connection&lt;/span&gt; conn &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; null&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;    SFTPv3Client sftpc &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; null&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#f27900"&gt;// サーバに接続&lt;/span&gt;&lt;br /&gt;    conn &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; com&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;trilead&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;ssh2&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#0080c0"&gt;Connection&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;host&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    conn&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;connect&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;();&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;( !&lt;/span&gt;conn&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;authenticateWithPassword&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;user&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; password&lt;span style="color:#ff0080; font-weight:bold"&gt;) ){&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;throw new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Exception&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#a68500"&gt;&amp;quot;authentication failed.&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#f27900"&gt;// SFTP client作成&lt;/span&gt;&lt;br /&gt;    sftpc &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#004466"&gt;SFTPv3Client&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;conn&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    sftpc&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;setCharset&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#a68500"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#f27900"&gt;// ファイルをダウンロード&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;final&lt;/span&gt; &lt;span style="color:#0080c0"&gt;File&lt;/span&gt; tf &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#0080c0"&gt;File&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;createTempFile&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#a68500"&gt;&amp;quot;lobtmp&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; null&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    SFTPv3FileHandle fh &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; sftpc&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;openFileRO&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;path&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#0080c0"&gt;BufferedOutputStream&lt;/span&gt; bos &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;BufferedOutputStream&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;FileOutputStream&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;tf&lt;span style="color:#ff0080; font-weight:bold"&gt;));&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#8080c0; font-weight:bold"&gt;byte&lt;/span&gt; buf&lt;span style="color:#ff0080; font-weight:bold"&gt;[] =&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;byte&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#800080; font-weight:bold"&gt;8192&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;];&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#8080c0; font-weight:bold"&gt;long&lt;/span&gt; fo &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#800080; font-weight:bold"&gt;0&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#8080c0; font-weight:bold"&gt;int&lt;/span&gt; sz &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#800080; font-weight:bold"&gt;0&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;while&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;((&lt;/span&gt;sz &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; sftpc&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;read&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;fh&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; fo&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; buf&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; &lt;span style="color:#800080; font-weight:bold"&gt;0&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; &lt;span style="color:#800080; font-weight:bold"&gt;8192&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;)) != -&lt;/span&gt;&lt;span style="color:#800080; font-weight:bold"&gt;1&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;){&lt;/span&gt;&lt;br /&gt;      bos&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;write&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;buf&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; &lt;span style="color:#800080; font-weight:bold"&gt;0&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; sz&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;      fo &lt;span style="color:#ff0080; font-weight:bold"&gt;+=&lt;/span&gt; sz&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;    sftpc&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;closeFile&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;fh&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    bos&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;flush&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;();&lt;/span&gt;&lt;br /&gt;    bos&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;close&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#0080c0"&gt;InputStream&lt;/span&gt; ris &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;InputStream&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(){&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;private final&lt;/span&gt; &lt;span style="color:#0080c0"&gt;InputStream&lt;/span&gt; fis &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;FileInputStream&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;tf&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;private&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;boolean&lt;/span&gt; deleted &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; false&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;private final&lt;/span&gt; &lt;span style="color:#0080c0"&gt;File&lt;/span&gt; fn &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; tf&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;public&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#004466"&gt;autoDelete&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#8080c0; font-weight:bold"&gt;int&lt;/span&gt; sz&lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;throws&lt;/span&gt; &lt;span style="color:#0080c0"&gt;IOException&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;sz &lt;span style="color:#ff0080; font-weight:bold"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#800080; font-weight:bold"&gt;0&lt;/span&gt; &lt;span style="color:#ff0080; font-weight:bold"&gt;){&lt;/span&gt;&lt;br /&gt;          &lt;span style="color:#004466"&gt;close&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;();&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; sz&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;public&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;void&lt;/span&gt; &lt;span style="color:#004466"&gt;close&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;()&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;throws&lt;/span&gt; &lt;span style="color:#0080c0"&gt;IOException&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;( !&lt;/span&gt;deleted &lt;span style="color:#ff0080; font-weight:bold"&gt;){&lt;/span&gt;&lt;br /&gt;          fis&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;close&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;();&lt;/span&gt;&lt;br /&gt;          fn&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;delete&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;();&lt;/span&gt;&lt;br /&gt;          deleted &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; true&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;public&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#004466"&gt;read&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#8080c0; font-weight:bold"&gt;byte&lt;/span&gt; buf&lt;span style="color:#ff0080; font-weight:bold"&gt;[],&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;int&lt;/span&gt; off&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;int&lt;/span&gt; len&lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;throws&lt;/span&gt; &lt;span style="color:#0080c0"&gt;IOException&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; deleted?&lt;span style="color:#ff0080; font-weight:bold"&gt;-&lt;/span&gt;&lt;span style="color:#800080; font-weight:bold"&gt;1&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#004466"&gt;autoDelete&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;fis&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;read&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;buf&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; off&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; len&lt;span style="color:#ff0080; font-weight:bold"&gt;));&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;public&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#004466"&gt;read&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#8080c0; font-weight:bold"&gt;byte&lt;/span&gt; buf&lt;span style="color:#ff0080; font-weight:bold"&gt;[])&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;throws&lt;/span&gt; &lt;span style="color:#0080c0"&gt;IOException&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; deleted?&lt;span style="color:#ff0080; font-weight:bold"&gt;-&lt;/span&gt;&lt;span style="color:#800080; font-weight:bold"&gt;1&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#004466"&gt;autoDelete&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;fis&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;read&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;buf&lt;span style="color:#ff0080; font-weight:bold"&gt;));&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;public&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#004466"&gt;read&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;()&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;throws&lt;/span&gt; &lt;span style="color:#0080c0"&gt;IOException&lt;/span&gt; &lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; deleted?&lt;span style="color:#ff0080; font-weight:bold"&gt;-&lt;/span&gt;&lt;span style="color:#800080; font-weight:bold"&gt;1&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#004466"&gt;autoDelete&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;fis&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;read&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;());&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#ff0080; font-weight:bold"&gt;};&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; ris&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt; &lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;build.xmlのサンプル&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;project&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;H2Functions&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;default&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;id&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;fileset&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;include&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;*.jar&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/fileset&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;pathelement&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;location&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;c:/Program Files/H2/bin/h2-1.3.149.jar&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/path&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;echo&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;message&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;project: ${ant.project.name}&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;mkdir&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;javac&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;srcdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;src/&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;br /&gt;      &lt;span style="color:#8080c0; font-weight:bold"&gt;deprecation&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;debug&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;refid&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/javac&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;jar&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destfile&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;c:/share/jars/Orionssh2GetBinary.jar&amp;quot;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;clean&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;delete&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2.システム環境変数CLASSPATHにコンパイルしてできたOrionssh2GetBinary.jarを追加し、&lt;br /&gt;H2 Databaseのサービスを再起動。&lt;br /&gt;&lt;br /&gt;3.H2 Consoleから以下のコマンドを実行して、ファンクション作成。&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias orionssh2_get_binary for &lt;br /&gt;&amp;quot;com.serverarekore.h2.Orionssh2GetBinaryFunction.orionssh2_get_binary&amp;quot;;&lt;/pre&gt;&lt;br /&gt;4.以下のようなSQLでSFTP上のファイルをBLOBに格納できます。&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;drop table if exists blobtest;&lt;br /&gt;create table blobtest (c1 numeric(4), c2 blob);&lt;br /&gt;insert into blobtest values (1, &lt;br /&gt;  orionssh2_get_binary(&lt;br /&gt;  '192.168.1.25',&lt;br /&gt;  'user', 'password',&lt;br /&gt;  'sf.png')&lt;br /&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;orion-ssh2-214.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07)&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databaseorion-ssh2.html"&gt;H2 Database上でOrion SSH2を使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-4985316275778252491?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/4985316275778252491/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftpblob.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4985316275778252491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4985316275778252491'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftpblob.html' title='H2 DatabaseとOrion SSH2を使用してSFTPでファイルをダウンロードしてBLOBとして返す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-6397655943489488401</id><published>2011-02-12T10:50:00.001+09:00</published><updated>2011-06-11T13:00:02.736+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_Twitter4J'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとTwitter4Jを使用してお気に入りの数を取得する関数を作成する</title><content type='html'>H2 DatabaseとTwitter4Jを使用してお気に入りの数を取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists twitter_get_favorites as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import twitter4j.*;&lt;br /&gt;import twitter4j.http.*;&lt;br /&gt;import twitter4j.conf.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer twitter_get_favorites(String consumerKey, &lt;br /&gt;  String consumerSecret, String accessToken,&lt;br /&gt;  String accessTokenSecret)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( consumerKey == null ){&lt;br /&gt;    throw new Exception(&amp;quot;consumerKey is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( consumerSecret == null ){&lt;br /&gt;    throw new Exception(&amp;quot;consumerSecret is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( accessToken == null ){&lt;br /&gt;    throw new Exception(&amp;quot;accessToken is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( accessTokenSecret == null ){&lt;br /&gt;    throw new Exception(&amp;quot;accessTokenSecret is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  Properties prop = new Properties();&lt;br /&gt;  prop.put(&amp;quot;oauth.consumerKey&amp;quot;, consumerKey);&lt;br /&gt;  prop.put(&amp;quot;oauth.consumerSecret&amp;quot;, consumerSecret);&lt;br /&gt;  prop.put(&amp;quot;oauth.accessToken&amp;quot;, accessToken);&lt;br /&gt;  prop.put(&amp;quot;oauth.accessTokenSecret&amp;quot;, accessTokenSecret);&lt;br /&gt;  PropertyConfiguration pc = &lt;br /&gt;     new PropertyConfiguration(prop);&lt;br /&gt;&lt;br /&gt;  OAuthAuthorization oauth = new OAuthAuthorization(pc);&lt;br /&gt;  TwitterFactory tf = new TwitterFactory();&lt;br /&gt;  Twitter twitter = tf.getInstance(oauth);&lt;br /&gt;  return new Integer(twitter.getAccountTotals().getFavorites());&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select twitter_get_favorites('xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'xxxx');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;twitter4j-core-2.1.12-SNAPSHOT.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07), twitter4j-2.1.12-SNAPSHOT&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databasetwitter4j.html"&gt;H2 Database上でTwitter4Jを使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-6397655943489488401?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/6397655943489488401/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_12.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/6397655943489488401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/6397655943489488401'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_12.html' title='H2 DatabaseとTwitter4Jを使用してお気に入りの数を取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-5326290193024676683</id><published>2011-02-11T15:42:00.001+09:00</published><updated>2011-02-11T15:42:00.418+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisで指定したkeyのvalueを取得する関数を作成する</title><content type='html'>H2 DatabaseとJRedisで指定したkeyのvalueを取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_get as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;String jredis_get(String host, Integer intPort, &lt;br /&gt;  String key)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  byte result[] = jrc.get(key);&lt;br /&gt;  return result==null?null:DefaultCodec.toStr(result);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_get('192.168.1.25', 6379, 'key1')&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-5326290193024676683?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/5326290193024676683/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejrediskeyvalue.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/5326290193024676683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/5326290193024676683'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejrediskeyvalue.html' title='H2 DatabaseとJRedisで指定したkeyのvalueを取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-1821784668255966511</id><published>2011-02-11T10:19:00.002+09:00</published><updated>2011-06-23T22:05:35.869+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_OrionSSH2'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとOrion SSH2を使用してSFTPでファイルを移動・リネームする関数を作成する</title><content type='html'>H2 DatabaseとOrion SSH2を使用してSFTPでファイルを移動・リネームする関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists orionssh2_mv as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import com.trilead.ssh2.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer orionssh2_mv(String host, String user, &lt;br /&gt;  String password, String path1, String path2)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;server is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null )password = &amp;quot;&amp;quot;;&lt;br /&gt;  if( path1 == null ){&lt;br /&gt;    throw new Exception(&amp;quot;path1 is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( path2 == null ){&lt;br /&gt;    throw new Exception(&amp;quot;path2 is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  com.trilead.ssh2.Connection conn = null;&lt;br /&gt;  SFTPv3Client sftpc = null;&lt;br /&gt;  String result = null;&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    // サーバに接続&lt;br /&gt;    conn = new com.trilead.ssh2.Connection(host);&lt;br /&gt;    conn.connect();&lt;br /&gt;    if( !conn.authenticateWithPassword(user, password) ){&lt;br /&gt;      throw new Exception(&amp;quot;authentication failed.&amp;quot;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // SFTP client作成&lt;br /&gt;    sftpc = new SFTPv3Client(conn);&lt;br /&gt;    sftpc.setCharset(&amp;quot;UTF-8&amp;quot;);&lt;br /&gt;&lt;br /&gt;    // ファイルを移動・リネーム&lt;br /&gt;    sftpc.mv(path1, path2);&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( sftpc != null )sftpc.close();&lt;br /&gt;    if( sftpc != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;  return new Integer(0);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select orionssh2_mv('192.168.1.25', 'user', 'password', 'sf.png', './test/sf2.png')&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;orion-ssh2-214.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07)&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databaseorion-ssh2.html"&gt;H2 Database上でOrion SSH2を使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-1821784668255966511?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/1821784668255966511/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftp_11.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1821784668255966511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1821784668255966511'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftp_11.html' title='H2 DatabaseとOrion SSH2を使用してSFTPでファイルを移動・リネームする関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-2194167605986519472</id><published>2011-02-10T10:34:00.002+09:00</published><updated>2011-06-11T12:58:10.553+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_Twitter4J'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとTwitter4Jを使用してツィート回数を取得する関数を作成する</title><content type='html'>H2 DatabaseとTwitter4Jを使用してツィート回数を取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists twitter_get_updates as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import twitter4j.*;&lt;br /&gt;import twitter4j.http.*;&lt;br /&gt;import twitter4j.conf.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer twitter_get_updates(String consumerKey, &lt;br /&gt;  String consumerSecret, String accessToken,&lt;br /&gt;  String accessTokenSecret)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( consumerKey == null ){&lt;br /&gt;    throw new Exception(&amp;quot;consumerKey is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( consumerSecret == null ){&lt;br /&gt;    throw new Exception(&amp;quot;consumerSecret is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( accessToken == null ){&lt;br /&gt;    throw new Exception(&amp;quot;accessToken is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( accessTokenSecret == null ){&lt;br /&gt;    throw new Exception(&amp;quot;accessTokenSecret is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  Properties prop = new Properties();&lt;br /&gt;  prop.put(&amp;quot;oauth.consumerKey&amp;quot;, consumerKey);&lt;br /&gt;  prop.put(&amp;quot;oauth.consumerSecret&amp;quot;, consumerSecret);&lt;br /&gt;  prop.put(&amp;quot;oauth.accessToken&amp;quot;, accessToken);&lt;br /&gt;  prop.put(&amp;quot;oauth.accessTokenSecret&amp;quot;, accessTokenSecret);&lt;br /&gt;  PropertyConfiguration pc = &lt;br /&gt;     new PropertyConfiguration(prop);&lt;br /&gt;&lt;br /&gt;  OAuthAuthorization oauth = new OAuthAuthorization(pc);&lt;br /&gt;  TwitterFactory tf = new TwitterFactory();&lt;br /&gt;  Twitter twitter = tf.getInstance(oauth);&lt;br /&gt;  return new Integer(twitter.getAccountTotals().getUpdates());&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select twitter_get_updates('xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'xxxx');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;twitter4j-core-2.1.12-SNAPSHOT.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07), twitter4j-2.1.12-SNAPSHOT&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databasetwitter4j.html"&gt;H2 Database上でTwitter4Jを使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-2194167605986519472?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/2194167605986519472/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_10.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/2194167605986519472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/2194167605986519472'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j_10.html' title='H2 DatabaseとTwitter4Jを使用してツィート回数を取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-6133847549343898766</id><published>2011-02-09T10:10:00.002+09:00</published><updated>2011-06-23T22:03:37.840+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_OrionSSH2'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとOrion SSH2を使用してSFTPでフルパスを取得する関数を作成する</title><content type='html'>H2 DatabaseとOrion SSH2を使用してSFTPでフルパスを取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists orionssh2_get_fullpath as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import com.trilead.ssh2.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;String orionssh2_get_fullpath(String host, String user, &lt;br /&gt;  String password, String path)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;server is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null )password = &amp;quot;&amp;quot;;&lt;br /&gt;  if( path == null ){&lt;br /&gt;    throw new Exception(&amp;quot;path is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  com.trilead.ssh2.Connection conn = null;&lt;br /&gt;  SFTPv3Client sftpc = null;&lt;br /&gt;  String result = null;&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    // サーバに接続&lt;br /&gt;    conn = new com.trilead.ssh2.Connection(host);&lt;br /&gt;    conn.connect();&lt;br /&gt;    if( !conn.authenticateWithPassword(user, password) ){&lt;br /&gt;      throw new Exception(&amp;quot;authentication failed.&amp;quot;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // SFTP client作成&lt;br /&gt;    sftpc = new SFTPv3Client(conn);&lt;br /&gt;    sftpc.setCharset(&amp;quot;UTF-8&amp;quot;);&lt;br /&gt;&lt;br /&gt;    // フルパスを取得&lt;br /&gt;    result = sftpc.canonicalPath(path);&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( sftpc != null )sftpc.close();&lt;br /&gt;    if( sftpc != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;  return result;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select orionssh2_get_fullpath('192.168.1.25', 'user', 'password', 'sf.png')&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;orion-ssh2-214.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07)&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databaseorion-ssh2.html"&gt;H2 Database上でOrion SSH2を使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-6133847549343898766?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/6133847549343898766/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftp_09.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/6133847549343898766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/6133847549343898766'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftp_09.html' title='H2 DatabaseとOrion SSH2を使用してSFTPでフルパスを取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-7384542844102209952</id><published>2011-02-08T10:27:00.001+09:00</published><updated>2011-06-11T12:59:04.784+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_Twitter4J'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとTwitter4Jを使用してユーザー名を取得する関数を作成する</title><content type='html'>H2 DatabaseとTwitter4Jを使用してユーザー名を取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists twitter_get_screen_name as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import twitter4j.*;&lt;br /&gt;import twitter4j.http.*;&lt;br /&gt;import twitter4j.conf.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;String twitter_get_screen_name(String consumerKey, &lt;br /&gt;  String consumerSecret, String accessToken,&lt;br /&gt;  String accessTokenSecret)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( consumerKey == null ){&lt;br /&gt;    throw new Exception(&amp;quot;consumerKey is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( consumerSecret == null ){&lt;br /&gt;    throw new Exception(&amp;quot;consumerSecret is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( accessToken == null ){&lt;br /&gt;    throw new Exception(&amp;quot;accessToken is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( accessTokenSecret == null ){&lt;br /&gt;    throw new Exception(&amp;quot;accessTokenSecret is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  Properties prop = new Properties();&lt;br /&gt;  prop.put(&amp;quot;oauth.consumerKey&amp;quot;, consumerKey);&lt;br /&gt;  prop.put(&amp;quot;oauth.consumerSecret&amp;quot;, consumerSecret);&lt;br /&gt;  prop.put(&amp;quot;oauth.accessToken&amp;quot;, accessToken);&lt;br /&gt;  prop.put(&amp;quot;oauth.accessTokenSecret&amp;quot;, accessTokenSecret);&lt;br /&gt;  PropertyConfiguration pc = &lt;br /&gt;     new PropertyConfiguration(prop);&lt;br /&gt;&lt;br /&gt;  OAuthAuthorization oauth = new OAuthAuthorization(pc);&lt;br /&gt;  TwitterFactory tf = new TwitterFactory();&lt;br /&gt;  Twitter twitter = tf.getInstance(oauth);&lt;br /&gt;  return twitter.getScreenName();&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select twitter_get_screen_name('xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'xxxx');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;twitter4j-core-2.1.12-SNAPSHOT.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07), twitter4j-2.1.12-SNAPSHOT&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databasetwitter4j.html"&gt;H2 Database上でTwitter4Jを使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-7384542844102209952?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/7384542844102209952/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7384542844102209952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7384542844102209952'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasetwitter4j.html' title='H2 DatabaseとTwitter4Jを使用してユーザー名を取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-787131037812603867</id><published>2011-02-07T10:03:00.002+09:00</published><updated>2011-06-23T22:04:01.844+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_OrionSSH2'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとOrion SSH2を使用してSFTPでシンボリックリンクのターゲットを表示する関数を作成する</title><content type='html'>H2 DatabaseとOrion SSH2を使用してSFTPでシンボリックリンクのターゲットを表示する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists orionssh2_read_link as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import com.trilead.ssh2.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;String orionssh2_read_link(String host, String user, &lt;br /&gt;  String password, String path)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;server is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null )password = &amp;quot;&amp;quot;;&lt;br /&gt;  if( path == null ){&lt;br /&gt;    throw new Exception(&amp;quot;path is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  com.trilead.ssh2.Connection conn = null;&lt;br /&gt;  SFTPv3Client sftpc = null;&lt;br /&gt;  String result = null;&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    // サーバに接続&lt;br /&gt;    conn = new com.trilead.ssh2.Connection(host);&lt;br /&gt;    conn.connect();&lt;br /&gt;    if( !conn.authenticateWithPassword(user, password) ){&lt;br /&gt;      throw new Exception(&amp;quot;authentication failed.&amp;quot;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // SFTP client作成&lt;br /&gt;    sftpc = new SFTPv3Client(conn);&lt;br /&gt;    sftpc.setCharset(&amp;quot;UTF-8&amp;quot;);&lt;br /&gt;&lt;br /&gt;    // シンボリックリンクのターゲットを取得&lt;br /&gt;    result = sftpc.readLink(path);&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( sftpc != null )sftpc.close();&lt;br /&gt;    if( sftpc != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;  return result;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select orionssh2_read_link('192.168.1.25', 'user', 'password', 'symlink_sf.png')&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;orion-ssh2-214.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07)&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databaseorion-ssh2.html"&gt;H2 Database上でOrion SSH2を使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-787131037812603867?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/787131037812603867/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftp_07.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/787131037812603867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/787131037812603867'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftp_07.html' title='H2 DatabaseとOrion SSH2を使用してSFTPでシンボリックリンクのターゲットを表示する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-3789905647235012299</id><published>2011-02-06T22:39:00.001+09:00</published><updated>2011-02-06T22:41:31.048+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_JRedis'/><title type='text'>H2 DatabaseとJRedisでkey-valueを設定する関数を作成する</title><content type='html'>H2 DatabaseとJRedisでkey-valueを設定する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists jredis_set as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import org.jredis.ri.alphazero.*;&lt;br /&gt;import org.jredis.ri.alphazero.support.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer jredis_set(String host, Integer intPort, &lt;br /&gt;  String key, String value)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;host is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  int port = 6379;&lt;br /&gt;  if( intPort != null ){&lt;br /&gt;    port = intPort.intValue();&lt;br /&gt;  }&lt;br /&gt;  if( key == null ){&lt;br /&gt;    throw new Exception(&amp;quot;key is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( value == null ){&lt;br /&gt;    throw new Exception(&amp;quot;value is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  JRedisClient jrc = new JRedisClient(host, port);&lt;br /&gt;  jrc.set(key, value);&lt;br /&gt;  return new Integer(0);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select jredis_set('192.168.1.25', 6379, 'key1', 'test')&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-3789905647235012299?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/3789905647235012299/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejrediskey-value.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/3789905647235012299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/3789905647235012299'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databasejrediskey-value.html' title='H2 DatabaseとJRedisでkey-valueを設定する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-1985761410987681429</id><published>2011-02-06T10:34:00.001+09:00</published><updated>2011-02-06T10:34:00.587+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ApacheDerby'/><title type='text'>Apache Derbyで指定されたパスのファイルを列挙する関数を作成する</title><content type='html'>Apache Derbyで指定されたパスのファイルを列挙する関数を作成するには、以下の手順を実行します。&lt;br /&gt;&lt;br /&gt;1.以下のクラスをantでコンパイルします。&lt;br /&gt;FsListFunction.java&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;package&lt;/span&gt; com&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;serverarekore&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;derby&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;io&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;sql&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;net&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#f27900"&gt;// SimpleResultSetのため&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; org&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;h2&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;tools&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;public class&lt;/span&gt; FsListFunction&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;public static&lt;/span&gt; &lt;span style="color:#0080c0"&gt;ResultSet&lt;/span&gt; &lt;span style="color:#004466"&gt;fs_list&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0"&gt;String&lt;/span&gt; path&lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt; path &lt;span style="color:#ff0080; font-weight:bold"&gt;==&lt;/span&gt; null &lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; null&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0080c0"&gt;File&lt;/span&gt; file &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;File&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;path&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    SimpleResultSet rs &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#004466"&gt;SimpleResultSet&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;();&lt;/span&gt;&lt;br /&gt;    rs&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;addColumn&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#a68500"&gt;&amp;quot;NAME&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Types&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;VARCHAR&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; &lt;span style="color:#800080; font-weight:bold"&gt;1024&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; &lt;span style="color:#800080; font-weight:bold"&gt;0&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0080c0"&gt;String&lt;/span&gt; files&lt;span style="color:#ff0080; font-weight:bold"&gt;[] =&lt;/span&gt; file&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;list&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;();&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;for&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#8080c0; font-weight:bold"&gt;int&lt;/span&gt; fi&lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#800080; font-weight:bold"&gt;0&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;fi&lt;span style="color:#ff0080; font-weight:bold"&gt;&amp;lt;&lt;/span&gt;files&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;length&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;fi&lt;span style="color:#ff0080; font-weight:bold"&gt;++){&lt;/span&gt;&lt;br /&gt;      rs&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;addRow&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;files&lt;span style="color:#ff0080; font-weight:bold"&gt;[&lt;/span&gt;fi&lt;span style="color:#ff0080; font-weight:bold"&gt;]);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; rs&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;build.xmlファイル例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;project&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;DerbyFunctions&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;default&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;id&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;fileset&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;include&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;*.jar&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/fileset&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/path&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;echo&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;message&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;project: ${ant.project.name}&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;mkdir&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;javac&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;srcdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;src/&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;br /&gt;      &lt;span style="color:#8080c0; font-weight:bold"&gt;deprecation&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;debug&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;refid&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/javac&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;jar&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destfile&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;c:\share\derby_funcs\FsListFunction.jar&amp;quot;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;clean&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;delete&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;※libディレクトリにH2 DatabaseのSimpleResultSetクラスを使用するために&lt;br /&gt;h2-1.3.149.jarをコピーしておきます。&lt;br /&gt;&lt;br /&gt;2.derbyにjarをインストール&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;call sqlj.install_jar('c:\share\derby_funcs\h2-1.3.149.jar', 'APP.func9', 0);&lt;br /&gt;call sqlj.install_jar('c:\share\derby_funcs\FsListFunction.jar', 'APP.func10', 0);&lt;/pre&gt;&lt;br /&gt;3.クラスパスに通す&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;call syscs_util.syscs_set_database_property('derby.database.classpath', &lt;br /&gt;'APP.func9:APP.func10');&lt;/pre&gt;&lt;br /&gt;4.関数を作成&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;CREATE FUNCTION fs_list(path varchar(1024))&lt;br /&gt;RETURNS TABLE&lt;br /&gt;(&lt;br /&gt;  NAME      VARCHAR(1024)&lt;br /&gt;)&lt;br /&gt;LANGUAGE JAVA&lt;br /&gt;PARAMETER STYLE DERBY_JDBC_RESULT_SET&lt;br /&gt;READS SQL DATA&lt;br /&gt;EXTERNAL NAME 'com.serverarekore.derby.FsListFunction.fs_list';&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;5.実行&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select * from table( fs_list('c:\') ) files;&lt;/pre&gt;&lt;br /&gt;動作環境&lt;br /&gt;Apache Derby 10.7.1.1, JDK6 Update23, h2-1.3.149&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-1985761410987681429?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/1985761410987681429/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/apache-derby_06.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1985761410987681429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1985761410987681429'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/apache-derby_06.html' title='Apache Derbyで指定されたパスのファイルを列挙する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-8371557756191240479</id><published>2011-02-05T10:56:00.002+09:00</published><updated>2011-06-23T22:05:58.703+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_OrionSSH2'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとOrion SSH2を使用してSFTPでディレクトリを削除する関数を作成する</title><content type='html'>H2 DatabaseとOrion SSH2を使用してSFTPでディレクトリを削除する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists orionssh2_rmdir as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import com.trilead.ssh2.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer orionssh2_rmdir(String host, String user, &lt;br /&gt;  String password, String path)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;server is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null )password = &amp;quot;&amp;quot;;&lt;br /&gt;  if( path == null ){&lt;br /&gt;    throw new Exception(&amp;quot;path is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  com.trilead.ssh2.Connection conn = null;&lt;br /&gt;  SFTPv3Client sftpc = null;&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    // サーバに接続&lt;br /&gt;    conn = new com.trilead.ssh2.Connection(host);&lt;br /&gt;    conn.connect();&lt;br /&gt;    if( !conn.authenticateWithPassword(user, password) ){&lt;br /&gt;      throw new Exception(&amp;quot;authentication failed.&amp;quot;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // SFTP client作成&lt;br /&gt;    sftpc = new SFTPv3Client(conn);&lt;br /&gt;    sftpc.setCharset(&amp;quot;UTF-8&amp;quot;);&lt;br /&gt;&lt;br /&gt;    // ディレクトリ削除&lt;br /&gt;    sftpc.rmdir(path);&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( sftpc != null )sftpc.close();&lt;br /&gt;    if( sftpc != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;  return new Integer(0);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select orionssh2_rmdir('192.168.1.25', 'user', 'password', 'test_dir')&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;orion-ssh2-214.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07)&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databaseorion-ssh2.html"&gt;H2 Database上でOrion SSH2を使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-8371557756191240479?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/8371557756191240479/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftp_05.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8371557756191240479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8371557756191240479'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftp_05.html' title='H2 DatabaseとOrion SSH2を使用してSFTPでディレクトリを削除する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-434899836440335893</id><published>2011-02-04T10:48:00.000+09:00</published><updated>2011-02-04T10:48:01.011+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ApacheDerby'/><title type='text'>Apache Derbyで指定されたファイルのサイズを返す関数を作成する</title><content type='html'>Apache Derbyで指定されたファイルのサイズを返す関数を作成するには、以下の手順を実行します。&lt;br /&gt;&lt;br /&gt;1.以下のクラスをantでコンパイルします。&lt;br /&gt;FsLengthFunction.java&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;package&lt;/span&gt; com&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;serverarekore&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;derby&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;io&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;sql&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;net&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;public class&lt;/span&gt; FsLengthFunction&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;public static&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Long&lt;/span&gt; &lt;span style="color:#004466"&gt;fs_length&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0"&gt;String&lt;/span&gt; path&lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt; path &lt;span style="color:#ff0080; font-weight:bold"&gt;==&lt;/span&gt; null &lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; null&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0080c0"&gt;File&lt;/span&gt; file &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;File&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;path&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;return new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Long&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;file&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;length&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;());&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;build.xmlファイル例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;project&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;DerbyFunctions&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;default&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;id&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;fileset&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;include&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;*.jar&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/fileset&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/path&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;echo&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;message&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;project: ${ant.project.name}&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;mkdir&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;javac&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;srcdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;src/&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;br /&gt;      &lt;span style="color:#8080c0; font-weight:bold"&gt;deprecation&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;debug&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;refid&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/javac&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;jar&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destfile&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;c:\share\derby_funcs\FsLengthFunction.jar&amp;quot;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;clean&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;delete&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2.derbyにjarをインストール&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;call sqlj.install_jar('c:\share\derby_funcs\FsLengthFunction.jar', 'APP.func8', 0);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3.クラスパスに通す&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;call syscs_util.syscs_set_database_property('derby.database.classpath', 'APP.func8');&lt;/pre&gt;※複数のjarの場合は'APP.func1:APP.func2'のように「:」で区切る。&lt;br /&gt;&lt;br /&gt;4.関数を作成&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create function fs_length(path varchar(1024)) &lt;br /&gt;returns bigint&lt;br /&gt;parameter style java no sql language java&lt;br /&gt;external name 'com.serverarekore.derby.FsLengthFunction.fs_length';&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;5.実行&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select fs_length('c:\share\test.txt') from sysibm.sysdummy1;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Apache Derby 10.7.1.1, JDK6 Update23&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-434899836440335893?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/434899836440335893/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/apache-derby_04.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/434899836440335893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/434899836440335893'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/apache-derby_04.html' title='Apache Derbyで指定されたファイルのサイズを返す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-3528667615934835776</id><published>2011-02-03T10:42:00.002+09:00</published><updated>2011-06-23T22:06:21.106+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_OrionSSH2'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとOrion SSH2を使用してSFTPでディレクトリを作成する関数を作成する</title><content type='html'>H2 DatabaseとOrion SSH2を使用してSFTPでディレクトリを作成する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists orionssh2_mkdir as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import com.trilead.ssh2.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer orionssh2_mkdir(String host, String user, &lt;br /&gt;  String password, String path, Integer permission)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;server is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null )password = &amp;quot;&amp;quot;;&lt;br /&gt;  if( path == null ){&lt;br /&gt;    throw new Exception(&amp;quot;path is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( permission == null ){&lt;br /&gt;    throw new Exception(&amp;quot;permission is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  com.trilead.ssh2.Connection conn = null;&lt;br /&gt;  SFTPv3Client sftpc = null;&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    // サーバに接続&lt;br /&gt;    conn = new com.trilead.ssh2.Connection(host);&lt;br /&gt;    conn.connect();&lt;br /&gt;    if( !conn.authenticateWithPassword(user, password) ){&lt;br /&gt;      throw new Exception(&amp;quot;authentication failed.&amp;quot;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // SFTP client作成&lt;br /&gt;    sftpc = new SFTPv3Client(conn);&lt;br /&gt;    sftpc.setCharset(&amp;quot;UTF-8&amp;quot;);&lt;br /&gt;&lt;br /&gt;    // ディレクトリ作成&lt;br /&gt;    sftpc.mkdir(path, permission);&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( sftpc != null )sftpc.close();&lt;br /&gt;    if( sftpc != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;  return new Integer(0);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select orionssh2_mkdir('192.168.1.25', 'user', 'password', 'test_dir', 0x777)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;orion-ssh2-214.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07)&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databaseorion-ssh2.html"&gt;H2 Database上でOrion SSH2を使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-3528667615934835776?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/3528667615934835776/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftp_03.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/3528667615934835776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/3528667615934835776'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftp_03.html' title='H2 DatabaseとOrion SSH2を使用してSFTPでディレクトリを作成する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-6144358510345079652</id><published>2011-02-02T10:11:00.000+09:00</published><updated>2011-02-02T10:11:00.350+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ApacheDerby'/><title type='text'>Apache Derbyで指定されたパスの最終更新日時を返す関数を作成する</title><content type='html'>Apache Derbyで指定されたパスの最終更新日時を返す関数を作成するには、以下の手順を実行します。&lt;br /&gt;&lt;br /&gt;1.以下のクラスをantでコンパイルします。&lt;br /&gt;FsLastModifiedFunction.java&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;package&lt;/span&gt; com&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;serverarekore&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;derby&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;io&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;sql&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;net&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;public class&lt;/span&gt; FsLastModifiedFunction&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;public static&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Timestamp&lt;/span&gt; &lt;span style="color:#004466"&gt;fs_last_modified&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0"&gt;String&lt;/span&gt; path&lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt; path &lt;span style="color:#ff0080; font-weight:bold"&gt;==&lt;/span&gt; null &lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; null&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0080c0"&gt;File&lt;/span&gt; file &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;File&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;path&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;return new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Timestamp&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;file&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;lastModified&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;());&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;build.xmlファイル例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;project&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;DerbyFunctions&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;default&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;id&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;fileset&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;include&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;*.jar&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/fileset&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/path&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;echo&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;message&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;project: ${ant.project.name}&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;mkdir&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;javac&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;srcdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;src/&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;br /&gt;      &lt;span style="color:#8080c0; font-weight:bold"&gt;deprecation&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;debug&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;refid&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/javac&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;jar&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destfile&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;c:\share\derby_funcs\FsLastModifiedFunction.jar&amp;quot;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;clean&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;delete&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2.derbyにjarをインストール&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;call sqlj.install_jar('c:\share\derby_funcs\FsLastModifiedFunction.jar', 'APP.func7', 0);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3.クラスパスに通す&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;call syscs_util.syscs_set_database_property('derby.database.classpath', 'APP.func7');&lt;/pre&gt;※複数のjarの場合は'APP.func1:APP.func2'のように「:」で区切る。&lt;br /&gt;&lt;br /&gt;4.関数を作成&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create function fs_last_modified(path varchar(1024)) &lt;br /&gt;returns timestamp&lt;br /&gt;parameter style java no sql language java&lt;br /&gt;external name 'com.serverarekore.derby.FsLastModifiedFunction.fs_last_modified';&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;5.実行&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select fs_last_modified('c:\share\test.txt') from sysibm.sysdummy1;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-6144358510345079652?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/6144358510345079652/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/apache-derby.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/6144358510345079652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/6144358510345079652'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/apache-derby.html' title='Apache Derbyで指定されたパスの最終更新日時を返す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-2254848606446969128</id><published>2011-02-01T10:32:00.003+09:00</published><updated>2011-06-23T22:03:15.143+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_OrionSSH2'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとOrion SSH2を使用してSFTPでファイルのパーミッションを取得する関数を作成する</title><content type='html'>H2 DatabaseとOrion SSH2を使用してSFTPでファイルのパーミッションを取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists orionssh2_get_permissions as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import com.trilead.ssh2.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;String orionssh2_get_permissions(String host, String user, &lt;br /&gt;  String password, String path)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;server is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null )password = &amp;quot;&amp;quot;;&lt;br /&gt;  if( path == null ){&lt;br /&gt;    throw new Exception(&amp;quot;path is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  com.trilead.ssh2.Connection conn = null;&lt;br /&gt;  SFTPv3Client sftpc = null;&lt;br /&gt;  SFTPv3FileAttributes fa = null;&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    // サーバに接続&lt;br /&gt;    conn = new com.trilead.ssh2.Connection(host);&lt;br /&gt;    conn.connect();&lt;br /&gt;    if( !conn.authenticateWithPassword(user, password) ){&lt;br /&gt;      throw new Exception(&amp;quot;authentication failed.&amp;quot;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // SFTP client作成&lt;br /&gt;    sftpc = new SFTPv3Client(conn);&lt;br /&gt;    sftpc.setCharset(&amp;quot;UTF-8&amp;quot;);&lt;br /&gt;&lt;br /&gt;    // ファイルの情報を取得&lt;br /&gt;    fa = sftpc.lstat(path);&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( sftpc != null )sftpc.close();&lt;br /&gt;    if( sftpc != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;  return fa.getOctalPermissions();&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select orionssh2_get_permissions('192.168.1.25', 'user', 'password', './sf.png')&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;orion-ssh2-214.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07)&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databaseorion-ssh2.html"&gt;H2 Database上でOrion SSH2を使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-2254848606446969128?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/2254848606446969128/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftp.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/2254848606446969128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/2254848606446969128'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/02/h2-databaseorion-ssh2sftp.html' title='H2 DatabaseとOrion SSH2を使用してSFTPでファイルのパーミッションを取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-1555962670726561295</id><published>2011-01-31T10:00:00.000+09:00</published><updated>2011-01-31T10:00:00.412+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ApacheDerby'/><title type='text'>Apache Derbyで指定されたパスの親ディレクトリを返す関数を作成する</title><content type='html'>Apache Derbyで指定されたパスの親ディレクトリを返す関数を作成するには、以下の手順を実行します。&lt;br /&gt;&lt;br /&gt;1.以下のクラスをantでコンパイルします。&lt;br /&gt;FsGetParentFunction.java&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;package&lt;/span&gt; com&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;serverarekore&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;derby&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;io&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;sql&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;net&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;public class&lt;/span&gt; FsGetParentFunction&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;public static&lt;/span&gt; &lt;span style="color:#0080c0"&gt;String&lt;/span&gt; &lt;span style="color:#004466"&gt;fs_get_parent&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0"&gt;String&lt;/span&gt; path&lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt; path &lt;span style="color:#ff0080; font-weight:bold"&gt;==&lt;/span&gt; null &lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; null&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0080c0"&gt;File&lt;/span&gt; file &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;File&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;path&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; file&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;getParent&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;();&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;build.xmlファイル例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;project&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;DerbyFunctions&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;default&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;id&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;fileset&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;include&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;*.jar&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/fileset&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/path&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;echo&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;message&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;project: ${ant.project.name}&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;mkdir&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;javac&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;srcdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;src/&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;br /&gt;      &lt;span style="color:#8080c0; font-weight:bold"&gt;deprecation&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;debug&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;refid&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/javac&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;jar&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destfile&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;c:\share\derby_funcs\FsGetParentFunction.jar&amp;quot;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;clean&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;delete&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2.derbyにjarをインストール&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;call sqlj.install_jar('c:\share\derby_funcs\FsGetParentFunction.jar', 'APP.func6', 0);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3.クラスパスに通す&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;call syscs_util.syscs_set_database_property('derby.database.classpath', 'APP.func6');&lt;/pre&gt;※複数のjarの場合は'APP.func1:APP.func2'のように「:」で区切る。&lt;br /&gt;&lt;br /&gt;4.関数を作成&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create function fs_get_parent(path varchar(1024)) &lt;br /&gt;returns varchar(1024)&lt;br /&gt;parameter style java no sql language java&lt;br /&gt;external name 'com.serverarekore.derby.FsGetParentFunction.fs_get_parent';&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;5.実行&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select fs_get_parent('c:\windows\windows.ini') from sysibm.sysdummy1;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-1555962670726561295?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/1555962670726561295/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/01/apache-derby_31.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1555962670726561295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1555962670726561295'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/01/apache-derby_31.html' title='Apache Derbyで指定されたパスの親ディレクトリを返す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-5324350050125428460</id><published>2011-01-30T10:25:00.003+09:00</published><updated>2011-06-23T22:02:52.338+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_OrionSSH2'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとOrion SSH2を使用してSFTPでファイルのGIDを取得する関数を作成する</title><content type='html'>H2 DatabaseとOrion SSH2を使用してSFTPでファイルのGIDを取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists orionssh2_get_gid as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import com.trilead.ssh2.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer orionssh2_get_gid(String host, String user, &lt;br /&gt;  String password, String path)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;server is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null )password = &amp;quot;&amp;quot;;&lt;br /&gt;  if( path == null ){&lt;br /&gt;    throw new Exception(&amp;quot;path is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  com.trilead.ssh2.Connection conn = null;&lt;br /&gt;  SFTPv3Client sftpc = null;&lt;br /&gt;  SFTPv3FileAttributes fa = null;&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    // サーバに接続&lt;br /&gt;    conn = new com.trilead.ssh2.Connection(host);&lt;br /&gt;    conn.connect();&lt;br /&gt;    if( !conn.authenticateWithPassword(user, password) ){&lt;br /&gt;      throw new Exception(&amp;quot;authentication failed.&amp;quot;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // SFTP client作成&lt;br /&gt;    sftpc = new SFTPv3Client(conn);&lt;br /&gt;    sftpc.setCharset(&amp;quot;UTF-8&amp;quot;);&lt;br /&gt;&lt;br /&gt;    // ファイルの情報を取得&lt;br /&gt;    fa = sftpc.lstat(path);&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( sftpc != null )sftpc.close();&lt;br /&gt;    if( sftpc != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;  return new Integer(fa.gid);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select orionssh2_get_gid('192.168.1.25', 'user', 'password', './sf.png')&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;orion-ssh2-214.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07)&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databaseorion-ssh2.html"&gt;H2 Database上でOrion SSH2を使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-5324350050125428460?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/5324350050125428460/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databaseorion-ssh2sftpgid.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/5324350050125428460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/5324350050125428460'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databaseorion-ssh2sftpgid.html' title='H2 DatabaseとOrion SSH2を使用してSFTPでファイルのGIDを取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-4848179859507441959</id><published>2011-01-29T10:43:00.000+09:00</published><updated>2011-01-29T10:43:00.037+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ApacheDerby'/><title type='text'>Apache Derbyで指定されたパスがディレクトリかどうかを返す関数を作成する</title><content type='html'>Apache Derbyで指定されたパスがディレクトリかどうかを返す関数を作成するには、以下の手順を実行します。&lt;br /&gt;&lt;br /&gt;1.以下のクラスをantでコンパイルします。&lt;br /&gt;FsIsDirectoryFunction.java&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;package&lt;/span&gt; com&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;serverarekore&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;derby&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;io&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;sql&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;net&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;public class&lt;/span&gt; FsIsDirectoryFunction&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;public static&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Integer&lt;/span&gt; &lt;span style="color:#004466"&gt;fs_is_directory&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0"&gt;String&lt;/span&gt; path&lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt; path &lt;span style="color:#ff0080; font-weight:bold"&gt;==&lt;/span&gt; null &lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; null&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0080c0"&gt;File&lt;/span&gt; file &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;File&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;path&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;return new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Integer&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;file&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;isDirectory&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;()&lt;/span&gt;?&lt;span style="color:#800080; font-weight:bold"&gt;1&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#800080; font-weight:bold"&gt;0&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;build.xmlファイル例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;project&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;DerbyFunctions&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;default&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;id&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;fileset&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;include&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;*.jar&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/fileset&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/path&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;echo&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;message&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;project: ${ant.project.name}&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;mkdir&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;javac&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;srcdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;src/&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;br /&gt;      &lt;span style="color:#8080c0; font-weight:bold"&gt;deprecation&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;debug&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;refid&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/javac&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;jar&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destfile&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;c:\share\derby_funcs\FsIsDirectoryFunction.jar&amp;quot;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;clean&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;delete&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2.derbyにjarをインストール&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;call sqlj.install_jar('c:\share\derby_funcs\FsIsDirectoryFunction.jar', 'APP.func5', 0);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3.クラスパスに通す&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;call syscs_util.syscs_set_database_property('derby.database.classpath', 'APP.func5');&lt;/pre&gt;※複数のjarの場合は'APP.func1:APP.func2'のように「:」で区切る。&lt;br /&gt;&lt;br /&gt;4.関数を作成&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create function fs_is_directory(path varchar(1024)) returns int&lt;br /&gt;parameter style java no sql language java&lt;br /&gt;external name 'com.serverarekore.derby.FsIsDirectoryFunction.fs_is_directory';&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;5.実行&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select fs_is_directory('c:\windows'), &lt;br /&gt;fs_is_directory('c:\windows\windows.ini') from sysibm.sysdummy1;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Apache Derby 10.7.1.1, JDK6 Update23&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-4848179859507441959?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/4848179859507441959/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/01/apache-derby_29.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4848179859507441959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4848179859507441959'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/01/apache-derby_29.html' title='Apache Derbyで指定されたパスがディレクトリかどうかを返す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-7777193965272682142</id><published>2011-01-28T10:20:00.002+09:00</published><updated>2011-06-23T22:02:20.320+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_OrionSSH2'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとOrion SSH2を使用してSFTPでファイルのUIDを取得する関数を作成する</title><content type='html'>H2 DatabaseとOrion SSH2を使用してSFTPでファイルのUIDを取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists orionssh2_get_uid as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import com.trilead.ssh2.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer orionssh2_get_uid(String host, String user, &lt;br /&gt;  String password, String path)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;server is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null )password = &amp;quot;&amp;quot;;&lt;br /&gt;  if( path == null ){&lt;br /&gt;    throw new Exception(&amp;quot;path is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  com.trilead.ssh2.Connection conn = null;&lt;br /&gt;  SFTPv3Client sftpc = null;&lt;br /&gt;  SFTPv3FileAttributes fa = null;&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    // サーバに接続&lt;br /&gt;    conn = new com.trilead.ssh2.Connection(host);&lt;br /&gt;    conn.connect();&lt;br /&gt;    if( !conn.authenticateWithPassword(user, password) ){&lt;br /&gt;      throw new Exception(&amp;quot;authentication failed.&amp;quot;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // SFTP client作成&lt;br /&gt;    sftpc = new SFTPv3Client(conn);&lt;br /&gt;    sftpc.setCharset(&amp;quot;UTF-8&amp;quot;);&lt;br /&gt;&lt;br /&gt;    // ファイルの情報を取得&lt;br /&gt;    fa = sftpc.lstat(path);&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( sftpc != null )sftpc.close();&lt;br /&gt;    if( sftpc != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;  return new Integer(fa.uid);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select orionssh2_get_uid('192.168.1.25', 'user', 'password', './sf.png')&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;orion-ssh2-214.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07)&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databaseorion-ssh2.html"&gt;H2 Database上でOrion SSH2を使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-7777193965272682142?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/7777193965272682142/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databaseorion-ssh2sftpuid.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7777193965272682142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7777193965272682142'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databaseorion-ssh2sftpuid.html' title='H2 DatabaseとOrion SSH2を使用してSFTPでファイルのUIDを取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-6659282676373012041</id><published>2011-01-27T10:26:00.001+09:00</published><updated>2011-01-27T10:26:00.466+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ApacheDerby'/><title type='text'>Apache Derbyで指定されたパスが絶対パスかどうかを返す関数を作成する</title><content type='html'>Apache Derbyで指定されたパスが絶対パスかどうかを返す関数を作成するには、以下の手順を実行します。&lt;br /&gt;&lt;br /&gt;1.以下のクラスをantでコンパイルします。&lt;br /&gt;FsIsAbsoluteFunction.java&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;package&lt;/span&gt; com&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;serverarekore&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;derby&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;io&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;sql&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;net&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;public class&lt;/span&gt; FsIsAbsoluteFunction&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;public static&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Integer&lt;/span&gt; &lt;span style="color:#004466"&gt;fs_is_absolute&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0"&gt;String&lt;/span&gt; path&lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt; path &lt;span style="color:#ff0080; font-weight:bold"&gt;==&lt;/span&gt; null &lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; null&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0080c0"&gt;File&lt;/span&gt; file &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;File&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;path&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;return new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Integer&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;file&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;isAbsolute&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;()&lt;/span&gt;?&lt;span style="color:#800080; font-weight:bold"&gt;1&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#800080; font-weight:bold"&gt;0&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;build.xmlファイル例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;project&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;FsIsAbsoluteFunctions&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;default&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;id&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;fileset&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;include&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;*.jar&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/fileset&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/path&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;echo&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;message&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;project: ${ant.project.name}&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;mkdir&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;javac&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;srcdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;src/&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;br /&gt;      &lt;span style="color:#8080c0; font-weight:bold"&gt;deprecation&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;debug&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;refid&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/javac&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;jar&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destfile&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;c:\share\derby_funcs\FsIsAbsoluteFunction.jar&amp;quot;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;clean&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;delete&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2.derbyにjarをインストール&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;call sqlj.install_jar('c:\share\derby_funcs\FsIsAbsoluteFunction.jar', 'APP.func4', 0);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3.クラスパスに通す&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;call syscs_util.syscs_set_database_property('derby.database.classpath', 'APP.func4');&lt;/pre&gt;※複数のjarの場合は'APP.func1:APP.func2'のように「:」で区切る。&lt;br /&gt;&lt;br /&gt;4.関数を作成&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create function fs_is_absolute(path varchar(1024)) returns int&lt;br /&gt;parameter style java no sql language java&lt;br /&gt;external name 'com.serverarekore.derby.FsIsAbsoluteFunction.fs_is_absolute';&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;5.実行&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select fs_is_absolute('c:\'), &lt;br /&gt;fs_is_absolute('.\test.txt') from sysibm.sysdummy1;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-6659282676373012041?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/6659282676373012041/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/01/apache-derby_27.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/6659282676373012041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/6659282676373012041'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/01/apache-derby_27.html' title='Apache Derbyで指定されたパスが絶対パスかどうかを返す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-7979352801696895024</id><published>2011-01-26T10:01:00.002+09:00</published><updated>2011-06-23T22:01:56.074+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_OrionSSH2'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとOrion SSH2を使用してSFTPでファイルの最終更新日時を取得する関数を作成する</title><content type='html'>H2 DatabaseとOrion SSH2を使用してSFTPでファイルの最終更新日時を取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists orionssh2_get_mtime as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import com.trilead.ssh2.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;java.sql.Timestamp orionssh2_get_mtime(String host, String user, &lt;br /&gt;  String password, String path)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;server is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null )password = &amp;quot;&amp;quot;;&lt;br /&gt;  if( path == null ){&lt;br /&gt;    throw new Exception(&amp;quot;path is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  com.trilead.ssh2.Connection conn = null;&lt;br /&gt;  SFTPv3Client sftpc = null;&lt;br /&gt;  SFTPv3FileAttributes fa = null;&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    // サーバに接続&lt;br /&gt;    conn = new com.trilead.ssh2.Connection(host);&lt;br /&gt;    conn.connect();&lt;br /&gt;    if( !conn.authenticateWithPassword(user, password) ){&lt;br /&gt;      throw new Exception(&amp;quot;authentication failed.&amp;quot;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // SFTP client作成&lt;br /&gt;    sftpc = new SFTPv3Client(conn);&lt;br /&gt;    sftpc.setCharset(&amp;quot;UTF-8&amp;quot;);&lt;br /&gt;&lt;br /&gt;    // ファイルの情報を取得&lt;br /&gt;    fa = sftpc.lstat(path);&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( sftpc != null )sftpc.close();&lt;br /&gt;    if( sftpc != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;  return new java.sql.Timestamp(fa.mtime*1000);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select orionssh2_get_mtime('192.168.1.25', 'user', 'password', './sf.png')&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;orion-ssh2-214.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07)&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databaseorion-ssh2.html"&gt;H2 Database上でOrion SSH2を使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-7979352801696895024?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/7979352801696895024/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databaseorion-ssh2sftp_26.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7979352801696895024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7979352801696895024'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databaseorion-ssh2sftp_26.html' title='H2 DatabaseとOrion SSH2を使用してSFTPでファイルの最終更新日時を取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-716723652185321116</id><published>2011-01-25T10:45:00.000+09:00</published><updated>2011-01-25T10:45:00.164+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ApacheDerby'/><title type='text'>Apache Derbyで指定されたパスのパーティション/ドライブ容量を返す関数を作成する</title><content type='html'>Apache Derbyで指定されたパスのパーティション/ドライブ容量を返す関数を作成するには、以下の手順を実行します。&lt;br /&gt;&lt;br /&gt;1.以下のクラスをantでコンパイルします。&lt;br /&gt;FsGetTotalSpaceFunction.java&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;package&lt;/span&gt; com&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;serverarekore&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;derby&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;io&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;sql&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;net&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;public class&lt;/span&gt; FsGetTotalSpaceFunction&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;public static&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Long&lt;/span&gt; &lt;span style="color:#004466"&gt;fs_get_total_space&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0"&gt;String&lt;/span&gt; path&lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt; path &lt;span style="color:#ff0080; font-weight:bold"&gt;==&lt;/span&gt; null &lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; null&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0080c0"&gt;File&lt;/span&gt; file &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;File&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;path&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;return new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Long&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;file&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;getTotalSpace&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;());&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;build.xmlファイル例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;project&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;DerbyFunctions&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;default&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;id&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;fileset&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;include&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;*.jar&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/fileset&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/path&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;echo&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;message&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;project: ${ant.project.name}&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;mkdir&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;javac&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;srcdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;src/&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;br /&gt;      &lt;span style="color:#8080c0; font-weight:bold"&gt;deprecation&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;debug&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;refid&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/javac&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;jar&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destfile&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;c:\share\derby_funcs\FsGetTotalSpaceFunction.jar&amp;quot;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;clean&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;delete&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2.derbyにjarをインストール&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;call sqlj.install_jar('c:\share\derby_funcs\FsGetTotalSpaceFunction.jar', 'APP.func3', 0);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3.クラスパスに通す&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;call syscs_util.syscs_set_database_property('derby.database.classpath', 'APP.func3');&lt;/pre&gt;※複数のjarの場合は'APP.func1:APP.func2'のように「:」で区切る。&lt;br /&gt;&lt;br /&gt;4.関数を作成&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create function fs_get_total_space(path varchar(1024)) returns bigint&lt;br /&gt;parameter style java no sql language java&lt;br /&gt;external name 'com.serverarekore.derby.FsGetTotalSpaceFunction.fs_get_total_space';&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;5.実行&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select fs_get_total_space('c:\') from sysibm.sysdummy1;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-716723652185321116?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/716723652185321116/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/01/apache-derby_25.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/716723652185321116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/716723652185321116'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/01/apache-derby_25.html' title='Apache Derbyで指定されたパスのパーティション/ドライブ容量を返す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-4471806786217574018</id><published>2011-01-24T10:32:00.002+09:00</published><updated>2011-06-23T22:01:32.541+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_OrionSSH2'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとOrion SSH2を使用してSFTPでファイルのサイズを取得する関数を作成する</title><content type='html'>H2 DatabaseとOrion SSH2を使用してSFTPでファイルのサイズを取得する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists orionssh2_get_size as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import com.trilead.ssh2.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Long orionssh2_get_size(String host, String user, &lt;br /&gt;  String password, String path)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;server is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null )password = &amp;quot;&amp;quot;;&lt;br /&gt;  if( path == null ){&lt;br /&gt;    throw new Exception(&amp;quot;path is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  com.trilead.ssh2.Connection conn = null;&lt;br /&gt;  SFTPv3Client sftpc = null;&lt;br /&gt;  SFTPv3FileAttributes fa = null;&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    // サーバに接続&lt;br /&gt;    conn = new com.trilead.ssh2.Connection(host);&lt;br /&gt;    conn.connect();&lt;br /&gt;    if( !conn.authenticateWithPassword(user, password) ){&lt;br /&gt;      throw new Exception(&amp;quot;authentication failed.&amp;quot;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // SFTP client作成&lt;br /&gt;    sftpc = new SFTPv3Client(conn);&lt;br /&gt;    sftpc.setCharset(&amp;quot;UTF-8&amp;quot;);&lt;br /&gt;&lt;br /&gt;    // ファイルの情報を取得&lt;br /&gt;    fa = sftpc.lstat(path);&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( sftpc != null )sftpc.close();&lt;br /&gt;    if( sftpc != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;  return fa.size;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select orionssh2_get_size('192.168.1.25', 'user', 'password', './sf.png')&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;orion-ssh2-214.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07)&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databaseorion-ssh2.html"&gt;H2 Database上でOrion SSH2を使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-4471806786217574018?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/4471806786217574018/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databaseorion-ssh2sftp_24.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4471806786217574018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4471806786217574018'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databaseorion-ssh2sftp_24.html' title='H2 DatabaseとOrion SSH2を使用してSFTPでファイルのサイズを取得する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-4624874859855129425</id><published>2011-01-23T10:28:00.000+09:00</published><updated>2011-01-23T10:28:00.527+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ApacheDerby'/><title type='text'>Apache Derbyで指定された時間スリープする関数を作成する</title><content type='html'>Apache Derbyで指定された時間スリープする関数を作成するには、以下の手順を実行します。&lt;br /&gt;&lt;br /&gt;1.以下のクラスをantでコンパイルします。&lt;br /&gt;SleepFunction.java&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;package&lt;/span&gt; com&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;serverarekore&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;derby&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;io&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;sql&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;net&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;public class&lt;/span&gt; SleepFunction&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;public static&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Long&lt;/span&gt; &lt;span style="color:#004466"&gt;sleep&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0"&gt;Long&lt;/span&gt; millis&lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;throws&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Exception&lt;/span&gt; &lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0080c0"&gt;Thread&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;sleep&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;millis&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; millis&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt; &lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;build.xmlファイル例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;project&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;DerbyFunctions&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;default&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;id&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;fileset&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;include&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;*.jar&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/fileset&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/path&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;echo&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;message&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;project: ${ant.project.name}&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;mkdir&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;javac&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;srcdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;src/&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;br /&gt;      &lt;span style="color:#8080c0; font-weight:bold"&gt;deprecation&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;debug&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;refid&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/javac&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;jar&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destfile&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;c:\share\derby_funcs\SleepFunction.jar&amp;quot;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;clean&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;delete&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2.derbyにjarをインストール&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;call sqlj.install_jar('c:\share\derby_funcs\SleepFunction.jar', 'APP.func2', 0);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3.クラスパスに通す&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;call syscs_util.syscs_set_database_property('derby.database.classpath', 'APP.func2');&lt;/pre&gt;&lt;br /&gt;※複数のjarの場合は'APP.func1:APP.func2'のように「:」で区切る。&lt;br /&gt;4.関数を作成&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create function sleep(millis bigint) returns bigint&lt;br /&gt;parameter style java no sql language java&lt;br /&gt;external name 'com.serverarekore.derby.SleepFunction.sleep';&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;5.実行&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select sleep(5000) from sysibm.sysdummy1;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-4624874859855129425?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/4624874859855129425/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/01/apache-derby_23.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4624874859855129425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4624874859855129425'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/01/apache-derby_23.html' title='Apache Derbyで指定された時間スリープする関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-7973134331947141336</id><published>2011-01-23T02:10:00.002+09:00</published><updated>2011-06-11T12:57:19.412+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_Twitter4J'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとTwitter4Jを使用してツィートする関数を作成する</title><content type='html'>H2 DatabaseとTwitter4Jを使用してツィートする関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists twitter_update_status as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import twitter4j.*;&lt;br /&gt;import twitter4j.http.*;&lt;br /&gt;import twitter4j.conf.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Long twitter_update_status(String consumerKey, &lt;br /&gt;  String consumerSecret, String accessToken,&lt;br /&gt;  String accessTokenSecret, String message)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( consumerKey == null ){&lt;br /&gt;    throw new Exception(&amp;quot;consumerKey is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( consumerSecret == null ){&lt;br /&gt;    throw new Exception(&amp;quot;consumerSecret is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( accessToken == null ){&lt;br /&gt;    throw new Exception(&amp;quot;accessToken is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( accessTokenSecret == null ){&lt;br /&gt;    throw new Exception(&amp;quot;accessTokenSecret is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( message == null ){&lt;br /&gt;    throw new Exception(&amp;quot;message is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  Properties prop = new Properties();&lt;br /&gt;  prop.put(&amp;quot;oauth.consumerKey&amp;quot;, consumerKey);&lt;br /&gt;  prop.put(&amp;quot;oauth.consumerSecret&amp;quot;, consumerSecret);&lt;br /&gt;  prop.put(&amp;quot;oauth.accessToken&amp;quot;, accessToken);&lt;br /&gt;  prop.put(&amp;quot;oauth.accessTokenSecret&amp;quot;, accessTokenSecret);&lt;br /&gt;  PropertyConfiguration pc = &lt;br /&gt;     new PropertyConfiguration(prop);&lt;br /&gt;&lt;br /&gt;  OAuthAuthorization oauth = new OAuthAuthorization(pc);&lt;br /&gt;  TwitterFactory tf = new TwitterFactory();&lt;br /&gt;  Twitter twitter = tf.getInstance(oauth);&lt;br /&gt;  Status status = twitter.updateStatus(message);&lt;br /&gt;  return status.getId();&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select twitter_update_status('xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'xxxx',&lt;br /&gt;'H2Databaseテスト');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;twitter4j-core-2.1.12-SNAPSHOT.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07), twitter4j-2.1.12-SNAPSHOT&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databasetwitter4j.html"&gt;H2 Database上でTwitter4Jを使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-7973134331947141336?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/7973134331947141336/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databasetwitter4j.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7973134331947141336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/7973134331947141336'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databasetwitter4j.html' title='H2 DatabaseとTwitter4Jを使用してツィートする関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-4813226640225292048</id><published>2011-01-22T10:17:00.004+09:00</published><updated>2011-06-23T22:06:41.764+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_OrionSSH2'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとOrion SSH2を使用してSFTPでシンボリックリンクを作成する関数を作成する</title><content type='html'>H2 DatabaseとOrion SSH2を使用してSFTPでシンボリックリンクを作成する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists orionssh2_create_symlink as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import com.trilead.ssh2.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer orionssh2_create_symlink(String host, String user, &lt;br /&gt;  String password, String path1, String path2)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;server is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null )password = &amp;quot;&amp;quot;;&lt;br /&gt;  if( path1 == null ){&lt;br /&gt;    throw new Exception(&amp;quot;path1 is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( path2 == null ){&lt;br /&gt;    throw new Exception(&amp;quot;path2 is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  com.trilead.ssh2.Connection conn = null;&lt;br /&gt;  SFTPv3Client sftpc = null;&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    // サーバに接続&lt;br /&gt;    conn = new com.trilead.ssh2.Connection(host);&lt;br /&gt;    conn.connect();&lt;br /&gt;    if( !conn.authenticateWithPassword(user, password) ){&lt;br /&gt;      throw new Exception(&amp;quot;authentication failed.&amp;quot;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // SFTP client作成&lt;br /&gt;    sftpc = new SFTPv3Client(conn);&lt;br /&gt;    sftpc.setCharset(&amp;quot;UTF-8&amp;quot;);&lt;br /&gt;&lt;br /&gt;    // シンボリックリンク作成&lt;br /&gt;    sftpc.createSymlink(path1, path2);&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( sftpc != null )sftpc.close();&lt;br /&gt;    if( sftpc != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;  return new Integer(0);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select orionssh2_create_symlink('192.168.1.25', &lt;br /&gt;'user', 'password', './symlink_sf.png', './sf.png')&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;orion-ssh2-214.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07)&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databaseorion-ssh2.html"&gt;H2 Database上でOrion SSH2を使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-4813226640225292048?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/4813226640225292048/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databaseorion-ssh2sftp.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4813226640225292048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4813226640225292048'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databaseorion-ssh2sftp.html' title='H2 DatabaseとOrion SSH2を使用してSFTPでシンボリックリンクを作成する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-4090537311621667228</id><published>2011-01-21T10:59:00.001+09:00</published><updated>2011-01-22T15:17:58.852+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ApacheDerby'/><title type='text'>Apache Derbyでドライブの空き容量を返す関数を作成する</title><content type='html'>Apache Derbyでドライブの空き容量を返す関数を作成するには、以下の手順を実行します。&lt;br /&gt;&lt;br /&gt;1.以下のクラスをantでコンパイルします。&lt;br /&gt;FsGetFreeSpaceFunction.java&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;package&lt;/span&gt; com&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;serverarekore&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;derby&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;io&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;sql&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;net&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;public class&lt;/span&gt; FsGetFreeSpaceFunction&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;public static&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Long&lt;/span&gt; &lt;span style="color:#004466"&gt;fs_get_free_space&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0"&gt;String&lt;/span&gt; path&lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt; path &lt;span style="color:#ff0080; font-weight:bold"&gt;==&lt;/span&gt; null &lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; null&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0080c0"&gt;File&lt;/span&gt; file &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;File&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;path&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;return new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Long&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;file&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;getFreeSpace&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;());&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;build.xmlファイル例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;project&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;DerbyFunctions&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;default&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;id&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;fileset&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;include&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;*.jar&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/fileset&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/path&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;echo&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;message&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;project: ${ant.project.name}&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;mkdir&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;javac&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;srcdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;src/&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;br /&gt;      &lt;span style="color:#8080c0; font-weight:bold"&gt;deprecation&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;debug&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;refid&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/javac&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;jar&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destfile&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;c:\share\derby_funcs\FsGetFreeSpaceFunction.jar&amp;quot;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;clean&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;delete&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2.derbyにjarをインストール&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;call sqlj.install_jar('c:\share\derby_funcs\FsGetFreeSpaceFunction.jar', 'APP.func1', 0);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3.クラスパスに通す&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;call syscs_util.syscs_set_database_property('derby.database.classpath', &lt;br /&gt;'APP.func1');&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;4.関数を作成&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create function fs_get_free_space(path varchar(1024)) returns bigint&lt;br /&gt;parameter style java no sql language java&lt;br /&gt;external name 'com.serverarekore.derby.FsGetFreeSpaceFunction.fs_get_free_space';&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;5.実行&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select fs_get_free_space('c:\') from sysibm.sysdummy1;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Apache Derby 10.7.1.1, JDK6 Update23&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-4090537311621667228?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/4090537311621667228/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/01/apache-derby.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4090537311621667228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4090537311621667228'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/01/apache-derby.html' title='Apache Derbyでドライブの空き容量を返す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-4967522357878713182</id><published>2011-01-20T10:47:00.003+09:00</published><updated>2011-06-23T22:01:04.386+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database_OrionSSH2'/><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><title type='text'>H2 DatabaseとOrion SSH2でサーバ上のファイルを列挙する関数を作成する</title><content type='html'>H2 DatabaseとOrion SSH2でサーバ上のファイルを列挙する関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists orionssh2_list_files as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import com.trilead.ssh2.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;ResultSet orionssh2_list_files(String host, String user, &lt;br /&gt;  String password, String path)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( host == null ){&lt;br /&gt;    throw new Exception(&amp;quot;server is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( password == null )password = &amp;quot;&amp;quot;;&lt;br /&gt;  if( path == null )path = &amp;quot;.&amp;quot;;&lt;br /&gt;&lt;br /&gt;  SimpleResultSet rs = new SimpleResultSet();&lt;br /&gt;  rs.addColumn(&amp;quot;PATH&amp;quot;, Types.VARCHAR, 1024, 0);&lt;br /&gt;&lt;br /&gt;  com.trilead.ssh2.Connection conn = null;&lt;br /&gt;  SFTPv3Client sftpc = null;&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    // サーバに接続&lt;br /&gt;    conn = new com.trilead.ssh2.Connection(host);&lt;br /&gt;    conn.connect();&lt;br /&gt;    if( !conn.authenticateWithPassword(user, password) ){&lt;br /&gt;      throw new Exception(&amp;quot;authentication failed.&amp;quot;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // SFTP client作成&lt;br /&gt;    sftpc = new SFTPv3Client(conn);&lt;br /&gt;    sftpc.setCharset(&amp;quot;UTF-8&amp;quot;);&lt;br /&gt;&lt;br /&gt;    // ファイル列挙&lt;br /&gt;    Vector files = sftpc.ls(path);&lt;br /&gt;    for(int fi=0;fi&amp;lt;files.size();fi++){&lt;br /&gt;      SFTPv3DirectoryEntry dirent = &lt;br /&gt;        (SFTPv3DirectoryEntry)files.get(fi);&lt;br /&gt;      rs.addRow(dirent.filename);&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( sftpc != null )sftpc.close();&lt;br /&gt;    if( sftpc != null )conn.close();&lt;br /&gt;  }&lt;br /&gt;  return rs;&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;select * from orionssh2_list_files('192.168.1.25', 'user', 'password', '.')&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;orion-ssh2-214.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update23, H2 Database 1.2.149 (2011-01-07)&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2011/06/h2-databaseorion-ssh2.html"&gt;H2 Database上でOrion SSH2を使用するユーザー定義関数のまとめ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-4967522357878713182?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/4967522357878713182/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databaseorion-ssh2.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4967522357878713182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/4967522357878713182'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databaseorion-ssh2.html' title='H2 DatabaseとOrion SSH2でサーバ上のファイルを列挙する関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-8346748224987922772</id><published>2011-01-19T10:05:00.000+09:00</published><updated>2011-01-19T10:05:00.210+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='FUSE'/><title type='text'>UbuntuでCurlFtpFSを使用して、FTPサーバ上のディレクトリをマウントする</title><content type='html'>UbuntuでCurlFtpFSを使用して、FTPサーバ上のディレクトリをマウントするには、以下の手順を実行します。&lt;br /&gt;&lt;br /&gt;1.CurlFtpFSのインストール&lt;br /&gt;sudo apt-get install curlftpfs&lt;br /&gt;&lt;br /&gt;2.FTPサーバ上のディレクトリのマウント&lt;br /&gt;mkdir ~/ftp&lt;br /&gt;curlftpfs -o user=user1:pass ftp://192.168.1.122/ ~/ftp&lt;br /&gt;ls ~/ftp&lt;br /&gt;&lt;br /&gt;3.アンマウント&lt;br /&gt;fusermount -u ~/ftp&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Ubuntu 10.10&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-8346748224987922772?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/8346748224987922772/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/01/ubuntucurlftpfsftp.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8346748224987922772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8346748224987922772'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/01/ubuntucurlftpfsftp.html' title='UbuntuでCurlFtpFSを使用して、FTPサーバ上のディレクトリをマウントする'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-2203038085519848041</id><published>2011-01-18T10:51:00.001+09:00</published><updated>2011-01-18T10:51:00.131+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='hadoop'/><title type='text'>H2 DatabaseとHadoopでBLOBをHDFS上にアップロードする関数を作成する</title><content type='html'>H2 DatabaseとHadoopでBLOBをHDFS上にアップロードする関数を作成するには、以下のスクリプトを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists hdfs_put_binary as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import org.apache.hadoop.conf.*;&lt;br /&gt;import org.apache.hadoop.fs.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer hdfs_put_binary(String uri, String user, &lt;br /&gt;  String path, Blob blob)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( uri == null ){&lt;br /&gt;    throw new Exception(&amp;quot;uri is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( path == null ){&lt;br /&gt;    throw new Exception(&amp;quot;path is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( blob == null ){&lt;br /&gt;    throw new Exception(&amp;quot;blob is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  FileSystem fs = FileSystem.get(&lt;br /&gt;    URI.create(uri), new Configuration(), user);&lt;br /&gt;&lt;br /&gt;  FSDataOutputStream fos = null;&lt;br /&gt;  InputStream bis = null;&lt;br /&gt;  byte buf[] = new byte[8192];&lt;br /&gt;  int rs = 0;&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    bis = blob.getBinaryStream();&lt;br /&gt;    fos = fs.create(new Path(path));&lt;br /&gt;    while( (rs = bis.read(buf)) != -1 ){&lt;br /&gt;      fos.write(buf, 0, rs);&lt;br /&gt;    }&lt;br /&gt;    fos.flush();&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( bis != null )bis.close();&lt;br /&gt;    if( fos != null )fos.close();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  return new Integer(0);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;drop table if exists blobtest;&lt;br /&gt;create table blobtest (c1 numeric(4), c2 blob);&lt;br /&gt;insert into blobtest values (1, &lt;br /&gt;  hdfs_get_binary(&lt;br /&gt;  'hdfs://192.168.1.81:9000/',&lt;br /&gt;  'hadoop', '/opt/hadoop-data/SF.JPG')&lt;br /&gt;);&lt;br /&gt;select hdfs_put_binary(&lt;br /&gt;  'hdfs://192.168.1.81:9000/',&lt;br /&gt;  'hadoop', '/opt/hadoop-data/SF_bak.JPG', c2)&lt;br /&gt;from blobtest &lt;br /&gt;where c1 = 1;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;hadoop-common-0.21.0.jar&lt;br /&gt;hadoop-hdfs-0.21.0.jar&lt;br /&gt;log4j-1.2.15.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update22, Hadoop 0.21.0, H2 Database 1.2.147 (2010-11-21)&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;CentOS5.5にHadoop0.21.0をインストールする&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2010/10/centos55hadoop0210.html" target="_blank"&gt;http://serverarekore.blogspot.com/2010/10/centos55hadoop0210.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-2203038085519848041?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/2203038085519848041/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databasehadoopblobhdfs.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/2203038085519848041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/2203038085519848041'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databasehadoopblobhdfs.html' title='H2 DatabaseとHadoopでBLOBをHDFS上にアップロードする関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-8942804611355433877</id><published>2011-01-17T10:43:00.001+09:00</published><updated>2011-01-17T10:43:00.251+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='hadoop'/><title type='text'>H2 DatabaseとHadoopでCLOBをHDFS上にアップロードする関数を作成する</title><content type='html'>H2 DatabaseとHadoopでCLOBをHDFS上にアップロードする関数を作成するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias if not exists hdfs_put_ascii as $$ &lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import org.h2.tools.*;&lt;br /&gt;import org.apache.hadoop.conf.*;&lt;br /&gt;import org.apache.hadoop.fs.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;&amp;#64;CODE&lt;br /&gt;Integer hdfs_put_ascii(String uri, String user, &lt;br /&gt;  String path, Clob clob)&lt;br /&gt;  throws Exception&lt;br /&gt;{&lt;br /&gt;  if( uri == null ){&lt;br /&gt;    throw new Exception(&amp;quot;uri is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( user == null ){&lt;br /&gt;    throw new Exception(&amp;quot;user is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( path == null ){&lt;br /&gt;    throw new Exception(&amp;quot;path is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;  if( clob == null ){&lt;br /&gt;    throw new Exception(&amp;quot;clob is not specified.&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  FileSystem fs = FileSystem.get(&lt;br /&gt;    URI.create(uri), new Configuration(), user);&lt;br /&gt;&lt;br /&gt;  FSDataOutputStream fos = null;&lt;br /&gt;  InputStream ais = null;&lt;br /&gt;  byte buf[] = new byte[8192];&lt;br /&gt;  int rs = 0;&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    ais = clob.getAsciiStream();&lt;br /&gt;    fos = fs.create(new Path(path));&lt;br /&gt;    while( (rs = ais.read(buf)) != -1 ){&lt;br /&gt;      fos.write(buf, 0, rs);&lt;br /&gt;    }&lt;br /&gt;    fos.flush();&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    if( ais != null )ais.close();&lt;br /&gt;    if( fos != null )fos.close();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  return new Integer(0);&lt;br /&gt;}&lt;br /&gt;$$&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行例&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;drop table if exists clobtest;&lt;br /&gt;create table clobtest (c1 numeric(4), c2 clob);&lt;br /&gt;insert into clobtest values (1, &lt;br /&gt;  hdfs_get_ascii(&lt;br /&gt;  'hdfs://192.168.1.81:9000/',&lt;br /&gt;  'hadoop', '/opt/hadoop-data/test.txt')&lt;br /&gt;);&lt;br /&gt;select hdfs_put_ascii(&lt;br /&gt;  'hdfs://192.168.1.81:9000/',&lt;br /&gt;  'hadoop', '/opt/hadoop-data/test2.txt', c2)&lt;br /&gt;from clobtest &lt;br /&gt;where c1 = 1;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;hadoop-common-0.21.0.jar&lt;br /&gt;hadoop-hdfs-0.21.0.jar&lt;br /&gt;log4j-1.2.15.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update22, Hadoop 0.21.0, H2 Database 1.2.147 (2010-11-21)&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;CentOS5.5にHadoop0.21.0をインストールする&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2010/10/centos55hadoop0210.html" target="_blank"&gt;http://serverarekore.blogspot.com/2010/10/centos55hadoop0210.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-8942804611355433877?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/8942804611355433877/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databasehadoopclobhdfs.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8942804611355433877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/8942804611355433877'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databasehadoopclobhdfs.html' title='H2 DatabaseとHadoopでCLOBをHDFS上にアップロードする関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-1816228337373163309</id><published>2011-01-16T10:24:00.000+09:00</published><updated>2011-01-16T10:24:00.164+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='hadoop'/><title type='text'>H2 DatabaseとHadoopでHDFS上のファイルをBLOBとして返す関数を作成する</title><content type='html'>H2 DatabaseとHadoopでHDFS上のファイルをBLOBとして返す関数を作成するには、以下の手順を実行します。&lt;br /&gt;&lt;br /&gt;1.以下のソースファイルをantなどでコンパイルします。&lt;br /&gt;HdfsGetBinaryFunction.java&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;package&lt;/span&gt; com&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;serverarekore&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;h2&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;io&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;sql&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; org&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;h2&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;tools&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; org&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;apache&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;hadoop&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;conf&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; org&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;apache&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;hadoop&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;fs&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;net&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;public class&lt;/span&gt; HdfsGetBinaryFunction&lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;static public&lt;/span&gt; &lt;span style="color:#0080c0"&gt;InputStream&lt;/span&gt; &lt;span style="color:#004466"&gt;hdfs_get_binary&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0"&gt;String&lt;/span&gt; uri&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; &lt;br /&gt;    &lt;span style="color:#0080c0"&gt;String&lt;/span&gt; user&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; &lt;span style="color:#0080c0"&gt;String&lt;/span&gt; path&lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;throws&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Exception&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt; uri &lt;span style="color:#ff0080; font-weight:bold"&gt;==&lt;/span&gt; null &lt;span style="color:#ff0080; font-weight:bold"&gt;){&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;throw new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Exception&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#a68500"&gt;&amp;quot;uri is not specified.&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt; user &lt;span style="color:#ff0080; font-weight:bold"&gt;==&lt;/span&gt; null &lt;span style="color:#ff0080; font-weight:bold"&gt;){&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;throw new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Exception&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#a68500"&gt;&amp;quot;user is not specified.&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt; path &lt;span style="color:#ff0080; font-weight:bold"&gt;==&lt;/span&gt; null &lt;span style="color:#ff0080; font-weight:bold"&gt;){&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;throw new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Exception&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#a68500"&gt;&amp;quot;path is not specified.&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    FileSystem fs &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; FileSystem&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;get&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#0080c0"&gt;URI&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;create&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;uri&lt;span style="color:#ff0080; font-weight:bold"&gt;),&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;Configuration&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(),&lt;/span&gt; user&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0080c0"&gt;InputStream&lt;/span&gt; ris &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; null&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt; fs&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;exists&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#004466"&gt;Path&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;path&lt;span style="color:#ff0080; font-weight:bold"&gt;)) ==&lt;/span&gt; false &lt;span style="color:#ff0080; font-weight:bold"&gt;){&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; null&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0080c0"&gt;InputStream&lt;/span&gt; is &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; fs&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;open&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#004466"&gt;Path&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;path&lt;span style="color:#ff0080; font-weight:bold"&gt;));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;final&lt;/span&gt; &lt;span style="color:#0080c0"&gt;File&lt;/span&gt; tf &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#0080c0"&gt;File&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;createTempFile&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#a68500"&gt;&amp;quot;lobtmp&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; null&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0080c0"&gt;FileOutputStream&lt;/span&gt; fos &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;FileOutputStream&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;tf&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;getAbsolutePath&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;());&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#8080c0; font-weight:bold"&gt;byte&lt;/span&gt; buf&lt;span style="color:#ff0080; font-weight:bold"&gt;[] =&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;byte&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#800080; font-weight:bold"&gt;8192&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;];&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#8080c0; font-weight:bold"&gt;int&lt;/span&gt; rs &lt;span style="color:#ff0080; font-weight:bold"&gt;= -&lt;/span&gt;&lt;span style="color:#800080; font-weight:bold"&gt;1&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;try&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;while&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;( (&lt;/span&gt;rs &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; is&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;read&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;buf&lt;span style="color:#ff0080; font-weight:bold"&gt;)) != -&lt;/span&gt;&lt;span style="color:#800080; font-weight:bold"&gt;1&lt;/span&gt; &lt;span style="color:#ff0080; font-weight:bold"&gt;){&lt;/span&gt;&lt;br /&gt;        fos&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;write&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;buf&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; &lt;span style="color:#800080; font-weight:bold"&gt;0&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; rs&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;finally&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt; fos &lt;span style="color:#ff0080; font-weight:bold"&gt;!=&lt;/span&gt; null &lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;fos&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;close&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;();&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt; is &lt;span style="color:#ff0080; font-weight:bold"&gt;!=&lt;/span&gt; null &lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt;is&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;close&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;();&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    ris &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;InputStream&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(){&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;private final&lt;/span&gt; &lt;span style="color:#0080c0"&gt;InputStream&lt;/span&gt; fis &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;new&lt;/span&gt; &lt;span style="color:#0080c0"&gt;FileInputStream&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;tf&lt;span style="color:#ff0080; font-weight:bold"&gt;);&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;private&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;boolean&lt;/span&gt; deleted &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; false&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;private final&lt;/span&gt; &lt;span style="color:#0080c0"&gt;File&lt;/span&gt; fn &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; tf&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;public&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#004466"&gt;autoDelete&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#8080c0; font-weight:bold"&gt;int&lt;/span&gt; sz&lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;throws&lt;/span&gt; &lt;span style="color:#0080c0"&gt;IOException&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;sz &lt;span style="color:#ff0080; font-weight:bold"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#800080; font-weight:bold"&gt;0&lt;/span&gt; &lt;span style="color:#ff0080; font-weight:bold"&gt;){&lt;/span&gt;&lt;br /&gt;          &lt;span style="color:#004466"&gt;close&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;();&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; sz&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;public&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;void&lt;/span&gt; &lt;span style="color:#004466"&gt;close&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;()&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;throws&lt;/span&gt; &lt;span style="color:#0080c0"&gt;IOException&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;if&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;( !&lt;/span&gt;deleted &lt;span style="color:#ff0080; font-weight:bold"&gt;){&lt;/span&gt;&lt;br /&gt;          fis&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;close&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;();&lt;/span&gt;&lt;br /&gt;          fn&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;delete&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;();&lt;/span&gt;&lt;br /&gt;          deleted &lt;span style="color:#ff0080; font-weight:bold"&gt;=&lt;/span&gt; true&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;public&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#004466"&gt;read&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#8080c0; font-weight:bold"&gt;byte&lt;/span&gt; buf&lt;span style="color:#ff0080; font-weight:bold"&gt;[],&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;int&lt;/span&gt; off&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;int&lt;/span&gt; len&lt;span style="color:#ff0080; font-weight:bold"&gt;)&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;throws&lt;/span&gt; &lt;span style="color:#0080c0"&gt;IOException&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; deleted?&lt;span style="color:#ff0080; font-weight:bold"&gt;-&lt;/span&gt;&lt;span style="color:#800080; font-weight:bold"&gt;1&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#004466"&gt;autoDelete&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;fis&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;read&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;buf&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; off&lt;span style="color:#ff0080; font-weight:bold"&gt;,&lt;/span&gt; len&lt;span style="color:#ff0080; font-weight:bold"&gt;));&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;public&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#004466"&gt;read&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#8080c0; font-weight:bold"&gt;byte&lt;/span&gt; buf&lt;span style="color:#ff0080; font-weight:bold"&gt;[])&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;throws&lt;/span&gt; &lt;span style="color:#0080c0"&gt;IOException&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; deleted?&lt;span style="color:#ff0080; font-weight:bold"&gt;-&lt;/span&gt;&lt;span style="color:#800080; font-weight:bold"&gt;1&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#004466"&gt;autoDelete&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;fis&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;read&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;buf&lt;span style="color:#ff0080; font-weight:bold"&gt;));&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;public&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#004466"&gt;read&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;()&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;throws&lt;/span&gt; &lt;span style="color:#0080c0"&gt;IOException&lt;/span&gt; &lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; deleted?&lt;span style="color:#ff0080; font-weight:bold"&gt;-&lt;/span&gt;&lt;span style="color:#800080; font-weight:bold"&gt;1&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#004466"&gt;autoDelete&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;(&lt;/span&gt;fis&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#004466"&gt;read&lt;/span&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;());&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#ff0080; font-weight:bold"&gt;};&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;return&lt;/span&gt; ris&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt; &lt;br /&gt;&lt;span style="color:#ff0080; font-weight:bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;build.xmlのサンプル&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;project&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;H2Functions&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;default&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;id&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;fileset&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;include&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;*.jar&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/fileset&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;pathelement&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;location&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;c:/Program Files/H2/bin/h2-1.2.147.jar&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/path&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;compile&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;echo&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;message&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;project: ${ant.project.name}&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;mkdir&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;javac&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;srcdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;src/&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destdir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build/&amp;quot;&lt;/span&gt; &lt;br /&gt;      &lt;span style="color:#8080c0; font-weight:bold"&gt;deprecation&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;debug&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;on&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;path&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;refid&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;lib.classpath&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/javac&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;jar&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;destfile&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;c:/share/jars/HdfsGetBinary.jar&amp;quot;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#8080c0; font-weight:bold"&gt;basedir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;name&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;clean&amp;quot;&lt;/span&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;delete&lt;/span&gt; &lt;span style="color:#8080c0; font-weight:bold"&gt;dir&lt;/span&gt;=&lt;span style="color:#a68500"&gt;&amp;quot;build&amp;quot;&lt;/span&gt; &lt;span style="color:#bb7977; font-weight:bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2.システム環境変数CLASSPATHにコンパイルしてできたHdfsGetBinary.jarを追加し、&lt;br /&gt;H2 Databaseのサービスを再起動。&lt;br /&gt;&lt;br /&gt;3.H2 Consoleから以下のコマンドを実行して、ファンクション作成。&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;create alias hdfs_get_binary for &lt;br /&gt;&amp;quot;com.serverarekore.h2.HdfsGetBinaryFunction.hdfs_get_binary&amp;quot;;&lt;/pre&gt;&lt;br /&gt;4.以下のようなSQLでHDFS上のファイルをBLOBに格納できます。&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;drop table if exists blobtest;&lt;br /&gt;create table blobtest (c1 numeric(4), c2 blob);&lt;br /&gt;insert into blobtest values (1, &lt;br /&gt;  hdfs_get_binary(&lt;br /&gt;  'hdfs://192.168.1.81:9000/',&lt;br /&gt;  'user', '/opt/hadoop-data/SF.JPG')&lt;br /&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;※以下のjarをCLASSPATH環境変数に追加&lt;br /&gt;hadoop-common-0.21.0.jar&lt;br /&gt;hadoop-hdfs-0.21.0.jar&lt;br /&gt;log4j-1.2.15.jar&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK6 Update22, Hadoop 0.21.0, H2 Database 1.2.147 (2010-11-21)&lt;br /&gt;&lt;br /&gt;関連情報&lt;br /&gt;CentOS5.5にHadoop0.21.0をインストールする&lt;br /&gt;&lt;a href="http://serverarekore.blogspot.com/2010/10/centos55hadoop0210.html" target="_blank"&gt;http://serverarekore.blogspot.com/2010/10/centos55hadoop0210.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6893066444640170817-1816228337373163309?l=serverarekore.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serverarekore.blogspot.com/feeds/1816228337373163309/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databasehadoophdfsblob.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1816228337373163309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6893066444640170817/posts/default/1816228337373163309'/><link rel='alternate' type='text/html' href='http://serverarekore.blogspot.com/2011/01/h2-databasehadoophdfsblob.html' title='H2 DatabaseとHadoopでHDFS上のファイルをBLOBとして返す関数を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6893066444640170817.post-4108457567652214615</id><published>2011-01-15T10:51:00.000+09:00</published><updated>2011-01-15T10:51:00.402+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='H2Database'/><category scheme='http://www.blogger.com/atom/ns#' term='hadoop'/><title type='text'>H2 DatabaseとHadoopでHDFS上のファイルをCLOBとして返す関数を作成する</title><content type='html'>H2 DatabaseとHadoopでHDFS上のファイルをCLOBとして返す関数を作成するには、以下の手順を実行します。&lt;br /&gt;&lt;br /&gt;1.以下のソースファイルをantなどでコンパイルします。&lt;br /&gt;HdfsGetAsciiFunction.java&lt;br /&gt;&lt;pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;package&lt;/span&gt; com&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;serverarekore&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;h2&lt;span style="color:#ff0080; font-weight:bold"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;io&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; java&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;sql&lt;span style="color:#ff0080; font-weight:bold"&gt;.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#bb7977; font-weight:bold"&gt;import&lt;/span&gt; org&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;h2&lt;span style="color:#ff0080; font-weight:bold"&gt;.&lt;/span&gt;tools&lt
