投稿

WordPressのContactForm7を拡張するプラグイン

いいもの見つけました。 Contact Form 7 to Database Extension 良さげです。 ざっくり説明すると、 WordPressにはContact Form 7というお問い合わせフォームを作るプラグインがあります。 デザイナーさんたちはこぞってそれを使ってお問い合わせフォームを作るわけですが、 いけてないところはDBに保存しないところであります。 そこで、このプラグインです。 まさに問い合わせ内容をDBに保存してくれるという優れものです。 しかもデフォルトでCSVエクスポート機能までついています。 僕はちょうど今WordPressで構築したサイトで、 CRMがしたいのでこれを元にまた拡張機能をつけます(笑)

自分への戒めのためのメモ(CSRF編)

「サービスを作るのは大事だけど ユーザーに迷惑かけちゃいけない」 バグがあってもセキュリティに問題があってもいけない。 昨日はCSRFのことがふっとド忘れしまったので、ここに書いておいて忘れないようにする。 歳を取っているという証拠かw CSRF:  クロスサイトリクエストフォージェリ 具体例として、掲示板に意図しない書き込みをさせられたり、オンラインショップで買い物をさせられたりするなどの被害が起こる。 攻撃の大まかな流れは以下の通り。  簡単な HTML を例示して、その原理を具体的に解説する。 1. 攻撃者が、攻撃用の Web ページを作成して WWW 上に公開する。 (WWW上ででなくとも、未対策のHTMLメーラーにウェブページをHTMLメールとして送信するだけでもよい。)  2.第三者が、攻撃用の Web ページにアクセスする。 3. 第三者は、攻撃者が用意した任意の HTTP リクエストを送信させられる。   4. 送信させられた HTTP リクエストによって、攻撃者の意図した操作が行われる。 (ここで「第三者」とは、被攻撃サイトに意図せずアクセスさせられると言う意味で用いている。) (Wikipediaより引用) iframeでbody onloadでフォームにsubmitするようなhtmlを読ませて自動的に掲示板に書き込みを行わせる等が例としてあげられていた。 利用者側の対策としては、Cookieに依存した攻撃があるのでCookieをこまめに破棄することとか。 サイト運営者側の対策としては、 第三者が知り得ない情報をフォームに入力させる(あるいはフォームの hidden パラメータに設定しておく)というのが基本的な対策方針である。   ここで利用する第三者が知り得ない情報は、推測されにくい文字列であり、かつ総当り攻撃に対して耐性がある必要がある。具体的には以下の方法が挙げられる。 認証情報を入力させる 認証制の Web システムの場合、入力フォームにユーザIDとパスワードを含めるという方法がある。システムの利用者から見れば、既にログイン画面で認証を行っているため冗長な操作であるが、クロスサイトリクエ...

WordPressのバックアップ環境作り

最近になって妙にWordPressの話が飛び交っているので、流行りに合わせてみます。 以下のようにレンタルサーバに自前でインストールされた方が対象です。 ・PHPMyAdminでデータベースを作成した ・WordPressのファイルをアップロードした バックアップって面倒だなぁ...そんなことをお考えのあなた。 それは手作業でやっているからですよ。 データベースのバックアップ |wordpress codex でも紹介されていましたが、 いまやバックアップ用のプラグインも出ていたりします。 でもプラグインでバックアップするのってwp-contentの下にバックアップファイルを保存するので、 WPのファイル一式消えたら終わりやん。。 と個人的には思うので、 上のような方でさらにssh接続などができるレンタルサーバ(さくらのレンタルサーバ等)であれば、 mysqldumpでバックアップファイルをWordPressのファイルとは別の場所に とっておくことをおすすめします。 その他の方はプラグインをご利用ください。 mysqldumpでもcronを使えば毎日バックアップを取るといった運用方法がとれるので、 うちはそうしています。 たまりすぎるとサーバもひっ迫しますので、3日間だけですが。 そんなわけで、 データベースバックアップ→3日間サイクル運用 の方法をお伝えしようと思います。 ・データベースのバックアップは こちら をご覧ください。 ・3日間サイクル運用の方法  とても簡単です。 バックアップのコマンドをdaily.shに記述しましょう。 そして以下のコマンドを最後に追記します。  rm -f `find $BK_DIR -mtime +3` ※$BK_DIRにはバックアップファイルを保存しているディレクトリを指定してください。 上記のコマンドを実行すると、4日前までのファイルが削除されます。 あとはこれを毎日時刻を指定してcronを回しておきます。 0 0 * * * $HOME/daily.sh ※$HOMEにはdaily.shを保存しているディレクトリを指定してください。 ...

