5丁目通信(仮称)

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

カテゴリー: オープンソース

  • WordPressの不要なプラグインは無効ではなくて削除するのです、という話し

    借りているサーバーに負荷が高かったの原因を調べてみたら、postfixのバウンズメールが原因だった。ほとんど使っていないドメインからのアドレスから送信していた。しかも、メールアドレスも知らないアドレスだった。スパムメールの踏み台にされていた。

    postfixを停止させても、メッセージキューにどんどん溜まっていく。postfixは送信専用にしているから受信はしていない。リレーされている訳ではないようだ。何かやられて不正なプログラムを起動しているかと思っても、cronの設定も変なところがない。

    送信しているアドレスのドメインが設定されているApacheのログを見てみると、外部からプラグインの下にあるプログラムを実行しようとアクセスしていた。IPアドレスを調べると中南米からだった。

    実行されているプラグインは、WordPress Automatic Upgradeという今はメンテナンスもしていないプラグインの中からだった。こちらは無効にしてただけど仕込まれたプログラムが実行されていた。

    WordPress Automatic Upgradeプラグインを削除しておく。すると今度はメッセージキューが溜まらなくなった。念のため、そのWordPressのサイトはメンテナンスにしてmod_writeでエラーページを出すようにしておく。Apacheのアクセスログを見ていると、いまだにしつこくアクセスをしている。今度はTinyMCSのプラグインを不正にアクセスしている。

    今回は更新もしていない、ほぼ休止中のWordPressのサイトだったけど、WordPress本体とプラグインは定期的にはアップデートをかけていた。しかし、WordPressのプラグインは、必要なくなったら無効にではなくて削除すること。インストールするプラグインも何かあったらアップデートしてくれるような新鮮なプラグインで、必要最低限をインストールしないと危ない。ただでさえもWordPressのサイトは狙われやすいですから。

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/10/17 13:40時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。

  • 通知をメールからSlackにした話し

    いろいろと通知がメールで来ます。例えば、今使っているバグトラッキングシステムのCandyCaneは、チケットを更新するたびにたくさんメールが飛んできます。

    メールを受けているGmailでフィルターで自動振り分けしていますが、やはり受信トレイに入ると煩雑です。アーカイブしてしまうと見過ごしてしまいます。そこでチャットサービスのSlackに流してしまいます。

    CandyCaneから直接Slackにメッセージを流せればいいのですが、新たにプラグインを作るのも面倒なので、簡単に既存のメールからSlackに流してしまいます。

    使ってたのはIFTTTです。IFTTTはメッセージの加工はできないので、CandyCaneでSlackでわかるようにメールのメッセージを加工してしまいます。CandyCaneのチケットに飛べるようにリンクを流すようにします。

    CandyCaneからGmailにメールを送信します。そのときGmailの自動振り分けでCandyCaneから受信したとラベルを付けます。プロジェクトごとに振り分けるならば、「プロジェクト名/candycane」のように階層でラベルを付けます。

    IFTTTのレシピで、GmailのIFでラベルで取得して、THENでSlackのチャンネルに送ってしまいます。

    このときCandyCaneから送信されるメールで、——–で区切られるとその以降はSlackで無視されるので、メールの送信のViewを修正しておきます。単純にメールテンプレートから——を削除するだけでよかったです。CandyCaneでテキストメールのみで送信するように設定すれば、後はIFTTTがSlackに送り込んでくれます。

    以上でCandyCaneの通知をSlackに流し込めます。

    考えてみれば、CandyCaneではなくてredmineのようなメジャーなバグトラッキングシステムを使ったほうが、もっと自由に連携できるかもしれません。

  • WordPressの固定ページの中に投稿最新一覧を表示させた話し

    お客さんのWordPressサイトでカテゴリごとに投稿の最新一覧を表示している固定ページがあります。いい加減手作業で更新するのも面倒になってきましたので、プログラムで対応します。

    Googleさんに聞いてみるとショートコードを登録して呼び出すようなことをみなさん書いています。何と皆さん出しているPHPのコードはすべて同じです。所謂コピペ記事です。何か気持ち悪い状態になっています。さて、誰がオリジナルなんでしょうか?

    しかしながら、WordPressって固定ページ内にPHPのプログラムを書けないのでしたね。今ごろ気が付きました。

    そのコードをコピペしてもいいのですが、2つのカテゴリの記事一覧を表示したいので、2つコピペしなければいけませんし、第一コピペコピペで気持ち悪いです。パラメーターを渡して切り替えなんて改造すればいいのですが、それも面倒ということで、何か別の方法を探します。

    What’s New Generator というよさげなプラグインが見つかりました。早速インストールして試してみます。しかし、カテゴリのフィルターが1つで固定されてしまうので、2つのカテゴリの最新一覧を並べることができません。惜しいですが、これではありません。

    次に当たったのは、Shortcodes Ultimateです。基本的にショートコードでWordPressのいろいろな部分にアクセスできるのですが、今回は投稿のカテゴリ別にタイトルだけを最新3件の記事を一覧に表示します。

    具体的には、

    [su_posts template="templates/teaser-loop.php" posts_per_page="3" tax_term="8"]

    なんて書いてしまいます。出力されるタイトルがHTMLのコードのh2タグで吐き出してしまいますので、この辺りは本当なら修正しないといけないのでしょう。CSSで指定してデザインを合わせて作業完了です。

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/10/17 13:40時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。

  • WordPressの編集でテーブル内にうまく入力できない話し

    お客さんのサイトでトラブル。Wordpressで作っているサイトです。

    テーブルで行を追加して、セルのなかに漢字を入力するとうまく入力できなくなりました。たとえば、

    12月号

    と入力すると、

    12gあtうgおう

    となってしまいます。

    使っている漢字変換がMS-IME 2007でとても古かったので、最初これが原因かと思って疑っていました。しかし、MS-IME 2010にバージョンアップしても症状は変わりません。

    そこで、TinyMCEのプラグインを無効にしたところ、今度は正しく入力できます。原因はTinyMCEのようです。しかし、テーブルの行の追加はTinyMCEのメニューからできるので、TinyMCEの代わりを探さなければいけません。

    試してものは、CKEditor For WordPressといプラグインです。こちらは正常に入力できます。行の追加の方法が変わってきましたが、HTMLのタグを入力するよりもいい、ということで、CKEditor For WordPressをこれから使ってもらうことになりました。

    しかしながら、どうしてTinyMCEでうまく文字が入力できなかったかわかりません。

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/10/17 13:40時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。

  • TinyMCE Advanced (?)の不具合発生のメモを残しておく話し

    お客さんのサイトがWordpressを使って更新しているのだけど、そこで発生したトラブルのメモ。おそらく何かの組み合わせで発生しているのかな?

    トラブルはWordpressの編集画面でTinyMCE Advancedプラグインの入力項目で日本語を入力すると発生する。例えば「つき」と入力すると「tうkい」となってしまう。しかし、TinyMCE Advanced 以外のタイトルなどの通常のフォームは正常に入力できる。

    自分のPCでは正常に入力できる。違いは MS-IMEかATOKで入力しているかの違い。お客さんの障害が発生しているPCでは、古いWindowsなのでMS-IMEも古いバージョン。したがって完全にはバージョンが合わせていない。自分のPCでMS-IMEを使ってもトラブルはない。うまく入力できないのはお客さんのPCだけ。

    TinyMCE Advancedプラグイン以外のGUIの編集プラグインを探すくらいしか解決はないかな。せっかく覚えてもらった入力方法を、お客さんにまた教えるのは大変。

    最近はWordpressのプラグインのちょっとしたトラブルに悩まされているな。

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/10/17 13:40時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。

  • redirectionプラグインのせいで、違うページが表示される話し

    お客さんから「トップページにアクセスすると、違うページが表示されるよ。」と言われた。そんなバカな、と思ったら、本当にそうだった。

    そのサイトは、Wordpressで作成されたものを引き継いだもの。マルチサイトで作られている。

    WordPressの設定もおかしなところもないし、リダイレクトの.htaccessのRewriteの設定も別に大丈夫。さて、わからない。

    Googleさんに「wordpress リダイレクトプラグイン 勝手に」で聞いてみた。すると、「Worpressのredirectionプラグインが悪さしているかも」、と出てきた。

    よく設定を見てみたら、redirectionプラグインを使っていた。ログを見ているとしっかりとリダイレクトしていた。データベースから直接redirectionプラグインの設定を削除したら、おかしな遷移をしなくなった。

    何でそんな遷移をするようになったのだろう? WordPress恐るべし。

    redirectionプラグインを使わずに、最初からRewriteで設定すればいいのに・・・。

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/10/17 13:40時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。

  • baserCMS で管理者ページにログインできないときの対応メモを書いてみた話し

    今のお客さんのIRサイトをリニューアルをしたいという案件で、以前テストで作成したbaserCMSのテストサイトを復活させます。テストサイトはvagrant+VirtualBoxでローカルのPCに作成しています。

    久しぶりにvagrant upでサーバーを起動してきます。Vagrantで起動したらberkshelfでのmysqlのChefのクックブックの仕様が変わって動かないというトラブルがありましたが、これは自分でレシピを作って対応します。後はMySQLのバックアップを投入すれば、今まで作成したサイトにはアクセスできます。しかし、baserCMSの管理者ページにはログインできません。

    ここでNetBeansのデバッガを使ってログインの処理を追っていきます。ログインが成功した後のリダイレクトの処理以降がうまくいっていないようです。管理者ページのトップにリダイレクトしようとして、どういう訳か遷移しません。

    調べてみるとCakePHPのエラーログを見ろとあります。ログには

    2015-08-18 11:16:43 Warning: Warning (2): Unknown: Failed to write session data
    (files). Please verify that the current setting of session.save_path is correct
    (/vagrant/app/tmp/sessions) in [Unknown, line 0]

    なんて書かれています。セッションデータをうまく書き込まれていないようです。

    Googleさんにセッションデータがなぜ書き込めないかを聞いてみると、Vagrantの同期フォルダの権限の設定が間違っているとのこと。こちらのページのsynced_folderの設定を行うとうまく行きました。オーナーとグループをapacheにすればよさそうです。

    baserCMSのGitHubにVagarantFileのサンプルがありますが、こちらのsynced_folderの設定のままだと、私のところではうまくセッションの書き込みができませんでした。今までうまくいっていましたがどうしてなのだろうか?

    以上、2日位悩んだ結果のメモです。まずはCakePHPで何かあったらログを読めということでしょうか。いつも基本を忘れます。

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/10/17 13:40時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。

  • SourceTreeのカスタム操作でコミットしたファイルリストを取り出すバッチを書いた話し

    今やっているプロジェクトでは、本番サーバーにアップするときに、どのファイルをアップするかを報告している。理由は、共同作業しているのでお互いにファイルの上書きをしないようにするためだってさ。これは、自分以外はgitみたいなバージョン管理システムを使っていないという大きな理由。

    どのファイルを修正したかなんて、手作業で拾っていったらとても大変。考えただけでもゾッとする。自分だけファイルはgitを使って乗り切っている。

    他の人たちもgitを使ってもらえばいいじゃない、と思うけど、長年開発してきたプロジェクトに自分が最近ポッと入ったので、皆さんにgitを使ってよ、なんて言えないし、それにバージョン管理って何かしら、といったところなので、仕方ないから何とか自分だけ楽をしようと考える。

    今までは、コミットしたファイルの一覧を出すのにこんな感じでコマンドを打っていた。

    git diff --stat --name-only commit1 commit2
    

    16進のコミットIDを拾って打ち込むのはとても面倒。もっと楽をしようと考えた。

    今使っているgitのクライアントはWindowsのSourceTree。このSourceTreeの機能にカスタム操作なる機能があることを初めて知った。選択したコミットのIDを取得してバッチファイルに流せるのだ。

    著:湊川あい, 著:DQNEO
    ¥2,208 (2025/10/13 14:11時点 | Amazon調べ)
    著:リック・ウマリ, 翻訳:吉川邦夫
    ¥1,804 (2025/10/13 14:11時点 | Amazon調べ)

    SourceTreeのカスタム操作でGoogleさんに聞くと、SourceTreeでコミット間の差分ファイルを抽出しよう (カスタム操作を使う方法)」、なんて差分のファイルをアーカイブしてZIPファイルにするサンプルばかり出てくる。みなさん、同じバッチファイルのソースを載せているけど、さてどれがオリジナルなんでしょうか? 以下のサイトがオリジナルであるという保証はない。

    今回書いたのは、以上のサイトを参考にして、こんな感じのバッチファイルを書いた。

    @echo off
    
    if "%2" EQU "" (
      set PARAM1=%1
      set PARAM2=%1~1
    ) else (
      set PARAM1=%1
      for %%a in ( %* ) do set PARAM2=%%a~1
    )
    
    rem echo %PARAM1%
    rem echo %PARAM2%
    
    git --no-pager diff --stat --name-only %PARAM1% %PARAM2%

    最初のパラメータのチェックだけ、前述のサンプルから使わせてもらった。SourceTreeのカスタム操作では、選択されたコミットはすべてパラメータで取ってくるので、最初と最後のパラメータが必要なので、取得する処理を書いている。でも、何十年ぶりにDOSのバッチファイルなんて書いたのだろう。

    これはWindowsだけしか動かないから、Macの場合は同じようなシェルを書く必要がある。結局はパラメータの処理だけだから簡単かも。

    これをgit-diff-stat.bat とか名前を付けて保存する。後は、SourceTreeのカスタム操作の設定。こちらはこんな感じで設定してしまう。

    git-diff

    使い方はSourceTreeでコミット一覧からコミットを選択して、右クリックからカスタム操作を選びだけ。うまく行けばコミットされたファイルがリストになって出てくるはず。

    これで16進の8桁の数字を入れなくて60倍楽になったよ。って、書いたら既に誰かが作っているのだろうな。

    追記(2020年9月25日)

    以上のことをしなくても、Source TreeにはGit Flowをサポートする機能があるので、案件ごとにfeatureブランチを作って、完了したときにdevelopブランチにマージすれば(この一連の操作はSource Treeでサポートしてくれる)、コミットしたファイル一覧がわかる。現在は、更新したファイルを報告することはなくなったけど、デプロイとかやっていないので、いまだに手作業でFTPでファイルをアップしている。どのファイルが更新されたがわかるので(FTPクライアントの自動更新機能を使えよという声が聞こえそうだけど)、これは便利な機能である。

  • サーバーで動くメールフォームを調査した話し

    メールフォームは有名なPerlライブラリを使っている。どうしてPerlかというと、お客さんのサーバーがPerlのCGIしか動かないという理由から。

    しかし、メールサーバーは外部のサーバーを使わなくてはいけないということで、メール送信の処理は私のほうで適当に改造している。このPerlライブラリはsendmailしか使えないということから。

    このたび、めでたくお客さんのサーバーでPHPも動くようになりそうということで、PHPのメールフォームを簡単に確実に作れるかという調査を開始。いまさらガリガリPHPのプログラムを低レベルから書きたくないし、データベースも使わないようなものにCakePHPのようなフレームワークを使うのも大袈裟だしということで丁度いいいメールフォームが作れないかということ。

    今回jQuery-Validation-Engineという、よさげなものを見つけた。メールフォームって入力チェックが肝になりそうだから、バリデーションが簡単にできそう。

    STUDIO KEY「jQueryでメールフォームをノンリロードで処理する」 (リンク切れ)
    http://studio-key.com/tips/jquery-mailform-01

    メール送信の処理を何とかしなければいけないのだけど、Slimなんかの軽量フレームワークを使ってみるかな。

    View this post on Google+

    著:山田祥寛
    ¥3,366 (2025/10/10 21:09時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/10/10 21:09時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/10/10 21:09時点 | Amazon調べ)

    追記(2021年4月22日)

    実際にはGoogleフォームが現実解かもしれない。ただし、お客さんによっては、情報を外部に格納したくないなんてあるから利用できないかもしれない。

  • WordPressのutf8mb4 のサポートの話し

    なにげにWordpressを4.2.2にアップデートしたら、次のような表示が出てきた。

    utf8mb4 のサポート

    データベースの文字エンコーディングが utf8 から新しい4バイト文字の全範囲のサポートを追加した utf8mb4 に変更されました。

    utf8mb4 って何かしら? 絵文字のサポートと関係するのかな?

    調べなくてはいけないな。

    View this post on Google+

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/10/17 13:40時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。