2011年12月29日木曜日

cURLのコマンドライン実行環境

試してみたいことがあってWindowsでcURLをコマンドラインから実行できる環境を作ります。といってもファイルをダウンロードするだけです。

LINK:http://curl.haxx.se/


画面左側のDownloadメニューをクリックします。

ダウンロード画面が表示されます。少し下へスクロールして下さい。

私の環境に合わせて「Win32 - Generic」の中の上図赤い四角で囲まれたところのリンクをクリックします。
ダウンロードが開始されますので適当なところに保存して下さい。保存したファイルを回答していずれかのディレクトリへ配置すれば完了です。

Pathを通しておいた方が便利ですが、今回は省略します。コマンドプロンプトからファイルを配置したディレクトリに移動し「curl http://www.example.com/」のように実行して使います。


ヘッダー付き:

細かい使い方は下記などをご参照下さい。

 LINK:cURL - How To Use (マニュアルページ日本語訳)

今回試したかったのは海外のGoogleフォーラムの記事に記載があった下記のコマンドです。

curl --referer "http://www.google.com/search?q=query" http://www.example.com/

残念ながら質問主の方は既に修正されてしまったようなので同じ結果しか帰ってきませんでした。次に同じような事例があれば試してみます。

2011年12月25日日曜日

2011年末のPHPフレームワークに関する検索数の推移

PHPを使ったフレームワークは最近CakePHPの名前を目にする機会が多いように感じているのですが、実際どんな状況なのか少し確認してみました。例によってシェアなどは調べようがないのでGoogleトレンドを使ってPHPの各フレームワークの検索数を比較します。

今回対象としたのは次の3つです。

・CakePHP
・Codeigniter
・Yii

まずは全ての地域を対象に見てみます。


CakePHPが長いこと検索数では高かったのですが2010年末頃になってCodeigniterに抜かれています。またYiiも伸ばしてきています。CakePHPは下がり気味ですね。

続いてアメリカの場合です。


基本的な傾向は全ての地域の場合と同じです。

次はお隣の中国です。


データが少ない可能性もありますが中国ではYiiが人気のようです。

最後に日本です。


日本では今だCakePHPが人気です。逆にYiiがまったくありません。

このGoogleトレンドの結果についても本当にPHPフレームワークであるYiiのことを表しているのか分かりません。Yiiという言葉が他の国では別の意味でよく使われている可能性もあります。ただこの結果がある程度正しいようであれば、来年あたりには日本でもYiiが利用されるようになるかもしれませんね。

LINK: CakePHP
LINK: Codeigniter
LINK: Yii

2011年12月14日水曜日

一度削除したGoogleアカウントを再び使用できるようにする手順

Googleの各種サービスはGoogleアカウントに紐付いていますので間違ってGoogleアカウントを削除してしまうと結構大変なことになります。ただ以前は削除してしまったらどうにもならなかったのですけど現在は削除してからそれほど時間が経過していなければ元に戻すことができるようになっています。

LINK: Googleアカウントヘルプ

ヘルプには戻せますよと書いてあるのですが実際どんな手順になるのかを実際に試してみました。具体的な手順は下記をご参照下さい。

LINK: Googleアカウントの復元

実際試してみると手順そのものは簡単なのですが、本人認証のために使用するいつもの質問一覧が出てきます。Googleアカウントを利用開始した日やGoogleアカウントを使って利用したGoogleサービスの利用開始日などが分からないと復元することはできません。その為、元に戻せるから安心と思っていると、いざ戻そうとして結局駄目だったということになりかねませんので注意して下さい。 

なお今回は削除してから10日後に復元しました。これくらいの期間であれば少なくとも大丈夫なようです。

2011年10月12日水曜日

Adsenseの広告に「+1」ボタンが表示されるようになりました

先日Inside Adwordsで次のような記事が投稿されました。

LINK: +1 button to start appearing on display ads today

