読者です 読者をやめる 読者になる 読者になる

「Test_mysqldというものができたけど、まだ問題があって悩んでいる件」が解決されてた

php

下記の件で悩んでたもの。 Test_mysqldというものができたけど、まだ問題があって悩んでいる件 - メメメモモ対応されていました。 taiyoh/Test_mysqld-phpregister_shutdown_function()というものがあったのですね。 PHP: register_shutdown_function - Manu…

perlのデコードとエンコードについて(1)

デコードする ある文字列が何文字あるのかを求めるプログラムを書くとします。 perlにはlengthという関数があるので、これを使って以下の様なプログラムを書きました。 # UTF-8で保存したファイル use strict; use warnings; my $str = 'ハローワールド'; my…

DKIMの導入手順

公開鍵と秘密鍵を作成 DKIMで使用する公開鍵と秘密鍵は、OpenDKIMというツールを使って作成します。 debianでは、以下の様なコマンドでOpenDKIMをインストール。 $ sudo apt-get install opendkimOpenDKIMをインストールすると、dkim-genkeyというコマンドが…

カーソルの縦方向固定

なんかたまにカーソルが変な動きするなぁと思ってたら、次のコマンドを打ってしまっていたらしい。 C-x C-n このコマンドを打つと、カーソルを上下に動かすたびに、自動的に◯◯カラム目の文字にカーソルが行くようになる。 次の行に行くのが「C-n」だから、た…

make_database_yaml.plで、AUTO_INCREMENTの指定を外す

以下のようにして、単純にsedで取り除くだけ。 make_database_yaml.pl -d 'dbi:mysql:dbname' -u root -p xxx | sed -e "s/AUTO_INCREMENT=\d+//g;"

ダミーの氏名

こちらのページから名前をいただくとよさそう。 http://www.namaejiten.com/h01/name01.html use strict; use warnings; use Mojo::ByteStream 'b'; use Mojo::UserAgent; my $ua = Mojo::UserAgent->new; my $tx = $ua->get('gttp://www.namaejiten.com/h01…

判別関係

Mail::Address::MobileJp メールアドレスからキャリアを判別するモジュール。 Mail::Address::MobileJp - search.cpan.org HTTP::MobileAgent HTTP_USER_AGENTからキャリアを判別するモジュール。HTTP::MobileAgent - search.cpan.org HTTP::BrowserDetect H…

$1の挙動でハマった

my $text = 'abcde'; # (1) $text =~ m/(bc)/; warn $1; # -> bc # (2) $text =~ m/(ce)/; my $tmp = $1; warn $tmp; # -> bc # (3) if ( $tmp ) { # do something for $tmp } (1)では、正規表現がマッチするので$1には"bc"が入ります。(2)では、正規表現が…

リモートリポジトリのコミットを取り消す

git

