Quantcast
Channel: 小粋空間
Viewing all 219 articles
Browse latest View live

「この文書はPDF/Aモードで表示されています」を解除する方法

$
0
0


Adobe ReaderやAdobe AcrobatでPDF文書を開いたときに表示される「この文書はPDF/Aモードで表示されています」を解除する方法を紹介します。

この文書はPDF/Aモードで表示されています

1.問題

冒頭に記したとおり、PDF文書を開いたとき「この文書はPDF/Aモードで表示されています」が表示される場合があります。

このモードになっていると次のような動作になるようです。

Acrobat Standard ユーザーガイド - PDF の表示

PDF/A 表示モードで PDF/A 準拠文書を開くと、文書が変更されないように読み取りモードで開かれます。メッセージが文書メッセージバーに表示されます。文書への変更および注釈の追加を行うことはできません。PDF/A モードをオフにすると、文書を編集できます。

「PDF/A」はPDFのISO標準だそうで、スキャンしてPDFに変換した文書はPDF/A準拠になるようです。

2.対処方法

PDF/Aモードを解除するには、「編集」→「環境設定」をクリック。

環境設定

「文書」→「PDF/Aモードで文書を表示」のオプションから「適用しない」を選択して、「OK」をクリック。

環境設定

これで解除されました。

環境設定


onclickイベントとjQueryのclickイベントを併用するときの注意

$
0
0


利用シーンはあまりないと思いますが、onclickイベントにjQueryのclickイベントを追加するときの注意点をまとめました。

次のようなレガシーな処理があると仮定します。

onclickイベントでsendというメソッドを呼び出し、フォームのチェック処理を行ったあとsubmit()を実行しています。

<script>
function send() {
    // 既存のチェック処理など
    document.test.submit();
}
</script>
<form id="test" name="test" method="post" action="index.cgi" onsubmit="retrun false;">
<input name="foo" id="foo" type="text" value="$foo" />
<input id="bar" type="button" value="送信" onclick="send()" />
</form>

この処理に以下のようなjQueryのcilckイベント(赤色)を新たに追加した場合、先にonclickイベントが発動するため、jQueryの処理は実行されません。

<script>
$(function(){
    $('#bar').click(function(){
        $('#foo').val('');
    });
});
function send() {
    // 既存のチェック処理など
    document.test.submit();
}
</script>
<form id="test" name="test" method="post" action="index.cgi" onsubmit="retrun false;">
<input name="foo" id="foo" type="text" value="$foo" />
<input id="bar" type="button" value="送信" onclick="send()" />
</form>

上記のような場合、次のようにonclickイベントを削除し、clickイベントの後で既存のメソッドを呼び出すように修正するといいようです。

<script>
$(function(){
    $('#bar').click(function(){
        $('#foo').val('');
        send();
    });
});
function send() {
    // チェック処理など
    document.test.submit();
}
</script>
<form id="test" name="test" method="post" action="index.cgi" onsubmit="retrun false;">
<input name="foo" id="foo" type="text" value="$foo" />
<input id="bar" type="button" value="送信" onclick="send()" />
</form>

ということで、「onclick属性とjQueryのclickを併用しない」となり、タイトルと違った結果になってしまってます。あしからず。

ユーザー登録不要で容量無制限(1ファイル2GBまで)のオンラインストレージサービス「GigaFile(ギガファイル)便」

$
0
0


すでにご存知の方も多いと思いますが、ユーザー登録不要で容量無制限(1ファイル2GBまで)のオンラインストレージサービス「GigaFile(ギガファイル)便」を紹介します。

GigaFile(ギガファイル)便

「サイズの大きいファイルを急いで送りたい」とか「会員登録が面倒」という方におすすめです。

以下、ビギナーの方向けに利用方法を紹介します。

1.ファイル転送

「GigaFile(ギガファイル)便」の中ほどにある「ファイル選択」をクリックして、転送したいファイルを選択。Windowsの場合、Ctrlキーを押しながらクリックすれば複数ファイルを選択できます。

選択後、すぐにサーバへのアップロードが始まります。

アップロードが完了後、ダウンロード用のURL(画面上)と、その右側にアップロードしたファイルを削除するための「削除KEY(画面下)」が表示されます。


メモおよび、ファイルをダウンロードしてほしい人のメールアドレスを入力して「送信」をクリック。

ダイアログが表示されれば送信完了です。ダイアログを消せば前の画面に戻るので、メールアドレスを書き換えれば複数の宛先に送信できます。

2.メールの受信とダウンロード

こんな感じでメールが届きます。メールには先程のダウンロード用URL・削除KEY・メモが記載されます。

URLをクリックして表示された画面で「ダウンロード開始」をクリックすればファイルをダウンロードできます。

ファイルを削除したい場合は、メールに添付された「削除KEY」を「削除KEY」欄に入力して「削除」をクリックしてください。

地方自治法施行60周年記念貨幣

$
0
0


スーパーで買い物をしたとき、お釣りに見慣れないコインがまぎれ込んでました。

よくみたら地方自治体に関係する500円硬貨のようです。

表(クリックすれば拡大します)
500円硬貨

裏(クリックすれば拡大します)
500円硬貨

調べたところ、この硬貨は「地方自治法施行60周年記念貨幣」らしいです。

「地方自治法施行60周年記念貨幣」は、日本政府が平成20年の地方自治法施行60周年を記念し、70周年に至るまでの10年間にわたり、47都道府県の図柄で記念として順次販売される貨幣のことです。

今回みつけたのは2011年の秋田県のものです。

地方自治法施行60周年記念貨幣

1,000円と500円の2種類の記念貨幣が発行されているようです。

500円は日本貨幣史上初の「バイカラー・クラッド貨」で、欧州のユーロ通常貨などでは既にお馴染みらしいのですが、異なる種類の金属板をサンドイッチ状に挟み込む「クラッド」技術で出来た円板を、異なる金属製のリングにはめ合わせる「バイカラー」技術を用いて造ったコインのことをこう呼ぶそうです。

スーパーで買い物をしたときのお釣りに、もしかしたら紛れ込んでいるかもしれません。

今すぐほしいという方は造幣局のオンラインショップへどうぞ。2012年5月現在、在庫がまだあるようです。

独立行政法人 造幣局 オンラインショップ
独立行政法人 造幣局 オンラインショップ

コインショップでも普通に売ってると思います。

YouTubeの隠しパラメータ設定ツール

$
0
0


先日「YouTubeを効果的に見せるための12の隠しパラメータ」をエントリーしましたが、パラメータの説明のみにとどめていました。

ということで、隠しパラメータを簡単に設定できるツールを作ってみました。

YouTubeオプションパラメータ設定ツール
YouTubeの隠しパラメータ設定ツール

一番上にある「YouTubeの埋め込みコード」のテキストエリアには、YouTubeの各動画のページにある「共有」→「埋め込みコード」をクリックして表示されたコードを入力してください。

