Quantcast
Channel: 小粋空間

「MTDDC 2012」開催のお知らせ

$
0
0


2012年8月4日(土)に「MTDDC 2012」が開催されます。

MTDDCは「Movable Type Developers & Designers Conference」の略称で、無料で参加できるシックス・アパート主催のカンファレンスです。

MTDDC 2012

日程・会場等は次の通りです。

  • 日時:2012年8月4日(土)13:00~18:00(予定)
  • 会場:日本マイクロソフト株式会社 品川本社(東京都港区港南 2-16-3 品川グランドセントラルタワー)
  • 定員:100名(先着)
  • 参加費:無料(懇親会は4000円。Lightning Talks発表者は懇親会無料)
  • 協賛:メディアスポンサーgihyo.jp

当日のプログラム(予定)は次の通りです。今秋リリース予定のMT5.2の概略も聞けそうです。

  1. 開会の挨拶 : 関信浩(シックス・アパート株式会社 代表取締役)
  2. Movable Typeのサステナビリティ : マネジャー 長内 毅志(シックス・アパート株式会社 Movable Type 製品企画 マネジャー)
  3. クラウドを活用したWeb構築事業の支援プラットフォーム構想とプロトタイプのご紹介 : 作村裕史(シックス・アパート株式会社 クラウド事業開発 シニアコンサルタント)
  4. Movable Type 5.2 Overview (エンジニア目線) : 高山裕司(シックス・アパート株式会社 Movable Type 開発エンジニア)
  5. Azure と MT のフシギな関係 : 柳下剛利(シックス・アパート株式会社 シニアコンサルタント)
  6. The New Rich Text Editor:天野卓(株式会社ToI企画 取締役 Movable Type 開発エンジニア)
  7. Movable Typeとスマートフォン対応技術の最新事情 : 宮永邦彦(アイデアマンズ株式会社 代表取締役 宮永 邦彦)
  8. Lightning Talks
  9. 18:30 - 懇親会(希望者のみ)

参加を希望される方は以下の申し込みフォームからどうぞ。

MTDDC 2012 申し込みフォーム

Firefoxでサイトパフォーマンスのボトルネックをチェックできるアドオン「PageSpeed」

$
0
0


Firefoxでサイトパフォーマンスのボトルネックをチェックできるアドオン「PageSpeed」を紹介します。PageSpeedはGoogleから提供されています。

PageSpeed

このアドオンを利用すれば、「ブラウザのキャッシュを活用する・圧縮を有効にする・CSSスプライトに画像をまとめる」といったパフォーマンスの最適化のための項目や、その詳細なデータを確認することができます。

最適化のための詳細データ

なお、このアドオンを利用するには、Firebugアドオンを先に入れておく必要があります。

Firebugの使い方は以下も参考にどうぞ。

Firebug の使い方:(X)HTML と CSS の確認・修正方法のまとめ

1.インストール

Make the Web Faster - Google Developersのページにある「PageSpeed Insights for Firefox」をクリック。

Make the Web Faster - Google Developers

「このサイト(developers.google.com)からはFirefoxにソフトウェアをインストールできない設定になっています。」が表示されたら「許可」をクリック。

Make the Web Faster - Google Developers

「今すぐインストール」をクリック。これでインストールが開始します。

Make the Web Faster - Google Developers

「今すぐ再起動」をクリック。これでインストールが完了します。

Make the Web Faster - Google Developers

2.使い方

測定したいページを表示した状態で「F12」をクリック、またはメニューの「Web開発」→「Firebug」→「Firebugを開く」で、Firebugの画面(スクリーンショットの下半分の部分)を起動します。

Firebug

Firebugの上部メニューの右側にある「PageSpeed」をクリック。

Firebug

「Analyze Performance」をクリック。

PageSpeed

分析が開始します。

分析開始

分析結果です。全体のスコア(Page Speed Score)が100点満点換算で上部に表示され、左側には優先度(高:赤丸・中:黄色三角・低:緑チェックマーク)別の対策が表示されます。

分析結果

左側のアイコンまたはテキスト右側の余白部分をクリックすれば、詳細な情報が中央に表示されます。

詳細情報

テキストをクリックすれば、最適化の詳細な解説のページに移動します。

最適化の詳細な解説ページ

ブラウザでトップに戻る(一番下に移動する)方法いろいろ

$
0
0


ウェブサイトを閲覧しているとき、ページのトップに戻りたいことがあると思います。また、ページの一番下に移動したいこともあると思います。

トップに戻る場合、「トップに戻る」ボタンを表示しているウェブサイトも増えてきましたがそうでないものもありますし、戻りたいときにボタンが表示されていないケースもあります。また一番下に移動するボタンを備えているウェブサイトはほぼ皆無かと思います。

ということで、ページのトップに戻る(または一番下に移動する)方法をいろいろ調べてみました。

1.トップに戻る

Windowsの場合、「HOME」でページの先頭に移動することができます。IE/Firefox/Google Chrome/Safari/Opera共通です。

Macの場合、「Command」+「↑」でページの先頭に移動することができるようです。

2.一番下に移動する

Windowsの場合、「End」でページの最後に移動することができます。IE/Firefox/Google Chrome/Safari/Opera共通です。

Macの場合、「Command」+「↓」でページの最後に移動することができるようです。

3.ページの任意の位置に一気に移動する

Windowsの場合、「Shift」+スクロールバー上の任意の位置をクリック、で移動します。IE/Firefox/Google Chrome/Safariで動作することを確認しました。Operaは動作しませんでした。

またIEオンリーですが、スクロールバー上を右クリックすればスクロールバーのメニューが表示されるので(下)、その中の「ここへスクロール」を選択しても同じ動作になります。

スクロールバーのメニュー

Macの場合、「Option」+スクロールバー上の任意の位置をクリック、で移動できるようです。

4.トップに戻る/一番下に移動するブックマークレット

ついでにブックマークレットも作ってみましたのでご利用ください。

ページトップに移動するブックマークレット(以下をブックマークしてください)

トップに戻る

ページの一番下に移動するブックマークレット(以下をブックマークしてください)

一番下へ

以上です。これでマウスのホイールを無駄にぐりぐりする回数が減るかもしれません。

ウェブサイトをgzip圧縮で高速化する