Google ディスプレイ ネットワークに表示される広告に+1ボタンが表示されるようになりますという記事です。Google ディスプレイ ネットワークとはAdsenseパートナーサイトでもありますのでAdsenseで表示される広告にも「+1」ボタンが表示されることになります。(違ってたらすいません)。

この記事が出てから実際に表示される事例を探していましたが、本日見かけることができました。


イメージ広告の左下に「+1」ボタンが表示されています。

マウスを合わせてみると次のように表示されます。


慎重にクリックしてみると次のように表示されました。


普通の「+1」ボタンを押した場合と同じですね。

取り合えず1つ見かけただけなので、全ての広告で同じように表示されるのかは分かりません。なお、全く同じページを同じGoogleアカウントでログイン後に見てみてもFirefoxでは「+1」ボタンが表示されませんでした。


広告に「+1」ボタンが表示されることでサイトの運営者に何かいい効果になることを期待したいです。

追記:
広告の「+1」ボタンを押してからGoogleプロフィールで確認してみました。


表示されているリンクのリンク先は「http://example.com/?tid=xxxxxxxxxxxx」のような形式になってます。「+1」が表示されていたGoogle Adsenseの広告コードに入っていた「adurl=」の後のURLとは違いますが最終的に表示されるサイトは同じものです。
よって「+1」ボタンを押すことで広告のリンク先URLを簡単に取得できるかもしれません。そうするとフィルタする時とかにちょっと便利になるかもしれません。

さらに追記:
もう少しボタンの位置がはっきり分かるサンプル。左下にほんの少し隙間を空けて配置されてます。


こちらは縦長の場合。


当然だけど同じ場所でも広告が違えば+1ボタンのカウント数も異なる。


それにしても広告に表示される「+1」ボタンのカウント数が41と0では、他の人にクリックされる可能性は大分異なる気がする。

追記:
10月19日の時点で日本のサイトで表示されている日本語のAdsense広告にも+1ボタンが表示されるようになりました。
一気に増えそうです。

2011年9月21日水曜日

iframe内からWebページが読み込まれるのを防止する X-Frame-Options HTTP レスポンスヘッダ

昨日とあるところに投稿された質問で"フレーム内に表示する許可がありませんというエラーが出る"と書かれていました。
そういった設定がWebページに対して可能なのかどうか調べてみたところ、X-Frame-Options HTTP レスポンスヘッダというものを使えばコントロールできるようです。

LINK: The X-Frame-Options response header

クリックジャッキング攻撃を防止するなどの目的で用意されたもののようですね。最近新しく出来たものではなく随分前からあるようです。今後使う機会もあるかもしれないので使い方を確認しておきました。


X-Frame-Optionsヘッダに設定可能な値はDENYとSAMEORIGINの2つがあります。

DENY フレーム内に表示するのを全面禁止
SAMEORIGIN 同じサイト内のページでフレームに読み込まれた場合だけ許可

これを読み出される側のページが含まれるサイトで設定します。例えば http://www.example.com/ でDENYを設定しておくと、このサイトに含まれるページは自分のサイトを含めどのサイトに含まれるページからもiframeで読み込むことが出来なくなります。

設定方法を行なうには例えば .htaccess ファイルに次の設定を追加すればいいようです。

Header always append X-Frame-Options SAMEORIGIN


では実際に試してみます。

今回、サイトAに他のページを読み込む index.html と読み込まれるページ frame1.html を用意します。また別のサイトBに読み込まれるページ frame2.html を用意します。

index.htmlでは次のように他のページをiframeで読み込んでいます。

<body>
<iframe src="http://サイトA/frame1.html" width="400" height="100">
frame test1
</iframe>

<iframe src="http://サイトB/frame2.html" width="400" height="100">
frame test2
</iframe>
</body>

読み込まれる方の frame1.html と frame2.html は適当なコンテンツを記述してあります。


1. X-Frame-Optionsを何も設定しなかった場合


