【Tumblr】 Tumblr Queueの最新ページへのリンクを生成するGreasemonkeyを更新しました。(0.2.0)

Tumblr Queueの最新ページへのリンクを生成するGreasemonkeyを更新しました。

インストール

https://gist.github.com/raw/614547/tumblr_queue_latest_link.user.js

変更点

syoichiさんがforkしてコードを改善してくれていたので、 それを全面的に取り入れることとし、masterにmergeしました。 僕が書き飛ばしたコードよりどう考えても良かったのでw

改善点/変更点は下記の通り

  • 動作の対象をTumblelogのみに
  • Messagesの有効時に対応
  • Queueを使用していないときにエラーが出ないように修正
  • selected時の効果をQueueの最新ページを閲覧している時に限定
thanks!!

更新履歴

0.1.1 -> 0.2.0 (2011/06/12)

  • syoichiさんのコードを受け入れ

続きを読む

【メモ】 Gistの最新版へのリンク

Gistをeditすると古いバージョンへのリンクがリンク切れになってしまい、 そのたびにリンク貼り替えるのは面倒だなぁと思っていたのだけど、 なんのことはないURLを「最新版へのリンク」にしておけばよいのよね。 それを知らなくて今まではGreasemonkeyインストール用のURLをこんなのにしてたけど、 https://gist.github.com/raw/614547/c54b4589d2fb9305f9e9ac2f0f75836a09008792/tumblr_queue_latest_link.user.js そうではなくて最新版のリンク、こんなのにすればリンク切れが起きる心配がない。 https://gist.github.com/raw/614547/tumblr_queue_latest_link.user.js また、gistに含まれるファイルが1つだけの場合には、これでも行ける。 (ただし、拡張子が「user.js」ではないのでGreaseMonkeyとしてインストールは出来ない) https://gist.github.com/raw/614547 おおう。 Greasemonkeyのインストール用URLをちょっと修正して回らなければ。

参考

Gist の raw ファイルの URL が変わった: 「わ」の日記もどき

続きを読む

【Tumblr】 Tumblr Queueの最新ページへのリンクを生成するGreasemonkeyを更新しました。(0.1.1)

Tumblr Queueの最新ページへのリンクを生成するGreasemonkeyを更新しました。

インストール

https://gist.github.com/raw/614547/tumblr_queue_latest_link.user.js

更新履歴

0.0.2 -> 0.1.1 (2011/06/11)

  • Dashboardのリニューアルに対応した

0.0.1 -> 0.0.2 (2010/11/07)

  • 二重に表示されてしまう時があるのを修正した

続きを読む

【メモ】 画像の縦横比を維持したまま、画像サイズを一定の範囲内に縮小

縦横共に300px以内でかつ縦横比を維持したまま画像を縮小したかったので簡単なJavaScriptを書いてみた。 画面内の画像全てに適用するとするとこんな感じ。

var maxWidth  = 300;
var maxHeight = 300;
var elements = document.getElementsByTagName("img");
for(i=0;i height) {
elements[i].width = Math.min(width, maxWidth);
} else {
elements[i].height = Math.min(height, maxHeight);
}
}
まぁはっきり言うと、「縦横比の維持」は基本的にブラウザ任せですね。 片方だけ指定すればもう片方は自動で計算される…というのは仕様的にどうなのだろう。 なお、幅だけを一定以内に収めたければこれをimgタグに置くだけで良いのだけど、
onload="this.width = Math.min(this.width, 300)";
縦長の画像(例えば縦1,000px/横100px)の場合に逆に拡大されてしまってはみ出る。 それを回避するためには、縦か横かどっちかデカイ方に対して適用すればOKと。 なんか処理を共通化する良い方法がありそうな気がするけど…まぁいいか。とりあえず。

続きを読む

Amazonアフリエイト用テスト

目的

Amazonの商品ページを開いて、そこからなるべく少ないステップでブログエントリに貼り付けるアフリエイト用パーツを取得できるようにする。

やったこと

  1. ASINなどを与えるとその商品の情報を取得し整形して表示するプログラムを作成
  2. Amazonの商品ページでアフリエイト用パーツを取得するBookmarkletを作成

1. ASINなどを与えるとその商品の情報を取得し整形して表示するプログラム

大体次のような感じ。
  • PHPベース
  • フレームワークはSymfony
  • PEAR::Services_Amazonを使用
【メモ】 PEAR::Services_Amazonを使って商品情報を取得(署名認証対応) – nplll サービスURLはこんな感じ。
  • //amazon.nplll.com/asin/[Amazon ASIN] → 特定の商品の情報を表示する
あ、一応オープンになってますが、あくまで自分向けなので突然サービス終了することもありますし、 アフリエイトIDを追加することも出来ません。