$
0
0


ウェブサイトをgzip圧縮を使って高速化するカスタマイズを紹介します。当サイトでもgzip圧縮を利用しています。

1.gzip圧縮によるウェブサイト高速化のイメージ

gzip圧縮によるウェブサイト高速化のイメージをご覧ください。

(クリックすれば拡大します)

クライアント(ブラウザ)から、あるウェブサイトの「index.html」にアクセスしたとき、リクエストを受信したサーバでは、HTTPリクエストの分析や、「index.html」の圧縮ファイル「index.html.gz」の有無などをチェックして、圧縮ファイルが返却可能であれば「index.html.gz」を返却します。

返却できない場合は通常の「index.html」をレスポンスで返却します。

圧縮ファイルを返却できれば、データの転送量を減らすことができるので、これによりウェブサイトの高速化につながります。

圧縮ファイルは受信したブラウザ側で展開することができます。主要なモダンブラウザはほぼこの機能を有しています。

2.圧縮ファイル形式

圧縮ファイル形式はgzipです。ファイルの拡張子は「.gz」になります。deflate圧縮もありますが、本エントリーでは割愛しています。

gzip圧縮する方法については、以下の記事を参考にしてください。

gzipコマンドの使い方

gzipはLinuxコマンドです。

Windowsの場合はThe gzip home pageからツールをダウンロードできるようです。32bitの場合はUnxUtilsやUnxUpdatesをインストールすれば、コマンドプロンプトから利用可能になります。WinRARでも大丈夫みたいです。

Windowsでソースコードの差分を取得する方法

Macはターミナルコマンドで普通に使えると思います。

3.圧縮可能なファイル形式

HTMLファイル、CSSファイル、JavaScriptファイルなどが圧縮可能です。

PHPも圧縮可能ですが、最初から圧縮された状態でサーバ上に配置していると肝心のサーバサイドPHP処理ができなくなるので、PHP処理を行ってから圧縮するという手はあるかもしれません。

WordPressであれば「GZIP Output」というプラグインがあります。

Movable Typeでは当ブログで「GzipFilePublisherプラグイン」を公開しています。

4.HTTPでgzip圧縮ファイルが利用可能な理由

1項で「圧縮ファイルは受信したブラウザ側で展開します」と書きましたが、そもそもブラウザが圧縮ファイルをサポートしている場合、HTTPリクエストに次のような「Accept-Encoding」ヘッダを付加します。

GET user-domain/index.html HTTP/1.1
Host: user-domain
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0
Accept: */*
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

上のリクエストは、要するに「(index.htmlについて)gzip圧縮やdeflate圧縮ファイルを受けつけられますよ」ということをサーバに伝えています。

このリクエストを受信したサーバは、圧縮ファイルを返却できる場合、次のような「Content-Encoding」ヘッダを付与したレスポンス(と圧縮したファイル)を返却します。

HTTP/1.1 200 OK
Date: Thu, 31 May 2012 10:02:44 GMT
Server: Apache/2.2.8 (Win32) DAV/2 mod_ssl/2.2.8 OpenSSL/0.9.8g mod_autoindex_color mod_fastcgi/2.4.6 PHP/5.2.5
Last-Modified: Sat, 16 Jun 2012 06:24:56 GMT
Etag: "8000000043450-25c3-4c111066fbeff"
Accept-Ranges: bytes
Content-Length: 9667
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/javascript; charset=utf-8
Content-Encoding: gzip

レスポンスを受信したクライアント(ブラウザ)は、Content-Encodingヘッダーを見て「gzip」と設定されているので受信したファイルをgzipファイルと認識して、展開します。

5.HTMLタグの書き方

調べていてよく分からなかったのがHTMLタグの書き方です。

CSSファイルやJavaScriptファイルを圧縮した場合、link要素やscript要素に、次のように圧縮ファイル名をそのまま書くものと思ってましたが、そうではないようです。

非推奨な例

<link rel="stylesheet" href="http://user-domain/style.css.gz" type="text/css" title="Default" media="screen,tv" />
<script src="http://user-domain/foo.js.gz"></script>

圧縮ファイルを読み込む仕組みは後述します。ここでは「圧縮ファイルを利用する場合でもHTMLタグの変更は必要ない」ということだけをお伝えしておきます。

6.圧縮ファイルの読み込みかた

圧縮ファイルは.htaccessを利用して読み込みます。

.htaccessには次のような判定条件を設定し、すべての条件を満たした場合、リクエストURLの末尾に「.gz」を付与します。つまり圧縮ファイルが呼び出されたものとみなして圧縮ファイルを返却します。条件を満たさない場合はURLの末尾に「.gz」を付与しません。

  • HTTPリクエストで圧縮ファイルを許容しているか(=Accept-Encodingヘッダで「gzip」が許容されているか)
  • HTTPリクエストの末尾が「.gz」でないか
  • リクエストの末尾に「.gz」を付与したファイルがサーバに存在するか

7..htaccessの解説

以下の内容を記述した.htaccessを用意し、サーバのディレクトリにアップロードします。サーバ上でviエディタ等で直接作成してもOKです。

RewriteEngine on
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME} !\.gz$
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule .+ %{REQUEST_URI}.gz
<files *.html.gz>
AddType "text/html;charset=utf-8" .gz
</files>
<files *.js.gz>
AddType "text/javascript;charset=utf-8" .gz
</files>
<files *.css.gz>
AddType "text/css" .gz
</files>
AddEncoding x-gzip .gz

6項の説明の繰り返しになりますが、設定内容の解説です。

1つめのRewriteCondディレクティブで、HTTPの「Accept-Encoding」ヘッダでgzipが許容されていれば次に進みます。gzipをサポートしていないブラウザなどからのリクエストで、このヘッダが付与されていなければ、ここで処理が終わって非圧縮ファイルを返却します。

RewriteCond %{HTTP:Accept-Encoding} gzip

2つめのRewriteCondディレクティブで、拡張子が「.gz」でなければ次に進みます。

RewriteCond %{REQUEST_FILENAME} !\.gz$

3つめのRewriteCondディレクティブで、元のファイルの末尾に「.gz」を付与したファイルが存在すれば次に進みます。

RewriteCond %{REQUEST_FILENAME}\.gz -s

上記3つの条件を満たしたリクエストについて、RewriteRuleディレクティブでURIの末尾に「.gz」を付与して処理をおこないます。

RewriteRule .+ %{REQUEST_URI}.gz

ファイル名の末尾が「.gz」のファイルについては、ファイル種別に応じて振り分けてAddTypeディレクティブでHTTPレスポンスの「Content-Type」ヘッダを付与します。HTMLファイルには「text/html」を、CSSファイルには「text/css」を、JavaScriptファイルには「text/javascript」を付与します。「charset=utf-8」は必要に応じて設定してください。

<files *.html.gz>
AddType "text/html;charset=utf-8" .gz
</files>
<files *.js.gz>
AddType "text/javascript;charset=utf-8" .gz
</files>
<files *.css.gz>
AddType "text/css" .gz
</files>

最後にAddEncodingディレクティブを使って、HTTPレスポンスに「Content-Encoging: gzip」を付与します。

AddEncoding x-gzip .gz

すでに.htaccessを使っている場合は、ファイルの末尾または先頭に上記の内容を追加してください。

8.gzip圧縮で通信されていることを確認する

Firefoxのアドオン「Live HTTP Headers」などで確認できます。

LiveHTTPHeaders(Firefox 機能拡張)でHTTP ヘッダを表示する

普通にリロードすると304が返却される可能性があるので、Windowsの場合は「Ctrl+F5」で強制リロードするとよいでしょう。

9.CDNサービスのファイルはgzip圧縮されている

ご存知かもしれませんが、Google CDNサービスなどはgzip圧縮されたファイルを返却します。

GET /ajax/libs/jquery/1.7.2/jquery.min.js HTTP/1.1
Host: ajax.googleapis.com
User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:13.0) Gecko/20100101 Firefox/13.0.1
Accept: */*
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://user-domain/
Pragma: no-cache
Cache-Control: no-cache
HTTP/1.1 200 OK
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Type: text/javascript; charset=UTF-8
Last-Modified: Thu, 29 Mar 2012 18:19:50 GMT
Date: Thu, 14 Jun 2012 14:53:48 GMT
Expires: Fri, 14 Jun 2013 14:53:48 GMT
x-content-type-options: nosniff
Server: sffe
Content-Length: 33673
x-xss-protection: 1; mode=block
Cache-Control: public, max-age=31536000
Age: 344451