最初にX-Frame-Optionsを何も設定しなかった場合です。index.htmlをブラウザで開くと次のように表示されます。




※ Chrome 13.0.782.220、Firefox 6.0.2、IE 8で試しています。

何も設定していないので、普通にページがiframe内に読み込まれて表示されます。

2. X-Frame-OptionsにSAMEORIGINを設定した場合


サイトA及びサイトBのどちらにも次の設定を.htaccessに追加しました。(サイトAにも追加したのは読みこまれる frame1.html があるためで、読み込むページの index.html があるからではありません)。

Header always append X-Frame-Options SAMEORIGIN

index.htmlをブラウザで開くと次のように表示されます。




SAMEORIGINを設定してありますので、読み込まれるページとは別のサイトから読み込まれた場合、そのページは表示されません。ChromeとFirefoxの場合は単に空白を表示するようですがIEの場合はエラー表示となりました。エラーの部分だけ拡大すると次のように表示されています。

このコンテンツはフレーム内で表示できません
この Web サイトに入力する情報のセキュリティを保護するため、このコンテンツの発行者はフレーム内での表示を許可していません。


3. X-Frame-OptionsにDENYを設定した場合


サイトA及びサイトBのどちらにも次の設定を.htaccessに追加しました。

Header always append X-Frame-Options DENY

index.htmlをブラウザで開くと次のように表示されます。





DENYを設定してありますので、どこから読み込まれるかに関係無くiframe内では表示されません。

まとめ

このようにX-Frame-Optionsを設定することで、ページがフレーム内で読み込まれたときに表示させるかどうかを適切にコントロールできるようです。また主要な3つのブラウザでそれぞれ対応されていることも確認できました。

なお、今回は .htaccess ファイルに設定を書き込みましたが、ページ単位でmetaタグを使って記述が出来ると書かれている情報もありました。

<meta http-equiv="X-FRAME-OPTIONS" content="SAMEORIGIN" />

実際に試してみたところ、Chromeでは設定が反映されましたがFirefoxとIEでは設定が反映されませんでした。metaタグでは現在使えないのか、それとも設定方法が間違っているのかは分かりません。

2011年9月6日火曜日

別の設定データを持つChromeを起動する方法

一時期Firefoxに戻っていましたが今はまたChromeをメインのブラウザとして使っています。Chromeで作業を行なっている時に一時的にまったく別の設定に変更したい場合があるのですが、例えば「新しいウィンドウ」を起動しても元になっているデータは同じためどこかのウィンドウで設定を変更すれば残りのウィンドウの設定も変わってしまいます。

そこでGoogleアカウントのヘルプに記載されていた別の設定データを参照する新しいChromeを起動する方法を試してみます。

デスクトップ上にあるChromeのショートカットをコピーして下さい。


コピーしたものをデスクトップ上にペーストして下さい。


適当な名前に変更します。


新しいChromeのデータを格納するディレクトリを適当に作ります。今回は「C:\mychrome\」としました。


先程作成したショートカット(今回の場合は"作業用Chrome")を右クリックし、表示されたメニューから「プロパティ」をクリックします。


リンク先のところに表示されている最後に「 --user-data-dir=c:\mychrome」を追加します。別のディレクトリを用意した場合はそれに合わせて変更して下さい。


※ 「chrome.exe」 と「--user」の間には空白を1つ入れて下さい。

「OK」ボタンを押せば準備完了です。では新しいショットカットをダブルクリックしてChromeを起動して下さい。


このChromeは普段使っているChromeと設定データが異なるため追加されている拡張機能やオプションの設定も別に管理されてます。ブックマークなども別なので起動した直後は空です。


今までもシークレットウィンドウを使えば別のGoogleアカウントにログインすることができましたが、今回新しく起動したChromeでも別のGoogleアカウントにログインできます。

なお事前に用意したディレクトリを見て頂くと、Chromeを起動した後から色々なデータが書き込まれていることが分かります。


