epubcheckで「mimetypeファイルエントリが存在しないか、アーカイブの先頭以外の場所に存在しています.」
epubcheckというEpub向けのW3C製の構文チェッカーがあります。 実行するとありがたい指摘をしてくれるのですが、次のエラーだけは原因が分かりませんでした。
$ java -jar epubcheck.jar ~/tmp/main.epub EPUB version 3.2 のルールを使って検証します. ERROR(PKG-006): /home/Artisan/tmp/main.epub(-1,-1): mimetypeファイルエントリが存在しないか、アーカイブの先頭以外の場所に存在しています. チェックは終了しましたがエラーが検出されました メッセージ: 0 件の致命的エラー / 1 件のエラー / 0 件の警告 / 0 件の情報 EPUBCheck 完了
調べたところ、次のようなやりとりを発見。
どうやら、mimetype を圧縮せずに zip し、その後その他のリソースを圧縮して追加せよとのことらしい。 詳細はよくわからんが、次のようにすればOKらしい。本当はしっかりオプションを理解しないとだめなんだろうけど…。
$ zip -X0 ../main.epub mimetype $ zip -9 -r ../main.epub META-INF OEBPS
PHPのマジックメソッド
__construct()
, __destruct()
, __call()
, __callStatic()
, __get()
, __set()
, __isset()
, __unset()
, __sleep()
, __wakeup()
, __toString()
, __invoke()
, __set_state()
, __clone()
および __debugInfo()
があるみたい。
https://www.php.net/manual/ja/language.oop5.magic.php
ここでは、__toString()
と __invoke()
の使い方を簡単に説明する。
__toString()
クラスが文字列に変換される際の動作を決めるもの。
__invoke()
オブジェクトを関数としてコールされる際に呼び出されるもの。
例
<?php class TestClass { public function __toString() { return 'toString() is called.'; } public function __invoke() { return 'invoke() is called.'; } } $class = new TestClass(); echo $class; echo $class();
出力結果
toString() is called.invoke() is called.
MySQLでテストデータを大量に生成する方法
各種FWのテストデータ生成ライブラリを使うのもいいけど、この方法もよい。
redis-cliが無くてもRedisの中身を見る
curlで出来る。
$ curl telnet://cache.test.local:6379 keys * *1 $51 foobar_cache:yRjsFE6BL0T3Dn54lxyzJsUathFmyrA5c9it6NqQ
MySQL8でユーザーを作成して全ての権限を付与する
バージョン間の差異なのかうまくいかないことが多いのでまとめておく。
mysql> create user 'your-user'@'%' identified by 'your-password'; Query OK, 0 rows affected (0.01 sec) mysql> create database `your-db-name`; Query OK, 1 row affected (0.01 sec) mysql> GRANT ALL PRIVILEGES ON `your-db-name`.* TO 'your-user'@'%'; Query OK, 0 rows affected (0.01 sec)