Google AnalyticsやGoogle Adsenseのコードも圧縮されています。

10.参考サイト

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

iPhoneで拡大できない画面を拡大する方法

$
0
0


iPhoneで拡大できない画面を拡大する方法を紹介します。

1.問題点

iPhoneのブラウザやマップなどの画面を拡大するには、ピンチアウト(2本の指を画面上でタップして指の間隔を広げていく)という操作で行います。

ピンチアウト前の画面

ピンチアウト後の画面

逆に縮小するには、ピンチイン(2本の指を画面上でタップして指の間隔を縮めていく)します。

ただし、ホーム画面や管理画面などはこのピンチアウト・ピンチインで拡大・縮小することはできません。

ピンチアウトできない画面(ホーム画面)

また、レスポンシブデザインでスマホ用に横幅を最適化したウェブサイトも拡大できないケースがあります。

が、そういった画面でも、次のように拡大できるようになります(スクリーンショットがとれないので筐体ごと撮りました)。

以下、設定方法です。この操作はiPhone4Sで確認しています。

2.拡大・縮小を可能にする設定

iPhoneにはアクセシビリティ確保のための「ズーム機能」が用意されていて、これを有効にします。

「設定」→「一般」をタップ。

「アクセシビリティ」をタップ。

「ズーム機能」をタップ。

ズーム機能を「オン」にします。これで設定完了です。

3.画面の拡大・縮小

設定画面に記載されていますが、ここにも掲載しておきます。基本は3本指タップです。

  • 拡大する/元に戻す:3本指でダブルタップ
  • 画面の表示範囲を動かす:拡大表示中に3本指でドラッグ
  • 拡大倍率を上げる:3本指でダブルタップして上にドラッグ
  • 拡大倍率を下げる:3本指でダブルタップして下にドラッグ

4.その他

操作して気がついた点をまとめました。

  • ズームした状態で画面を移動した場合、移動先の画面でもズーム状態が維持されます。
  • ズーム機能を使った画面の拡大では、ピンチアウトと異なり、テキストの輪郭がぼやけます。
  • 拡大倍率を上げたあと倍率をダブルタップで元に戻して、再度ダブルタップすると直前の倍率に拡大します。
  • ロック画面やカメラなども拡大可能で、多分この機能でズームできない画面はないと思われます。
  • ブラウザもズーム機能で拡大できますが、スクロール操作はできません。リンクはクリックできます。

ということで、iPhoneの細かい字が読めない方、いかがでしょうか。

Google ChromeでスクロールキャプチャできるChrome拡張「Webpage Screenshot」

$
0
0


Google ChromeでスクロールキャプチャできるChrome拡張「Webpage Screenshot」を紹介します。

この拡張を利用すれば、画面キャプチャやスクロールキャプチャはもちろん、ページ上に図形や文字を描いたり、ページ上でテキスト編集を行うこともできます。

1.インストール

Chrome ウェブストア - Webpage Screenshot」のページ右側にある「CHROMEに追加」をクリック。

「追加」をクリック。これでインストールが開始します。

インストールが完了すると次のようなページが表示されます。

2.キャプチャする

キャプチャしたいウェブサイトの右上にあるカメラマークのアイコンをクリック。

メニューが表示されます。ここでは「ページすべてをスクリーンショット」を選択します。

スクロールキャプチャが開始します。

キャプチャが完了すると次のような画面が表示されます。

(クリックで拡大します)

ページ上部のメニューにある「Save」をクリックすれば保存できます。

2.図形や文字を描く

キャプチャ画面上部左側にあるメニューを利用します。カラーパレットで色を選び、描画したいオブジェクトを選択します。

このような感じで描けます。

アンドゥやリドゥも可能です。キャプチャした画面の一部を切り抜くことも可能です。

3.画面を編集する

カメラアイコンをクリックして、「Beta: Edit content」を選択。

「OK」をクリック。

