演題: pgpool-IIのオンラインリカバリ、およびPITRの概要バージョン8.0で導入されたPITRによって、PostgreSQLの耐障害性は大きく向上しました。また、PostgreSQL専用のレプリケーションソフトpgpool-IIにはPITRを巧妙に使ったオンラインリカバリ機能が実装されています。今回はpgpool-IIのこの機能の説明を行います。またその説明を通して、PostgreSQLのPITRの概要、特にアーカイブログやControlFileやBackupLabelなどの登場人物について簡単な紹介を行い、PostgreSQL理解の手がかりを提供したいと思います。
2009/2/14(土)にPostgreSQLのしくみ勉強会を開催します。
お題は「pgpool-IIのオンラインリカバリ、およびPITRの概要」です。ぜひご参加ください。
なぜベンチャーなの?
たまには仕事論でも書いてみます。
そろそろ就活の時期ですね。
ウチのような無名のベンチャーは、新卒公募してもなかなかこなくて苦戦してたりします。
なんでもこの不況で大手志向が強まっているんだとか。
javaでftp接続テストプログラム(commons-ftp)
FTP接続テストでなんだかよくわからない状況になってしまったときのために簡単なFTP接続テストプログラムを作ったので、ついでに公開します。
commons-net 2.0を使ってます。
もしかしたら動かないかも?動かなかったらゴメンナサイで。
エラー処理とかもろもろはちゃんとしていないので、あくまでご参考までということでよろしくお願いします。
2009.7.7追記: コメントでご指摘いただいたエラー処理を少し追加しました。少しだけ立派になった!
package jp.netmark.ftptest; import java.io.IOException; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; public class Ftptest { /** * @param args */ public static void main(String[] args) { if (args.length != 3) { System.err .println("args[0]=host, args[1]=username, args[2]=password"); System.exit(1); } String address = args[0]; String username = args[1]; String password = args[2]; boolean passiveOK = execute(address, username, password, true); boolean activeOK = execute(address, username, password, false); System.out.println("------------------------"); System.out.println("Check Result:"); System.out.println("Passive Mode\t=>" + (passiveOK ? "OK" : "NG")); System.out.println("Active Mode\t=>" + (activeOK ? "OK" : "NG")); } private static boolean execute(String address, String username, String password, boolean usePassiveMode) { boolean success = false; FTPClient client = new FTPClient(); try { System.out.println("connect"); client.connect(address); System.out.println(client.getReplyString()); client.login(username, password); System.out.println(client.getReplyString()); if (!FTPReply.isPositiveCompletion(client.getReplyCode())) { System.out.println("*** Login Failed ***"); client.disconnect(); return false; } if (usePassiveMode) { client.enterLocalPassiveMode(); System.out.println(client.getReplyString()); } else { client.enterLocalActiveMode(); System.out.println(client.getReplyString()); } client.pwd(); System.out.println(client.getReplyString()); String fileNames[] = client.listNames(); success = FTPReply.isPositiveCompletion(client.getReplyCode()); System.out.println(client.getReplyString()); if (fileNames != null) { for (int i = 0; i < fileNames.length; i++) { System.out.println(fileNames[i]); } } client.logout(); System.out.println(client.getReplyString()); client.disconnect(); } catch (Exception e) { if (client.isConnected()) { try { client.disconnect(); } catch (IOException ignore) { } } e.printStackTrace(); } return success; } }
Firebugの致命的な欠陥を修正する方法
もはや必須機能のFirebugですが、以前やっていたプロジェクトでは例のゴキブリホタルのアイコンのせいで女性陣から利用を拒否されました;;
そんなFirebugの致命的な欠陥を修正する方法がこちら
⇒Firebugの虫アイコンを変更する方法
firefox 3.0.5 on Windows Vista + Firebug 1.3.0 の場合、下記のファイルを書き換えました
C:\Users<i>ユーザ名\AppData\Roaming\Mozilla\Firefox\Profiles<i>なんかランダムな英数字.default\extensions\firebug@software.joehewitt.com\skin\classic</div>
[Read More]
firebug16.png
firebug24.png
firebug32.png
firebug.png
firebug-gray-16.png
↓すごくいい感じになりました!firebug24.png
firebug32.png
firebug.png
firebug-gray-16.png
BP Study#17に参加しました
毎月恒例:Be Proudさん主催の勉強会 BP Study に参加してきました。
今回は開発ネタで、O/Rマッパー対決の続きでした。
3つのうち、MS系が1つ、Pythonが2つ、となかなか偏った構成で楽しかったです。
自分は開発から離れて久しいですが、、、しかも業務で開発したことあるのはJavaだけですが、SQLAlchemyが持つHibernate的なLazy Loadingのしくみなんかは、知っておくだけでチューニングの時に参考になりますね。
懇親会はshohu33さんたちと、MySQLネタや仮想マシンのネタ、UNIXネタなど楽しく話させてもらいました。
2次会は一転して会社のスタイルやライフスタイルの話を立ち飲み屋で。こちらも楽しかったです。
やっぱり合宿とかするべきですよね。24/365の会社には若干ハードル高いのが難点です。。。
その後はいつもどおり(?)朝まで楽しく飲ませていただきました。
また次回もよろしくおねがいします!
[Read More]
MySQLチューニングの基本ツール - MySQL Tuner
MySQLをチューニングする時に、基本的な事項をチェックするツールとして便利なものがあったのでご紹介。
1ファイルのperlプログラムなので、ダウンロードして実行権限設定すれば簡単に実行できます。
↓実行結果はこんな感じ。カラーで安心。
細かい見方は、またおいおい。
[Read More]
URLの最大文字数
URLの最大文字数の制限について、改めて調べてみました。
URIではなく、URLについて。
URLなのでHTTPだろう、ということでRFC 2616をチェック。すると・・・
The HTTP protocol does not place any a priori limit on the length of a URI. Servers MUST be able to handle the URI of any resource they serve, and SHOULD be able to handle URIs of unbounded length if they provide GET-based forms that could generate such URIs. A server SHOULD return 414 (Request-URI Too Long) status if a URI is longer than the server can handle (see section 10.4.15).
Note: Servers ought to be cautious about depending on URI lengths above 255 bytes, because some older client or proxy implementations might not properly support these lengths. [Read More]
[読書]デジタルネイティブ
NHKスペシャルの放送当時(2008.11.10)はTVを持っていなかったので、本で興味深く読ませてもらいました。
デジタルネイティブの細かい定義とか、誰が入る/誰が入らないなどは不毛なのでやめておくとして。。。
単純に、インターネットの歴史が一回りして、健全に成長している姿が見てとれてとても嬉しいです。
ふた昔前、インターネットは実名でやりとりする場でした。
その後、(日本だけかもしれないけど)匿名性がクローズアップされて「無責任なユーザによる無法地帯」のイメージがついたように感じます。
でも今、ふたたび実名(もしくは特定のハンドルにより中の人を特定できる形)でのコミュニケーションの場に戻ってきています。
それによって、再び活用できるツールとして復権してきたことがとても嬉しいです。
そのベースには個人が自立していること、これがあるように感じます。
物事の判断、人生のコントロールは自分の責任において、自分でする。
この覚悟がある/なしが、フラットな感覚の有無・リテラシーの高さに結びついているように感じます。
はてなが情報共有型で経営できているのは、メンバーが自立した人ばかりだからなのではないかな~と思います。。
(はてなに知り合いがいないので、あくまで推測ですが)
もう1点気になったのは、ワールドワイドに活躍するデジタルネイティブの姿。
インターネットが世界中で利用できることによって、コミュニケーション・情報共有の対象が「言語圏」に拡大しました。
本書でも、インド系アメリカ人の少年がイギリス人と仕事をする例が挙げられてます。
また、何かのwebサービスを作ったら、まず対象はその言語圏になります(他言語版は翻訳が必要)。
そうなんです。日本語って、あんまりインターネットを有効に使えていないかもしれない。
この状況をどう乗り越えるべきか。。。国家レベルで真剣に考える必要がありそうです。
Windows VISTAで休止状態が使えなくなった
タイトルの通り、とある日からWindows VISTAで休止状態が使えなくなってしまいました。。。
BIOSの設定を見ても、有効になってるし、、、ということでWindowsのヘルプを見て下記を発見
[Microsoft サポート オンライン]ディスク クリーンアップ ツールを使用した後に Windows Vista でハイブリッド スリープ機能と休止状態機能が使用できなくなることがある
管理者権限でコマンドプロンプトを起動して
powercfg -h on
で解決しました。※管理者ユーザーでも、管理者権限で操作しないとダメです。
ヘルプが優秀で助かりました。
[Read More]