epub制作に必須のArchive Zipのメモ

電子書籍作成ページの依頼があって久しぶりにスクリプトを眺めてみた。
(電子書籍の制作ではなくて、電子書籍を作成するページの作成)
エラーのないepubを作るのは手順の塊…というか手順だけなので面倒くさいんだけど難しいスクリプトでもない。
ユーザーの入力をどこまで自由にするのか、ページ移動はどうするのか、エラー処理は、ブラウザ対応は、などなどepub作成以外の部分で考えなきゃいけないことがいろいろあるのはwebだからしかたがないところ。
Archive::Zipのメモ1
てなことを考えながら見てたら、epubをパッケージするzipのモジュール、Archive::Zipでエラー。
Can’t call method "desiredCompressionLevel" on an undefined value at ...../Archive/Zip/Archive.pm line 249.
他のスクリプトでは問題なく使えているモジュールで原因がわからないし、該当箇所を見てもよくわからない。
$zip->addFile(filename,newfilename)
zipにファイルを追加していくところでエラーになってしまう。いろいろ試行錯誤。
結果。追加するファイルが見当たらない、pathが違ってたというだけのことだった。コンセントが抜けてますよレベルの話だった。
…でもなあ、このエラーメッセージじゃわからん。とほほ。
Archive::Zipのメモ2
前々からArchive::Zipで圧縮したらそれをファイルの書き出すのではなくて、標準出力にそのまま吐き出せればいいのにと思っていて、ついでなので調べてみたら、当たり前のように用意されていた。おのれの不勉強に愕然。そりゃそうだよなあ。
$out = *STODOUT;
$zip->writeToFileHandle($out,0);
writeToFileHandleのファイルハンドルに標準出力を指定してやればOKだった。
これで正常なzipファイルを出力することができた。
久しぶりにこの手のことでグーグル様詣で。以前Archive::Zip について調べた時には見かけなかったepubがらみのQ&Aなんかが検索でひっかかってきてちょっとびっくり。
電子書籍を作る側は充実してきてるんだなあ、と変なところで実感した。
.htaccessでアクセス制限の小ネタ

アクセスしてきたIPアドレスを見て、アクセス制限する(=ディレクトリ内のファイルを見せない)方法を2つ。
(httpd.confに記述してもいいんだけど、レンタルサーバーでapacheの設定ファイルをいじれるような専用・占有プランじゃなくて一般的な間借りの場合、各自割り当てられたディレクトリに.htaccessというファイルで設定することになる)
.htaccessに以下を記述する。
ひとつは。
order allow,deny
allow from all
deny from NNN.NNN.NNN.
1行目 以下は許可してから拒否するよ、という指定
2行目 すべてのアクセスを許可する
3行目 NNN.NNN.NNN. で始まるIPアドレスは拒否する。123.456. など前方一致(大きく範囲でざっくり拒否したい時は123.などにする)
これはアクセスしてきた相手に403を返す。
アクセスしてきた側は「このフォルダ、ファイルにアクセスする権限がありません」とか「このフォルダ、ファイルにアクセスは許可されていません」などとなってページを見ることができない。
この方法が手っ取り早いんだけど。
「このフォルダ、ファイルにアクセスする権限がありません」ということだと、「このフォルダやファイルが存在している」ということを相手に教えてしまうことになる。
mod_rewriteというモジュールが使えるなら(最近のレンタルサーバーのapacheはほとんど使えると思う)
RewriteRuleで404を返すことができる。
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^NNN\.NNN\.NNN\.
RerwriteRule .* /404.html [R=404,L]
1行目 RewriteEngine を有効にする
2行目 アクセスしてきたIPアドレスが NNN.NNN.NNN.で始まるなら
3行目 404で「404.html(見つかりませんでしたページ)」へリダイレクトする。
アクセスしてきた相手は「そんなフォルダ、ファイルはありません」ということになってページを見ることができない。403よりも404を返した方が安全。
wordpressにセキュリティホールがー、とか、bashのぜーじゃくせーがー、とか何かあるたびに、そこを狙った妙なアクセスが増えるので対策をしておいた方が吉。
ウチのページはほとんどperlで自作してるので、スクリプトの方でも404を返すようにしてるんだけど、設定ファイルにも仕込むようにした。

ポータル巡礼1万8000歩弱


このポータル、ほんと、なんでこんなとこに?という、住宅街の真ん中の小さな公園や、店だったりするんでその近辺をスマホを覗き込み俯き加減で歩いては止まってごそごそやってると明らかに不審者。家人とふたりだったからまだましかもしれんけど、これがわたしひとり、くいつめた初老のおっさんがひとりでうろうろ徘徊しているとほぼ確実に職質コース。
出かける前はこの辺りまで歩いて行こうとしゃべってたのに、実際に回ると立ち止まりが多くて時間が足りなかった。それでも今日は1万8000歩弱歩いたわけで、実に健康に良いゲームだ。
今日でやっとレベル4になった。
まだまだ先は長い…って、先はどこまであることやら。
ゴールは亀有の串揚げ屋・田中。
http://kushi-tanaka.com/menu/kushikatsu
レバカツやレンコン、紅ショウガの串揚げはもちろん、しめ鯖が絶品。炙っていてあぶらが浮きあがってテリテリと甘みたっぷり。これまた美味いガリ酎ハイがすすむ。
チェーン店で都内にあちこちあるみたいで、同じ味、接客ならオススメの店。
揚げ物とソースは正義だ。
ネットを見てるひまがあったら小説を読もう

