HHeLiBeXの日記 正道編

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

配列とハッシュの基礎サンプル

最近、Perlのプログラムに触れる機会ができたのだが、配列とかハッシュとか、記号が多すぎて理解が追い付かない。 「$」とか「@」とか「%」とか「\」とか。 なので、以下のページを参考にしながら、軽くサンプルを作ってみた。 リファレンスと多次元データ構…

指定するキーワードを全て含むファイルを探すスクリプト

指定するキーワードのいずれかを含むファイルを探す場合には、単純に egrep -lr "(key1|key2|key3|key4|key5|key6)" data としてやれば良くて、結果は以下のようになる。 data/1_2_3_4_5.txt data/1_2_3_4_5_6.txt data/1_2_3_5_6.txt ただ、その逆、「指定…

短縮URLの展開処理(PHP)の改版

古き良き時代は終わりを告げ、Webサイトへの接続はHTTP over SSL/TLSが当たり前になった。 hhelibex.hatenablog.jp hhelibex.hatenablog.jp そんなわけで、久々に引っ張り出した短縮URL展開プログラムのPHP版が、このままじゃダメだ!という状況になっていた…

Net::SMTPSを使い始めたところからの悪夢⇒DLLがロードされない問題の調査方法

苦しんだ3日間の奮闘メモ。 事の始まり 悪夢の始まり (・・・2日後・・・) 反省 事の始まり PerlのNet::SMTPSモジュールを使って、GmailのSMTPサーバー経由でメールを送ろうという試みを始めたところから悪夢は始まった。 プログラムのコアな部分は大まか…

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…

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

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