蝸牛の歩み

蝸牛の如く,ゆっくりでも着実に前へ・・・

タイヤがパンクして、予備チューブは破裂した

職場からの帰路、未舗装路を自転車で走っていたら、前輪が何かに当たる衝撃を感じ、その後シューという音とともにあれよあれよと空気が抜けてしまった。ここでパンクするのは2度目。暗くて石があってもよく見えないのよね。あとは空気圧が低くなっていたのも原因と思われる。

舗装路まで移動して、予備チューブに交換。携帯用のポンプでは空気があまり入れられなかったので、帰宅後フロアポンプで7気圧まで入れ直し。ところが、空気を入れて数十秒後、パーーーンという大音響とともにチューブが破裂してしまった。そういえば、チューブを交換するときにタイヤに砂というか砂利が少し入っていて、なかなか取れなくって「えーい、邪魔くさい」とそのままセットしてしまったのだな。あれがいけなかったのかも……

で、いつもなら帰宅途中にパンクしたチューブを修理すればいいんだけど、修理セットの中のゴムのりが乾燥してしまっていたので、買ってこないと修理できない。しょうがないので明日は車通勤決定。

マルチバイト

開発環境と本番環境で動作が違うなあ、と思っていたら、開発環境でphp.iniのマルチバイト関係の設定

mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP

あたりを設定し忘れていたのであった。どちらの環境も、

mbstring.func_overload = 6

になっていて、例えばstrlenという関数を使うとmb_strlenというマルチバイト対応の関数に置き換わるような設定なのだけれども、最初の2つの設定が違うせいで動作が違っていたようだ。

開発環境のphp.iniを書き替えたところ、本番環境と同じになったのだけれども、悩ましい問題が。今までstrlenを使って40文字でカットしていたのだけど、今まではマルチバイト非対応だったので40バイト=全角20文字でカットされていた。今度は40文字でカットすると全角で40文字でカットされるようになってしまい、長すぎる。かといって20文字でカットすると、全部半角だったときに短すぎる。
悩んでいると、mb_strimwidthなる関数を発見。これは「半角は1文字、全角は2文字として計算される」らしい。これでばっちり。