HHeLiBeXの日記 正道編

日々の記憶の記録とメモ‥

PHP

各言語で日時文字列の解析

手元にある各言語で、標準入力から日時文字列を読み込んで、標準出力にUNIX TIME値を吐き出すプログラムを書いてみようと思ったメモ。 要件は以下の通り。 入力される日時文字列は1つのみ 不正入力のチェックは不要とする OS等のタイムゾーンはJST 対応するU…

各言語でdate format

手元にある各言語で、標準入力からUNIX TIME値を読み込んで、標準出力にフォーマットされた日時文字列を吐き出すプログラムを書いてみようと思ったメモ。 要件は以下の通り。 入力されるUNIX TIME値は1つのみ 不正入力のチェックは不要とする タイムゾーンは…

各言語でQueue

手元にある各言語で、標準入力からの数値列をQueueに放り込んで、入力と同順になるように標準出力に吐き出すプログラムを書いてみようと思ったメモ。 標準入力から入力される数値列の要件は以下の通り。 1行に1つの数値が書かれている 不正入力のチェックは…

各言語でStack

手元にある各言語で、標準入力からの数値列をStackに放り込んで、入力とは逆順になるように標準出力に吐き出すプログラムを書いてみようと思ったメモ。 標準入力から入力される数値列の要件は以下の通り。 1行に1つの数値が書かれている 不正入力のチェック…

標準入力から数値列を読み込んで、逆順に標準出力に吐き出す

手元にある各言語で、標準入力から数値列を読み込んで、逆順にしたうえで標準出力に吐き出すプログラムを書いてみようと思ったメモ。 標準入力から入力される数値列の要件は以下の通り。 1行に1つの数値が書かれている 不正入力のチェックは不要とする いく…

標準入力から数値列を読み込んで、降順にソートして標準出力に吐き出す

手元にある各言語で、標準入力から数値列を読み込んで、降順にソートしたうえで標準出力に吐き出すプログラムを書いてみようと思ったメモ。 プログラム言語にもよるが、昇順は簡単なのに降順となったとたんに苦労するケースがあったりする。 標準入力から入…

標準入力から数値列を読み込んで、昇順にソートして標準出力に吐き出す

手元にある各言語で、標準入力から数値列を読み込んで、昇順にソートしたうえで標準出力に吐き出すプログラムを書いてみようと思ったメモ。 標準入力から入力される数値列の要件は以下の通り。 1行に1つの数値が書かれている 不正入力のチェックは不要とする…

標準入力から1行ずつ読み込んで数値解析して標準出力に吐き出す

