まだ重たいCMSをお使いですか?
毎秒1000リクエスト を捌く超高速CMS「adiary

2013/01/17(木)adiary 2.26リリース情報

ダウンロードはこちらから

Ver2.25→Ver2.26の変更点

  • Twitter API 1.1準拠のために、アクセスURLを変更しました。(現状では3月5日以降、通知が使えなくなる)

アップデートのためにわざわざダウンロードするほとでもないので、Diary_auto.pmの640行目付近、$oauth->status_update()の第2引数を'http://api.twitter.com/1.1/statuses/update.xml'に書き換えても構いません。

追記 2013/02/25

Twitter API 1.1ではoAuth含めてhttps必須になるのか、今現在うまく行かないようです。3月5日を過ぎてしばらく経つまで様子見ですが、https必須だとpure Perlでは対応できなくなるのでお手上げです。

Version2.00(β含む)以降からの乗り換え

  • そのまま上書きしてください。
  • Ver2.11以前の場合、uploader.conf.cgi をサンプルから再生成してください。*1

なおVer2.06よりアルバムシステム関連のJavaScriptの置き場が変更になっていますので、紛らわしい場合は theme/*.js を消してから上書きしてください。

アップデート方法の参考情報。

*1 : もしくは<$v.allow_ex_match_except = '^[A-Za-z]+\d+$'>の設定を追加してください。

2012/12/19(水)MySQL設定メモ

InnoDBでMySQLを運用することを前提に書きます。

my.cnfの設定

MySQL 5.5以降ならばInnoDBの新しいエンジンが入っているが、5.1.xの場合はプラグインとなっているのでそれを有効化する。

[mysqld]
ignore-builtin-innodb
plugin-load=innodb=ha_innodb_plugin.so;innodb_trx=ha_innodb_plugin.so;innodb_locks=ha_innodb_plugin.so;innodb_lock_waits=ha_innodb_plugin.so;innodb_cmp=ha_innodb_plugin.so;innodb_cmp_reset=ha_innodb_plugin.so;innodb_cmpmem=ha_innodb_plugin.so;innodb_cmpmem_reset=ha_innodb_plugin.so

また同時に、デフォルトエンジンとしてInnoDBの設定、及びutf8を設定する。

[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8
default-storage-engine=InnoDB

mysqlコマンド

コマンドライン書式の例。

# mysql -u root -p
# mysql -u user -pPASS dbname
# mysql -h db-server.dummy.xxx -P 3306 -u user -pPASS dbname

DBとユーザーの作成

CREATE DATABASE dbname DEFAULT CHARSET=utf8;
GRANT all privileges ON dbname.* TO dbuser@localhost IDENTIFIED BY 'PASSWORD';
GRANT SELECT,INSERT,UPDATE,DELETE ON privileges ON dbname.* TO dbuser@localhost IDENTIFIED BY 'PASSWORD';

IPアドレス等を指定する場合は次のようにする。

書式意味
uname@localhostUNIXドメインソケット通信を許可
uname@127.0.0.1ローカルホスト(TCP/IP)を許可
uname@'%'全てのホストを許可
uname@192.168.1.12IPアドレス指定
uname@'192.168.%'IPアドレスが192.168.* のホストを許可

この他、Firawall(iptables)を設定するのはもちろんのこと、MySQLはhosts.allowも参照する

mysqld: ALL

ユーザー情報の確認

use mysql;
select host,user,password from user;

パスワード以外は直接書き換えれば良い。

パスワードは次のようにする。

SET PASSWORD FOR user@localhost=PASSWORD('password');
SET PASSWORD FOR user@your.host=PASSWORD('password');

文字コードの確認

show variables like 'char%';

2012/11/10(土)adiary Ver2.25リリース情報

ダウンロードはこちらから

Ver2.24→Ver2.25の変更点

  • twitterの仕様変更(API URLの変更)に対応し、twitter通知機能が使えない問題に対処しました。
  • twitterアイコンのスクリプトを新しいものに変更しました。
  • 【セキュリティ対策】スタイルシート内に behavior という文字列を書けないようにしました。(参考
  • タグエスケープモジュールで、属性値に「-」を含む場合を考慮しました。*1
  • 記法タグのルールをVer3仕様に近づけるため小幅改変しました。*2
  • RSSから記事を参照した際、記事(コメント)更新識別として #tm123456789 といったUTC文字列が付くのですが、これをアクセス時にJavaScriptで除去するよう変更しました。*3

*1 : data-属性値とか知らなかった……

*2 : 通常使う範囲では違いは分からないはず。

*3 : ブラウザ等の仕様上、どうしても1度リロードがかかるため、RSSからの記事表示が少しだけ遅くなります。

Version2.00(β含む)以降からの乗り換え

  • そのまま上書きしてください。
  • Ver2.11以前の場合、uploader.conf.cgi をサンプルから再生成してください。*4

なおVer2.06よりアルバムシステム関連のJavaScriptの置き場が変更になっていますので、紛らわしい場合は theme/*.js を消してから上書きしてください。

アップデート方法の参考情報。

*4 : もしくは<$v.allow_ex_match_except = '^[A-Za-z]+\d+$'>の設定を追加してください。

余談

落選とのことですので、adiary C83SEは出ません。C84をお楽しみに?*5

*5 : どちらにしろC83ではVer3が間に合わないので……

2012/09/28(金)Perlの型グロブと名前空間アクセスの応用

Perlの名前空間と型グロブに関する応用的な話です。高度な内容ですので、少なくともリファレンスについては理解している人向けです。型グロブも多少知らないと難しいかもしれません。

※以下特に断りがない限りPerl 5.10での動作確認です。

続きを読む

2012/08/30(木)Twitter Cardsの仕様メモ(ドキュメントの適当日本語訳)

Twitter公式webタイムライン中にコンテンツを埋め込めるTwitter Cardsについての自分用メモ。あとで実装する用。

Twitter Cardsとは?

twitter_cards.png

TwitterをWebサイトから見ているときに、クリックするとTwitpicの画像やYoutubeの動画がそのままタイムライン上で表示されたりするあの機能のことです。

このTwitter Cardsは誰でも対応サービスを作ることができます。

大まかな流れ

  1. 公式のドキュメントをよく読んで
  2. 3種類のTwitter Cardsのどれを実装するか決めて
    • summary: デフォルト。タイトルと説明とサムネイルを表示。
    • photo: 写真を表示。
    • player: 動画や音のメディアを表示
  3. サイトに必要なmetaタグを実装して
  4. apply to participateからTwitterにCardsを申請。
  5. Twitterに認可されればカードが表示されるようになる。

申請結果は申請フォームに入力したメールアドレスに送られてきますので、忘れず確認してください。

メタタグ要素

<meta name="twitter:card" content="summary">

以上のようなデータを、そのページの<HEAD>内に出力する。

プロパティ必須要素か説明
su-ph-pl-
twitter:cardYesYesカードのタイプ。「summary」か「photo」か「player」*1
twitter:urlYesYesYesコンテンツのCanonical URL
twitter:titleYesコンテンツのタイトル。最大70文字(70 characters)
twitter:descriptionYesコンテンツの説明。最大200文字(200 characters)
twitter:image:srcYesYesコンテンツを象徴する画像のURL。*2
twitter:image:width画像の横px(アスペクト比を保持してリサイズするために必要)
twitter:image:height画像の縦px(アスペクト比を保持してリサイズするために必要)
twitter:player--YesiframeプレイヤーのURL。コンテンツが混ざってないこと。
twitter:player:width--Yesiframeの横px
twitter:player:height--Yesiframeの縦px
twitter:player:stream--生ストリームのURL。Twitterのモバイル・アプリケーション等でダイレクト再生時に使用する。「MPEG-4 コンテナ format (拡張子.mp4)」でなければならない。
twitter:player
:stream:content_type
--*3生ストリームの「MIME type/subtype」を指定(RFC 6381)。現在サポートしているのはRFC4337(MP4のMIME type)のみ。
twitter:site「@username」形式。WebサイトオーナーのTwiter ID
twitter:site:id上と一緒だが、Twitter user IDの代わりに記述する文字列。
twitter:creator「@username」形式。コンテンツ製作者のTwiter ID
twitter:creator:id上と一緒だが、Twitter user IDの代わりに記述する文字列。

補足

  • twitter:siteやtwitter:creatorはCardコンテンツのフッタに表示される。ここにTwitter IDを指定することで、そのIDのツイートに直接アクセスしたりフォローすることができる。

*1 : 省略時は「summary」を指定したとみなされる

*2 : player指定時はプラットフォームがiframesやインラインプレイヤーをサポートしてない時に表示する画像。画像はプレイヤーと同じサイズであり、縦px×横pxの値が68,600pxを超えないこと。

*3 : twitter:player:stream指定時は必須

Summary Card

  • 画像のサイズが120px×120pxを超える場合はリサイズないしはクロッピングされます。

カードのサンプル。

<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@nytimes">
<meta name="twitter:creator" content="@SarahMaslinNir">
<meta name="twitter:url" content="http://www.nytimes.com/2012/02/19/arts/music/amid-police-presence-fans-congregate-for-whitney-houstons-funeral-in-newark.html">
<meta name="twitter:title" content="Parade of Fans for Houston’s Funeral">
<meta name="twitter:description" content="NEWARK - The guest list and parade of limousines with celebrities emerging from them seemed more suited to a red carpet event in Hollywood or New York than than a gritty stretch of Sussex Avenue near the former site of the James M. Baxter Terrace public housing project here.">
<meta name="twitter:image:src" content="http://graphics8.nytimes.com/images/2012/02/19/us/19whitney-span/19whitney-span-articleLarge.jpg">

Photo Card

Twitterで表示される際、画像は次のようにリサイズされます。

媒体最大サイズ
Web横435px×縦375px
モバイル横280px×縦375px
モバイル(retina displays)横560px×縦750px

カードのサンプル。

<meta name="twitter:card" content="photo">
<meta name="twitter:site" content="@examplephotosite">
<meta name="twitter:creator" content="@sippey">
<meta name="twitter:url" content="http://example.com/photo/a/">
<meta name="twitter:title" content="Good Morning, San Francisco">
<meta name="twitter:description" content="Great view this morning">
<meta name="twitter:image:src" content="http://example.com/photo/a/image.jpg">
<meta name="twitter:image:width" content="610">
<meta name="twitter:image:height" content="610">

Player Card

生ストリーム再生時のMPEG-4でサポートするコーデックは以下のとおり。

  • Video: H.264, Baseline Profile (BP), Level 3.0。最大640x480ピクセルの30fpsまで。
  • Audio: AAC, Low Complexity Profile (LC)

カードのサンプル。

<meta name="twitter:card" content="player">
<meta name="twitter:site" content="@foobar">
<meta name="twitter:url" content="http://example.com/watch/a">
<meta name="twitter:title" content="Example Video">
<meta name="twitter:description" content="This is a sample video from example.com">
<meta name="twitter:image:src" content="http://example.com/keyframe/a.jpg">
<meta name="twitter:player" content="https://example.com/embed/a">
<meta name="twitter:player:width" content="435">
<meta name="twitter:player:height" content="251">
<meta name="twitter:player:stream" content="https://example.com/raw-stream/a.mp4">
<meta name="twitter:player:stream:content_type" content="video/mp4; codecs=&quot;avc1.42E01E1, mpa.40.2&quot;">

Twitterクローラー

Twitterはカードの情報を拾いに行く際、robots.txt を参照します。適切に許可がされていないと、Cardsは表示されません。TwitterクローラーのUser-Agentは「Twitterbot/1.0」です。

Twitterにのみ許可を出す場合の robots.txtの記述例。

User-agent: Twitterbot
Disallow:

User-agent: *
Disallow: /

正しく設定できているか確認する 2020/2/24

正しく設置できているか、実際どのように表示されるかは、以下のURLから確認することができます。申請する前に一度表示確認をしておくほうが問題が少ないでしょう。*4

*4 : これを知らず、申請したけどタグが間違ってて登録されなかったことがありました(汗)

まとめ

ドキュメントをみながら適当にまとめたメモです。実装の際には、一次情報として必ず公式ドキュメントを参照してください。またOpen Graphに関する仕様は省略しました。

記述ミス(勘違い)など発見しましたら、コメントもしくはリプライください。

adiaryなら設定不要でTwitter Cards/Facebook OGPに対応しています。

メモ

TwitterがアクセスするときのUIとIP。

199.59.148.209 - "GET /robots.txt HTTP/1.1" 200 4000 "-" "Twitterbot/1.0"

$ whois 199.59.148.209
NetRange:       199.59.148.0 - 199.59.151.255
CIDR:           199.59.148.0/22
NetName:        TWITTER-NETWORK