概要 リモートリポジトリにあるmasterブランチのコミットを取り消す場合を考えます。 手順としては以下のような感じになります。 リモートリポジトリからmasterをpullしておく リモートリポジトリにバックアップとしてmaster_bakブランチを作成する(オプショ…

Test::Mojoでformの値を取得する

submitボタンを大体エミュレートしてpost_form_okに値を渡したい時に、以下のようにした。 $t->get_ok('/form'); my $res = $t->tx->res; my $first = $res->dom->find('form')->first; my %values; $first->find('input')->each( sub { my ($e) = @_; if ( …

Test::Mojoのpost_form_okで、チェックボックスの値を渡す方法

要するに、同じ名前のフィールドに複数の値を設定する場合は、以下のように配列リファレンスで渡す。 $t->post_form_ok('/', { chkbox => ['1', '2'] });

qpsmptdのインストールと設定

qpsmtpd qpsmptdとは、perlで書かれたsmtpサーバです。 qpsmtpdユーザーを作成 qpsmtpd用にユーザーを作成します。 # adduser smtpd インストール smtpdユーザにログインして、qpsmtpdで使うモジュールをインストールします。 $ cpanm Net::DNS $ cpanm MIME…

DB_Fileモジュールをインストールする

Berkeley DBが入っていないとエラーになるのでインストールする。 apt-getでは、以下の様な感じ。 $ sudo apt-cache search libdb $ sudo apt-get install libdb-dev あとはcpanmなどで普通にインストールできる。 もし「db.hがない」というエラーが出たら、…

Mojo::JSONのエンコードについて

Mojo::JSON::decode()には、デコードされていない文字列を渡す。 返ってくる値は、デコードされた状態になる。 Mojo::JSON::encode()には、デコードされている状態の値を渡す。 返ってくるJSON文字列は、デコードされていない状態になる。 つまり、Mojo::JSO…

Email::MIME::MobileJP::Parserでパースした時のヘッダ部を取得する

以下の様な感じ。 # メールをパース my $mail = Email::MIME::MobileJP::Parser->new($mail_str); my %headers = @{ $mail->mail->{header}->{headers} };

Email::Senderでのテスト

Email::Senderでメール送信しているアプリをテストするときは以下の様な感じで行う。 use Test::More; use Encode; # 環境変数を設定 BEGIN { $ENV{EMAIL_SENDER_TRANSPORT} = 'Test' } use YourCode; YourCode->run; my @deliveries = Email::Sender::Simpl…

モードを切り替える

.htaccessに以下の設定を加えるとPRODUCTIONモードになる。 SetEnv FUEL_ENV production

ガラケー用に文字コード変換

まだ実機チェックとかしてない。 Controller_Templateを使っているときは、afterメソッドで以下のようなロジックを書くことになりそう。 class Controller_Hoge extends Controller_Template { public function after($response) { $response = parent::afte…

アップロード処理をする

Uploadクラスを使う。 処理順は以下の通り。 アップロード設定を行う $_FILESから情報取得 正常に行えたか確認 正常に行なえたら、設定に従ってセーブして、ファイル情報を表示 異常があったらエラーメッセージを表示する // 1. 設定 $config = array( // 保…

postかgetか判別する

Input::method()を使う。 Input - Classes - FuelPHP Documentation

Controller_TemplateとViewModelを使った場合

テンプレートエンジンにPHPを使う場合は、Controllerの代わりにController_Templateを継承するようにしたほうが良さそう。 Controller_Templateを継承すると、ベースとなるテンプレートを読み込むようになる。 デフォルトでは「views/template.php」をベース…

ルーティング設定で値を含める方法

/entry/1 という感じで、URLにIDなどの値を含めたい場合。「fuel/app/config/routes.php」で設定する。 上記の例の場合は、次のように設定する。 array( 'entry/:id' => 'entry', ); コントローラでIDを取得する場合は、次のようにする。 $id = $this->param…

flashの設定する

更新や削除をしてリダイレクトした後に、「更新しました。」などのメッセージを一度だけ出したい場合がある。 その時は、flashを使用する。 flushの設定は、Sessionのset_flashメソッドを用いる。 Session::set_flash('result_message', '更新しました'); fl…

エスケープしないでテンプレートに値を渡す方法

inputタグなどに設定するときにエスケープされては困る場合。 ViewやViewModelのsetメソッドを使う。第三引数をfalseにすればエスケープ処理が行われない。 // 第3引数をfalseにする $view->set('name', 'Hoge<>Hoge', false); Views - General - FuelPHP Do…

Macでpdo_mysqlをインストールしようとしてハマりまくった

症状としては、以下のページで解説されているものと同じ。 僕は木になりたい。。。 gem install mysql にハマる - livedoor Blog(ブログ) mysql_configが見つからないというエラー オプションでMySQLのインストール場所を指定すれば見つけてもらえるように…

perlのコンテキストについて

perlを書いているときは「コンテキスト」のことについて、ずっと意識している必要がある。 コンテキストを理解していれば、 スカラー変数や配列変数のどちらを使うか リファレンスにすべきところ デリファレンスすべきところ などが、なんとなく判別できるよ…

featureブランチの変更履歴だけを表示する

git

以下のようなコマンドで確認できる。 git log develop..feature/hogehoge 参考 gitでトピックブランチに対する変更内容のみを列挙する - TIM Labs

PHPプログラムがCLIで実行されたかどうかを判別

STDINが定義されているかで判別する。 if ( defined('STDIN') ) { // CLIで実行された } CodeIgniterで行われていた。

url_forでURLクエリを付ける場合

次のようなURLをurl_forを使用しているときに作成したい場合。 /entry/edit?id=1 以下のように書きます。 $self->url_for('entry/edit')->clone->query(id => 1)

同じロジックで、2つのルートに対応

次のふたつのURLで同じロジックを実行したい場合。 /entry /entry/20101111 このような場合、デフォルト値をundefに設定するようにします。 my $r = $self->routes; $r->route('/entry/:date')->to('Entry#page', { date => undef })->name('entry/page'); …

git管理下から外す方法

git rm --cached 該当ファイル --cachedを付けなければ実際にファイルも削除される。

MacにPHPをインストール

普通にやってたら、コンパイルエラーが出たりしたので、以下の記事を参考にした。 http://blog.enjoitech.jp/article/178コンパイルエラーに対しての対処 http://www.proton.jp/main/server/php-install.html http://d.hatena.ne.jp/hnw/comment?date=201007…

httpsがchromeとかでバツになる件

httpsページでhttps以外の通信があると、ブラウザで警告が出る。 chromeでは、「このページには安全でない他のリソースが含まれています」といったようなメッセージが出る。 javascriptやimgタグなどで、フルパスで「http」から書かれているのが原因だったり…

Node.jsとPHPの勉強会に行ってきた

ので適当に感想。 大阪Node学園一時限目Node.jsのキーワードになる「非同期」「Socket.io」「Stream」「クロージャ」あたりが理解できた。 リアルタイムで動くデモは、見ていてすごく面白かった。 クライアントサイドとサーバサイドのデータのやりとりを、同…

RedmineのBacklogsプラグインで、タスク追加時にエラーが出る件

以下の質問者と同じ現象。 http://forum.redminebacklogs.net/Can-t-create-task-td3650842.html 原因も同じで、タスクにワークフローが設定されていないのが原因だった。 [管理] -> [ワークフロー]で、 トラッカーの項目を「タスク」にして編集。 参考 課題…

File::Find::findで渡す関数内では、カレントディレクトリが変わる

確認コード。 カレントディレクトリが変わるので、mkdirで相対パスとかを指定するとハマる。

通知テスト

うっほほほほうほうほほほほい

直前のコミットをキャンセルする

結構頻繁にやりたくなる。 $ git reset --soft HEAD^ KYOKUTYO NO BLOG. » Blog Archive » Gitで特定ファイルを昔の状態に戻す

XML::Parserのインストールが失敗する

expat.hがないとかでエラーになるので、以下のリンクからexpatをダウンロードしてインストールする。 http://expat.sourceforge.net/expatとは、XMLパーサーライブラリらしい。

PHPのエラー出力制御

裏側ではエラー出力するけど、ブラウザには出力したくない場合、以下のように設定。 error_reporting(E_ALL); ini_set( "display_errors", "Off");

emacsで正規表現で検索とか置換

正規表現のインクリメンタルサーチ GNU Emacsマニュアル 探索と置換 問い合わせ型置換、正規表現でやる方法 GNU Emacsマニュアル 探索と置換 後方参照の仕方 Emacsで正規表現の後方参照 - 旧さぎぶろ

MySQLの起動と停止とクエリログ出力とPDOの調査

をやるメモ。 起動と停止。 ・起動 $ mysqld_safe -u mysql &・停止 $ mysqladmin -u root -p shutdown クエリログを吐いてもらうためには、my.cnfに以下のような一行を追加。 [mysqld] log=query.log 起動時は以下のようにオプションを付けて起動。 $ mysql…

PHPのSnoopyでなんか色々するメモ

ATNDのAPIを叩いて、XMLをパースして出力。 'perl'); // URL生成 $url .= '?' . http_build_query($query); // 生成したURLを出力 echo $url . "\n"; // クライアント生成 $snoopy = new Snoopy();…

MySQLのダンプデータに書いてあった「SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"」について

これが書いてあるか書いてないかで、ダンプした後のAUTO_INCREMENTのカラムの挙動が変わるらしい。 たとえば、mysqldump コマンドでテーブルにダンプして、リロードする場合に、MySQL は, 0 という値に遭遇すると、新たなシーケンスン番号を生成し、テーブル…

Zend_LogをLog::Minimalっぽく使う

以下のようにして、Zend_Logを使ってLog::Minimalっぽくログ出力できるようにした。

外部からMySQLにアクセスするできるように設定

たまにしかやらないので忘れる。 GRANT ALL PRIVILEGES ON *.* TO [ユーザID]@"[192.168.xxx.%]" IDENTIFIED BY '[パスワード]' WITH GRANT OPTION; []で囲ってるところを変更して実行。 そうすれば設定は反映される。これは備忘録 MySQLで外部(ネットワー…

sshfsを導入する手順

sshfs便利。手元のemacsの設定でファイルを編集できるのが良い。 sshfsをインストール 以下のコマンドで簡単に入る $ sudo apt-get install sshfs sshでリモートサーバーをマウント、便利にsshfs - Unix的なアレ fuseグループに一般ユーザーを追加 sshfsはそ…

MySQLの「SET NAMES」について

MySQLから取ってきた文字列が化けるな~、そういえば「SET NAMES」っていうのがあったな~、と思ってググったら、 「SET NAMES」があんまりセキュリティ上あまりよろしくないらしい。どうよろしくないのかは、説明がややっこしいらしい。 PHPでMySQLを使用す…

PHPのDateTimeから曜日を得る

DateTime自身に曜日を返すメソッドがないみたいなので、以下のようにして得る。 $week_str_list = array( '日', '月', '火', '水', '木', '金', '土'); $w = getdate( $datetime->getTimestamp() ); $week_str = $week_str_list[ $w ]; (2011/12/21追記) な…

PHPのソースコードを取る

こちらにPHPのリポジトリが紹介されていた。 3日目 php のリポジトリ - id:k-z-h 以下のようにsubversionでコードを取ってくる svn co http://svn.php.net/repository/php/php-src/trunk こちらにも書いてあった、こっちはgit PHPソースコードリーディング…