これで表示されている画面の編集が可能になります。編集後にキャプチャもできるので、ウェブサイトを自由自在に加工できます。

4.オプション

キャプチャ後のページ上部右の「Options」をクリック。

オプションが表示されます。

メールの「undisclosed-recipients:;」について

$
0
0


受信したメールの「undisclosed-recipients:;」について調べてみました。

1.事象

受信したメールを開いたときに、宛先欄にはメールの送信先の名前が表示されます。

下のスクリーンショットはThunderbirdでの受信メールの表示例で、「To:」に自分のメールアドレスが設定されている場合、宛先欄には「(自分)」と表示されます。

受信メール

が、この宛先欄に「undisclosed-recipients:;」と表示される場合があります。

受信メール

2.原因

受信メールの「To:」や「Cc:」にメールアドレスが設定されておらず、「Bcc:」のみにメールアドレスが設定されている場合、そのメールを開くと、宛先欄に「undisclosed-recipients:;」が表示されます。

3.「undisclosed-recipients」の意味

では、この「undisclosed-recipients」とは何を意味するのでしょうか。

「undisclosed」は「知られない」、「recipients」は「受取人」や「受信者」を意味するので、「undisclosed-recipients」は「知られない受取人」となりますが、意訳すると「受信者不明」が適切ではないかと思われます。

メールを受信できたにもかかわらず「受信者不明」としている根拠は次のとおりです。

前述したとおり、「undisclosed-recipients」が表示されるメールは「Bcc:」のみで送られたメールです。「Bcc:」はブラインドカーボンコピー(Blind Carbon Copy)の略で、「To:」と「Cc:」のユーザーにメールのコピーを送ったユーザーを知られたくない場合に利用します。

「Bcc:」ヘッダは、メール送信時にクライアント(MUA:Mail User Agent)またはメールサーバ(MTA:Mail Tranfer Agent)で削除してから送信・転送されます。

つまり、「Bcc:」のみでメールを送信した場合、ユーザーに配信された時点ですべてのメールアドレスが削除された状態になっています。

よって、そのメールを受信したメールクライアントでは、誰に送信されたメールであるか判断できないため、「受信者不明」という意味で、「undisclosed-recipients」を表示している、ということです。

Java(JDK/JRE)をダウンロードする方法

$
0
0


OracleがSun Microsystemsを買収してからJavaのダウンロード先が分かりにくくなりました。

とりあえずGoogleで「Java ダウンロード」を検索すると、次のページがヒットします。

ダウンロードページ

Windowsの場合、ここでダウンロードするのは、「jxpiinstall.exe」というファイルで、このファイルを実行すると、最新版のJRE(Java Runtime Environment)をダウンロードします。

ダウンロード

が、Java開発用であるJDK(Java Development Kit)をダウンロードしたい場合や、さらには旧バージョンのものをダウンロードしたい場合、上記のサイトからはうまくたどりつけないようです(間違ってたらご指摘ください)。

ということで、OracleのトップページからJava(JDK/JRE)のダウンロードページへ進む方法を紹介します。

最新版のダウンロードと旧バージョンのダウンロードで、若干手順が異なります。どちらも1項の手順を行ったあと、最新バージョンのダウンロードは2項、旧バージョンのダウンロードは3項に進んでください。

1.共通手順

Oracleのトップページにある「Downloads」をクリック。

Oracleのトップページ

「Java for Developers」のリンクをクリック。

Downloads

2.最新バージョンのダウンロード

最新バージョンをダウンロードする場合は、一番左のアイコンをクリック。

Java for Developers

最新バージョン「Java SE Development Kit 7u5(2012年6月現在)」の「Accept License Agreement」を選択。

Java SE Development Kit 7u5

ダウンロードしたいプロダクトを選択します。

Java SE Development Kit 7u5

これでダウンロードが開始します。

3.旧バージョンのダウンロード

旧バージョンのダウンロードは厄介です。

旧バージョンをダウンロードする場合は、「Previous Releases」をクリック。

Java for Developers

ダウンロードしたいメジャーバージョンをクリック。これで該当バージョンのダウンロードページに移動します。

Java SE 6

ここでは「Java SE Development Kit 6u32」の「Accept License Agreement」を選択。

Java SE Development Kit 6u32

ダウンロードしたいプロダクトを選択します。

Java SE Development Kit 6u32

予想外のサインインが求められます。アカウントを持っていない場合はサインアップしてください。以降、サインアップの手順です。

サインイン

新規ユーザー登録でEメールとパスワードを設定。

新規ユーザー登録

ユーザー情報を入力。ここまではいいと思います。

ユーザー情報

が、次にすべての人に対して会社情報の入力が要求されます。必須です。

会社情報

コミュニティ会員やニュースレターの選択をして、一番下の「作成」をクリック。

コミュニティ会員やニュースレターの選択

アカウント確認画面が表示されます。この画面はそのままにしておきます。

アカウント確認画面

登録したメールアドレスに送信された確認メールの「アカウントの確認」をクリック。

アカウントの確認

サインインします。

サインイン

これでアカウントが確認されました。画面にある「アカウントにアクセス」をクリック。

アカウント確認完了

アカウントの更新画面が表示されるので「確認」をクリック。

MyProfileユーザーの更新

このようなエラー画面が表示されました。

エラー画面

上のエラー画面は無視して、3項の最初から手順をやり直してダウンロードを実行します。

ダウンロード

サインインした状態になっているので、これでダウンロードできると思います。

ダウンロード


Movable Typeを再インストールする場合の手順

$
0
0


Movable Typeを再インストールする場合の手順を紹介します。

最近発生したファーストサーバの障害で多くのウェブサイトが影響を受けているようで、その中にはMovable Typeで構築されたサイトもあるようです。

そういった万が一のケースを考慮して、MTの再インストール手順を把握しておき、復旧を少しでも迅速に行えるようにしておくことが必要でしょう。

ここでは、障害前のデータベースが残っていてMTのプログラムファイルのみ消失した場合、あるいはすべて消失したものの、MySQLでエクスポートしたデータベースのバックアップが手元に残っていて、それをMySQLにインポートした状態からの、Movable Typeの再インストールについて解説します。

1.MTプログラムのアップロード

