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

tohokuaikiのチラシの裏

技術的ネタとか。

Confluenceのプラグイン開発を承ります。ご連絡はこちらのホームページからお願いいたします。

今更ですが、Composer.pharがinstallとupdateでcomposer.json/.lockを見て何をしているかを図解

php

基本的に、下記の事項を覚えておけば挙動は理解しやすい。 installは.lockを見てその通りに実行する updateは、.jsonを見て依存性を解決する composer.phar install を実行した場合にcomposer.lockの有無による挙動の違い .lockがあれば待ち時間は少なくて済…

LinuxのディストリビューションとデフォルトパッケージのPHPバージョンの一覧

php

ディストリビューション バージョン サポート終了 PHPのバージョン CentOS 5 2017/3/31 5.1 CentOS 6 2020/11/30 5.3 CentOS 7 2024/6/30 5.4 Debian 7 2018/5/31 5.4 Debian 8 2020/4/30 ? 5.6 Ubuntu(LTS) 14 2019/4/30 5.5 Ubuntu(LTS) 16 2021/4/30 7 La…

TCPDFで「右綴じ」を実現する方法

php

TCPDFでもFPDFでもFPDIでもFPDI_TMPLでもなんだかこのあたりの一群のライブラリはよく分かってなかったりしますが・・・・。 そもそも右綴じって? PDFのプロパティでこんな感じです。Acrobatで開いた時のプレファレンス。 英語で言うとBinding Directionで…

PHPでRESTサーバを実装するライブラリLuracast/Restler

php

PHPでRESTサーバを書きたくなった場合、F.Wならそれの下地はあるだろうけどそれ程でも…っていう場合など。 Luracast/Restler 日本語の記事は見つからなかったけど、このライブラリが鉄板っぽいので使ってみる。 https://github.com/Luracast/Restler 以下、…

PHPでコンソールに色付きで出力する

php

元エントリはこちら phpのバッチでターミナル上で色をつける方法 - maru.cc@はてな phpのバッチでターミナル上で色をつける方法 - maru.cc@はてな 関数化と、その色について 確認コード

SimpleXMLElementのファイル限界値があったのでPEAR::XMLRPC2を書き換えてみた話

php

php - How can I handle a huge XML file using SimpleXML but to prevent memory and performance problems? - Stack Overflow で大きいファイルダメっすよって言われてるのだけど、PEARのXMLRPC2がSimploeXMLElement使ってて、ぐぬぬって思ったので調査す…

Re: スマートなコードの書き方12選

php

保守性・管理性が劇的に上がるPHPのスマートなコードの書き方12選 | BULK SERVER blogが盛大に突っ込まれてたのでサラッと自分なりのポイントを記述してみる。上記は既に削除してあるのでこちらから。 http://bulkserver.jp/blog/2014/08/07/php-code/ - 201…

文字の幅を揃えてくれるようにカットしてくれるmb_substr

php

自分がやりたいのは等幅フォントで同じくらいの長さになるようにしたい。 主にレイアウトが重視される場合に。分かりにくいので、たとえばで言うけど、元の文字列として abcdefghijklmnopqrsiuvwxyzABCDEFGHIJKLMNOPQRSIUVWXYZ あいうえおかきくけこさしすせ…

mb_convert_encodingがUTF16を扱うと文字列を壊す件

php