埋め込みコード

隠しパラメータは配色・表示・再生・その他の4項目があります。各項目の意味については「YouTubeを効果的に見せるための12の隠しパラメータ」をご覧ください。

オプション

フォームの各項目設定後、一番下の「実行」をクリックすれば、パラメータを追加した埋め込みコードとサンプル動画を表示します。

実行

ということで、興味のある方はお試しください。

Firefoxで間違って閉じたウィンドウやタブを復元する方法

$
0
0


Firefoxで間違って閉じたウィンドウやタブを復元する方法を紹介します。チョイネタです。

1.問題

「ツール」→「オプション」→「一般」で「前回終了時のウィンドウとタブを表示する」を選択しておけば、Firefoxのウィンドウをすべて閉じたあとの次回起動時、閉じる直前のウィンドウとタブをすべて復元します。

前回終了時のウィンドウとタブを表示する

ところが一斉に終了せずに、いつも使っているウィンドウを閉じたときにたまたま一時的に開いていたウィンドウが残っていて、それを一番最後に閉じてしまうと、次回起動時にはそのウィンドウしか開かなくなります。

2.対処方法

「履歴」→「最近閉じたウィンドウ」→「すべてのウィンドウを復元」で先に閉じてしまったウィンドウを復元することができます。

すべてのウィンドウを復元

間違って閉じたタブも、同じ要領で「履歴」→「最近閉じたタブ」をたどっていけば開き直すことができます。

ということでお試しください。

iPhoneでのメール返信時に引用を削除する方法

$
0
0


iPhoneのメールアプリでのメール返信時に、引用を削除する方法です。本文を引用しないアプリとかもあるようですが、ここではデフォルト機能だけで引用を削除する方法を紹介します。

iPhone4s(iOS5.1)での確認内容です。

1.基本

iPhoneで、次のようなメールに返信します(本文はダミーテキストサービスを利用)。

元メール
元メール

メール返信ではスクリーンショットのような感じで元メールの本文がまるっと引用されてしまいます。

返信画面
返信画面

2.引用を削除する方法1

受信メールから新規メールを作成する方法です。スレッドやタイトルがなくなりますが引用を削除する手間はなくなります。

差出人の部分ををタップ。

返信

メールアドレスをタップ。

メールアドレス

返信画面です。「iPhoneから送信」の文字だけになります。

メールアドレス

3.引用を削除する方法2

メールを表示した状態で画面を長押しして、虫眼鏡を表示させたあと、スクリーンショットのように、本文の任意の文字をできるだけ少なく選択した状態にします。

選択状態

指を離すと次のような画面になるので、この状態で返信アイコンをタップ。

返信

「返信」をタップ。

返信

返信画面ではさきほど選択した部分だけが引用されるので、あとはこの部分を削除すればOKです。これは、本文を部分的に引用したい場合に使うテクニックの応用です。

返信画面

iOS5以前では同じ手順ですべて消せる記事が多くみつかったのですが、iOS5ではうまくいかないようです。間違ってたらすいません。

Google Analytics APIでブログのアクセスランキングを作る方法

$
0
0


Google Analytics APIを使って、ブログなどのアクセスランキングを作る方法を紹介します。

1.完成イメージ

本エントリーで紹介する手順で作成すれば、ブログに次のようなランキングを表示できるようになります。

完成イメージ

厳密には、ランキング用HTMLファイルを出力するところまでの説明となります。

ブログにランキングを表示させる手順は割愛していますので、出力ファイルを適宜インクルードしてください。

2.作成手順

Google Analytics API class for PHP」の中ほどにある「googleanalytics.class.zip」をクリックして、ファイルをダウンロード。

Google Analytics API class for PHP

アーカイブを展開して、中にあるGoogle Analytics APIを利用するためのライブラリ「googleanalytics.class.php」をサーバにアップロードしてください。

次に、アップロードしたライブラリを利用してアクセスを収集するためのPHPコード(以下)を、任意のファイル名で保存し、編集後「googleanalytics.class.php」と同じディレクトリにアップロードしてください。

<?php
$filename = 'ranking.html'; // 出力ファイル名
require_once('googleanalytics.class.php');
try {
    $ga = new GoogleAnalytics('メールアドレス','パスワード');
    $ga->setProfile('ga:プロファイルID');
    $ga->setDateRange('YYYY-MM-DD','YYYY-MM-DD'); // 収集期間
    $report = $ga->getReport(
        array('dimensions'=>urlencode('ga:date,ga:pageTitle,ga:pagePath'),
            'metrics'=>urlencode('ga:pageviews'),
            'filters'=>urlencode('ga:pagePath=~^/パス/'),
            'sort'=>urlencode('-ga:pageviews')
            )
        );
    $file = fopen($filename, 'w');
    fwrite($file, '<style>a:visited{color:#00f;}</style><div><h3>アクセスランキング</h3><ul>');
    $counter = 1;
    foreach ($report as $key => $value) {
        foreach ($value as $pageview) {
            $keys = preg_split("/~~/", $key);
            fwrite($file, '<li><a href="http://user-domain' . $keys[2] . '">' . $keys[1] . '</a> ' . $pageview. '</li>');
        }
        if ($counter >= 20) {
            break;
        }
        $counter++;
    }
    fwrite($file, '</ul></div>');
    fclose($file);
} catch (Exception $e) { 
    print 'Error: ' . $e->getMessage(); 
}
?>

詳細は後述しますが、このPHPをサーバ上で実行すれば、冒頭の完成イメージになるようなファイルを出力します。

3.PHPの設定項目

2項のファイルの変更方法です。

このPHPから出力するファイル名やパスを変更したい場合は、赤色部分を書き換えてください。

$filename = 'ranking.html'; // 出力ファイル名

利用しているGoogle Analyticsのメールアドレス・パスワードを設定してください(必須)。

$ga = new GoogleAnalytics('メールアドレス','パスワード');

利用しているGoogle AnalyticsのプロファイルIDを設定してください(必須)。

$ga->setProfile('ga:プロファイルID');

プロファイルIDは、「アナリティクス設定」→「プロファイル」タブ→「プロファイル設定」タブの「プロファイルID」から取得してください。

プロファイルID

収集期間を設定します。同じ日付を設定すれば1日分のランキングが作れます。

$ga->setDateRange('YYYY-MM-DD','YYYY-MM-DD'); // 収集期間

収集対象のURLのパスを設定してください(必須)。

'filters'=>urlencode('ga:pagePath=~^/パス/'),

パスに何を設定すればよいのか分かりにくいですが、たとえば当ブログの記事は「http://www.koikikukan.com/archives/」配下にすべて出力しているので、次のようにドメインを除いた「archives」を設定します。

'filters'=>urlencode('ga:pagePath=~^/archives/'),

出力記事数を変更したい場合は、次の「20」の部分を変更してください。

