5丁目通信(仮称)

とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。

投稿者: muneando

  • 430MHz呼出周波数で無変調?という話し

    VX-7

    430MHz呼出周波数で無変調波らしきものが流れています。私のところだけでしょうか?他の局の呼出しも途切れ途切れで聞こえないことがあります。

    インターネットの世界では、ある程度どこから誰がつなげているかはわかりますが、無線の世界では難しいのでしょうね。簡単だったら不法無線局を一掃できますから。

    著:加納勉, 編集:Webon編集部
    ¥480 (2025/03/12 10:34時点 | Amazon調べ)
    CQ出版
    ¥1,650 (2025/03/12 10:34時点 | Amazon調べ)

    電波を出すには必ずアマチュア無線の国家資格が必要です。電波法令を守って楽しみましょう。

  • せっかく便利な道具を持っているなら使ったら

    稼働しているシステムでメール送信でトラブル。メールを送ったのに届いていないらしい。

    本当にメールサーバーからメールを配信したかをログを調べる。しかし、こちらはログへのアクセス権限がない。

    仕方がないので、管理者(2つ上の発注元)にメールアドレスを伝えて調べてもらう。

    結果は正常に配信されているそうだ。しかし、コメントも一言書いてあった。

    膨大なログから調べなければいけないので、次回から送信日時も教えてくれなければ困る。

    それはそうですね。と理解したが・・・。

    しかし。何でログファイルを目視しなければいけないの? これって本当? サーバー管理者がやること?

    grepかければ簡単ではないの? ただ、やりたくない面倒なだけ?

    いいえ、発注元の方ですので、喧嘩は売りたくありません・・・。

  • QdmailでCakePHPのViewで送ると文字化けする話し

    現在、CakePHPのサイトを作成していますが、メールを送信する処理があります。今まですとmb_send_mail()を使ったクラスを用意していましたが、せっかくCakePHPを使っているということで、Qdmailというコンポーネントを使ってみました。

    PCに送るには問題なし。しかし、携帯電話宛のメールは文字化けします。

    調べてみると、cakeText()メソッドでViewを使うとUTF8で送信しているようです。Viewを使わず直接text()メソッドを使ってテキストで送ると、正常にiso-2022-jpで送ってくれます。

    Qdmailのサイトで調べて、charsetBody()メソッドでiso-2022-jpを指定してもだめ。テンプレートファイルをJISにしたら携帯電話で読めるようになるが、パラメータをアサインすると文字化け。1時間ほど悩む。

    Googleで「Qdmail cakephp 文字化け」で検索してみるとありました。ここのサイトでヒントが見つかりました。

    cakeText()メソッドの第5パラメータで iso-2022-jp を指定すればOK。Qdmailのマニュアルには見つかりませんでした。

    Qdmailのサイトには、非常に詳しくマニュアルが載っています。今回はこれを信じたのがいけなかった。ソースコードが読めるのなら、ソースコードを読まなければいけません。しかしQdmailのソースコードは、コメントが少ないので読みづらい。コメントの中にコードが埋まっている私とは大違い。

    著:山田祥寛
    ¥3,366 (2025/03/12 08:20時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/03/16 09:41時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/03/12 08:21時点 | Amazon調べ)
  • アマチュア無線三級の無線局免許が届いた話し

    以前、アマチュア無線三級が合格したという話しをしましたが、無線局免許を変更しました。ようやく免許が届きました。

    今回も電子申請です。申請から1ヶ月かかりましたが、何のことはない、私が返信用の封筒を出していなかったのです。封筒を送ったら、すぐに送られてきました。

    電子申請に一つ注文。審査が終了したら、メールでもいいから連絡くれたらいいのに。お願いします。おそらく、申請したら同時に返信用の封筒を送らなければいけないのでしょうね。

  • WordPressをWordPress Automatic Upgrade Pluginで自動更新

    PCやサーバーを使っていると、どうしてもソフトウェアのアップデートをしなければいけません。Windowsですと自動的にアップデートしてくれるのでいいのですが、オープンソースのサーバーアプリケーションですと、ダウンロード、ファイルのアップ、更新と一連の作業を行わなければなりません。

    サーバーのアプリケーションの更新が重要なのは理解していますが、面倒であるということも確かです。納品したお客様の中には、作業費を出していただけない場合もありますので、無償で作業するか、最悪そのままで運用となります。

    なるべく手間をかけないことができないかということで、現在このブログで利用しているWordPressの自動更新のプラグイン(WordPress Automatic Upgrade Plugin)を試してみました。

    まずは、あまり影響のないサイトで試してみます。インストールはいつものWordPressのプラグインのインストールと同じ。プラグインのディレクトリにコピーするだけです。

    管理画面でWordPress Automatic Upgrade Pluginを実行すると、あとは画面にしたがっていくだけです。テーブルのバックアップに始まり、最新のWordPressのダウンロード、そしてインストールまでやってくれます。

    日本語の辺りで不具合が出るかと思いましたが、問題なしです。

    もし、WordPressの更新があれば、管理画面で表示してくれます。最新のWordPressはプラグインの更新も教えてくれますので、こちらも併せて使えれば、常に最新の状態にしてくれます。

    これは簡単です。トラブルが発生しても、バックアップファイルで戻せるので、良しとしましょう。

    追記

    以前にWordPressのソースを修正して対応した、RSSでの時間がUTCになってしまういうトラブルですが、WordPress Automatic Upgrade Pluginを実行したら元に戻ってしまいました。当たり前のことでしょうが、元のWordPressが対応してくれないとだめですね。

  • ランチがまずいと、気分が沈むという話し

    今日、税理士の先生のところに会社の決算の件で行きました。その帰り、ランチを食べようと横浜ヨドバシの地下のとんこつラーメン屋に。

    そのラーメン屋はテレビのランキングで1位を取ったと、大々的にポスターを貼って宣伝。大丈夫だろうと入ってみる。カウンターには店主の創業当時の感動ストーリーといった小冊子も置いてある。

    しかし! 出てきたラーメンはまずい。私はあまり味にはうるさくない方ですが、とにかく麺がまずい。

    麺がアルデンテ。芯がある。粉っぽい。

    これは何かの間違いと思って、替え玉を注文する。そのとき

    「麺が煮えてなかったので、今度は柔らかめで。」

    と注文。

    またまた出てきた麺は、歯ごたえがよくてコリコリしている。この店はそういう麺みたいです。隣の人は堅めの麺を注文していましたが、どんなものが出てるのか・・・。

    早々に退散し、違う店で食べ直そうかと思いました。

    でも、とんこつラーメンって細麺と聞いていましたが、こんな生煮えの麺でしたか? それがこの店のとんこつラーメンだよと言われてしまえば、なにも言えませんが。でも、それは私には理解できない・・・。

    あー。ランチのおかげで気分が悪い。あと何回食事ができるとのはいいませんが、まずいランチに当たったときは、とても損した感じ。

    そういえば、うちの娘の行きたい学校の選び方は、おいしそうな学食がある学校だそうです。食べるってことは大事なのですよ。

  • 全角文字は2バイトではないのでした、という話し

    タイトルの件、考えてみれば当たり前なのですが、お客さんからの仕様で引っかかりました。ここでいう全角文字は、マルチバイト文字のこと。

    フォームに文字を入力する処理で、入力した文字の長さをチェックする処理が必要です。そこで文字長でチェックするか、バイトでチェックするか。

    これをCakePHPのバリデーションで用意しているmaxLengthのルールでチェックしたところ、何も考えずに内部コードのバイト長でチェックしていまいます。これをお客様から指摘されました。希望としては、全角文字を2バイトでチェックして欲しいとのこと。

    例えば、「あああ」は6バイトではなく9バイトとして判定されます。これは内部のコードがUTF-8だからです。CakePHPのバリデーションで正しく文字数で判定するには、maxLengthの処理をmb_strlen()で変更してあげます。詳細な対応方法は、こちらのサイトをご覧ください。

    ここで簡単な実験です。こんなコードと結果です。

    <?php
    $str = "あああ";
    echo(strlen($str)); // 9
    echo(mb_strlen($str));  // 9
    echo(mb_strlen($str, 'UTF-8'));  // 3
    echo(mb_strlen(mb_convert_encoding($str, 'SJIS', 'UTF-8'), 'SJIS')); // 3
    echo(strlen(mb_convert_encoding($str, 'SJIS', 'UTF-8')));  // 6
    ?>

    UTF-8のままですと、全角文字は2バイトにはなりません。しかも、正しく文字コードをしてあげないと正しい文字数になりません。

    一旦、シフトJISに変換してあげて、mb_stringではないstrlen()で全角文字を2バイトで計算してくれます。

    昔の人間ですと、どうしても全角=2バイト、半角=1バイトと考えてしまうのですが、この考え方は古いかもしれませんね。

    著:山田祥寛
    ¥3,366 (2025/03/12 08:20時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/03/16 09:41時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/03/12 08:21時点 | Amazon調べ)
  • 社内サーバーの更新検討をした話し

    社内で使っているデルのサーバーは、ファイルサーバー、IMAPサーバー、AsteriskのソフトPDXのサーバーとして利用しています。メモリ1GBでディスク100GB4台をRAID5です。

    導入して4年目、多少トラブルがあったものの、とりあえず無事に動いています。

    しかし、いつ壊れるかもしれません。ファイルサーバーのバックアップは毎日取っていますが、安心してはいられません。しかも、そろそろディスクの残量がなくなってきています。

    そこで、サーバーの更新を検討してみます。条件としては、

    • ディスクは1Tバイト以上。
    • RAID構成で安全に。
    • メモリは仮想化されたサーバーを動かすので2MB以上。
    • 日頃メンテナンスで面倒がないこと。

    となります。現在のサーバー構成でメモリとディスクを増やして、デルで見積もりをしたら、30万近くになります。。

    代案として

    • Linuxのサーバーで構築するのをやめて、NASのTera Stationとを入れてしまう。しかし、これですと、IAMPとかAsteriskなどのアプリケーションが動かない。
    • NASのTera StationとLinuxサーバーを入れてしまう。そのときのLinuxサーバーはディスクは最小構成。ディスクはTera Stationにマウントする。Linuxサーバーが故障したら、OSだけ再インストール。でも、LinuxサーバーからTeraStationへのマウントはSMBでマウントするの? 遅そうですね。
    • 上のNASのTera Stationの代わりにiSCSIのTeraStarion ISを入れる。もし、ディスクが足りなくなったら、iSCSIの機器を追加していく。NASよりもパフォーマンスは上か? でも、iSCSI自体、新しい技術のためハードルが高いか? それにLinuxとの接続はBUFFALOも推奨していなさそうだし。
    • サーバー自体をパーツを買ってきて自作してしまう。でも、自作してしまうと故障したときに自分で面倒みなければいけないし大変かもしれません。

    お客様には、何台もTeraStationを薦めてきましたが、そろそろ自社でも導入しておいたほうがいいかもしれません。3番目がおもしろいかもしれません。

    さて、どうするか・・・。

    SambaをLinuxサーバーのインストールしてファイルサーバーとして動かすよりも、サクッとQNAPを入れてしまったほうが簡単、安心、便利でおすすめ。ファイルサーバーだけではなくてIntelのCPUのQNAPなら、Dockerでいろいろとコンテナを設定してサーバーをたくさん立てられるしね。

    続きはこちらから

  • PHP5にサーバー移行

    契約しているレンタルサーバー会社から、PHP4からPHP5に移行するという連絡がありました。PHP4がサポート停止になる措置です。

    おそらく何もしなくても、今動いているサイトやブログ(ここのブログ)は動くと思いますが、当日は注意しておかなくてはいけません。

    しかし、ようやくですね。PHP4に対応しているということで、CakePHPを推奨してきましたが、それも関係なくなります。だけど、いまさらCakePHPにいどっぷり浸かっていますので、他のフレームワークに行くのも辛いところです。

  • またまた本栖湖キャンプ

    三連休にまたまた本栖湖に二泊三日でキャンプをしてきました。今年で3回目。

    今回のイベントはカヌーを体験すること。西湖でカヌーを体験しましたが、キャンプは本栖湖。

    カヌーは上手く漕げません。くるくる回ります。3時間ほどで何とか形になります。

    しかし、娘は先生の講習もろくに聞かないでも、すいすい漕いでいきます。先生によるとこれが子供の能力だそうです。

    もう一つのイベントは、ケーキを焼くこと。今回は、いつも一緒に行くご夫婦の奥様からの提案で、キャンプでケーキとなりました。

    一回目はダッチオーブンが水平になっていないため、生地が流れてしまい失敗。

    二回目は、ちょっと真ん中が生焼けでしたが、合格点。とってもおいしかったです。

    送信者 北青山通信
    送信者 北青山通信

    今回、残念だったのはテント泊した学生たちのマナーの悪さ。夜中をキャンプ場内をバイクを乗り回すは、奇声をあげて大騒ぎするはで、非常に迷惑。キャンプ場の管理のおじさんに言ったら、「いつでも連絡すれば注意に行くよ。」と言われてしまいました。このキャンプ場は、地元で運営しているせいか、とてもアットホームなキャンプ場です。