復旧前と同じディレクトリにMTプログラムをアップロードします。

障害前のmt-config.cgiが残っている場合は、それを元のディレクトリにアップロードしてください。

2.MTの再インストール(mt-config.cgiが残っている場合)

1項でmt-config.cgiが残っている場合、mt.cgiにアクセスすればログイン画面が表示されるので、これで再インストールは完了です。

ログインすれば障害前の管理画面にアクセスできます。管理画面が正常に動作することと、再構築が正常に行われることを確認してください。

3.MTの再インストール(mt-config.cgiが残っていない場合:その1)

mt-config.cgiが残っていない場合は、新しいMTをインストールするときのインストールウィザードにそって作業を進めます。

この手順を行うことでmt.config.cgiファイルが生成されます。この手順でデータベースの内容が初期化されることはありませんが、万が一、ウェブサイトの設定を行う手順に進んでしまった場合、データベースの内容が初期化される可能性があるので作業を中止してください。

MTをインストールしたディレクトにアクセスして「サインイン」をクリック。

ようこそ画面

「開始」をクリック。

インストールウィザード

「次へ」をクリック。

システムチェック

障害前と同じデータベース情報を設定して「接続テスト」をクリック。

データベースの設定

「次へ」をクリック。

データベースの設定完了

障害前と同じメール設定を行って「次へ」をクリック。

メール設定

「次へ」をクリック。

設定完了

新規インストールであればアカウント設定画面に遷移しますが、データベースに情報があるのでインストールウィザードは完了して、次のようにログイン画面が表示されます。

ログイン画面

ログインすれば障害前の管理画面にアクセスできます。管理画面が正常に動作することと、再構築が正常に行われることを確認してください。

4.MTの再インストール(mt-config.cgiが残っていない場合:その2)

3項の手順の代わりに、障害前と同じmt-config.cgiを手作業で作成すれば復旧できます。

5.環境変数の設定(mt-config.cgiが残っていない場合)

障害前のmt-config.cgiが残っていない場合、新たに作成したmt-config.cgiをダウンロードして任意のエディタで開き、障害前に設定されていた環境変数を設定します。

設定後、元のディレクトリにアップロードしてください。

環境変数の設定有無、あるいはどのような環境変数が設定されているかは利用しているMTによって異なります。

del要素の取り消し線を文字と異なる色にする方法

$
0
0


HTMLのdel要素で、取り消し線を文字と異なる色にする方法を紹介します。

変更前

削除したコンテンツ

変更後

削除したコンテンツ

1.del要素とは

del要素は、コンテンツの修正箇所を残す場合に利用するもので、指定した範囲が削除されたことを示します。

HTMLマークアップ

<del>削除したコンテンツ</del>

del要素で括ったコンテンツは、次のように取り消し線が表示されます。

削除したコンテンツ

del要素にはcite属性とdatetime属性を指定できます。

  • cite属性:削除理由となる情報のURLを設定
  • datetime属性:削除した日付と時刻を設定

設定例

<del datetime="2012-06-24T08:15:30-05:00"
     cite="http://www.foo.org/mydoc/comments.html">
削除したコンテンツ
</del>

取り消し線はCSSで非表示にすることもできます。

del {
    text-decoration: none;
}

また、取り消し線を表示することで文書が読みにくくなる場合は、非表示にするという手もあります。

del {
    display: none;
}

2.del要素の取り消し線文字と異なる色にする

本題です。

del要素の取り消し線文字と異なる色にする場合、次のようにdel要素に中にspan要素を記述します。

<del><span>削除したコンテンツ</span></del>

そしてCSSを次のように指定します。

del {
    color: #f00;
}
span {
    color: #000;
}

これで取り消し線を文字と異なる色にできます。

削除したコンテンツ

del要素に指定したcolorプロパティはdel要素内の文字にも反映されるので、del要素の中のspan要素でさらにcolorプロパティを設定することで、取り消し線の色と文字の色を変更することができます。

「CSSを使えばこういうこともできます」という実験なので、HTMLマークアップ上、意味的に問題があるということであればご利用はお控えください。

Google推奨のブラウザレンダリングに関する4つのベストプラクティス

$
0
0


Googleが推奨する、ブラウザレンダリングに関する4つのベストプラクティスについて紹介します。

この記事は「Optimize browser rendering」を参考に書き起こしたものです。

Optimize browser rendering
Optimize browser rendering

元記事は2012年3月28日に更新されたものです。記事には5つの項目がありますが、残りの1つは情報がやや古いようなので割愛しました。

解釈が間違っている部分がありましたらどこかでつぶやいてください。

1.CSSセレクタを効率的に使用する

基本として、CSSのレンダリングは、記述されたセレクタについて、一番右端のセレクタ(キーセレクタ)から開始し、右から左方向に評価します。

で、多くの要素に一致するような非効率的なキーセレクタを避けることで、ページのレンダリングをスピードアップできるようです。

以下の子孫セレクタは非効率な例です。

キーセレクタがユニバーサルセレクタの子孫セレクタ

body * { ... }
.hide-scrollbars * { ... }

キーセレクタが要素セレクタの子孫セレクタ

ul li a { ... }
#footer h3 { ... }
* html #atticPromo ul li a { ... }

非効率な理由は、ブラウザは各要素に対して一致するか、ルート要素に到達するまでDOMツリーをトラバースして評価する必要があるためです。

次の子セレクタも同様の理由で非効率ですが、子孫セレクタよりはましなようです。

キーセレクタがユニバーサルセレクタの子セレクタ

body > * { ... }
.hide-scrollbars > * { ... }

キーセレクタが要素セレクタの子セレクタ

ul > li > a { ... }
#footer > h3 { ... }

また冗長なセレクタも不必要に評価されてしまいます。IDセレクタを利用する場合、要素セレクタを指定する必要はありません。

ul#top_blue_nav { ... }
form#UserLogin { ... }

非リンク要素への擬似セレクタは、IE7/8でレンダリング速度が落ちるようです。

h3:hover { ... }
.foo:hover { ... }
#foo:hover { ... }
div.faa :hover { ... }

1項のまとめです。

  • ユニバーサルキーセレクタを避ける
  • 子セレクタや子孫セレクタを避ける
  • 冗長な修飾は行わない
  • クラスセレクタやIDセレクタを使用する

