nmtysh.log

Tech系のネタや日々の独り言などを書いています。

プログラミング

ApacheとPHPとメモリリーク

Webサーバーを複数台構成にして運用している環境があるのだが、アクセスが集中した際にある条件下で特定のサーバーでのみメモリリークが発生してしまう。 メモリリークの発生したサーバーを切り離しても、別のサーバーでは起きず、切り離したサーバーを戻す…

MaxMemFree まわりのソースコード読み

最近 MaxMemFree をいじっているのですが、この値の効果を調べている時に気なるページを見つけました。 2011年の投稿なので少々古いですが、その中で I repeated the test and did not see desired effect advertised by the documentation. Then I read in …

MacでEclipse内のスクロールが遅い件の暫定対応

少し前の事になりますが、業務で使うPCがWindowsからMacに変わりました。 普段からターミナルで作業することが多いので、MacになってCLIが使いやすくなって喜んでいたのですが、Eclipseで不満が。 (Eclipseの)テキストエディタのスクロールがむちゃくちゃ遅…

すべてのUnitテストを個別に実行する方法

CakePHPのUnitテストで個別に実行する場合とAllTestsで結果が異なる問題が起きています。 他のテストの影響を受けているみたいなのですが、全部のUnitテストを手動で実行するのは骨が折れます。 なので、シェルスクリプトとまでは行きませんが、ファイルごと…

Google Apps Script で死活監視を行う

業務でWebサイトを構築すると大抵サービスの監視を行います。 ほとんどの場合は会社のネットワーク内に監視サーバーがあると思いますが、外部ネットワークのエラーによる不通は把握できないかと思います。 なので、ネットワーク障害に備えて外部からも監視を…

CakePHP の $useDbConfig にはまった(備忘録)

結論: FixtureのuseDbConfigでDataSourceを指定するには、対になるDataSourceが定義されてないと駄目でした。 例) $test_hoge = array(/* ... */); なら $hoge = array(/* ... */); が定義されてないと駄目。 動的にDBの接続先を切り替えるプログラムを書い…

Ubuntu 12.04 に Oracle Java 7 をインストールする

Ubuntu 12.04 に Sun(Oracle) の Java(JDK) 7 をインストールします。 1. Java SE Downloads から Java SE Development Kit 7 Update 25 をダウンロードします。(例: jdk-7u25-linux-i586.tar.gz をダウンロードしたものとします) 2. ダウンロードしたファイ…

session.use_trans_sid を使わずに CakePHP 2.3 でURLにセッションIDを付与する方法

Cookie が使えないブラウザではURLにセッションIDを付与してセッションを引き回します。 PHP だと session.use_trans_sid を1にすることで、 PHP が透過的にセッションIDの付与を行ってくれます。 ですが、付与のタイミングが問題で以前書いたようにブラウザ…

CakePHP と Content-Length と imodeブラウザ(未解決)

携帯電話(いわゆるFP:フィーチャーフォン)向けの、Webサイトを構築中な訳だが、Cookieが使えない下位端末への対応に悪戦苦闘中。 Cookieが使えない場合はセッション情報を引き継ぐ手段としてURLにセッションIDを付与するわけだが、このセッションIDの付与処…

beforeSave() でDBを切り替える

Master/Slave なレプリケーションをしている場合、更新系は MasterDB に変更します。 CakePHP だと $this->useDbConfig を書き換える必要があります。 今までだと Model.php の save($data, $validate, $fieldList) をオーバーライドする必要がありました。 …

モジュールで定義したAPI(DLL)呼び出す関数を使う時の落とし穴?

HSPで久々に嵌りました。 外部DLLの命令を使う関数群をモジュール化して使っていたのですが、 プログラムを修正した時に急に命令が実行できなくなりました。 エラーの内容は「error 2 : 文法が間違っています」ですが、エラー箇所はいじってないんですよね。…

Ubuntu 12.04 に Sun Java をインストールする

Ubuntu 12.04 に Sun(Oracle) の Java(JDK) をインストールします。 1. Java SE Downloads から Java SE Development Kit 6 Update 35 をダウンロードします。(例: jdk-6u35-linux-i586.bin をダウンロードしたものとします) 2. ダウンロードしたファイルを…

Ricty フォントをビルドする

プログラミングに最適な Ricty(リクティ) というフォントがあります。 以前は、配布元でフォントが配布されていましたが、現在はライセンスの関係で自分でビルドする必要があります。 しかし、シェルスクリプトが配布されているため簡単にビルドすることがで…

Ubuntu 11.04 に Eclipse 3.7 をインストールする

Ubuntu 11.04 に Eclipse 3.7 をインストールします。 1. eclipse 3.7(Indigo) をまずはダウンロードします。 ダウンロードページの右のDownload Links から Linux 32-bit を選び、ダウンロードします。 私は ~/Downloads/eclipse-java-indigo-SR2-linux-gtk…

iosched を読む 3 AndroidManifest.xml