別のディレクトリをさらに用意しショートカットを作成すればさらに別のデータを元にしたChromeを起動することもできます。環境が違う複数のChromeを同時に使えればいいなと思われていた方は是非一度お試し下さい。

なおWindows以外の方などは下記のGoogleアカウントのヘルプをご参照下さい。

LINK:Google Chrome で複数のプロフィールを使用する

2011年8月25日木曜日

Chromeのシークレットウィンドウではパーソナライズド検索を無効にできない

Googleで検索する時、Googleアカウントにログインしていようといまいとパーソナライズド検索が働いて自分が普段よく見ているサイトが上位に表示されるようになります。自分で検索した時は上位なのに、他の人に同じように検索してもらうと全然順位が違う場合はたいていこれが原因です。

パーソナライズド検索を無効にする方法もいくつか用意されていて検索を行った後にURLの末尾に「&pws=0」を付けるだけでも無効になった状態で検索をすることができます。

他にも手軽な手段としてChromeなどのブラウザに用意されているシークレットウィンドウと呼ばれるものを開き、そこで検索すればパーソナライズド検索が無効になると思っていました。ところが今日検索していたところ明らかにおかしい結果が表示されていました。


www.google.com/ncrで検索していた時なのですが、「java swing」で検索すると自分のサイトのページが4位です。これはさすがにおかしいと思いURLの末尾に「&pws=0」を付けてみたところ案の定違う結果となりました。


シークレットウィンドウであれば特にきにせずともパーソナライズド検索が無効になると思っていたのは間違いだったようです。

そこで閲覧履歴を削除してから改めてシークレットウィンドウで検索してみると、先ほど「&pws=0」をつけた場合と同じ結果となりました。



さらにシークレットウィンドウのまま4位に表示されていた自分のサイトを一度表示させてから改めて検索してみると再度4位に登場しました。



Cookieが保存されるのかどうかは見ていたのですがさすがにそれは保存されませんでした。ウェブ履歴か何かが保存されている気がしますがGoogleアカウントにログインしていない状態なので確認することはできませんでした。

とにもかくにもChromeのシークレットウィンドウで検索したら、パーソナライズド検索が無効の状態というわけではないのでご注意下さい。(ひょっとして自分が知らないだけで当たり前のことだったかもしれません)。

追記:

小ネタも一つ。Googleアカウントのログイン画面が近く変わるようです。現在の画面は下記ですが、赤い線を引いたところに新しい画面へのリンクがあります。


新画面はこちら。デザインを統一しているのですね。


日本語版でもこうなります。


2011年8月10日水曜日

Chromeで印刷プレビューを無効にする方法

最新のChromeでは多くの人が望んでいた印刷プレビューが利用できるようになりました。ただ、残念なことに印刷プレビューと印刷が分かれていないため印刷を行うと必ず印刷プレビューが表示されます。
ほんのわずかな秒数ですが単に印刷を行いたい方にとっては結構イライラするものです。それに対して海外の公式フォーラムで回答がされていましたので実際に行いながらご紹介いたします。

LINK: version 13: how to turn off print preview?

まずは特に設定を行っていない場合です。



レンチマークから印刷を選ぶと印刷プレビューがまず表示されます。

では印刷プレビューを無効にします。いったんChromeを終了しChromeのショートカット上で右クリックからプロパティを選んで下さい。


プロパティダイアログが表示されます。


リンク先の最後に空白を2つ挟んで --disable-print-preview を追加して下さい。(空白が2つあることが重要なようです)。


OKボタンを押せば設定完了です。
ではChromeを起動して先ほどと同じように印刷を行って下さい。


先ほどとは異なり印刷プレビューが表示されずすぐに印刷ダイアログが表示されます。


印刷プレビューの有る無しは選ぶことは出来ませんが、とにかく印刷プレビューのせいでイライラしてしまうという方はお試し下さい。