ただし劇的に速度が上がる訳ではないようなので、既存のCSSを修正する場合は費用対効果を考えた方がよさそうです。

その他、本項では「未使用のCSSを削除すればパフォーマンスが改善する」とも書かれています。

2.CSSをHTMLドキュメントの最初の方に配置する

CSSのlink要素はhead要素の中の上部に記述します。

理由は、ブラウザはすべての外部スタイルシートがダウンロードされるまで、Webページをレンダリングブロックするためです。

スタイルシートを最初にダウンロード・解析されることで、ブラウザは徐々にページをレンダリングできます。

なお、CSSのlink要素を並べて記述すればパラレルに取得できます。以下は「Minimize round-trip times」からの引用です。

良い例

<head>
<link rel="stylesheet" type="text/css" href="stylesheet1.css" />
<link rel="stylesheet" type="text/css" href="stylesheet2.css" />
<link rel="stylesheet" type="text/css" href="stylesheet3.css" />
<script type="text/javascript" src="scriptfile1.js" />
<script type="text/javascript" src="scriptfile2.js" />
</head>

レンダリング動作
悪い例

悪い例

<head>
<link rel="stylesheet" type="text/css" href="stylesheet1.css" />
<script type="text/javascript" src="scriptfile1.js" />
<script type="text/javascript" src="scriptfile2.js" />
<link rel="stylesheet" type="text/css" href="stylesheet2.css" />
<link rel="stylesheet" type="text/css" href="stylesheet3.css" />
</head>

レンダリング動作
良い例

また、@importを併用すると、パラレルに取得できるCSSがパラレルに取得できなくなる可能性があるため、「Don't use」と書かれています。

その他、style要素はhead要素に記述しないとレンダリングに影響があるように書かれています(そもそもstyle要素はHTML仕様でhead要素に記述することになっているので、body要素に記述したケースを想定して書かれているのかもしれません)。

2項のまとめです。

  • CSSのlink要素はhead要素の最初の方に記述する
  • @import文を使用しない
  • 複数のCSSのlink要素は並べて記述する
  • style要素はhead要素に配置する

3.画像のサイズを指定する

画像を表示するとき、画像のサイズ(幅と高さ)を指定することでレンダリングのパフォーマンスが向上します。

理由は、サイズを指定することで、ブラウザは画像のダウンロード前にレイアウトを算出することができ、ページ表示にかかる時間を短縮できるためです。

指定するのは、img要素のwidth属性とheight属性または、img要素の親ブロックレベル要素のいずれかです。

<img src="..." width="60" height="60" alt="..." />

または

<style>
.image {
  width: 60px;
  height: 60px;
}
</style>
...
<div class="image"><img src="..." alt="..." /></div>

親ブロックレベル要素に指定する場合、直接の親要素ではない要素に指定しないでください。

また、指定する場合は、画像と一致するサイズを指定します。サイズを拡大・縮小するサイズを指定するとパフォーマンスが劣化します。

3項のまとめです。

  • 画像と同じサイズを指定する
  • サイズは、img要素または直接の親ブロックレベル要素に指定する

4.キャラクタセット(文字セット)を指定する

当たり前すぎる内容なのであまり言及されている記事がありませんが、HTML文書にmeta要素でキャラクタセット(文字セット)を指定することで、HTMLと実行スクリプトの構文解析をすぐに開始することができます。

<meta charset="UTF-8" />

キャラクタセットの指定が必要な理由は、ブラウザが画面上へレンダリングする際に文字エンコード情報を使用するためです。

ほとんどのブラウザでは、キャラクタセットを検索しながら任意のJavaScriptを実行したり、ページを描画する前に、特定のバイト数をバッファリングします(Internet Explorer6/7/8は例外)。

レンダリングに必要なバイト数をバッファリングしたあと、デフォルトと一致しないキャラクタセットがみつかった場合、ページをレンダリングするために、ブラウザは入力を再解析してページを再描画する必要があり、この部分でパフォーマンスへの影響が発生します。

書籍「Facebookデザインプロフェッショナルガイド」予約開始

$
0
0


執筆に参加させていただいている書籍「Facebookデザインプロフェッショナルガイド」の予約がAmazonで開始されました。

Facebookデザイン プロフェッショナルガイド
蒲生 トシヒロ 小野寺 翼 藤本 壱 荒木 勇次郎 秋葉 秀樹 秋葉 ちひろ ホシナ カズキ 森 雅秀 和泉 裕臣 石川 雅之
マイナビ

本書は、「Facebookページプロフェッショナルガイド」の制作編を抜き出し、パワーアップを図ったものです。また仕様変更が頻繁に行われるFacebookの最新状況にも追従しています。

目次は次のとおりです。私はChapter2-7~9の「ページタブ製作」を担当させていただきました。

Chapter1 Facebookで何ができるのか
1 ソーシャル連係で効果をあげるために
2 OGPの基本と実装方法
3 ソーシャルプラグインの種類と解説
4 エッジランクについて
5 運用(投稿)へのクリエイティブの効果的活用
6 Facebookアプリとは
Chapter2 Facebookページの作成/ソーシャルプラグインの実装
1 Facebookページの作成
2 Facebookのデベロッパー登録/アプリ登録
3 OGP実装─WordPress編
4 OGP実装─Movable Type編
5 ソーシャルプラグインの設定
6 インサイト(Insights)を使ったドメインの効果測定
7 ページタブの制作─基本編
8 ページタブの制作─WordPress編
9 ページタブの制作─Movable Type編
Chapter3 ソーシャルプラグインのデザインカスタマイズ
1 LikeBoxのデザインをカスタマイズする 秋葉 秀樹
2 「いいね! 」の数の表示をデザインする 秋葉 秀樹
3 スマートフォンサイトに対応させるカスタマイズ 秋葉 ちひろ
4 プラグインをスマートフォンに最適化する 石川 雅之
Chapter4 Facebookアプリの使い方、作り方
4-1 Facebookのパーミッションについて
4-2 Facebookアプリ紹介
4-3 Facebookアプリを作る(1) 開発の準備
4-4 Facebookアプリを作る(2) サンプルアプリの制作
Chapter5 Facebookページのデザイン事例
5-1 あんとみのゼロアート
5-2 TOWNTONE(タウントーン)
5-3 Papa Maman House care room(パパママハウス ケアルーム)
5-4 ハイベロシティ Hivelocity(Hivelo Social Apps)
5-5 帝京大学泌尿器科ウィザス
5-6 ブライダル&ジュエリーCARA.|カーラ
5-7 小川屋-弁当仕出しの小川屋-
5-8 鎌倉野菜と宇宙カレー 鎌倉いし川庵

