Entries from 2010-01-01 to 1 year

JavaでOSのコマンドを実行したい時は

Javaでバッチ開発をしていると、OSのコマンドを使いたくなるシーンがあります。例えば、以下のような場合などです。 ls コマンドで対象ディレクトリのファイル一覧を取得したい ping コマンドで、通信先サーバの状況確認をしたい そのような時に用いられるの…

JavaScriptの setTimeout関数の実行タイミングに関する誤解

JavaScriptの「setTimeout」は、(ミリ秒で)指定した時間後に、指定した関数を実行してくれるのですが、実は実行タイミングがややこしい!のです。私も誤解していました。 例えば、下記を実行すると、どうなるでしょうか? document.write("hoge\n"); setTi…

Javaの「可変長引数」

J2SE 5.0の新機能として追加された、「可変長引数」は普段あまり利用しませんが、共通メソッドに、任意の数のオプションを引数として渡せるようにしたい場合などに便利だと思います。 まず、「可変長引数」とは何かという話ですが、文字通り、あるメソッドの…

Slony-Iを停止させずにテーブルを追加する

Slony-Iを用いた非同期レプリケーションを構築している環境で、テーブル追加をする場合、やや面倒な手順を踏まないといけません。このあたりはMySQLのレプリケーションに劣るところですね。 手順の概要 Slony-I環境にテーブルを追加するには、以下の手順を実…

進捗管理ってどうしたらいいんだろうか

