tohokuaikiのチラシの裏

技術的ネタとか。

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

php

PHPで自分のクラスを見たSingletonの生成

php

今更って感じですが。

Smartyを使ったPHPアプリケーションをgettextで国際化する

php

普通にpoeditとgettextで行けるでしょ、って思ったらそうでもなかったということで。 potファイルの作成 gettextは、「ソースコード」→「.potファイル」→「.poファイル」→「.moファイル」となり最終的には.moファイルを使う。 .potファイルができれば.moファ…

PHPのsetlocaleまとめ

php

前2つのエントリでハマりまくったPHPのsetlocaleのまとめ。*1 Apache CLIの共通の認識 $locale -a を行って表示されないロケールは(つまりOSで有効化されてないロケール)setlocale()しても無効である。 ただし、言語パック(debianだとtask-japaneseパッケー…

PHPのsetlocaleをCLIでチェックばかりしてたらハマった話。

php

まとめ setlocale()の挙動について調べている際に、ApacheからではなくCLIから調べていた。 このCLIの場合の調査は下記の通り。 CLIからPHPを実行してsetlocaleする際は、OSのロケールに依存する。 OSの/etc/locale.genで有効にしてないロケールは、setlocal…

PHPでgettextする際の注意事項というか、setlocaleの罠

php

PHPでgettextを使って国際化しようとかいうとだいたいこういう記事がヒットする。

今更ですが、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エンティティで記述された本文…