nmtysh.log

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

プログラミング

第6感がささいてバグが見つかった

風呂に入っている時や寝る直前になって唐突に 「今日(あるいは先日)開発してたあの部分のコードに○○○な問題があるんじゃないのか?」 とひらめく時があります。 取り越し苦労なこともありますが、調べてみると問題が見つかることもしばしば。 今日も昨日の夜…

ネストしたトランザクションに久々に嵌った

データ変更のバッチ処理を書いて、検証して「よしOK」となりローカルの環境に本適用しました。 その後、念のため同一処理を再実行しても再適用されないことを検証したら何故か適用されちゃいました。 検証中は意図的にトランザクション処理をrollback()する…

dockerのphp:7-fpm-alpineイメージでCakePHP3を動かす

※この記事はQiitaにも掲載しています。 nmtysh.hatenablog.com PHP7を試すためのdocker-compose.ymlを作って、CakePHPをいざ試そうとすると色々モジュールが足りなかったり、VirtualBoxでBoot2Dockerを動かしているために発生する問題があったので、その対処…

せっかくの連休なので……

せっかくの連休なので、できていなかったPHP7/CakePHP3とかRubyとかに手を出そうとしつつ、環境準備の段階で手こずってます。 下手にDockerでと考えずにVagrant+Ansible辺りで準備すれば良かったかなー。 まぁDockerについても勉強ということで。 と、こんな…

listen.allowed_clientsに空白を入れてはいけない

PHP-FPMで接続を許可するFastCGIクライアントの一覧を設定するパラメータに listen.allowed_clients があります。 接続を許可されている FastCGI クライアントの ipv4 アドレス一覧。オリジナル版 PHP FastCGI (5.2.2+) における環境変数 FCGI_WEB_SERVER_AD…

意図しない挙動があるが原因はどこにある?

「プログラムは書いたとおりにしか動かない」 まぁ自明なんですが。 意図したとおりに動いていないということは、何か考慮がもれているところがあるわけで。 だけども、そこが判らない。 事象は起きている。 けれども、再現ができない。 再現できれば、原因…

CakePHP 2.xのElementのCacheは入れ子にできない

CakePHPでViewのElementでキャッシュが利用できます。 利用できますが、キャッシュ生成処理の処理上、入れ子になったElementで親と子の両方でCacheを使うとCacheがおかしくなります。 親のElement(ここではAとします)で、Elementの処理時にCacheのconfigを生…

rename後にはchmodが必要だった

意図したパーミッションにならない 対象Ver: 5.5.x ファイルシステムにファイルを吐き出すCakePHPのコードを書いたのですが、作成したファイルが意図したパーミッションになりませでした。 ファイルを作成した流れ 一時ファイル作成(パーミッションは0644を…

iMacrosでフォームを送信する

Webブラウザの操作を自動化できるツールの一つに iMacros というものがあります。 同じ操作を繰り返す必要があったので、iMacrosで自動化することにしました。 まずは記録 ユーザーの操作を記録して、その操作をスクリプト化してくれます。 URL GOTO=http://…

テストパターンを上手くまとめられるようになりたい

関数のテストコードを書くときに、幾つものパターンをどうまとめるのが一番良いのか悩んでいます。 単純なパターンであれば、それぞれの入力値、期待する出力値を配列にまとめることでfor文(foreach文)で回してテストコードをコンパクトにすることができます…

PDF.jsのCORS対応に注意!

Allow foriegn origin URLs only for hosted viewers. by yurydelendik - PR #6916 - mozilla/pdf.js で、デフォルトだと同一サーバー上のファイルのみに読み込みが制限されました。 Please notice that generic/demo viewer blocks this functionality if d…

FormHelperでoptgroupを使う場合はshowParentsをtrueにする

CakePHPのFormHelperを使ってselectのoptgroup/optionを出力したのですが、一部のoptionが出力されませんでした。 [ 1 => 'A', 2 => 'AA', 3 => 'AAA', 4 => 'AAAA' // <- これが出力されない ], 'BBBB' => [ 5 => 'B', 6 => 'BB', 7 => 'BBB', 8 => 'BBBB'…

nginxでレスポンスヘッダーにCache-Controlが含まれない場合がある

nginxを使ったシステムを構築した際につまずいたところがあったのでメモ。 ・0.2%の確率でレスポンスにCache-Controlヘッダー、Expiresヘッダーが付与されない nginx.conf で expires を使って上記ヘッダーを付与する設定にしていたのだけれど、何故かレスポ…

curlでログインする(備忘録)

curl -b cookie.txt -c cookie.txt --data "username=user&password=pass" "http://localhost/admin/login" -b でファイルに保存された cookie の送信。 -c で受信した cookie をファイルに保存。 --data で post データの送信をしています。 あとは、ログイ…

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フォル…