2. Amazonの商品ページでアフリエイト用パーツを取得するBookmarklet

AmazonのページからASINを抜き出して整形するBookmarklet
javascript:function%20getID(id){return%20document.getElementById(id);};var%20u=location.href,d=/(http:\/\/www\.amazon\.(com|co\.jp))/;if(u.match(d)){t=getID("btAsinTitle").innerHTML;r2=RegExp.$2;if(r2=="co.jp")l="amazon.jp/dp/";else%20if(r2=="com")l="amzn.com/";else%20exit();l='';prompt("%E3%80%8C"+t+"%E3%80%8D",l);void(0);}
例えばこのページで実行すると↓ Amazon.co.jp: THE BEST OF スチャダラパー1990~2010: スチャダラパー: 音楽 こんなのが取れます。↓
実際の表示はこんな感じ↓

続きを読む

【メモ】 PEAR::Services_Amazonを使って商品情報を取得(署名認証対応)

いつまでもAmazonのアフリエイト作成ツールに頼ってリンクを作成するのも何だかなぁと思ったので、APIを叩いて結果を取得してみた。色々とやり方はあるだろうけれども、PHPでやる場合にはPEARライブラリの「Services_Amazon」を利用すると簡単。

0. 準備

APIを利用するには、「アクセスキーID」と「アクセスシークレットキー」の2つが必要です。 この辺を参考にアカウントを作成して取得。 Access Key IDの取得 – サービス利用の準備 – Amazon Web サービス デザインが変わってるけど大体解ると思います。 ちなみにこれはAmazonオンラインショップのユーザーアカウントや、アフリエイトのアカウントとは違うので、それらとは別に取得しなくてはなりません。また既にAmazonでアフリエイトをやってる人は、メールアドレスを揃えないといけないらしいです。

続きを読む

【メモ】 DOMDocument::loadHTMLで文字化けする場合

HTML文書を読み込んでパースするときに、今までは正規表現でやっていたんですが、 処理がどうしても面倒な感じになるし改変にも弱いので、DOMでやることにしてみたらば見事に嵌るなど。 読み込む文書がXMLだと問題ないんですが、HTML、特にShift-JISで書かれた文書だとなぜか文字化け。 色々と検索した結果、多分これで行けると言うのにたどり着いたのでメモ。

参考

DOM拡張モジュールでHTMLをパースする【PHP】 – Programming Magic

文字化けさせないためのポイント

  1. 読み込む文書をUTF-8に変換しておく
  2. あらかじめ日本語文字列を数値文字参照に変換しておく

1. 読み込む文書をUTF-8に変換しておく

PHPのデフォルト文字コードに合わせる、と言う意味です。

2. あらかじめ日本語文字列を数値文字参照に変換しておく

よく解らなかったんですがこれが文字化けの直接できな原因のようです。 参考エントリでは「metaタグで文字エンコードが指定されていない」場合に起きると書かれていますが、 文字エンコードに「Shift_JIS」が指定されていても発生しました。 というわけで、あらかじめ日本語文字列を数値文字参照に変換しておきます。
$html = mb_convert_encoding($html, 'HTML-ENTITIES', 'ASCII, JIS, UTF-8, EUC-JP, SJIS');
これだと、表示上文字化けは起きません。 それどころか、コメント以外の部分は普通に日本語で書き出されているようです。 ので、このままでもいいかなーという感じ。 まぁとはいえ、あんまりDOMについて解っていないので、だいぶ泥縄であれこれやってるんですけどね… サーバの全面引っ越し(およびドメインの変更)はいつになることやら。

続きを読む

MySQLのINSERT文(方法ごとの処理時間比較)

大量のデータをINSERTする場面があってなんとか高速化できないかと思って、 以下の手法を比較してみた。

  1. 1件ずつINSERTする
  2. トランザクションを使用する
  3. 1クエリでまとめてINSERTする
テスト環境は以下の通り。
  • MySQL 5.1
  • テーブルはInnoDB、AUTO_INCREMENT付き(innodb_autoinc_lock_mode=1)
  • PHP 5.3.6
1000件、3000件、5000件、10000件と件数を増やしながらそれぞれ5回ずつ試行して平均を取っている。 使用したコードは最後に。

続きを読む

【小ネタ】 パスワードを保存できないサイトでパスワードを保存する 【Firefox】

ある程度どうでも良いサイトの場合、パスワードを保存するリスクより利便性の方が上回るので、 結構積極的に保存してたりするんですが、サイトによっては保存できない設定になっている場合があります。 例えば…アフリエイトのMicroAd。 BTパートナー|行動ターゲティング,ブログ広告,リターゲティングのマイクロアド 左上にログインフォームがありますが、ここで入力したパスワードは保存されません。 (保存しますか?と聞かれない)

続きを読む