Warning: Declaration of FEE_Field_Terms::wrap($content, $taxonomy, $before, $sep, $after) should be compatible with FEE_Field_Post::wrap($content, $post_id = 0) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Tags::wrap($content, $before, $sep, $after) should be compatible with FEE_Field_Terms::wrap($content, $taxonomy, $before, $sep, $after) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Category::wrap($content, $sep, $parents) should be compatible with FEE_Field_Terms::wrap($content, $taxonomy, $before, $sep, $after) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Post_Thumbnail::wrap($html, $post_id, $post_thumbnail_id, $size) should be compatible with FEE_Field_Post::wrap($content, $post_id = 0) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Post_Meta::wrap($data, $post_id, $key, $ui, $single) should be compatible with FEE_Field_Post::wrap($content, $post_id = 0) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Widget::wrap($params) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/widget.php on line 0

Warning: Declaration of FEE_Field_Comment::wrap($content) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0

Warning: Declaration of FEE_Field_Term_Field::wrap($content, $term_id, $taxonomy) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0

Warning: Declaration of FEE_Field_Single_Title::wrap($title) should be compatible with FEE_Field_Term_Field::wrap($content, $term_id, $taxonomy) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0

Warning: Declaration of FEE_Field_Option::wrap($content, $key, $ui) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0
Sabakura Blog - Part 20

脱FTPクライアント!notepad++のすすめ

脱FTPクライアントなどと少し大げさなタイトルをつけてしまいましたが、今回は特におすすめのエディタであるnotepad++をご紹介したいと思います。
ウェブデザイナーやウェブプログラマ、とくにHTML、CSS、JavaScript、PHPあたりをゴリゴリと書かれる方には非常に役立つソフトだと思います。

notepad++とは

「notepad++(ノートパッドプラスプラス)」は、Windows環境で動く多機能エディタです。

「notepad=メモ帳」というイメージが強いので、メモ帳に機能を足した程度のソフトだと誤解されやすいのですが、メモ帳どころか、Windowsで動く他の有名エディタ(秀丸エディタ、EmEditor、さくらエディタなど)と比べても、まったく遜色のない機能を持っています

シンタックスハイライトは数十を越える言語に対応し、関数の自動補完、タブエディットなどエディタとしての必要機能は一通り揃っています。

また画面分割ができるのも特長です。よく画面分割機能と謳いながらも、実際に開けるファイルは一つだけといったソフトもありますが、notepad++の場合はちゃんと複数のファイルを同時に編集できます。

わかりやすい例で言えば、左ウィンドウでHTMLのソースを編集し、右ウィンドウでCSSを編集するといったことも可能です。

唯一の難点としては、日本語の取り扱い、とくにEUC-JPが扱えないという問題点があります。しかしこれについても「NotePad++ EUC-JP 対応版」を作成している方がいらっしゃるので、ほぼ解決しています。

・Notepad++ EUC-JP 対応版

※そのほか2chのスレによるとファイルの編集内容が消えたという報告もあるので一応利用は自己責任で。ただ私は何年も使っていますが消えたことはないですし、海外では非常に普及率の高いエディタなので、まず心配はいらないと思います。

FTPソフトでのアップロード作業が不要に

便利なFTPプラグイン

notepad++では、プラグインを導入することでさらに機能を拡張できます。プラグインにはファイル比較を行えるものから、簡易エクスプローラーを導入するものまで様々な種類がありますが、なかでも特筆すべきものがFTPに関するプラグインです。

notepad++のFTPプラグインとしては、EUC-JP対応版にも同梱されている「NppFTP」、またはプラグインサイトにある「FTP_synchronize(FTP Folders)」があります。

この2つのプラグインはほぼ同じ機能を有しており、どちらもHTMLやCSS、JS、PHPなどのファイルをエディタで編集後、上書き保存時に同時にFTPでアップロードすることができます。

アップロードいらずの便利さ

この機能のおかげでnotepad++では、感覚としてはサーバー上のファイルを直接リモートで書き換えているかのような透過的な編集ができます。
言い換えれば、ファイルを編集→FTPでアップという普段の作業から、FTPでアップという面倒なステップを省くことができるようになります。

さすがにエディタで編集不可能な画像ファイル等のアップには対処していませんが、コーダーやウェブプログラマの方など、エディタでの作業がメインの方にはじつに役立つ機能だと思います。

また即座にアップロードされるのが恐いという場合は、もちろんFTPサーバーとの接続を切った状態での編集も可能です。さらにこの場合も、編集後にnotepad++から個別にファイルをアップロードできるので、やはりFTPクライアントをいちいち起動する手間は不要です。

共用サーバーでも使えるという優位性

サーバー上のファイルを編集するのであれば、SSHなどを使って接続してVi(Vim)などで直接編集すればいいのに、という意見もあるかもしれません。

実際その方が便利なときもあるのですが、これにはまずSSH接続ができるサーバーでないといけないという問題があります。
専用サーバーやVPSでは問題ないですが、現在のレンタルサーバーはSSH接続を許可している共用サーバーはごく少数しかありません。

