HHeLiBeXの日記 正道編

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

fopenに存在しないファイル名を指定したときの挙動

PHP

PHP 5.4.16からPHP 8.1.7にバージョンアップをしようとしたときのこと。

型宣言~float~

PHP

型宣言のfloat編。どこまで許容されるのか検証。 Main.php getMessage() . PHP_EOL; print $e->getTraceAsString() . PHP_EOL; return -1; } } class Hoge { private int $val; p…

型宣言~bool~

PHP

型宣言のbool編。どこまで許容されるのか検証。 Main.php getMessage() . PHP_EOL; print $e->getTraceAsString() . PHP_EOL; return false; } } class Hoge { private int $val; p…

型宣言~string~

PHP

型宣言のstring編。どこまで許容されるのか検証。 Main.php getMessage() . PHP_EOL; print $e->getTraceAsString() . PHP_EOL; return ''; } } class Hoge { private int $val…

型宣言~int~

PHP

型宣言のint編。どこまで許容されるのか検証。 Main.php getMessage() . PHP_EOL; print $e->getTraceAsString() . PHP_EOL; return -1; } } class Hoge { private int $val; public …

type hintingの改善(Type declarations/型宣言)

PHP

だいぶ昔に以下の記事を書いた。 hhelibex.hatenablog.jp それからだいぶ時が経ったものの、PHP 5.xの世界でずっと生きてきたので気付かなかった。 (英語) Type declarations (日本語) 型宣言 これによると、 英語 Type declarations can be added to functi…

オブジェクトの存在しないプロパティを参照したときの挙動

PHP

もしかしてオブジェクトの場合もか?ということで試したメモ。 Main.php a); var_dump($a->b); 実行結果。 $ for php in php56 php70 php71 php72 php73 php74 php80 php81 php82 ; do echo "===${php}===" ; ${php} Main.…

配列の存在しないキーを参照したときの挙動

PHP

PHP 5.4.16で動いているシステムをPHP 8.1.6に移行しようとしてハマったのだが、Smarty 2.xでは、error_reportingの値を書き換えてE_NOTICEを勝手に抑制していたことが発覚した今日この頃。 PHP 8.1.6にしてみるとどうにもWarningが止まらない。Smartyの未定…

オブジェクトに対するarray_key_exists関数呼び出しの代替策について

PHP

array_key_exists関数の第二パラメータにオブジェクトを渡すとエラーになるようになってから久しいが、PHP 5.4.16で動くシステムを最低でもPHP 7.3以降に上げなければならなくなったためにぶつかった壁の調査。 以下のようなコードをPHP 5.6.40/7.4.29/8.1.6…

令和4年3月21日

そうか今日は令和4年3月21日か和暦使ってるところで切符やレシートとって残しとくと記念になりそう— 上原 哲太郎/Tetsu. Uehara (@tetsutalow) 2022年3月20日 ということなので、遊んでみる。 import java.util.Calendar; import java.util.Locale; import j…

CSVファイルの扱いに関する挙動の比較(2)

