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

HHeLiBeXの日記 正道編

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

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

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

Apache TikaのPDFファイルテキスト抽出で遊んでみる

今更ながらに「Apache Tika」というものの存在を知る‥PDFとかその他諸々のファイルのメタデータやテキストを抽出してくれる‥|Apache Tika https://t.co/CsCBY74ekK— HHeLiBeX (@hhelibex) 2017年2月27日 ということで、サイトのParser APIを追いかけてコー…

シフト演算とMath.pow(2, n)と(+Math.pow(2, n)の怪)

自分が時々やらかしてしまうのでメモ。 環境は、CentOS 7(VM)上のOpenJDK 1.8.0_111。 2のべき乗(整数値)が欲しい場合はシフト演算 2のべき乗(整数値)が欲しいときに時々やらかしてしまうのが、以下のようなコードを書いてしまうこと。 for (int i = 0; i < …

rangeによるrangeの違い

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

QueueやStackとして使うなら‥LinkedList vs ArrayDeque

頭がJava 1.4で止まっているプログラマの呟き(謎)‥ LinkedListをQueueとして使ったあるプログラム(何)を書いていて、QueueやStackとして使うならLinkedListよりArrayDequeがお勧めとアドバイスをもらったので、軽く検証してみた。 事前準備 ソースコードは以…

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

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パラメータのデフォルト値に関連するものだが、他にも…

PostgreSQLサーバー用ディレクトリを暗号化ファイルシステムに置き換えてみる~論理ボリューム作成編

前置き やりたいことは、前に書いた PostgreSQLサーバー用ディレクトリを暗号化ファイルシステムに置き換えてみる - HHeLiBeXの日記 正道編 と同じなのだが、 HDDを追加せずに、論理ボリュームlv_rootを分割して、片方を論理ボリュームlv_pgsqlとして暗号化…

文字とASCII値の変換

PHP

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

PostgreSQLサーバー用ディレクトリを暗号化ファイルシステムに置き換えてみる

前置き とりあえず、以下の環境を前提としている。 OSはCentOS 6 (VirtualBoxのVMとして作成) PostgreSQL 8.4をパッケージインストールしている データディレクトリは「/var/lib/pgsql/data」 PostgreSQLのデータディレクトリも含めて1つのパーティションに…

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

PHP

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

HTML5のinputタグにおけるtype属性のサポート状況

ブラウザ標準の機能でカレンダーコンポーネントを使ったコードを書きたくて、ついでに単純なHTMLを書いて検証してみた。 試したのは以下のブラウザ。 Windows 7 Professional SP1 Firefox 39.0 Google Chrome 44.0.2403.107 m (64-bit) Opera 30.0.1835.125 …

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 メールのヘッダなんかに使われること…

svn:ignoreで無視されるもの

なんか混乱したので、忘れないようにメモ。 当たり前と言えば当たり前すぎるのだが‥ 事前準備 前提として、「/var/lib/svn」の下にリポジトリディレクトリを作成するものとする。 # cd /var/lib/svn # sudo -u apache svnadmin create test 実験 Webサーバー…

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

ふと、何か(何)を見ていて、その関連で以下の記事をざっと読んで、ちょっと遊んでみたメモ(謎)。 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'…

10分ベスト10

書くことが無いからというわけではないんだが、何か情報技術的なことを書かなきゃっていう呪縛にとらわれていた自分に気づいて、「考えてみたら、このブログは日々の記憶の記録じゃん」って思い出した(謎)。ふとした思い付きで、3日前に「10分ベスト10」とか…

自動採番の列が存在するテーブルへのデータロード

DB2

バックアップからのリストアではなく、あるDBサーバーからデータをエクスポートして、別のDBサーバーでインポートするという場合に、邪魔になってくるのが自動採番するように定義した列の存在。 DB2で言えば「GENERATED ALWAYS AS IDENTITY」が列定義に付い…

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

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

参照はあいまい

いわゆるJavaの初心者がどつぼにはまりがちな、「参照はあいまい」と言われて戸惑うケース。(NGコード) package t2014_1008_01; import java.util.*; import java.sql.*; public class Main { public static void main(String[] args) { Date now = new Date…

switch文の罠

PHP

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

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

PHP

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

よかった探しリース

←左手【よかった探しリース】右手→ 今年も「よかった探しリース」に参加させていただきます。今年は後半から復活の兆しが見え、自分にできることをマイペースでやっていこうと思い始めている今日この頃です。 家族が大過なく過ごせたこと 私自身もだいぶ調子…

音楽ファイルや動画ファイルの取得にも認証を導入したときにぶつかった問題

もう既に2年近く前、Android 2.3がまだ新しいと言われていた頃の話だが、当時は相当苦しんだので、検証記録として残してみる。 はじめに とあるWebアプリケーションの開発を担当している人から、「Androidの実機だと音が再生されない。どうにも原因が分から…

margin/border/paddingの指定方法メモ

CSS

CSSのmargin/border/paddingは、四辺を一括で指定する方法から四辺を個別に指定する方法まであって、どの形式でどの辺が影響を受けるのかがしょっちゅう分からなくなるので、自分用のメモ。一応、以下のブラウザで確認。 Internet Explorer 10 Safari(Window…

再開

気づけば、まる11ヶ月も放置していたらしい。 その間、いろいろあったといえばあったし、あったといえばあった(謎)。11ヶ月前、「体調を崩している」と書いたあの頃に比べれば、相当にまともな状態。 会社に行って仕事はしていたが、生きてるんだか死んでる…

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

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

よかった探しリース

←左手【よかった探しリース】右手→ 今年も「よかった探しリース」に参加させていただきます。(ちょっとの間だけネガティブになるけど)今年は、「1月⇒半死」「2月⇒全死」「3月⇒全死」「4月⇒微生」「5月⇒半生」「6月⇒半死」「7月⇒全死」「8月⇒半死」「9月⇒半死…

「○○ができる」ということ

ここのところ、技術的ネタをまとめる(あらゆる意味での)余裕がないので、なんとなく思ったことを書いてお茶を濁してみるテスト(何)。普段思っていてもなかなか言い出せない、「こいつを一人前の○○に鍛え上げてくれ‥1年で!」という無茶振りに対する「できる…

ノートPCのお掃除

先月は職場滞在時間400時間超えという訳のわからない領域に踏み込み、ついにブログを1件も書けなかったというひどい状況。ひどい状況なのは今もあまり変わらないが‥って愚痴を言いに来たんじゃないや‥閑話休題何かのスイッチが入り、新ノートPC(Let's Note C…

メモリの使用量を気にしながらサーバーを再起動

今月は、ほぼ死に状態で、何もできなかったので、せめてものしょうもない内容で締めようと思う(謎)。ってな訳で(謎)、あるサーバーのメモリ使用量が気になるが、張り付いている訳にもいかない、そんなときのひとつの手段として、定期的に再起動するようにcro…

メモリ喰らいの仕様

PHP

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

修正時期が分からない修正を見つけるためのスクリプトサンプル

Subversionで管理しているファイルを、どこかのタイミングである修正をしていて、キーワードは覚えているんだけど、いつ修正したのか思い出せない(この変数、いつ追加されたんだ?とか)、なんてこと、よくありますよね(ふつーはねーよ、そんなこと。コミット…

環境変数PATHからのコマンドの探索(which,where)

唐突にバッチプログラムとして書いてみた。 一応、ご存じない方のために説明すると、UNIX/Linuxでは、以下のコマンドが提供されていたりする(環境依存)。 which 環境変数PATHから指定したコマンドを探し出し、そのフルパスを出力する。 一つ見つかった時点で…

金田一少年の事件簿 20周年記念シリーズ

金田一少年の事件簿 20周年記念シリーズ(1) (講談社コミックス)作者: さとうふみや,天樹征丸出版社/メーカー: 講談社発売日: 2012/06/15メディア: コミック購入: 1人 クリック: 73回この商品を含むブログ (17件) を見るふと本屋に立ち寄ったら、なんか出てる…

空白文字の判定

PHP

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

バクマン。

ちょっと前の‥いや、もうすでに3週間以上前の話になるのか‥毎号楽しみだった「バクマン。」の連載が終わってしまいました。 コミックス18巻は、「REVERSI」連載開始前後の修羅場と、平丸&蒼樹婚約の巻。バクマン。 18 (ジャンプコミックス)作者: 大場つぐみ…

トリガーを駆使して登録日時と更新日時を両方管理する

駆使して、ってほど複雑なことは全然ないんだけど、たまたまそんなトリガーを書いたのでメモ。 以前に、MySQLで自動更新のTIMESTAMP型の列を2つ以上定義できないということを書いたこともついでに思い出した(謎)。 TIMESTAMP型の位置づけ - HHeLiBeXの日記 …

PHPの恐怖仕様

冒頭で宣言しますが、今回のネタはあくまでPHPの仕様に対する実験であり、実際に使っちゃうと脆弱性を盛り込んでしまうネタなので、充分ご注意ください。と同じことを宣言しておく。 さて、まずは「EUC-JP(またはUTF-8)で保存された」以下の2つのコードを見…

POSTデータを送ったときのレスポンスを読む

PHP

PHPでPOSTデータを送る方法はいくつかあるらしい。 とても簡単にPHPからPOSTリクエストを送信する方法【PHP】 - Programming Magic が、制限が厳しい環境だと、どうしてもfsockopenでがんばるしかない。 PHP TIPS Vol.3 で、末尾に「実験用」と書いてあるの…

collation(照合順序)衝突の問題

MySQLで、以下のようなエラーに悩まされたことはないだろうか。 ERROR 1267 (HY000): Illegal mix of collations (sjis_japanese_ci,IMPLICIT) and (cp932_japanese_ci,IMPLICIT) for operation 'UNION' ERROR 1267 (HY000): Illegal mix of collations (sji…

この世界を誰にも語らせないように

この世界を誰にも語らせないようにアーティスト: 石川智晶,西田マサラ出版社/メーカー: flying DOG発売日: 2012/04/25メディア: CD購入: 2人 クリック: 8回この商品を含むブログ (15件) を見る4月25日に新アルバムがリリースされると聞いて、早速ポチってし…

キーの最大長と文字エンコーディング設定

今までsjisとかujisとかだったMySQLのデータベースをutf8mb4に変換しようとしていたときの話。キーの最大長という壁にぶつかったらしい。 http://d.hatena.ne.jp/takihiro/20080306/1219295452 MySQLのリファレンスを見ると、こんなことが書いてある。 プレ…

識別子の大文字と小文字の違い(2)

あの頃(何時)はまだMySQLに関する知識がなかった‥ 識別子の大文字と小文字の違い - HHeLiBeXの日記 正道編 で、MySQLでは、列名などの識別子はバッククォートで括るらしい(ということを、「show create table hoge」を実行して気づいたらしい)。 ということ…

文字列連結の処理

PHP

仕事でPHPでの開発をしていると、以下のような記述を飽きるほど見かける。いや、ジョークとかじゃなくマジで‥orz

データベースの文字エンコーディングを変更する

データベースの文字エンコーディングを変更する、と言っても、「設定ファイルを編集してデフォルトの文字エンコーディングを変更しよう!」などというちゃちな話ではない。(「MySQL 文字コード 変更」で探すとそんな話ばかりがヒットして‥もうね、ばくh(以下…