if ($counter >= 20) {

設定が必要な変数はソースコードに冒頭に別途まとめたいと思います。現状はとりあえず版ということで。

4.ビジター数を取得する

サンプルはページビューを取得していますが、ビジター数を取得したい場合は「metrics」の項目を次のように変更してください。

'metrics'=>urlencode('ga:visits'),

両方取得することもできます。

'metrics'=>urlencode('ga:visits,ga:pageviews'),

このあたりの詳細は以下のページを参照してください。

Dimensions & Metrics Reference

5.PHPの実行

3項で編集したPHPファイルは1日1回など、cronで周期的に実行させてください。


HTMLやCSSでのプロトコル表記(http:、https:)の省略について

$
0
0


HTMLやCSSではプロトコル表記(http:、https:)の省略が可能です。

ということで、プロトコル表記の省略に関することを色々調べてみましたので、本エントリーで紹介致します。

このエントリーは、「「Google HTML/CSS Style Guide」を適当に和訳してみた」の以下の部分に対しての便乗記事です。

埋め込みリソースからプロトコル表記(http:,https:)を省略する。

<!-- Not recommended -->
<script src="http://www.google.com/js/gweb/analytics/autotrack.js"></script>
 
<!-- Recommended -->
<script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>

1.プロトコル表記を省略するメリット

省略すると、要素を記述したページのプロトコル(スキーム)が適用されます。

たとえば、あるページに「https://~」でアクセスしたとき、そのページにあるa要素のhref属性のプロトコルが省略されていれば、そのhref属性のURLのプロトコルは自動的に「https://」になります。

プロトコル付与イメージ

プロトコルを省略しておけば、SSLでアクセスされた場合に「非SSLコンテンツ(http://)」が混在しないのでセキュリティ警告メッセージが表示されない、といったメリットがあるようです。

2.省略したプロトコルは何にもとづいて決まるのか

1項で「要素を記述したページのプロトコルが適用される」と書きましたし、ネット上でもそういった記述を多く見つけましたが、そもそも何にもとづいてこのような動作が規定されているのでしょうか。

その根拠について言及している情報がみつからなかったので、自力で調べたところ、RFC3986和訳)にそれらしい記載がありました。解釈が間違ってたらすいません。

RFC3986はURIに関する仕様です。

まず、URIが「//」で開始すると、相対参照かつ、リソースがネットワーク上に存在するものとして扱われます。

4.2. Relative Reference

A relative reference that begins with two slash characters is termed a network-path reference(二つのスラッシュ文字をもって始まる相対参照は、ネットワークパス参照と呼ばれる)

次に、相対参照の基底URI(Base URI)は、Section 5に示す「参照解決アルゴリズム」を適用する事によって決まります。

4.2. Relative Reference

The URI referred to by a relative reference, also known as the target URI, is obtained by applying the reference resolution algorithm of Section 5.(相対的参照によって参照されるURIは、目標URIとしても知られるが、Section 5の参照解決アルゴリズムを適用する事によって得られる。)

Section 5の参照解決アルゴリズムは、5.1.1~5.1.4の4段階があり、この順番で適用されます。

  • 5.1.1 Base URI Embedded in Content(本文内に埋め込まれた基底URI)
  • 5.1.2 Base URI from the Encapsulating Entity(カプセル化しているエンティティからの基底URI)
  • 5.1.3 Base URI from the Retrieval URI(取得されるURIからの基底URI)
  • 5.1.4 Default Base URI(基底URIの初期値)

で、httpやhttpsは5.1.2または5.1.3で基底URIが決定されているようです。

5.1.2 Base URI from the Encapsulating Entity

If no base URI is embedded, the base URI is defined by the representation's retrieval context. For a document that is enclosed within another entity, such as a message or archive, the retrieval context is that entity. Thus, the default base URI of a representation is the base URI of the entity in which the representation is encapsulated.(基底URIが埋め込まれていない場合、基底 URIはその表現の取得の状況によって定義される。メッセージかアーカイブのような、別のエンティティ内に同封される文書については、取得の状況とはそのエンティティである。従って、表現の初期基底URIは、その表現がカプセル化されているエンティティの基底URIである。)

5.1.3 Base URI from the Retrieval URI

If no base URI is embedded and the representation is not encapsulated within some other entity, then, if a URI was used to retrieve the representation, that URI shall be considered the base URI.(基底URIが埋め込まれておらず、またその表現が他のエンティティにカプセル化されていない場合に、表現の取得にURIが使われたならば、そのURIを基底URIとみなすものとする。)

個人的には「表現の取得にURIが使われる」5.1.3と思ってますが、間違っていたらつぶやいてください。

3.CSSでもプロトコル表記の省略が可能

「Google HTML/CSS Style Guide」を適当に和訳してみた」では省略されてますが、CSSでもプロトコルの省略が推奨されています。

/* Not recommended */
.example {
  background: url(http://www.google.com/images/example);
}
 
/* Recommended */
.example {
  background: url(//www.google.com/images/example);
}

この場合もRFC3986の仕様に従い、アクセスしたプロトコルが付与されます。

4.IEで2回読み込まれる問題

プロトコル表記を省略していると、IEでCSSを読み込んだ場合2回リクエストされる問題があるようです。

5.Google Analyticsのトラッキングコード

Google Analyticsのトラッキングコードはプロトコルによってサブドメインが変わるため、JavaScriptのdocument.location.protocolを利用し、アクセス時のプロトコルに対応するようにしています(赤色部分)。

<script type="text/javascript">
 
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-xxxxxx-x']);
  _gaq.push(['_trackPageview']);
 
  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
 
</script>

6.参考サイト

参考サイトは下記です。ありがとうございました。

Googleのスマホ最適化支援サービス「GoMo」でサイト診断

$
0
0


Googleのスマホ最適化支援サービス「GoMo」を使って、サイト診断をやってみました。

GoMo

1.GoMoとは

GoMoは、「Go Mobile!」の略で、ビジネスサイトのスマートフォン最適化促進のグーグルの新しいグローバルキャンペーンです。

GoMoサイトでは、スマートフォンサイトに関する情報や 最適化に必要なソリューションの他、スマートフォンサイト構築をサポートできる企業のリストも掲載しています。

2.サイト診断

ページ左下にある「サイトを診断する」をクリック。

「スマートフォン最適化診断レポート」をクリック。

診断したいサイトのアドレスを入力。

「サイトを診断する」をクリック。

サイトを読み込みます。

次のページ右側にスマホで見たサイトが表示されます。

それはおいといて、ページ左にある5つのカテゴリから該当するものを選択。

選択したら、その下に表示された質問に回答します。

すべて回答したら「診断結果を表示」をクリック。

診断結果が表示されました。予想とおり最悪ですw

「詳細診断レポートを表示」をクリックすると、詳細診断レポートがPDFがダウンロードできます。

PDFの内容はスマホ最適化のアドバイスです。ここでは割愛します。

ということで、興味のある方はお試しください。

ウェブサイトのパフォーマンス測定サービス「WebPageTest」

$
0
0


ウェブサイトのパフォーマンスを測定できるサービス「WebPageTest」を紹介します。

WebPageTest

「WebPageTest」はもともとAOLによって開発されたプログラムで、2008年にBSDライセンスの下でオープンソース化されました。現在はGoogle codeとして管理されています。

今回紹介するオンライン版はWebPagetest LLCによって運営されているもので、かなり高機能です。

WebPageTest
WebPageTest

当ブログでは最近、このサービスを使ってチェックし、あまりにパフォーマンスが悪かったため、一部最適化を実施し、何秒か改善させました。まだかなり遅いですが。

1.測定

測定したいURLを入力。地域やブラウザの選択を行うこともできます。

測定したいURLを入力

「START TEST」をクリック。

START TEST

測定待ちになります。空いていればすぐに開始します。

測定待ち

測定実施中です。

測定実施中

結果が表示されました。すべての測定が終わるまで30秒ごとにページがリロードされます。

結果表示

2.測定結果

このような画面になればすべての測定が完了です。右上に各カテゴリ(First Byte Time/Keep-alive Enabled/Compress Text/Compress Images/Cache static content)の結果がA~Fランクで表示されます。Aが一番いい評価です。

測定完了

サマリーページの上部には2回の測定結果が表示されます。表には時間・リクエスト数・バイト数が表示されます。

サマリー

詳細はタブをクリックすれば確認できます。

タブ

「Detail」では、各リクエストの詳細が確認できます。

Detail

「Performance Review」では、リクエストをカテゴリ別に評価した結果が表示されます。

Performance Review

「Page Speed」では、ブラウザキャッシュ・コンテンツ圧縮・CSS sprite・画像の最適化など、表示速度の最適化に関する詳細が表示されます。

Page Speed

「Content Breakdown」では、コンテンツ(MIMEタイプ)別のリクエスト数やバイトなどの詳細が表示されます。

Content Breakdown

「Domains」では、ドメイン別のリクエスト数やバイトなどの詳細が表示されます。

Domains

「Screen Shot」では、実際の表示や経過時間によるリクエストの実施状況を確認できます。

Screen Shot

測定結果は毎回微妙に異なるので、複数回実施するとよいでしょう。

3.その他

ページ右上から、Googleアカウントでログインできるようです。

Googleアカウントでログイン

サービスの違いは確認できませんでしたが、以前話題になったGoogleの「Page Speed Service」と関連があるのかもしれません。

というか、現在もPage Speed Serviceのページからこのサービスにリンクが貼られています。

「file:///」でスラッシュが3つ並んでいる理由

$
0
0


ブラウザにテキストファイルや画像ファイルをドラッグるすと、テキストや画像が表示され、URLが「file:///」で始まるのは皆さんご存知かと思います。

URLが「file:///」

Windowsであれば、「file:///」「file:///C:/」と入力すれば、エクスプローラーのような表示を行うこともできます。

エクスプローラー

で、「何でスラッシュが3つ並んでるんだろう?」と疑問に感じていたものの、「まぁそういうものなんだろう」と、ほったらかしにしていました。

ということでこの疑問を解消すべく、「file:///」について真面目に調べてみました。

1.「file」について

まず「file」は、ホストコンピュータ上でアクセス可能なファイルを示すもので、RFC1738(URL仕様)の3.10に以下の記載がありました。

3.10 FILES

The file URL scheme is used to designate files accessible on a particular host computer. This scheme, unlike most other URL schemes, does not designate a resource that is universally accessible over the Internet.(file URLスキームは特にホストコンピュータ上でアクセス可能なファイルを示す。他のほとんどのURLスキームと異なるこのスキームは、インターネット上でアクセス可能な普遍的なリソースを示しているのではない。)

「file」の部分は仕様上「スキーム」「スキーム名」と呼ばれるもので、前述のRFC1738、新しいところではRFC3986(URI仕様)に規定されています。

3.1. Scheme

Each URI begins with a scheme name that refers to a specification for assigning identifiers within that scheme.(各URIは、そのスキームを含む識別子を割り当てるための仕様書を参照するスキーム名で始まる。)

fileスキームにおけるURIは、次のような形式になります。

file://<host>/<path>

他のスキームとしては、よく知られた「http」「ftp」「mailto」などがあります。URIはスキームによって若干異なるようです。

公式なスキームは「Permanent URI Schemes」に登録されています。

2.「///」とスラッシュが3つ並ぶ理由

探したところ、RFC1738(URL仕様)の3.10に以下の記載がありました。

3.10 FILES

As a special case, <host> can be the string "localhost" or the empty string; this is interpreted as `the machine from which the URL is being interpreted'.(特殊な例として<host>は "localhost" もしくは空の文字列にできる。これは `URL が処理されているマシーンから' として処理される。)

つまり、ローカルPCにあるリソースにアクセスする場合、さきほどの

file://<host>/<path>

の「<host>」を省略した、

file:///<path>

で表現できるという仕様みたいで、これがスラッシュが3つ並ぶ根拠のようです。長年の疑問が解消しました(笑)。

RFC3986の1.1や3.2.2にも類似の記載がありました。

1.1. Overview of URIs

URIs that identify in relation to the end-user's local context should only be used when the context itself is a defining aspect of the resource, such as when an on-line help manual refers to a file on the end-user's file system(e.g., "file:///etc/hosts").(エンドユーザのローカルの状況と関連して識別するようなURIは、オンラインヘルプマニュアルがエンドユーザのファイルシステム上のファイルを参照する(例えば、"file:///etc/hosts")時のように、状況自体がリソースの定義している解釈である時のみ使用されるべきである。)

3.2.2. Host

If the URI scheme defines a default for host, then that default applies when the host subcomponent is undefined or when the registered name is empty (zero length). For example, the "file" URI scheme is defined so that no authority, an empty host, and "localhost" all mean the end-user's machine, whereas the "http" scheme considers a missing authority or empty host invalid.(URIスキームがhostについて初期値を定義する場合は、host副構成要素が未定義である時、あるいは登録名が空(長さ0)である時に、その初期値が適用される。例えば、"file"URIスキームでは、オーソリティがない、空のホスト、及び "localhost" が全てエンドユーザのマシンを意味するが、"http"スキームはオーソリティがない場合や空のホストは無効であるとみなす。)

ということで、httpではローカルPCであってもホスト名を省略できないようです(実験済み)。

3.関連情報

省略つながりということで、こちらもどうぞ。

HTMLやCSSでのプロトコル表記(http:、https:)の省略について

ブラウザから実行可能な画像形式一括変換ツール

$
0
0


ブラウザから実行可能な画像形式一括変換ツールをPerlで作ってみました。

画像形式一括変換ツール

1.機能

指定したディレクトリにある「変換前の拡張子(ピリオドは不要)」の画像ファイルを、「変換後の拡張子(ピリオドは不要)」のファイルに一括変換して、同じディレクトリに出力します。

変換状況は下のスクリーンショットのように順次表示します。

変換状況

ディレクトリは絶対パス・相対パスのいずれも可能です。ディレクトリは再帰的に検索するので、指定したディレクトリ配下のすべての画像ファイルが対象になります。

変換後の同名ファイルがある場合、上書きします。

必要に迫られてとりあえず作ったものなので、細かいチェックはできていません。レンタルサーバによっては長時間実行すると500エラーになるかもしれません。

2.実行環境

このツールの実行には、PerlとImageMagick(PerlMagick)が必要です。

余談ですが、ImageMagickを使った形式変換は、SSHが利用可能であればコマンドラインから実行できます。

本ツールはSSHが使えない環境での利用を想定しています。

3.使い方

以下の「changeImageType.zip」をダウンロードして、展開した中にあるchangeImageType.cgiをサーバにアップロードし、実行可能なパーミッションに変更してください。

changeImageType.zip

ブラウザからツールにアクセスして、「ディレクトリ」「変換前の拡張子」「変換後の拡張子」を設定して実行してください。

ツールは自由に改変してもらって結構です。ImageMagickの実装部分を書き換えれば「一括サムネイル作成」など、色々利用方法があると思います。

また「こうした方がいい」という機能や実装があれば、どこかでつぶやいてください。

Facebookアプリの「Page Tab Edit URL:」について

$
0
0


Facebookアプリの「Page Tab Edit URL:」について調べてみました。

「Page Tab Edit URL:」はFacebookアプリ管理ページの「ページタブ」に表示されている項目のひとつですが、この項目に言及している記事がほぼありません。

Page Tab Edit URL:

ということで、ざっくりですが調べた内容を展開します。認識誤りがありましたらご指摘ください。

1.「Page Tab Edit URL:」の役割

「Page Tab Edit URL:」は、Facebookページにアプリを登録したあと、アプリの編集を行う場合のURLを設定するためのもののようです。

Facebookアプリを開発されている方は、この項目についてよくご存知かと思いますが、アプリというほどのものでもない、いわゆる「IFrameタブページ」を表示するだけであれば、この項目は利用することがないと思われます。

2.アプリの編集リンクはどこに?

アプリの編集リンクは、Facebookページのアプリ設定画面に表示されたアプリの「アプリケーションへ移動」のリンクが該当します。

Page Tab Edit URL:

このリンクをクリックすると、「Page Tab Edit URL:」に指定したURLにジャンプします。

またURLのクエリーデータとして「fb_page_id(FacebookページのID)」が渡されます(サンプルの数字はでたらめです)。

http://user-domain/hoge.php?fb_page_id=205512332781231

3.編集画面できること

Facebookページ用アプリケーションとして、この編集画面でアプリの各種設定を行います。

たとえば、アプリ開発側で自前のデータベースを用意して、fb_page_idをキーにしたアプリ用の各種設定項目の保存などを行うことが想定されます。

また、次のような実装をすれば(認証が必要であれば必ずするものかもしれませんが)、facebookデータを利用することもできます。

<?php
require_once('facebook.php');
 
$facebook = new Facebook(array(
     'appId' => 'アプリID',
     'secret' => 'シークレットID',
     'cookie' => true
));
…中略…
?>

ということで、参考になりましたでしょうか。

Movable Type 5.14リリースと5.13との差分

$
0
0


Movable Type 5.14がリリースされました。

Movable Type 5.14 の提供開始
Movable Type 5.14

1.追加機能

環境変数HeaderCacheControlが追加されました。

この環境変数は、管理画面に対して、Cache-Controlの値を設定します。運用上のセキュリティポリシー上、プロキシサーバーなどの外部サーバにキャッシュを保持させたくないなどに利用します。

この環境変数に指定した値は、HTTPレスポンスに記述され、管理画面のコンテンツキャッシュをどう制御するか、指定することができます。

例えば、

HeaderCacheControl private

と設定すれば、HTTPレスポンスに「Cache-Controle:private」が指定され、ページを閲覧するユーザー以外、サーバーにキャッシュを残さないようになります。

2.修正点

約50の修正が行われています。詳細はリリースノートをご覧ください。

リリースノート

上記リンク先には記載されていませんが、管理画面で利用するjQueryが1.4.4から1.6.4にアップグレードされています。

3.5.13とのファイル差分

MT5.13と5.14のファイル差分を掲載しておきます。

  • addons/Commercial.pack/config.yaml
  • addons/Commercial.pack/lib/CustomFields/App/CMS.pm
  • addons/Commercial.pack/lib/CustomFields/ImportExport.pm
  • addons/Commercial.pack/lib/CustomFields/Util.pm
  • addons/Commercial.pack/templates/professional/blog/comment_response.mtml
  • addons/Commercial.pack/templates/professional/blog/javascript.mtml
  • addons/Commercial.pack/templates/professional/website/comment_response.mtml
  • addons/Commercial.pack/templates/professional/website/javascript.mtml
  • addons/Commercial.pack/tmpl/edit_field.tmpl
  • addons/Community.pack/lib/MT/App/Community.pm
  • addons/Community.pack/lib/MT/Community/L10N/de.pm
  • addons/Community.pack/lib/MT/Community/L10N/es.pm
  • addons/Community.pack/lib/MT/Community/L10N/fr.pm
  • addons/Community.pack/lib/MT/Community/L10N/nl.pm
  • addons/Community.pack/templates/blog/comment_response.mtml
  • addons/Community.pack/templates/blog/powered_by.mtml
  • addons/Community.pack/templates/global/javascript.mtml
  • default_templates/comment_response.mtml
  • default_templates/entry.mtml
  • default_templates/notify-entry.mtml
  • extlib/I18N/LangTags/Detect.pm
  • extlib/Locale/Maketext/Guts.pm
  • extlib/Locale/Maketext/GutsLoader.pm
  • extlib/Locale/Maketext/TPJ13.pod
  • extlib/Locale/Maketext.pm
  • extlib/Locale/Maketext.pod
  • lib/MT/App/CMS.pm
  • lib/MT/App/Comments.pm
  • lib/MT/App/Search.pm
  • lib/MT/App/Trackback.pm
  • lib/MT/App.pm
  • lib/MT/Asset/Image.pm
  • lib/MT/Asset.pm
  • lib/MT/Association.pm
  • lib/MT/Atom.pm
  • lib/MT/AtomServer.pm
  • lib/MT/Auth/MT.pm
  • lib/MT/Auth.pm
  • lib/MT/Author.pm
  • lib/MT/Blog.pm
  • lib/MT/Bootstrap.pm
  • lib/MT/CMS/AddressBook.pm
  • lib/MT/CMS/Asset.pm
  • lib/MT/CMS/Blog.pm
  • lib/MT/CMS/Comment.pm
  • lib/MT/CMS/Common.pm
  • lib/MT/CMS/Entry.pm
  • lib/MT/CMS/Filter.pm
  • lib/MT/CMS/Log.pm
  • lib/MT/CMS/Tag.pm
  • lib/MT/CMS/Template.pm
  • lib/MT/CMS/Tools.pm
  • lib/MT/CMS/User.pm
  • lib/MT/Core.pm
  • lib/MT/Entry.pm
  • lib/MT/FileInfo.pm
  • lib/MT/L10N/de.pm
  • lib/MT/L10N/en_us.pm
  • lib/MT/L10N/es.pm
  • lib/MT/L10N/fr.pm
  • lib/MT/L10N/ja.pm
  • lib/MT/L10N/nl.pm
  • lib/MT/Object.pm
  • lib/MT/ObjectDriver/SQL.pm
  • lib/MT/ObjectScore.pm
  • lib/MT/Permission.pm
  • lib/MT/Revisable/Local.pm
  • lib/MT/Summary/Triggers.pm
  • lib/MT/Tag.pm
  • lib/MT/Template/Context.pm
  • lib/MT/Template/ContextHandlers.pm
  • lib/MT/Template/Tags/Calendar.pm
  • lib/MT/Template/Tags/Tag.pm
  • lib/MT/Template/Tags/Website.pm
  • lib/MT/Template.pm
  • lib/MT/Theme/Category.pm
  • lib/MT/Theme.pm
  • lib/MT/Upgrade/v5.pm
  • lib/MT/Upgrade.pm
  • lib/MT/Util.pm
  • lib/MT.pm
  • mt-check.cgi
  • mt-cp.cgi
  • mt-static/codemirror/demo/activeline.html
  • mt-static/codemirror/demo/changemode.html
  • mt-static/codemirror/demo/complete.html
  • mt-static/codemirror/demo/folding.html
  • mt-static/codemirror/demo/fullscreen.html
  • mt-static/codemirror/demo/marker.html
  • mt-static/codemirror/demo/mustache.html
  • mt-static/codemirror/demo/preview.html
  • mt-static/codemirror/demo/resize.html
  • mt-static/codemirror/demo/runmode.html
  • mt-static/codemirror/demo/search.html
  • mt-static/codemirror/demo/theme.html
  • mt-static/codemirror/index.html
  • mt-static/codemirror/lib/codemirror.css
  • mt-static/codemirror/lib/codemirror.js
  • mt-static/codemirror/lib/util/foldcode.js
  • mt-static/codemirror/lib/util/javascript-hint.js
  • mt-static/codemirror/lib/util/runmode.js
  • mt-static/codemirror/lib/util/simple-hint.js
  • mt-static/codemirror/LICENSE
  • mt-static/codemirror/mode/clike/clike.js
  • mt-static/codemirror/mode/clike/index.html
  • mt-static/codemirror/mode/clojure/clojure.js
  • mt-static/codemirror/mode/clojure/index.html
  • mt-static/codemirror/mode/coffeescript/coffeescript.js
  • mt-static/codemirror/mode/coffeescript/index.html
  • mt-static/codemirror/mode/css/index.html
  • mt-static/codemirror/mode/diff/diff.css
  • mt-static/codemirror/mode/diff/index.html
  • mt-static/codemirror/mode/groovy/groovy.js
  • mt-static/codemirror/mode/groovy/index.html
  • mt-static/codemirror/mode/haskell/index.html
  • mt-static/codemirror/mode/htmlmixed/index.html
  • mt-static/codemirror/mode/javascript/index.html
  • mt-static/codemirror/mode/javascript/javascript.js
  • mt-static/codemirror/mode/jinja2/index.html
  • mt-static/codemirror/mode/lua/index.html
  • mt-static/codemirror/mode/markdown/index.html
  • mt-static/codemirror/mode/markdown/markdown.js
  • mt-static/codemirror/mode/ntriples/index.html
  • mt-static/codemirror/mode/pascal/index.html
  • mt-static/codemirror/mode/pascal/pascal.js
  • mt-static/codemirror/mode/perl/index.html
  • mt-static/codemirror/mode/perl/perl.js
  • mt-static/codemirror/mode/php/index.html
  • mt-static/codemirror/mode/php/php.js
  • mt-static/codemirror/mode/plsql/index.html
  • mt-static/codemirror/mode/python/index.html
  • mt-static/codemirror/mode/python/python.js
  • mt-static/codemirror/mode/r/index.html
  • mt-static/codemirror/mode/rst/index.html
  • mt-static/codemirror/mode/rst/rst.js
  • mt-static/codemirror/mode/ruby/index.html
  • mt-static/codemirror/mode/ruby/ruby.js
  • mt-static/codemirror/mode/rust/index.html
  • mt-static/codemirror/mode/rust/rust.js
  • mt-static/codemirror/mode/scheme/index.html
  • mt-static/codemirror/mode/smalltalk/index.html
  • mt-static/codemirror/mode/smalltalk/smalltalk.js
  • mt-static/codemirror/mode/sparql/index.html
  • mt-static/codemirror/mode/stex/index.html
  • mt-static/codemirror/mode/tiddlywiki/index.html
  • mt-static/codemirror/mode/velocity/index.html
  • mt-static/codemirror/mode/xml/index.html
  • mt-static/codemirror/mode/xml/xml.js
  • mt-static/codemirror/mode/xmlpure/index.html
  • mt-static/codemirror/mode/xmlpure/xmlpure.js
  • mt-static/codemirror/mode/yaml/index.html
  • mt-static/codemirror/mt/mt.css
  • mt-static/codemirror/README.md
  • mt-static/codemirror/test/index.html
  • mt-static/codemirror/test/test.js
  • mt-static/codemirror/theme/cobalt.css
  • mt-static/codemirror/theme/eclipse.css
  • mt-static/codemirror/theme/elegant.css
  • mt-static/codemirror/theme/monokai.css
  • mt-static/codemirror/theme/neat.css
  • mt-static/codemirror/theme/night.css
  • mt-static/css/form.css
  • mt-static/css/listing.css
  • mt-static/css/main.css
  • mt-static/css/simple.css
  • mt-static/css/sortable.css
  • mt-static/css/structure.css
  • mt-static/jquery/jquery.js
  • mt-static/jquery/jquery.min.js
  • mt-static/jquery/jquery.mt.js
  • mt-static/jquery/jquery.mt.min.js
  • mt-static/mt.js
  • mt-static/mt_de.js
  • mt-static/mt_es.js
  • mt-static/mt_fr.js
  • mt-static/mt_nl.js
  • php/lib/block.mtcalendar.php
  • php/lib/block.mtentries.php
  • php/lib/block.mtif.php
  • php/lib/block.mtifmoreresults.php
  • php/lib/block.mtsethashvar.php
  • php/lib/class.mt_session.php
  • php/lib/function.mtinclude.php
  • php/lib/function.mtsetvar.php
  • php/lib/function.mtvar.php
  • php/lib/l10n_de.php
  • php/lib/l10n_es.php
  • php/lib/l10n_fr.php
  • php/lib/l10n_nl.php
  • php/lib/mtdb.base.php
  • php/lib/thumbnail_lib.php
  • php/mt.php
  • plugins/MultiBlog/lib/MultiBlog.pm
  • plugins/MultiBlog/php/block.mtmultiblog.php
  • plugins/MultiBlog/php/init.MultiBlog.php
  • plugins/StyleCatcher/lib/StyleCatcher/CMS.pm
  • themes/classic_blog/templates/comment_response.mtml
  • themes/classic_blog/templates/entry.mtml
  • themes/classic_blog/templates/javascript.mtml
  • themes/classic_website/templates/comment_response.mtml
  • themes/classic_website/templates/javascript.mtml
  • themes/pico/templates/comment_response.mtml
  • themes/pico/templates/javascript.mtml
  • tmpl/cms/cfg_prefs.tmpl
  • tmpl/cms/dialog/adjust_sitepath.tmpl
  • tmpl/cms/dialog/footer.tmpl
  • tmpl/cms/edit_asset.tmpl
  • tmpl/cms/edit_category.tmpl
  • tmpl/cms/edit_comment.tmpl
  • tmpl/cms/edit_template.tmpl
  • tmpl/cms/include/asset_table.tmpl
  • tmpl/cms/include/entry_table.tmpl
  • tmpl/cms/include/header.tmpl
  • tmpl/cms/list_category.tmpl
  • tmpl/cms/list_common.tmpl
  • tmpl/cms/restore_end.tmpl
  • tmpl/cms/search_replace.tmpl
  • tools/rebuild-pages

以下はMT5.14で追加されたファイルです。

  • extlib/auto/Image/Size: emfsize.al
  • extlib/SOAP/Transport: LOOPBACK.pm

その他、mt-static/codemirror関係で差分がありますが割愛します。


Google Chromeで履歴を残さない方法

$
0
0


Google Chromeに履歴を残さない方法を紹介します。

このエントリーは「知っておきたいこと – Google」がはてなブックマークで人気エントリーにはいっていたので、その便乗記事です。

1.Google Chromeに履歴を残さない

ブラウザのツールバーにあるレンチアイコンをクリックして、「シークレット ウィンドウを開く」をクリックします。

ツールバー

これでシークレットウィンドウが開きます。

シークレットウィンドウ

このウィンドウは次のような機能があります。

  • シークレットモードで開いたウェブページやダウンロードしたファイルは、閲覧履歴やダウンロード履歴に記録されない
  • 新しいCookieは、開いているすべてのシークレットウィンドウを閉じるとすべて削除
  • シークレットモードの使用中に変更したGoogle Chromeのブックマークや全般設定はすべて保存

2.最初からシークレットモードで起動する

Google Chrome起動時にオプションパラメータ「-incognito」をつければ、最初からシークレットモードで立ち上がるようです。

Windowsの場合、Google Chromeのアイコンを右クリックして「プロパティ」を選択し、「リンク先」の最後に「-incognito」をつければいいでしょう。

プロパティ

3.Googleのアクセス履歴を残さない方法

シークレットモードでも、Googleアカウントにログインした状態で行ったウェブ検索はGoogleウェブ履歴、つまりネットのあちら側に記録されます。

Googleアカウントに検索情報を保存しないようにするには、ウェブ履歴のトラッキングを一時停止すればいいようです。

一時停止するには、「Web History」にアクセスし(ログインしていないとログイン画面が表示されます)、ページ上にある「Pause」をクリックします。

Pause

一時停止を解除するには、「Resume」の表示をクリックします。

Resume

ちなみにこのページの下になにやら表示されていると思ったら、ブラウザからGoogle検索してアクセスしたページの一覧でした。

ページの一覧

これは「知っておきたいこと – Google」でも紹介されている「ウェブ履歴」です。

4.参考サイト

グーグルクロームを最初からシークレットモードで起動することはできませんか。

Windows Upateで「KB2686509」が失敗する件の対処

$
0
0


会社のPCではWindow Updateの自動更新を行っているのですが、KB2686509のインストールが失敗するという事象が発生したので、その対処方法を情報展開します。

結論から言うと、KB2686509はキーボードレイアウトを変更しているとき、例えばCapsLockキーとCtrlキーを入れ替えているようなケースがあると、インストールに失敗するようです。

ということで、キーボードレイアウトを変更するためにレジストリに設定している「ScanCodeMap」を削除してWindows Updateを実施し、再起動後に削除したレジストリを復元させるという手順で無事解決しました。

以下、自動更新しかやったことない&キーボードレイアウトを入れ替えている人(そんな人はいない?)向けの手順です。

問題が確認できたのはWindows XPのみです。自宅のVistaではこの問題は未確認なので、スクリーンショットはすべてXPです。

1.KB2686509が成功しているか確認

「ツール」→「Windows Update」を選択。ちなみにVista/7では「すべてのプログラム」→「Windows Update」を選択。

XP

Vista/7

「更新履歴の表示」をクリック。

KB2686509が失敗していることを確認。

失敗している方は次の手順をどうぞ。

2.レジストリのバックアップ

「スタート」→「ファイル名を指定して実行」で「regedit」を入力して「OK」をクリック。

左ペインのツリーを「HKEY_LOCAL_MACHINE」→「SYSTEM」→「CurrentControlSet」→「Control」→「Keyboard Layout」まで展開。

「ファイル」→「エクスポート」を選択

任意の名称で保存。ここでは「Keyboard.reg」で保存します。

「Scancode Map」を右クリックして「削除」を選択

削除後の画面です。これでレジストリ画面を閉じます。

3.Windows Updateの実施

「ツール」→「Windows Update」を選択

「カスタム」をクリック。上にある「高速」でもいいと思います。

KB2686509を選択して「更新プログラムの確認とインストール」をクリック。

「更新プログラムのインストール」をクリック。

インストール実行中です。成功しました。

完了したら「今すぐ再起動」をクリック。

4.レジストリの復元

再起動後、「Keyboard.reg」をダブルクリック。

「はい」をクリック。

レジストリが反映されました。これでもう一度再起動すれば元の環境になります。

5.参考サイト

参考サイトは下記です。ありがとうございました。

Facebookページのページタブ(IFrameタブ)で「Method Not Allowed」になる不具合の対処

$
0
0


すでにご存知の方も多いと思われますが、Facebookページのページタブ(IFrameタブ)で「Method Not Allowed」になる不具合の対処について情報展開します。

1.問題点

Facebookページのページタブ(IFrameタブ)のファイルの拡張子に「.html」で指定すると、ページタブを表示したときに「Method Not Allowed」というエラーになる場合があります。

Method Not Allowed

「Method Not Allowed」は、「対象URLに対してメソッドが許可されていない」という意味で、その下にある詳細メッセージよりPOSTメソッドが許可されていないのが原因のようです。

この問題はレンタルサーバによって異なるようですが、今回はさくらインターネットでしか確認できていないので真偽は不明です。

2.対処方法1

拡張子を「.php」に変更します。

アプリの「ページタブ」→「Page Tab URL」や「Secure Page Tab URL」にファイル名まで設定している場合は、その項目もあわせて修正してください。

ページタブ

「.cgi」に変更しても動作するようになりますが、ファイルの内容も変更しないと正常に表示されないため、「.php」に変更するのが無難でしょう。

なお、レンタルサーバによって動作が異なるようです。

3.対処方法2

IFrameタブページと同じディレクトリか上位のディレクトリに、.htaccessを作成し、以下のAddHandlerディレクティブの1行を設定します。

AddHandler application/x-httpd-php .php .html

ディレクトリに.htmlファイルしかないのであれば、以下でもOKです。

AddHandler application/x-httpd-php .html

AddTypeディレクティブでも大丈夫みたいです。

AddType application/x-httpd-php .php .html

これで.htmlファイルを.phpとして処理できるようになります。サーバによって動作が異なるかもしれません。

4.参考サイト

参考サイトは以下です。ありがとうございました。

Facebookページへのページタブ追加が一瞬で行えるブックマークレット

$
0
0


以前、「FacebookページへのIFrameタブ追加方法が変更」で紹介したとおり、FacebookページにIFrameタブ(以下ページタブ)を追加するには、次のようなURLをたたき、表示された画面でページタブを追加したいFacebookページを選択する必要があります。

https://www.facebook.com/dialog/pagetab?app_id=YOUR_APP_ID&display=popup&next=YOUR_URL

が、手動でURLを入力するのは面倒なので、その後「Facebookページ IFrameタブ追加ツール(下)」を作りました。

Facebookページ IFrameタブ追加ツール
Facebookページ IFrameタブ追加ツール

気がついたら340いいね!ほど頂いてます。ありがとうございます。

が、これもアプリIDやページタブURLの入力をしないといけないのでやや面倒です。

ということで前置きが長くなりましたが、Facebookページへのページタブ追加用ブックマークレットを作ってみました。

これを使えば、アプリIDやページタブURLをコピペする必要もなく、一発でページタブ選択画面を開けます。

1.使い方

まず、下記の「ページタブを追加」のリンクをブックマークしてください。

ページタブを追加

次に、Facebook開発者ページから、「アプリ」をクリック。

Facebook開発者ページ

アプリの一覧から、追加したいアプリ名をクリック。

アプリの一覧

ページ右側にある「設定を編集」をクリック。

アプリの概要

これでアプリの「基本設定」ページが表示されました。

基本設定

この状態で、さきほど登録したブックマークレットをクリック(または選択)すれば、ページタブ追加用のダイアログがずばっと開きます。多分。

ダイアログ

ページタブ用アプリをばりばり開発されている方、いかがでしょうか。

ブログ開設8周年とPV(ページビュー)が増えてきた件について

$
0
0


昨日、当ブログが開設より8年が経過致しました。

下の絵は開設1周年から毎年使っているもので、数字の部分だけ書き換えて使っています。

ブログ開設8周年

図の右上に書いてある、なんだかよく分からないものは当時のブログのデザインです。現在配布している各ブログツール・ブログサービスのテンプレートもこれと同じデザインです。

当時のブログのデザイン
過去のブログデザイン

こうして大過なくブログを続けてこられたのも、皆様の暖かいご支援のおかげです。この場をお借りして心よりお礼申し上げます。今、コメント投稿が不調なので、TwitterやFacebookなどでコメント頂ければ幸いです。

1.ブログ運営状況

2012年5月22日現在のブログ運営状況は下記の通りです。

  • エントリー:3146
  • コメント:16772
  • トラックバック:4925
  • アクセス数:約34万PV/月(Google Analytics による直近1ヶ月分)

2.PV(ページビュー)が増えてきた

下のスクリーンショットは、Analyticsを導入した2005年11月から2012年5月現在までの日別ページビューの推移です。

日別ページビュー
過去の日別PV

以前、「ブログの6年間のPV推移からわかったこと」でも書きましたが、このブログへの質問コメントが全盛だった2007~2008年の頃は10000PV/日ほどあったページビューが徐々に減ってきて、2010年後半は6000PV/日まで下がりました。

が、ここ1年ばかり盛り返してきて、全盛期よりもPVが増加し、現在は平日で12000PV~13000PVくらい、アクセスの少ない休日でも8000PVを越えるほどになりました。線が飛び出しているのは、はてなブックマークの人気エントリーに入ったときです。

日別訪問数でみると、PVより顕著にユーザー数が増えていることが分かります。2007~2008年は1ユーザーあたりの閲覧ページ数が多かったということですね。

日別訪問数
過去の日別PV

3.なぜPV(ページビュー)が増えてきたか

はっきりした要因は正直なところ不明ですが、いくつか試してきたことがあり、その中で一番大きいのは、ここ半年ほど「時間が経っても検索してもらえるようなエントリーを増やしてきた」ことじゃないかと思います。

このブログをご覧になっている方はご存知と思いますが、はてなブックマークに頻繁に入るような派手な?エントリーを書いている訳ではなく、ちょっとしたTipsネタが中心です。

そういう記事は大きいアクセスには結びつかないものの、1日に1回でも検索にヒットするような内容であれば、それらが積み重なることでPVの糧になります。最近めっきり聞かなくなりましたが、いわゆる「ロングテール」狙いの作業を繰り返しているという訳です。

PV増加のために工夫してきたことは他にもあるのですが、それはまた別の機会に書きたいと思います。

4.今後のエントリーについて

前述したとおり、最近は平日で12000PV/日が続いており、先週は13000PVを越えるようになり、昨日は14000PVを越えました。

14000超えたのは「Windows Updateで「KB2686509」が失敗する件の対処」のアクセスがやや多かったこともありますが、アクセスのほとんどは検索からのものです。

最近1ヶ月の日別ページビュー
過去の日別PV

ブログの6年間のPV推移からわかったこと」の締めくくりで「15000~20000PV/日」と目標と挙げているので、まずはコンスタントに15000PV/日を超えることを目指したいと思います。

ということで、今後は検索にヒットするような記事を中心にエントリーしていく予定です(今やっていることを粛々と続けるだけなのですが)。

ネタが尽きてきたら誰でも知っているような当たり前のことをエントリーするかもしれませんが、検索向けの記事だと思ってスルーしてください(笑)。

5.関連エントリー

以下はこれまでの毎年の記念エントリーです。

という訳で、8年目も無事に乗り切り、9年目に突入することができました。今後ともよろしくお願い致します。

Viewing all 219 articles
Browse latest View live