数年前から、PJリーダーとして仕事をすることが多くなり、「進捗管理」で悩むことが多かったのですが、以下の記事を読んで、少し光明が見えた気がしたので、忘れないように書いておこうと思います。 SEの残業しない仕事術 : モニタリング&コントロール(1…

MySQLのクエリキャッシュについて

今まで、MySQLのクエリキャッシュを利用することに何の懸念も持っていなかったのだけど、以下のような意見があり、今後は少し気をつけようと思っています。 確かにヒット率という観点でみると、エンドユーザ向けのWebサービスでは、意味が無さそう。 今までM…

FTP用ユーザの作成時の考慮点

FTP用のユーザを作成する時に考慮すべきポイントは、以下の2つです。 シェルログインを不可に設定 homeディレクトリをFTP用ディレクトリに変更 シェルログインを不可に設定 この設定は、セキュリティの観点で必要な設定です。 FTP用ユーザにまで、ログインさ…

PgpoolでのPreparedStatementのDEALLOCATE問題

Pgpool(ver 2.3.3)を使っていて、たまにDEALLOCATE*1に関するエラーが発生するので調査していました。 状況 Pgpoolログに、「DEALLOCATE pdo_stmt_00000001 message: prepared statement "pdo_stmt_00000001" does not exist」とエラー出力される PostgreSQL…

Apacheで圧縮してコンテンツ配信しよう

最近、スマートフォン向けのサイトなどが多くなりつつありますが、スマートフォンの場合、「(携帯キャリアの3G回線などの)細い回線」かつ「(JavaScriptなどを含んだ)リッチコンテンツ」という事情から、コンテンツのダウンロードが重く感じるということ…

CakePHPで複数テーブルに対するトランザクションを使う場合

CakePHPでトランザクションを使用する必要があったのですが、一般的に用いられている方法だと、複数のテーブルを1つのトランザクションとして更新したい場合、コントローラ内での実装がとても分かりにくくなると感じ、異なる実装方法をとってみたので、ご紹…

プロセス確認に便利なコマンド

プロセス確認する時、こんな感じでgrepしたりしますよね。でも若干面倒ですね。 [root]# ps -aef | grep httpd | grep -v grep そこで、「pgrep」コマンドを使います。 [root]# pgrep -lf httpd 1890 /usr/local/apache2/bin/httpd -f /usr/local/apache2/co…

PostgreSQLでエスケープ文字を利用する場合の注意

以下の例のように「nonstandard use of \\ in a string literal」とかログに出ててビビッた。 SELECT position ( 'C:\\\\aaa/bbb/sample.txt' in '\\\\' ) FROM hoge message: nonstandard use of \\ in a string literal 下記、引用の通り、エスケープ文字…

Linux環境下でのパフォーマンス問題調査

今、仕事で使っているパッケージ製品で、どうにもまったりと遅い画面操作があることに気付いたので、調査していました。今後の自分の参考情報として、作業記録を残しておくことにしました。 まずはtopコマンドで確認 OSのリソース状況確認をすれば、およそ検…

MySQLに重いSQLを投げて、帰って来ない時は

重い集計SQLなんかを実行したけど、いつまでたっても帰ってこない時の対処についてです。 まずは、topコマンドで確認します。大抵、以下の例のように、mysqldがリソースを使い切っています。 [root]# top top - 16:20:17 up 15 days, 6:50, 1 user, load ave…

cronの設定ファイルについて

バッチなどの自動実行でよく使うcronですが、実行ユーザ単位で設定すると思います。それらの情報は、下記のように「/var/spool/cron」配下にユーザ単位で保存されています。中身はcronの設定内容が記述されたテキストファイルです。 [root]# cd /var/spool/c…

よく使うPHPのコマンドラインオプション

個人的によく使う、PHPのコマンドラインオプションをまとめておきます。参考URL:サービス終了のお知らせ PHPのバージョンを確認 (php -v, php --version) [実行例] [root]# php -v PHP 5.2.9 (cli) (built: May 14 2009 20:58:31) Copyright (c) 1997-200…

PHPで一意な値を生成する

MySQLのレプリケーションのように、ステートメントベースのレプリケーションの場合には、auto_incrementなどの実行時に値が不定な関数は利用が推奨されません。従って、プログラム側で、一意となる値を生成する必要があります。そのような場合、PHPでは、以…

PostgreSQLでの「canceling autovacuum task」ログについて

PostgreSQLのログに、下記のエラーが出たので、調査してました。 ERROR: canceling autovacuum taskでも、「エラーではなく、あくまでキャンセル」とのことなので、気にすることはなさそう。*1原因としては、以下が想定できますが、頻繁に監視にひっかかると…

画像の上に自由に文字を配置する

こちら 「画像上の自由な位置に文字を重ねる方法 [ホームページ作成] All About」 を参考にまとめてみます。 実現方法のポイント スタイルシートの positionプロパティを利用 画像には、「position: relative;」を指定*1 文字には、「position: absolute;」…

viで行番号を表示

vi 実行中に以下の設定を行うと、行番号が表示されるようになります。 :set number 以下、実行結果の例です。 1 # 2 # This is the main Apache HTTP server configuration file. It contains the 3 # configuration directives that give the server its in…

wgetコマンドの使い方

基本 wget の構文は以下のようになっています。 wget -コマンドオプション (オプション引数) URL 基本の使い方はとても簡単で、wgetの後にURLを書けばいいだけです。以下のコマンドで、カレントディレクトリに index.html というファイルがダウンロードされ…

Apacheの.htaccessは極力使用しないこと

.htaccessとは Apacheの設定ファイルであるhttpd.confファイルとは親子関係 httpd.confが親で、.htaccessが子 特定のディレクトリだけの設定を行いたい場合に利用できる .htaccessを配置したディレクトリだけの設定が可能 共有サーバなどではhttpd.confは触…

Apacheのアクセスログに処理時間を出力する

WEBサイトへのリクエストがタイムアウトし、ブラウザがデータを受信できなくても、アクセスログ上は、HTTPのステータスコード200となります。Apacheは、ブラウザからの接続が切断されても、気にせずレスポンスを返して、ステータスコード200が記録されるよう…

historyコマンドの結果に日時も表示できるようにする

Linuxのhistoryコマンドで、実際にそれらのコマンドが実行された日時がわかればいいのになあと思っていたら、あったので方法を書いておきます。 まず、使用するためには、bash 3.0以降である必要がありますので、確認しておいてください。 [root]# bash -ver…

Slony-Iを利用する際の注意点

Slony-Iは、意外と運用が難しいので、構築時、または運用時における、注意点をまとめておきます。 ロードバランス機能は提供されない 複数のノードに対してデータの検索を振り分けたり、データの更新をマスタのみに送信したりするには、基本的にクライアント…

Pgpoolの各動作モードの使いどころ

Pgpoolには、以下のような動作モードがあり、用途によって使い分けることができます。それぞれの特徴やメリットをまとめた上で、各動作モードの使いどころを整理してみたいと思います。特にレプリケーション機能に関する違いがポイントとなります。 ここでは…

PHPのコンパイルオプションの調査

方法1.cat config.nice コンパイルした(はずの)ディレクトリに移動して「config.nice」ファイルの中身を確認します。 以下、コマンド実行例。 [root]# cat config.nice #! /bin/sh # # Created by configure './configure' \ '--with-apxs2=/usr/local/a…

grepでマッチする行以外に、前後の行も表示させたい場合

ソースをgrepを使って調査していると、改行の影響で本当に見たいところが見えず、結局、view,lessなどで中身を確認するという手間が発生することが多いです。 [root]# grep useTable users.php var $useTable = array( そこで、便利なのが「-表示したい行数…

CakePHPで「Warning (2): Illegal offset type」が出てたので調べた

CakePHPで画面を開発しているのですが、開発環境で画面に「Warning (2): Illegal offset type・・・」なんて出てるみたいだったので、ちょっと見てた。 原因 このメッセージは何かというと、PHPの配列に関するエラーで、連想配列のキーに「配列」を指定した…

PostgreSQL 8.3 から型チェックが厳密になっている件

PostgreSQL 8.3 からは、自動キャストがなくなり、SQLにおける型チェックが厳密化されたようです。 理由は、下記のように説明されています。 この変更の理由は自動キャストによって驚くような振舞いを引き起していたためです。 http://osb.sra.co.jp/technol…