そのため共用サーバーかつWindows環境下でFTP作業を省略したい場合には、一番簡単なのがnotepad++とFTPプラグインの組み合わせだと思います。
(Linux環境下であれば、.netrcにIDやパスワードを書いた上でVimで「:e ftp://~」でもいいと思いますが)

また、ローカルのキャッシュフォルダを設定しておけば、ローカルのファイルとサーバーのファイルを常に同期させることもできます。これにより、サーバー上での編集内容がローカルに残っていないといったリスクも防止できます。

以上のように、共用サーバー&Windows環境でウェブを制作していて、毎回のFTP作業が面倒だと感じている方は、ぜひ一度notepad++を試してみてください。

なお、詳しいFTPプラグインの紹介および設定の方法については近日中に記事にする予定です。

追記。設定方法の記事書きました。
→Notepad++のFTPプラグイン「NppFTP」の設定方法

WordPressでコメントを別記事に移動する方法

別サイトの話なのですが、WordPressで構築しているサイトで、コメントを別記事に移動したいという要望を受けました。

コメント移動の経緯

どういうことか少し詳しく説明しますと、そのサイトではBBS(掲示板)のようなページを一つ作って、そこのコメント欄でユーザー(お客様)とのやり取りをしていたわけです。WordPressではコメントがスレッドとして管理されることもあり、これまでは上手くいっていました。

しかし、BBSへのコメント数が増えるにつれてコメント欄が縦に長大になるのと、それから商品の感想や問い合わせなど種類の異なる質問が入り混じるようになり、かなり混乱してきたわけです。

で、古い問い合わせは「これまでの問い合わせ」として別記事に分けたり、あるいは最近のコメントも「商品の感想」「商品についての質問」など別記事に分けて、それぞれのコメント欄で返信していきたい、というわけです。

で、ちょっと調べつつやってみましたので、備忘録として残しておきます。

コメントの返信元記事を変更する方法

残念ながら、WordPressのダッシュボードからはコメントの返信元記事を移動することができません。そこで直接MySQLのデータベースを変更します。
※なお作業は自己責任で行ってください。

コメントの返信元記事を変更する手順

  1. コメントを新しい別記事に移動したい場合は、先にWordPressのダッシュボードから新しい記事(または固定ページ)を作っておきます。
  2. phpMyAdminでMySQLにアクセスします。
    ※もちろん環境があれば、phpMyAdmin等を使わずに、SSH等で直接MySQLを操作してもらってもOKです。
  3. WordPressのテーブル群を格納しているデータベースにアクセスします。
  4. 「wp_posts」のテーブルを表示し、コメント移動先の記事の「ID」を確認しておきます。
  5. 次に「wp_comments」のテーブルを表示し、移動したいコメントの編集ボタン(鉛筆マーク)をクリックします。
  6. 「comment_post_ID」のフィールドの値を、先ほど確認しておいた記事の「ID」に変更します。
  7. 「実行する」をクリックします。

上記作業を、移動したいすべてのコメントについて実行します。SQL文が分かる方であれば、まとめて変更していただいても大丈夫だと思います。

また親コメントを移動しただけでは、子孫コメントは移動されませんので、必ず子孫コメントも移動するようにしてください。親子コメント両方を同一の記事に移動する場合であれば、スレッド内の親子関係は失われることはありません。

以上が、コメントの移動方法になります。
ユーザーとのやり取りが多いサイトなど、コメントが多いサイトでは役に立つと思います。

Poderosaの鍵認証が通らなくて困ったという話

先日、VirtualPC2007にCentOSを入れて、Windows側からSSHで接続、というのをやってました。

その際、なぜかSSHクライアントのPoderosaから鍵認証で接続できない、というトラブルがあったので備忘録がてらにメモしておきます。

まず状況としては、CentOSは最新の5.6で、WindowsXPからPoderosaにて接続しようとしていました。

とりあえず普通にパスワード認証でログインできることは確認。
その後、セキュリティ面を考えて(まあ仮想PCに繋いでいるだけなのでホントはパス認証でもいいんですが勉強も兼ねて)公開鍵・秘密鍵を利用した認証に変更することに。

Poderosa側で公開鍵・秘密鍵を作って、公開鍵をCentOSに送り、authorized_keysにコピペ、と順調に進んだつもりでした。
が、なぜかPodrosaからログインしようとすると「ユーザ認証に失敗しました」のエラーが。

パスワード認証だと通るのですが、鍵認証だとどうやっても通りません。
ためしにrootからのログインを一時的に許可して、そっちで鍵認証を通そうとしたのですがこちらも同じく「ユーザ認証に失敗しました」。

で、いったんPoderosaではなくPUTTYを使って、同じ鍵認証で試してみると……ログインできる。この辺りで、かなりハマり込みました。

で、小一時間悩んだ結果、「authorized_keys」がいったんクラッシュしていたのが原因だったと判明しました。

じつはauthorized_keysを編集中に、誤って一回Vimを閉じてしまっていたのです。
で、次回開いたときにクラッシュリカバリーとして、swapファイルをどう対処するかを聞かれていたのですが、ここでのリカバリ対処が誤っていたようです。

自分としてはちゃんと修復できたつもりでいたのですが、ファイル最終行にユーザー名が一行入ってしまっており、これのせいで認証が上手くいかなかったようです。(ためしにgEditで編集しようとして気づきました)

PUTTYとかは、どうやらこれを自動で無視して認証してくれたのですが、Poderosaではそうはいかなかったので認証が通らなかった、と。
で、この最後の一行を削除してみると、見事にログインできました。

もしもですが同じ状況でお困りの方がいたら参考にしてください。