同時に発売される「Facebookマーケティング プロフェッショナルガイド」の予約も開始されました。

Facebookマーケティング プロフェッショナルガイド
蒲生 トシヒロ 原 裕 井出 一誠 坂田 誠 竹村 詠美 伊藤 学 口田 聖子 高木 芳紀 神田 敏晶
マイナビ

ということで、Facebookに興味のある方、あるいはすでにFacebookを利用しているけれどもより効果的に利用したいという方はご購入を検討頂ければ幸いです。

同時刊行を記念した2冊の著者陣によるセミナー「Facebook Power Session 2012」も7月7日に行われますので、こちらも是非ご参加ください。

Thunderbirdのメール送信で表示名を削除するアドオン「Auto Address Cleaner」

$
0
0


Thunderbirdのメール送信で表示名を削除するアドオン「Auto Address Cleaner」を紹介します。

Auto Address Cleaner

1.機能

通常、Thunderbirdのメール送信・返信時に、メールアドレスに表示名が自動補完され、そのまま送信されてしまいます。

例えば、新規作成でメールアドレスまたは表示名を入力すると、候補のアドレスと表示名が表示されます。

候補のアドレスと表示名が表示

選択すると、メールアドレスと表示名が適用されます。

メールアドレスと表示名が適用

表示名を削除してメールアドレスだけに編集しても、

メールアドレスだけに編集

カーソルを他に移動した瞬間に表示名が復活してしまいます。

表示名が復活

例えば、仕事でのメールのやりとりで、相手から受信したメールをそのまま返信すると、送信者の表示名には相手のメールソフト側で作成した表示名がそのまま設定されることが多いと思います。

その場合、当然「様」などの敬称がついていないので、そのメールを受信した側からすれば、見た目があまりよろしくないということになります。

そういった場合、「Auto Address Cleaner」を利用すれば送信メールの表示名を取り除いてくれます。

下のスクリーンショットはThunderbirdからGmailに送ったときのアドオン適用前後の表示です。アドオン適用後はTo:から表示名が削除されていることが分かります。

アドオン適用前
アドオン適用前

アドオン適用前
アドオン適用前

注:メール送信直前まで表示名は表示された状態となります。これはメール送信先を間違えていないか確認しやすいように、という配慮です。

2.インストール

「ツール」→「アドオン」を選択。

メニューバー

アドオンマネージャのタブの検索フォームに「Auto Address Cleaner」を入力して検索。

アドオン画面

検索結果に「Auto Address Cleaner~」が表示されたことを確認。

アドオン検索結果

その右側にある「インストール」をクリック。

Auto Address Cleaner

「今すぐ再起動する」をクリック。

今すぐ再起動する

これでアドオンが適用されます。

ソーシャルボタンを簡単に設置できる「jQuery.socialbuttonプラグイン」

$
0
0


ソーシャルボタンを簡単に設置できる「jQuery.socialbuttonプラグイン」を紹介します。

1.機能

このプラグインを利用すれば、スクリーンショットのようなソーシャルボタンを簡単に設置できるようになります(スクリーンショットのサンプルコードは5項に掲載しています)。

ソーシャルボタン

2012年6月現在でプラグインが対応しているサービスは以下です。

  • Evernote
  • facebook
  • Google+1(IEは8以降のみ)
  • GREE
  • mixi
  • Pinterest
  • Twitter
  • はてなブックマーク

以下、設置方法です。

2.プラグインのダウンロード・インストール

プラグイン配布サイトの「その1:jQueryとプラグインをダウンロード」からプラグインをダウンロードします。

jQuery.socialbutton プラグイン
ダウンロード

ダウンロードしたプラグインをサーバにアップロードします。

3.プラグインの設定

HTMLマークアップは次のようになります。赤色部分は利用ユーザーで設定する部分です。ボタンを表示する部分の要素(ここではli要素)は内容を空にしておきます。

<script src="jquery.min.js" type="text/javascript"></script>
<script src="js/jquery.socialbutton-x.x.x.js" type="text/javascript"></script>
<script>
$(function() {
    $('.service1_name').socialbutton(サービス名1[, オプション]);
    $('.service2_name').socialbutton(サービス名2[, オプション]);
});
</script>
<ul>
<li class="service_name1"></li>
<li class="service_name2"></li>
</ul>

「サービス名1」「サービス名2」などには、サービスによって次のいずれかの値を設定します。

  • Evernote:'evernote'
  • facebookいいね!:'facebook_like'
  • facebookシェア:'facebook_share'
  • Google+1:'google_plusone'
  • GREE:'gree_sf'
  • mixiイイネ!:'mixi_like'
  • mixiチェック:'mixi_check'
  • Pinterest:'pinterest'
  • Twitter:'twitter'
  • はてなブックマーク(新):'hatena'
  • はてなブックマーク(旧):'hatena_oldstyle'

Twitterの場合は次のようになります。

<script>
$(function() {
    $('.twitter').socialbutton('twitter');
});
</script>

オプションは必要に応じてJSON形式で設定します。例えば、Twitterのオプションでは次のように設定します。

<script>
$(function() {
    $('.twitter').socialbutton('twitter', {
        button: 'horizontal',
    });
);
});
</script>

mixiチェックとmixiイイネ!はオプションは必須です。keyで登録キーを指定してください。

設定可能なオプションの詳細は4項を参照してください。

4.サービス別オプション一覧

サービス別オプションの一覧を、プラグインのソースコードから引用しました。実際のオプションと比較して、必要なものを適宜設定してください。

Evernote

$('.evernote').socialbutton('evernote', {
    button: 'article-clipper',
    url: 'http://user-domain/',
    provider_name: 'user-domain',
    suggest_notebook: 'webclip',
    content_id: 'element-id-to-clip',
    code: 'your-affiliate-code',
    title: 'note-title',
    suggest_tags: 'comma-separated-tags,up-to-three-tags',
    styling: 'full'
});