唐突に、手元にある各言語で標準入力から1行ずつ読み込んで、行の先頭の数値として解析できる部分を数値に変換して標準出力に吐き出すプログラムを書いてみようと思ったメモ。 例えば、「+123i456」という行があったら、「+123」までが数値として解析できる(…

標準入力から1バイトずつ読み込んで、大文字小文字変換をして標準出力に吐き出すプログラムを書いてみる

唐突に、手元にある各言語で標準入力から1バイトずつ読み込んで、大文字小文字変換をしたうえで標準出力に吐き出すプログラムを書いてみようと思ったメモ。 大文字小文字判定等を行う関数をまじめに使った言語もあれば、正規表現に頼った言語もあったり、果…

各言語で標準入力から1バイトずつ読み込んで標準出力に吐き出すプログラムを書いてみる

唐突に、手元にある各言語で標準入力から1バイトずつ読み込んで標準出力にそのまま吐き出すプログラムを書いてみようと思ったメモ。 普段は使わない言語も混じっているが、まぁ気にしない。 環境 手元にあるものということで、環境は以下のものに限定する。 …

PHPでのファイルアップロードの処理

PHP

ファイルアップロードのファイルサイズチェック - Qiitaを読んでて非常にもやっとしたので、PHPプログラム側のエラー処理を自分なりに整理してみたメモ。 ちなみに検証環境は訳あって以下だが、CentOS 7でも同様だと思う。 CentOS 6 PHP 5.3.3 php.iniの設定…

PHPの三項演算子の注意すべき挙動

PHPで以下のようなコードを書いていてしばらくはまっていたのでメモ。

rangeによるrangeの違い

Pythonのコードをちゃんと書いたことはないのだけど、ある理由でPythonのコードを読んでいて、ふと気になって調べたメモ。 結論から言うと、rangeで範囲を指定したときに列挙される値が、プログラム言語や、同じ言語でも書き方によって違うのだな、と。 実行…

文字列連結のパフォーマンス比較

PHP

そういえば計ったことなかったなぁ‥と思い立って、いくつかのパターンで計ってみたメモ。 実行環境は、自宅のXenServer上に載せた以下のVM環境。 CentOS 6.8+PHP 5.3.3 ケース1:文字列連結演算子とダブルクォーテーションと プログラムの全体は以下のような…

PHPの識別子にアスキーコード0x7Fが使えることの検証

PHP

マニュアルにもしっかり書いてあるんだけどPHPの識別子にはアスキーコード0x7Fが使えるが、これは制御文字DELなので変じゃないかという指摘。試したところ確かに使える / “PHP :: Bug #71897 :: ASCII …” https://t.co/9CkFL2aziD— 徳丸 浩 (@ockeghem) 2016…

is_aとis_subclass_ofの違い

PHP

クラス名の文字列を渡して使用しようとしたときに罠にはまったのでメモ。 is_a PHP: is_a - Manual is_subclass_of PHP: is_subclass_of - Manual はまったのは、v5.3.9から追加されたというallow_stringパラメータのデフォルト値に関連するものだが、他にも…

文字とASCII値の変換

PHP

いつも関数名まで忘れて苦労するので、メモついでにおもちゃを作ってみた(謎)。 関係する関数は以下 PHP: ord - Manual PHP: chr - Manual おもちゃコードとして、文字列の独自エンコード/デコードする関数を作ってみた。 エンコード 各文字のASCII値のビッ…

Zend_Dateクラスを効率よく使うチャレンジ

PHP

序 Zend Frameworkに含まれているZend_Dateクラスは、インスタンス生成コストがとにかく高い。 どれくらい高いかというと、以下の2つのプログラムで比較してみるとなんとなく分かる。 test0-1.php: Zend_Dateをn回インスタンス生成 = 2) { $n = (int)$argv[1…

PHPのrequire_onceが遅い話

PHP

もはや専門家の間では有名な話なのだろうが、今頃意識し始めて、ちょっと計ってみるかという気になったので計ってみる。 なんせ、Zend Frameworkのページでもパフォーマンスガイドとして書いてあるくらいだし。 Class Loading - Zend Framework Performance …

配列の統合時の先勝ち後勝ちの話

PHP

起 2つの配列$aと$bをマージした結果として$expectedのようなものが欲しくて‥ '22', 'k4' => '44', 'k6' => '66', 'k8' => '88', ); $b = array( '111', 'k2' => '222', 'k3' => '333', 'k5' => '555', 'k7' => '777', ); $expected = array ( '111', 'k2' …

DateTimeクラスの罠

PHP

PHPにDateTimeクラスとDateIntervalクラスなる便利なものがあると知って、喜び勇んで‥ PHP: DateTime - Manual PHP: DateInterval - Manual こんな感じで、日時の加算や減算のテストプログラムを作ってみた。 DateTimeTest.php new DateInterval('P1Y'), '…

日付文字列のフォーマットのメモ

RFC 2822に従った日付文字列の生成 一発で出力できる指定子があることに気付かず、試行錯誤したのだが、せっかくなのでメモしておく。 RFC 2822に従った日付文字列は以下のような形式。 Thu, 18 Jun 2015 16:43:47 +0900 メールのヘッダなんかに使われること…

「プロセスが使用中のファイルを調べる」で遊んでみた

ふと、何か(何)を見ていて、その関連で以下の記事をざっと読んで、ちょっと遊んでみたメモ(謎)。 lsofの使い方 - プロセスが使用中のファイルを調べる - うまいぼうblog なんで「PHP」というタグまで付いているかは読めば分かる(ぇ‥ 事前準備 遊ぶためのCent…

issetの罠(emptyの罠でもある)

PHP

PHPで(知らずに)以下のようなコードを書いていてはまったのでメモ。 実にくだらない話なんだが‥ 'HOGEHOGE', 'uga' => array( 'text' => 'UGAUGA', 'shortText' => 'UGA', ), ); var_dump(PHP_VERSION); $textList = array(); foreach (array('hoge', 'uga'…

crontabで実行時刻を適当に割り振るときの一案

どちらかというと、単なるネタ記事(何)。cronで実行する処理で、以下の要件を満たすような場合に自分が使っている実行時刻の決め方の一つ。 1日1回実行されればよい 似たような処理が複数あるが、随時増えていく (同じコマンドのパラメータ違いを別々にcront…

switch文の罠

PHP

PHPで(知らずに)以下のようなコードを書いていてはまった。

関数やメソッドの引数のタイプヒント指定の罠

PHP

久しぶりにネタとしてメモしておきたい事象にぶつかったのでメモ。「罠」とは言っても、熟練のPHPerにとっては当たり前のことなんだろうけど‥PHP(PHP 5環境)で以下のようなコードを書いていた。

bytea型でバイナリデータを扱う際のワナ

やはり自称DB屋(何)としては、DBMSのことを書かないと始まらないだろうということで(謎) PHPプログラムからPostgreSQLにいわゆるバイナリデータを放り込んでいろいろやる必要が生じたので、ちょっと調べてみると、主に以下の2通りがあるらしい。 bytea型の列…

メモリ喰らいの仕様

PHP

最近、気になる情報を目にしたらしい。 PHPの /** から始まるコメントが、require_once実行時に無駄にメモリを食う問題 - Narusaseの日記 -ハニポってどうよ?(仮)- よく読んでみると、「ReflectionClass::getDocComment()」に関係する仕様らしい。怖いので…

空白文字の判定

PHP

正規表現を使って空白文字を判定する処理に関して、認識と違っていた部分があったのでメモ。 preg_match関数に指定する正規表現で使用可能なエスケープシーケンスとして「\s」というのは知っているのだが、他にも以下のものがあるらしい。 \h 水平方向の空白…