旧聞で恐縮ですが、自分用まとめメモ。 2009/6/7 UTF-16(BOM 付き Little Endian) を mb_convert_encoding() で変換すると文字列が壊れる - t_komuraの日記 にて、komuraさんからの報告。 2009/8/16 komuraさんがPHP-JapanのPHP-devで投稿 PHP-dev - [PHP-de…

ini_get('memory_limit')で得られるファイルサイズを数値にする関数

php

メモ代わり。 134217728, 2G => 2147483648 * @param string * @retval int */ function memoryString2Int($string) { $byte = 0; if (preg_match("@^(\d+)([KMGT])$@", $string, $m)){ $powparam = 0; switch ($m[2]){ case "K": $powparam = 1; break; ca…

WordPressのプラグインをUnitTestする

前の続きWordPress+PHPUnitで検索したところ、 WordPress › Support » Running WordPress tests with PHPUnit もあったのだけど、自分は http://stackoverflow.com/questions/9138215/unit-testing-wordpress-plugins からnb/wordpress-tests · GitHubを使用…

PHPでWindowsのCD-ROMをイジェクトする

php

なんか、CD-ROMをイジェクトさせるスクリプトが流行ってる(?)らしい。 CD-ROM トレイを取り出せるIE用ブックマークレット、「ie-eject.vbs」作った。 - 葉っぱ日記 Big Sky :: CD-ROM トレイを取り出せる vim プラグイン、「eject.vim」作った。ということ…

FTPでバックアップを毎日1週間分取っておくPHPスクリプト

php

クライアントのバックアップ作成です。lftpとzip/unzipコマンドが必要。 これを毎日まわしておけばOK. #!/usr/bin/php

前方一致・後方一致・NOT LIKEに対応したEthnaのAppSQL

AppSQL::getCondition()をこんな感じで変更。 OBJECT_CONDITION_LIKE_R OBJECT_CONDITION_LIKE_L OBJECT_CONDITION_NOT_LIKE が使える。

httpd.confからDocumentRootを取るPHPスクリプト

php

サーバー名が$_SERVER['SERVER_NAME']で分かっていること前提。

簡単なバックトレース

php

なんか毎回作ってる気がしたので、ぺた。

mpdfで日本語のフォントを追加したり、文字化けを回避したり

php

mpdfのバージョンは、5.4です。mPDFというHTMLをPDFに変換してくれるライブラリがあります。 素晴らしいのですが、おそらくこちょこちょとつぎはぎつぎはぎで*1コードがメチャ読みにくいのと、Configが散乱しててとにかく「デフォルトのフォント以外のものを…

PEARのConfigを再構築する

php

PEAR-localを使ってたのだけど、環境が変わってしまったためにpearコマンドが使えなくなった場合。http://wiki.poyo.jp/read/PHP/tips/pear/pear/rebuild_confから

Ethna2.5.0でEthna_View_Jsonができてたとか

なんかよくあれで、自前のView_Json作ってたのでハマりこいたのですが。パラメータを渡したい場合は、 $result)); みたいにすると渡せますよという話。

PHPの演算子の強さがどこまでわかってるかとstrposの返り値

php

1234567 => 1/234/567 みたいにサブディレクトリを切りたい時に文字区切りを入れるだけの関数

php

1 12=> 12 123=> 123 1234=> 1/234 12345=> 12/345 123456=> 123/456 1234567=> 1/234/567 12345678=…

生のUnicode文字をHTMLエンティティにする。

php

UTF-8一辺倒な最近は問題ないのですが、たまにレガシーな環境に行くとUnicode文字が出なくて困ります。で、HTMLエンティティがあるものはそっちにしてしまおうという関数。 array(), 'after' => array(), ); // #h-24.2.1 $j = range(160, 255); // #h-2…

今時のEthnaを使う

現時点でのEthnaを持ってきて使ってみる。 https://github.com/ethna/ethna/tree/release/2.6.0beta4ずっと2.5くらいだったので。 インストール pear-localを作る .htaccessでinclude-pathで上記のローカルPEARを含ませる EthnaとSmarty3をローカルPEARに設…

再帰処理でハマった話

php

再帰処理を書こうとするといつも悩みます。 「こんなにループさせていいんかいな?」と。そう思ったのがあだになった例を下記に記します。親子関係のある配列をソートさせたい場合、下記のコードでは、pidが親IDになります。で、これを再帰関数を使って親子…

PHPのDOMDocumentが内部エンコードで何をしているか

php

要するに、次のようなスクリプトを書いたら loadHTML($html); $html = $dom->saveHTML(); file_put_contents('sample_ddtest.html', $html); exit; sample_ddtest.htmlには、HTMLエンティティで記述された本文…

PHPの簡易デバッグ関数

php

とりあえず。

PHPのDOMDocumentでHTML→XMLに再構築する方法

php

PHPのDOMDocument、なかなか戦えるじゃないか。空タグ(<br/>とかね)をappendChildすると、そのままDOMTextみたいにつなげてくれるっていうのは知らなかった。Nice!ということでサンプル。 次のHTMLを HTML/body/table/td[@class=pagebody]のDOMだけ取り出して</br/>…

PHPのDOMDocumentがバイナリセーフよりさらに脆いものだった件

php

結論から言うと、DOMDocumentは、「改行」「タブ」「キャリッジリターン」以外のコントロールコードが入っていると、それ以降の文字列を無視してしまう。ちなみに、バイナリセーフでないと叩かれているereg系はヌルバイトだけを切ってしまう。なんという脆さ…

NFSでのflockにはまる

php

http://php.net/flock flock() は NFS 及び他の多くのネットワークファイルシステムでは動作しません。 詳細についてはオペレーティングシステムのドキュメントを確認ください。 この動作しませんっていうのが、なんというか、固まったまま動かないんよね・…

POSTした生のデータがほしいとき

php

PHPは <input name="foo[123]"> <input name="foo[123]_bar"> ってあった場合、$_POSTとしては$_POST[foo]しか返ってこない。まぁ、あんまないけど、とりたい場合はfile_get_contents('php://input');を使う。で、もうちょっと

WordPressで全角をAND検索にするプラグインが無いから適当に書いた

php

もー、これがどういう動きを及ぼすかよ―分からんけど、 query_vars['s']; $s = str_replace(' ', ' ', $s); $wp_query->query_vars['s'] = $s; $wp_query->query['s'] = $s; } って感じ。うごけばいいやー(ぼうym

PHPExcel使ってて、必要になったAAを27にする関数

php

=0; $i--){ $seek = strpos($abc, $str{$i}) + 1; $num += $seek * pow(26, $counter) ; $c…

ウケタコード@WordPress

php

do_action('retreive_password', $user_login); // Misspelled and deprecated do_action('retrieve_password', $user_login); ウケルわー。

PEARのServices_Twitterのupdate_profile_imageでどハマリこいた件

php

Services_Twitter、使いやすいんですが、プロフィール画像の変更で大いにはまりました。いやぁ、こんなの account->update_profile_image(array('image' => $new_icon)); で余裕だぜ・・・とか思ってました。それまでも、ツイート更新したり、ユーザー情報を…

FTPの「mkdir -p」版

php

Warningは避けられないので、気になる人は@で抑制してください。

PHPで配列を再帰的にマージしてくれる関数

php

設定値を配列にしておいて、ある一部分だけ上書きしてしまいたい場合。 普通にarray_merge使うと、小回りが利かないですよね。ということで、こんな関数。 $e_value){ if (!array_key_exists($e_key, $origin)){ $origin[$e_key] = $e_value; } else { if (!…

PHPで最小限のls -laを書いてみた

php

オプションは、rauth1に対応で。ファイルのパーミションは、PHPマニュアルをそのままコピペしたんだけど、手元だとシンボリックリンクがうまく出ない・・・・。うーん、意外と面倒・・・・。つかコード長いし。Ref: 最小限のls -laを書いてみた - Islands in…

Ethnaの選択肢妥当性チェックプラグイン

php

Symfonyでchoiceっていうのがあるので、Ethnaでも同じように。 ActionFormのフォーム定義 ありがちなこんなの。Smartyのプラグインでレンダラー使ってる人はform_optionsを適当なものに差し替える。以降のでも同じ操作必要だけど。 array( 'name' => '状態'…

ひらがなカタカナ両方OKの正規表現

php

preg_match系 /^((\xe3(\x81[\x81-\xbf]|\x82[\x80-\x93]|\x83\xbc))|(\xe3(\x82[\xa1-\xbf]|\x83[\x80-\xb6]|\x83\xbc)))*$/ メモ

get_classの引数がNULLの時の仕様で嵌った件

php

デバッグ時にget_classを良く使うのだけど。 http://jp2.php.net/get_class 返り値 オブジェクト object がインスタンス であるクラスの名前を返します。object がオブジェクトでない場合にはFALSEが返されます。 クラスの内部で object を省略すると、 その…

Gitの差分ファイルを抽出するPHPスクリプト

git diff --name-onlyで取得するファイルを任意の場所にまとめてコピーするスクリプト。なんか、gitのコマンドでサクッと取れてパッケージしてくれるだろうと思ったらそこまでしてくれなかったので作った。git diffで比較した差分のファイルだけを抽出するス…

proc_openの64kbの壁「slymak、それfile_get_contentsネタやない、proc_openや」

php

PHP Advent Calendar jp (day 15)PHPerのみなさんならちょっとしたバッチやファイル操作なんかも全部PHPで書いてるPHP脳になってることと思います。もうShellScriptなんて古臭いものは使ってないことでしょう。そんな時、システムコマンド使う時に大活躍する…

Smartyの改行について調べてみた

php

PHP自体もですが、Smarty使っててあー、この{/if}の終わりの改行って表示されんのかな?とか結構気になる時があります。普通にHTMLなら問題ないのですが、メールテンプレートとして使った時です。ということで、調べてみました。 実行するテストスクリプト t…

PHPでsystem()を走らせたときに、エラーメッセージも取得する方法

php

システムコマンドを使ったときに、エラーメッセージってどうやって取得するんだろう?? ・・・と、PHPのシステムコマンドのマニュアルを見ても出ない。そういう時は、プロセスをちゃんとみるproc_openを使う。 http://jp.php.net/manual/ja/function.proc-o…

WordPressにおけるXMLRPCの開発・・メソッドの増やし方とか

php

WordPressのXMLRPCメソッドの一覧を増やしたくなった。とりわけ、ページの全削除をしたくなった。 とりあえず、XMLRPCクライアント http://www.fabrice.co.jp/blog/download/win32-gui から、XMLRPCクライアントをダウンロード。これが無いと面倒すぎる。よ…

PEARのXML_RPC2が文字化けする件

php

WordPressのAPIをたたいてて困った。投稿するとどうしても文字化けする。んー、って思って、XML_RPC2をデバッグモードにしてみた。すると <value> <string>API&#227;&#131;&#170;&#227;&#13.......;&#154;&#227;&#131;&#188;&#227;&#130;&#184;</string> </value>みたいな感じなXMLを投げてた…

興味のある言語にSSIと書いておいたら面接で爆笑された

php

extends http://d.hatena.ne.jp/moriyoshi/20100204/1265242273 PHPエンジニアを募集してるSNSを運営してる会社の採用面接を受けた時の話。転職エージェントに作れと言われて作ったシートに、「興味のある技術/言語」という欄があったんです。 CSS/HTML/Flas…

JanRain OpenID Libraryでgoogle OpenIDからGmailのデータをいただく。

php

examples/consumer/try_auth.php のコードにはなかったAXでやってみる。GoogleはAttribute eXchangeでgmailが得られるらしいので。ちなみに、JanRainは、define('Auth_OpenID_VERSION', '2.1.2'); です。 try_auth.php 23行目らへんから begin($openid); + r…

mb_convert_variableにハマる。

php

mb_convert_variableを通した後は、配列のポインタが無くなるようです。つまり、 '固定長フィールド', 'bar' => 'CSVファイル', 'baz' => 'コンピュータ', ); var_dump(key($array)); // => foo mb_convert_variables("SJIS", "UTF-8", $array); var_dump(k…

PEAR Archive_Tarのエラー出力

php

なんでかしらんけど、extract()でエラー。こうすれば、エラーが画面に出る。つか、PEARの基本的な使い方だけどいまだに全くその辺のPEARの使い方を知らなかったのは内緒。 extract($target_dir);