前回、以下の記事を書いた。 hhelibex.hatenablog.jp その中で、「自身が書き出したCSVファイルを読み込むとエラーになる」可能性が出たので、実際に検証してみた。 なお、今回は、PHPについては7.4.0以降を対象とする。 事前準備 fgetcsv/fputcsv (PHP (7.4…

CSVファイルの扱いに関する挙動の比較

CSVファイルの読み書きに関する挙動をまとめたメモ。 はじめに 検証に使うCSVファイル fgetcsv/fputcsv (PHP) Super CSV (Java) Super CSV Annotation (Java) OrangeSignal CSV (Java) opencsv (Java) まとめ 参考 おまけ(Excelで開く) はじめに まず、復…

超訳:Apache MavenでJavaアプリケーション開発

いまさら、人生初のApache Maven使用ということで。 詳細は以下のサイトに譲るとして。 初心者のためのApache Maven入門 - libro https://www.tuyano.com/index2?id=5729201025974272 このサイトの内容をベースにして、Javaアプリケーションの作成から実行ま…

RFC4180に従わないfgetcsv/str_getcsvの独自仕様

PHP

「バックスラッシュを削除するとうまくいく」。そんな問い合わせを受けて調べてみたら、驚愕の事実が発覚。その調査メモ。 CSVファイル さすがにオリジナルを載せるわけにはいかないので、簡略化したCSVファイルを示す。文字エンコーディングはWindows-31J。…

iconvで「シフトJIS」を変換する際にハマった

「シフトJIS」で保存された、バックスラッシュ(0x5c)を含むファイルをiconvで変換するときにしばらくハマった。 $ iconv --version iconv (GNU libc) 2.17 Copyright (C) 2012 Free Software Foundation, Inc. This is free software; see the source for …

いろいろなクラスのiteratorのまとめ

C++

C++の勉強をしていると、いろんなところにiteratorが出てきて面倒なので、先に主に使うクラスのiteraatorをまとめておく。 ソースコード #include <iostream> #include <string> #include <set> #include <map> #include <list> #include <vector> #include <deque> #include <array> int main() { std::cout << "stri</array></deque></vector></list></map></set></string></iostream>…

vectorクラスまとめ

C++

C++でよく使われるvectorクラスだが、メソッドがよく分からなかったので、サンプルを全部詰め込んでみた。 ソースコード #include <array> #include <iostream> #include <vector> std::vector<int>& init() { static std::vector<int> v = {1, 99, 4}; return v; } int dump(const std::vector<int>&</int></int></int></vector></iostream></array>…

PHPでPOSTする

PHP

大昔に書いた記事にウソがあったので、それを訂正しつつ、PHPでPOSTするためのコードを何通りか書いてみるテスト。 hhelibex.hatenablog.jp 下準備 以下のようなAPIを用意しておく。HTMLコードを吐き出す仕様になっているのは気にしない。 post-api.php <dl> $v</dl>…

「プログラマ脳を鍛える数学パズル」補完計画:進数変換(2)

C++

以下でC言語版を書いた。 hhelibex.hatenablog.jp それのC++版。せっかくなのでstringを使って書いてみた。 #include <iostream> #include <sstream> #include <string> using namespace std; /* * 与えられた文字列を逆順にする。 * * str 文字列が格納された配列 */ string reverse(st</string></sstream></iostream>…

「プログラマ脳を鍛える数学パズル」補完計画:進数変換(1)

C

本業が開店休業状態でリハビリしなきゃなぁということで6年前の本だけど掘り返してみた。 プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問作者:増井敏克発売日: 2015/10/16メディア: Kindle版 この本の1問目で「C言語には2進…

カーソルの使用方法

もうZend Framework 1(ZF1)の話はいいやって感じだけど一応メモ。 ZF1を使ってDBへのアクセスを実現するには、通常はZend_Db_Table_Abstractクラスを継承したモデルクラスを作って実現すると思うじゃないですか。 select(); …

Zend Framework 1+PostgreSQL

ある時、Zend Framework 1系+PostgreSQLで組まれたシステムのPostgreSQLバージョンアップを行う機会があったのだけど、PostgreSQL 12以降には上げられないことが判明して、PostgreSQL 11で妥協したことがあった。 CentOS 6のサポート期限も近づいているし、…

yumで標準以外のPostgreSQL環境を構築する

PostgreSQLはバージョンアップが早く、CentOSの標準リポジトリのみに依存していると、本家でEOLになっていって悲しいので、yumで新しいバージョンのPostgreSQL環境を構築するためのメモ。 ちなみに、CentOS 6ではv8.4.20、CentOS 7ではv9.2.24、CentOS 8では…

yumでCentOSに標準以外のPHP実行環境を構築する

CentOSの標準リポジトリのみに依存していると、PHPのバージョンがどんどんEOLになっていって悲しいので、yumで任意のバージョンをインストールして使用するための手順のメモ。 ちなみに、標準リポジトリを使用する場合はCentOS 6ではPHP 5.3.3、CentOS 7では…

SSLサーバー証明書を無視するための対応方法

よりにもよって繁忙期に、以下のROOT証明書期限切れで接続不可になるというトラブルに見舞われ、なんじゃゴルァ!と叫びながら対応した記憶の記録。 Knowledge: Sectigo AddTrust External CA Root Expiring May 30, 2020 https://support.sectigo.com/artic…

証明書ファイルなどを確認するコマンド諸々

歳を取ると、いろんな形式の証明書ファイルや、サーバーにアクセスしての証明書の検証方法など、コマンドをすぐに忘れて、そのたびにググるということを繰り返しているので、とりあえず思いついたものを整理しておくテスト。 用語などは適当かもですが、その…

Eclipse(PDT)でPHPのコードを書く時の不便さを解消する

そもそも、静的型付けでない言語は好きではないのですが、好き嫌いを言っていると仕事が無くなってしまうので・・ そんなわけで、Eclipse(PDT)でPHPのコードを書くわけですが、時にあるクラスのインスタンスの配列を関数/メソッドに渡す形にしたい時があり…

identity column定義を削除する

DB2

大昔に、DB2でidentity columnを定義するという記事を書いた。 hhelibex.hatenablog.jp これを使って生成したテーブルがあるのだが、とある事情により、自動採番ではない形に変更する必要が生じた。 うーん‥どうやって削除するんだ、これ?‥と悩み探して20分…

DB2のトランザクションログ領域が足りない場合の対処

プライベートでデータを蓄積しているDB2サーバーで、巨大なインデックスを作ろうとしたら、トランザクションログがいっぱいというエラーが発生しました。 db2inst1@ubuntu14.04:~$ db2 "CREATE INDEX idx_hoge_hogehoge ON hoge(hogehoge)" DB21034E The com…

hostnameの変更

CentOSにおけるホスト名、永続的に変更しようと思うと、バージョンによってやり方が異なるので簡単にまとめておくメモ。 CentOS 5/6 ホスト名は「/etc/sysconfig/network」ファイルに書いてあるので、hostnameコマンドで変更しても永続的には変更されません…