AndroidManifest.xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.google.android.apps.iosched" android:versionCode="16" android:versionName="0.16" android:installLocation="auto"> <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="11" /> Android API Leve…</uses-sdk></manifest>

iosched を読む 2 Eclipse にインポートする

ダウンロードした iosched のソースを Eclipse にインポートします。 1. Eclipse の[ファイル]->[新規]->[Androidプロジェクト]を選択します。 2. "外部のソースからプロジェクトを作成"を選択します。 3. Location にioschedのフォルダにあるandroidフォル…

iosched を読む 1 ソースを入手する

iosched のソースを読みたいと思います。まずは、ソースを入手するところから始めます。 iosched の Source Checkout ページを見ると、 hg clone https://code.google.com/p/iosched/ とありますので、その通りに実行します。 hg コマンドは Mercurial のコ…

rails generate に失敗する

Ubuntu 11.04 で rails generate したときにこんなエラーが表示されました。 ${HOME}/.rvm/gems/ruby-1.9.3-p194/gems/execjs-1.3.2/lib/execjs/runtimes.rb:50:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/…

Timer で関数が実行されない。

Flash Builder 4.6 にて、こう書くと何故か実行されない。 var timer:Timer = new Timer(400, 1); timer.addEventListener(TimerEvent.TIMER, hogehoge); timer.start(); protected function hogehoge():void { // hogehoge } なので、無名関数を一段かませ…

Dropbox の Cache 削除用シェルスクリプト(改2)

Dropbox の Cache 削除用シェルスクリプト(改) のスクリプトだと上手くいかない様なので修正。 旧:(8~12行目) # キャッシュフォルダのパスを取得 dropbox_folder=$(sqlite3 "${HOME}/.dropbox/config.db" "select value from config where key = 'dropbox_p…

Flex 4.5: TextInput と IME ON での入力(バグっぽい)

Adobe Flash Builder(以下、Flash Builder) 4.5 でコンパイルした swf な TextInput に IME を ON の状態にして入力すると、最後に確定した文字列が TextInput に入力されない。 表示上は入力されているように見えるのだが、 textInput.text には入力されて…

pg_query_params() で boolean を扱う

pg_query_params() で boolean な変数を渡すとエラーになるのでその対策。 pg_query_params($query, array(($flag ? 'TRUE' : 'FALSE'))); boolean の代わりに 'TRUE'("TRUE") / 'FALSE'("FALSE") を渡してあげる。 これバグな気がするんだが… おまけ: Postg…

Ubuntu 11.04 に Sun Java をインストールする

手動で Ubuntu 11.04 に Sun(Oracle) の Java(JDK) をインストールします。 1. Java SE Downloads から Java SE Development Kit 6 Update 30 をダウンロードします。(例: jdk-6u30-linux-i586.bin をダウンロードしたものとします) 2. ダウンロードしたファ…

Flash Builder メモ

名前の変更は鬼門。 ファイル名の変更のつもりが、変数も一緒に変更されたり、逆もしかり。 リファクタリング機能が微妙。

Androidメモ: リソース名

string.xml やら layout やら当たり前だけど、 Java の予約語は使えない。と言うことを忘れてた。 何でエラーが出るのか、しばらく悩んだのだけれど、import.xml とか <string name="import">~~</string> これ思いっきり予約語だった。そりゃ、エラーが出るよね。 エラーのメッセージから…

Androidメモ: 通話中かどうかを取得する

TelephonyManager.getCallState() を使用して通話中かどうかを判定する。 .getCallState() にはパーミッションは不要。 TelephonyManager tManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); switch (tManager.getCallSta…

PHPメモ: シングルクオートとダブルクオート

シングルクオート(')で文字列を指定すると円記号(\)などがエスケープされてしまうようだ。 ダブルクオート(")だとエスケープされない。 Linux での扱いと同じ感じ。 echo 'aaa\nbbb' <- 改行されない echo "aaa\nbbb" <- 改行される

Android: Ringtone のメモ書き

Ringtone の取得 Ringtone ringtone = RingtoneManager.getRingtone(context, Uri.parse(uri)); 通知音量の設定で再生する ringtone.setStreamType(AudioManager.STREAM_NOTIFICATION); ringtone.play();

PHP: 文字エンコーディングは UTF-8(BOMなし) で保存すること!

.php なファイルを UTF-8(BOM) で保存すると IE なんかで BOM が認識されない事がありデータ内にゴミとして残る場合があるので、 UTF-8(BOMなし) で保存すること。 require や include すると UTF-8(BOM) の場合は、それぞれのファイル先頭に付いている BOM …

Android: マナーモードの判定をする

マナーモードにすると着信音は鳴りませんが、アプリなどの音(メディア)は再生されてしまいます。 自作アプリ内で音を鳴らすときにマナーモードかどうかをチェックしておくと、親切なアプリになるでしょう。 AudioManager audioManager = (AudioManager)Conte…