台風が迫る日曜日。
朝から雨で今日はいちんち引きこもり。積ん読だった梨木香歩の『村田エフェンディ滞土録』を読んで、あちこち緩い初老は涙腺決壊する。
第二次大戦前。考古学でトルコに留学した日本人ムラタと、トルコ人、ドイツ人、ギリシャ人3人の交友録。異なる背景、文化なんだけど、それに接する村田の視線と距離がぶれなくていちいち腑に落ちる対応。『家守奇譚』に通じるすこし不思議な出来事を交えつつ、男子3人の各々のストーリーが村田と絡み合う。いやもうどいつもこいつも皆、優しい。
ネタバレになるので避けるけど、鸚鵡はいかん。
監督・脚本:バリー・レビンソン、音楽:デイブ・グルーシンで映画化すればきっとハマる。
んで、そんな話なので、異文化コミュニケーションなネタが満載で。
『村田エフェンディ滞土録』梨木香歩
これほど「無為」ということに耐えられる心性は、その常軌を逸した太平楽は、私の理解の範疇を遥かに越えていた。それで私はこういうことには——国民性に関することには、善悪の判断を下さず、ただ驚きあきれるに留めおくことにしている。
文化というものは洋の東西を問わず、成熟し、また先鋭化してゆくと、言葉にその直接的な意味以上のものが付加され、土着のものにはそれを読み解く教育が、幼い頃から自然と施されてゆくものなのだろう。いわゆる「育ち」というものはそのことなのだろう。とすれば「育ちが違う」というのは、つまり、一つの言動を巡る解釈が違い、それに対する反応が違うということである。であるから、誰かの一言のその正確な狙いを知ろうと思えば、本来はその誰かの育ちまでを勘定に入れておかねばならぬということになる。しかし、それは決して完璧にはなされ得ぬ業である。
何度も何度もネットに溢れかえるレイヤーだフィルターだのコミュ障だのといったネタ・ドヤ顔・したり顔に食傷気味。それって何の根拠があって言ってるの、それじゃ説得力ないよねえ、ただの思いつき?とか。
『村田エフェンディ滞土録』に出てくる描写にいちいち激しく首肯。文化・背景の違い、育ちの違いをふまえて、さてどういう態度?ということの解答がここにある。
ネットでポジション取りに走るひまがあったら、梨木香歩を200回読むと良いよ。
京成の一日周遊切符「下町日和きっぷ」

一日一定区間内乗り降り自由という一日周遊切符を初めて使ってみた。
京成電鉄の「下町日和きっぷ」のページ
http://www.keisei.co.jp/keisei/tetudou/ticket/shitamachi/index.html
500円で乗り放題はやっぱりかなりおトク。
京成のページで見てもらえばわかるように、東端の江戸川や北端の金町から京成上野や押上までの区間内乗り降り自由で、昭和の下町がそのまま残る立石や、寅さんの柴又、スカイツリーで賑わう押上や西郷さんの上野などなど、駅を降りてすぐベタベタな名所が揃っている。
今日は5つの駅で乗り降り。
立石でディープな飲屋街の奥にある人形焼きの木村屋でビンズ煎餅とあんなし人形焼き。

日暮里で降りて谷中に行って宝家で茗荷寿司。

谷中のマザーインディアでビリヤニ(マトン)と山羊カレー


…なんて、一見情緒豊かな休日を過ごしてる風だけど、実はIngressのポータル巡りがメインだったオタクなわが家だ。
押上、スカイツリーあたりはポータルがたくさんあってあっちだこっちだとスマホを睨みながらうろうろHackして、ポータルだらけの上野ではちょっと動いては立ち止まってスマホをいじる挙動不審者。
もしかすると、鉄道各社、ポケモンラリーでもないのに一日周遊切符の売上が伸びてるんじゃないかと。
今日は1万歩を超えていて、健康にいいゲームでもありますなあ。
| << | 2026/2 | >> | ||||
|---|---|---|---|---|---|---|
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
【最近の20件】
- 20260129 ブログをレスポンシブ対応にリニューアル
- 20260126 ブログのふり返り
- 20260121 小ネタ:ed25519秘密鍵公開鍵とJson serialized canonical
- 20260120 ActivityPubは自作実装しよう!
- 20260117 RFC9421版HTTP Signatureに対応
- 20260111 HTTP Signatureの署名対象文字列
- 20260109 web本棚のActivityPub対応
- 20260106 web本棚のソースコード公開
- 20260104 web本棚
- 20260101 謹賀新年2026
- 20251231 2025年ふりかえり
- 20251213 perlと30年
- 20251210 ActivityPubの投稿削除
- 20251101 日常雑感
- 20251026 テキトーフェッチメール
- 20251014 ActivityPubサーバーで投稿の編集
- 20251008 元WINDOWS10のノパソにlinux mint
- 20251002 GBLシーズン「変わりゆく物語」でACE到達
- 20250925 ブログのアクセス制限
- 20250922 ActivityPubサーバーに引用を実装