やりたいことやったもんがち。

プログラミングネタ書くのにはamebloは適さないなぁということで、 やはりbloggerに戻ってきました。 読者の方さまよってすみません... Bloggerもいつのまにやら新レイアウトになって、Google+と連携されるようになっていました。 ブログを書くのが楽しみです。 今日のネタは2本 ・夜の小人サービス面白いなー ・バッチの環境直したいよう 夜の小人サービス 忙しい時にソーシャルエンタープライズプログラマーがチケットを見て、夜な夜な直してくれるというもの。ちなみにこのアイデアは @sunaot さんのです。Twitter見てたら面白そうだと思ったので。 結局1回しかお会いしてないなぁ。 バッチの環境直したいよう これは自己満足ですが、simpletest見てたらバッチのプログラムも自動テストできるよねと思ったので。 前職のバッチの環境お世辞にもイケてなかったのでまだいけるなと感じました。 ざっくりとは以下の通り。 ・データはfixturesでバージョン管理。 ・開発はローカルでやっても良いけど、実行環境は1つしかないという状況。 ・testcaseの中に実行するshのテストコードを書きます。   データは都度リポジトリのfixturesからpullしてきます。   テストコードはコンペアツールがあったはずなのでそれをアサーション代わりに。 ・テストコードも管理しておいて、毎回実行させます。 ・問題はレガシーなので、そこをどうするかですが、ファンクション単位でできなくてもTDDで頑張るんでしょうなぁ、というのをレガシーコード改善の本を見てて思いました。

GAE/PでA/Bテストをするのも普段と同じ。

イメージ
今日は全然難しくない話。 A/Bテストってありますよね。2種類のデザインを用意して、 どちらのページの方が成約率が高いかを判断するテストです。 一般に広告コピーなどで使われています。 このA/BテストをGAE/Pでどうやって効率よくやろうかと思ったんですが、 やはりdjangoのテンプレート変数ですね。 ウェブサイトオプティマイザーを準備する まず Googleウェブサイトオプティマイザー を準備します。 たとえば比較したいページAはhttp://www.example.com/index.htmlと パターンBのページ http://www.example.com/index_B.htmlだったとします。 そして、サンキューページのURLがhttp://www.example.com/thankyou.htmlだとしましょう。 A/B テスト - テストを迅速に開始する最も簡単な方法 を選択しましょう。 その後、「上記の手順を完了し、テストを開始する準備が整いました。」にチェックを入れて、作成を押します。 次はテスト名を入力して、オリジナルにAのURLを、ページパターンのURLにはBのURLを、コンバージョンページにはサンキューページのURLを入力しましょう。 続行をクリックすると、スクリプトを埋め込むように促されます。 GAE/Pでhtmlを修正する ここからはGAE/Pでtemplateのhtmlをいじります。 templates/base.htmlを継承するようにしてindex.htmlとindex_B.htmlを作成しましょう。 index.htmlとindex_B.htmlには{% extends "base.html" %}と記述します。 base.htmlは雛形として使用します。 複雑なことをしない限り、headとbodyの中以外は記述できますね。 bodyについては割愛しますが、base.htmlの中で、 headの直下に{% block head %}{% endblock %} を記述します。 これはdjangoテンプレートの変数です。 index.htmlとindex_B.html, thankyou.htmlには {%block ...