facebookいいね!

$('.facebook_like').socialbutton('facebook_like', {
    button: 'standard', // synonym 'layout'
    url: 'http://user-domain',
    show_faces: true,
    width: 450,
    height: 80,
    action: 'like',
    locale: 'en_US',
    font: 'arial',
    colorscheme: 'light'
});

facebookシェア

$('.facebook_share').socialbutton('facebook_share', {
    button: 'button_count', // synonym 'type'
    url: 'http://user-domain',
    text: 'Share'
});

GREE

$('.gree_sf').socialbutton('gree_sf', {
    button: 0, // synonym 'type'
    url: 'http://user-domain/',
    width: 0, // auto
    height: 20
});

Google +1

$('.google_plusone').socialbutton('google_plusone', {
    button: 'standard', // synonym 'size'
    url: 'http://user-domain', // synonym 'href'
    lang: 'ja',
    parsetags: 'explicit',
    callback: 'some_callback_function',
    count: true
});

mixiチェック

$('.mixi_check').socialbutton('mixi_check', {
    key: 'mixi-check-key',
    button: 'button-1',
    url: 'http://user-domain/'
});

mixiイイネ

$('.mixi_like').socialbutton('mixi_like', {
    key: 'mixi-check-key',
    url: 'http://user-domain/',
    width: 450,
    height: 80,
    show_faces: true,
    style: 'additional-style-here'
});

Pintarest

$('.pinterest').socialbutton('pintarest', {
    button: 'horizontal', // or 'vertical', 'none'
    url: 'http://user-domain',
    media: 'http://user-domain/image.jpg',
    description: 'This is an image.'
});

Twitter

$('.twitter').socialbutton('twitter', {
    button: 'vertical', // synonym 'count'
    url: 'http://user-domain/',
    text: 'tweet text',
    lang: 'ja',
    via: 'ishiiyoshinori',
    related: 'twitter'
});

はてなブックマーク(新)

$('.hatena').socialbutton('hatena', {
    button: 'standard',
    url: 'http://user-domain/',
    title: 'page-title'
});

はてなブックマーク(旧)

$('.hatena').socialbutton('hatena_oldstyle', {
    button: '/path/to/your-icon.png',
    url: 'http://user-domain/',
    padding: 10,
    height: 15
});

5.サンプル

冒頭の画像のサンプルは次のとおりです。ご自由にお使いください。

<style>
#social {
    display: inline;
    list-style: none;
}
#social li {
    float: left;
    display: block;
    vertical-align: middle;
}
.hatena {
    padding-right: 10px;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="jquery.socialbutton-1.9.0.min.js"></script>
<script>
$(function() {
    $('.google_plusone').socialbutton('google_plusone');
    $('.tweet').socialbutton('twitter', { button: 'horizontal' });
    $('.evernote').socialbutton('evernote');
    $('.hatena').socialbutton('hatena');
    $('.facebook').socialbutton('facebook_like', { button: 'button_count' });
});
</script>
<ul id="social">
  <li class="hatena"></li>
  <li class="facebook"></li>
  <li class="tweet"></li>
  <li class="google_plusone"></li>
  <li class="evernote"></li>
</ul>

ミニチュア風写真が作れるサービス「TiltshiftMaker」

$
0
0


ご存知の方も多いと思いますが、ミニチュア風写真が作れるサービス「TiltshiftMaker」を紹介します。

Tiltshift Maker
Tiltshift Maker

このサービスを利用すれば、下のスクリーンショットのように、普通の画像をミニチュア風に仕上げることができます。

ミニチュア風サンプル

1.画像を指定する

ここでは「Futta.NET」にあった次の画像を使ってみます。ベネチア(イタリア)です。

ベネチア

画像を指定するには、トップページにあるフォームを使います。ローカルPCの画像を指定する場合は「Choose a photo to upload:」で画像を選択し、「Upload picture」をクリックします。ネット上の画像であれば「...or use a photo from the web:」にURLを指定して「Use this photo」をクリックします。

トップページのフォーム

画像を指定してフォームを実行すると次のような設定画面になります。左の画像が調節用、右の画像がプレビュー用です。

(クリックで拡大)
プレビュー画面

以降で説明する各項目をプレビュー画面に反映させるには、「プレビュー」をクリックしてください。

プレビューボタン

「Focus size」は焦点を合わせる範囲を指定します。範囲を狭くすればぼかす部分が多くなります。

Focus size

画像右側にあるスライダーで、垂直方向の位置を調節できます。

焦点を合わせる部分を調節

「Defocus strength」でぼかし具合を調整できます。「weak」はぼかしの度合いが弱く、「strong」は強くなります。

Defocus strength

「Defocus gradient」は、焦点が合っている部分とぼかす部分の境界を調整します。「quick」は焦点が合っている部分から離れるとすぐにぼかし、「slow」は徐々にぼかしていきます。

Defocus gradient

「Compact」「Large」は調整する画面の大きさを変更します。「Large」を選択すると調整用画面のみを大きく表示し、プレビュー画面を表示しません。

「Compact」と「Large」

「Enhance colors」をチェックすれば、明るさ・鮮やかさを強くします。

Enhance colors

「Bokeh style: Aperturer」でぼかしのスタイルを決めます。

Bokeh style

「Bokeh Boost: Strength」でぼかしの強弱をつけます。「Bokeh Boost: Coverage」で弱い光も少しぼかしとして浮き立たせるかどうかを決めます。

Bokeh Boost

ファイルを保存するには「Download」をクリック。サイズは640x480固定のようです(後述する有償版に加入すれば制限解除の模様)。

Download

さらに「Click here」をクリック。

Click here

このような感じに仕上がりました。

ミニチュア後

元の画像
元の画像

トップ画面に戻らなくても、プレビュー画面で別の画像を指定することもできます。

別の画像を指定

サインアップ(1ドル/月)すれば、ファイルサイズなどの制限が解除されるようです。

サインアップ

高低差の少ない風景画像や、人が小さく写っているものなどが効果があるように思われます。

ということで、色々試してみてください。






Latest Images