コピーを書くときのポイントがわかるザ・コピーライティング

イメージ
そのコピー、ちゃんとテストしてる? と繰り返し考えさせられて、基本的な考え方を学べた。 テスト済みのコピーの事例からコピーを書くときのポイントがこの本にまとめられている。 各媒体ごとに細かく解説されており、 見出しの成功例やその法則がメインに書かれている。 目次 第1章 これが新しい広告戦略だ 第2章 広告は見出しが命 第3章 どんな見出しが1番注目されるか 第4章 効く見出しはこう書く 第5章 35の見出しの型──その効果は検証済み 第6章 どんぴしゃりの訴求ポイントを見つけるには? 第7章 「テスト済み広告」と「テストしない広告」 第8章 熱意を込めてコピーを書く方法 第9章 コピーの出だしはこう書く 第10章 効くコピーはこう書く 第11章 コピーの売込み効果を高める20の方法 第12章 誰もがぶつかる問題を避ける方法 第13章 こうすればもっと問合せが増える32の方法 第14章 最大数のお客にアピールする方法 第15章 どんなレイアウトとビジュアルが1番注目されるか 第16章 小スペース広告で利益を上げる方法 第17章 頭の体操10問──成功した見出しはどっち? 第18章 広告をテストする17の方法 かまってちゃんの映画をみてきた。 観たかったロックンロールは鳴り止まないっをおととい観てきた。 吹っ切れて珍しく感情的だー。 5才にしてパソコンを使いこなし、 トラブルを起こす保育園児とそのシングルマザー、 とプロ棋士を目指す高3女子、とそれを食い止める家族、 とかまってちゃんのメンバー、とマネージャー それぞれが将来に不安を感じて起こした行動とはー それぞれの話が決断すべきときになってきてライブが始まるが、 その流れが非常に良い。 暗い曲が多いように思えるが、 たぶん頑張って自分貫けよっていうメッセージ性が強いんだろうな ー。歌下手でアウトローだけど。 やはりロックンロールは鳴り止まないっが好き。でも前紹介したので次はこのラブソングで。 純愛で歌詞が面白い。そんなにー?!って感じると思う。 ちりとり/神聖かまってちゃん

TitaniumでAndroidの環境設定をする。

Titanium。チタニウムではありません。タイタニウムと発音するそうです。 僕が今回始めようと思ったのはTitanium Mobileの方です。 HTMLとJavascriptを使ってiPhone, Androidのクロスプラットフォームなアプリを 1つのアプリケーションで作成することができるのが利点。 これでなんとか時代に置いてかれずにすむかなーと。 思ったその矢先、やはりiPhoneアプリはiPhone用のSDKが必要で、 macじゃない僕はまず断念。とりあえずAndroid持ってないけどエミュレータでやります。 まずは素晴らしいお勉強サイトの紹介。 TitaniumとAptanaでモバイル開発 | アカベコマイリ では手順をば。 Android SDKのインストール ダウンロードはここから。 http://developer.android.com/sdk/index.html ダウンロードして解凍後、tools/androidを実行。 ひたすらインストールさせる。 /usr/local/lib/android-sdk-linux_x86/platform-tools/adb にシンボリックリンクを張って、/usr/local/binにadbを通す。 ln -s /usr/local/lib/android-sdk-linux_x86/platform-tools/adb /usr/local/bin/. adb help してヘルプが出ればOK. ちなみにこのadbはTitanium DeveloperとAndroid SDKを紐付けるために Android SDKのパスを設定する。 その際に、TitaniumがAndroid SDKを見つける時にtoolsの下にadbがあるものと思うらしいので以下のようにする。 ln -s /usr/local/lib/android-sdk-linux_x86/platform-tools/adb /usr/local/lib/android-sdk-linux_x86/tools/. Titanium Developerをインストール Downloadは ここ から。 linuxは下から選べといわれたので32bit版を選択。 ダウンロード後、tg...