ホーム » ブログ » 2008年01月の記事

2008年01月の記事

« 2007年12月 | 2008年2月 »

みんなの最新updateを一望できる「twitter100」をリリースしました

2008-01-29 | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

twitter100とは

Twitter100

» http://twitter100.com/

twitterを使っていて以下のように思ったので、作ってみました。

  • 「大量に発言する人がいて、Recentがその人で埋まってしまう」
  • 「そもそもfollowersが多すぎて、みんなのupdateを追いかけきれない」
  • 「追いかけるんじゃなくて、一発でみんなの最新updateを一望できたらいいのに

twitter100の使い方

  1. twitter100のトップページから自分のidを入力し、「100」ボタンを押します。
  2. しばらくすると以下のように最大100人分のfollowerとupdate内容が最新順に並んで表示されます。

akiyan : Twitter100

twitter100の機能

自動更新機能

Twitter100には自動更新機能がついています。更新間隔は「3 min (3分)」「10 min (10分)」「30 min (30分)」を設定できます。

手動更新機能

id入力後の画面上部の「Refresh」ボタンを押すと、最新の状態を取得できます。ただし、TwitterのAPIの使用は1時間に70回までに制限されているので、頻繁に取得すると制限にかかってしまうので普段は自動更新で使用してください。制限にかかってしまった場合は延々と右上に「Loading...」が表示されます。

動作環境

動作確認した環境は以下の通りです。

Windows XP Pro IE6sp2
Windows XP Pro Firefox 2.0.0.7
Windows XP Pro Safari 3.0.4 beta

技術的な話

twitter API

twitterの公開APIには、指定のidのfollower100人のupdateを受信できるAPI(xml, json, jsonp)があります。このAPIは認証が不要です。Twitter100ではこのAPI(jsonp)を使い、以下の手順で画面を構築します。

  1. ブラウザからtwitterにアクセスしてデータを取得(callback)する。
  2. twitter100のサーバーにJSONをPOSTしてレンダリングされたHTMLを受け取る。
  3. ブラウザに貼り付ける。

わざわざブラウザにjsonpさせているのはtwitterのAPIには利用制限があって、APIの呼び出しは1時間に70回までに制限されています。(例外あり)そのため、twitter100のサーバーから通信していると同時使用ユーザーが増えたときに簡単に利用制限に引っかかってしまうおそれがあるので、ユーザーの回線からtwitter APIを呼び出すようにしています。

また、レンダリングについては例外としてSafariだけはtwitter100のサーバーに送信せずJavaScriptだけでレンダリングしています。XMLHttpRequestがうまく動作しないので暫定措置としてです。原因は切り分けしきれていないのですが、XMLHttpRequestのPOSTで大きいデータ送信ができないかもしれない...という感じです。動作的に問題は無いのですが、クライアント側のCPU負担が重いのが難点です。

ちなみに100件なのは、APIの仕様上、上限が100件だからです。これ以上厳しくなりませんように...。

なお、APIの日本語ドキュメントとしてtsupo氏の[観] Twitter API 仕様書 (勝手に日本語訳シリーズ)を参考にさせていただきました。

時差をJavaScriptで調整

DateオブジェクトのgetTimezoneOffsetメソッドで標準時刻との時差が分単位で取得できるので、それを利用して日付の表示を調整しています。国際化の一環です。

var timezone_offset = -new Number(new Date().getTimezoneOffset());

Datejsで日付をパース

twitter APIから返される日付の文字列をJavaScriptでパースするために、Datejsというライブラリを使用しました。

Datejs - A JavaScript Date Library » About…

Twitter100内でのDatejs利用サンプルコードです。

var m = user_json[0]['created_at'].toString().match(/([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+)/, '') ;
var date_forparse = m[1] + ', ' + m[3] + ' ' + m[2] + ' ' + m[6] + ' ' + m[4];
var user_date = Date.parse(date_forparse).addMinutes(timezone_offset);
$('#user_update').html(user_json[0]['text'] + ' at ' + user_date.toString('yyyy-MM-dd HH:mm:ss') + "");

Date.parse(date_forparse)

user_date.toString('yyyy-MM-dd HH:mm:ss')
などがDatejsの機能ですね。addMinutesメソッドなんてのもあります。詳しくはDatejsのドキュメントをどうぞ。

ご協力いただいた方々

ありがとうございました!

» http://twitter100.com/

2008-01-29 written by akiyan | お知らせ | 固定リンク | コメント (0) | トラックバック (0) | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

twitter100 released

2008-01-29 | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

About twitter100

Twitter100

» http://twitter100.com/

When you have many followers on twitter, it's very hard to follow all of them.

With twitter100, you can see your followers at a glance! (up to 100!)

akiyan : Twitter100

Supported environment

Windows XP Pro IE6sp2
Windows XP Pro Firefox 2.0.0.7
Windows XP Pro Safari 3.0.4 beta

Enjoy!

» http://twitter100.com/

2008-01-29 written by akiyan | お知らせ | 固定リンク | コメント (0) | トラックバック (0) | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

デジタルクッキングスケールは便利!

2008-01-21 | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

TANITAのデジタルクッキングスケール KD-176-WH を買いました

KD-176

デジタル表示のクッキングスケールKD-176-WH(ホワイト)を買いました。Amazonで現在、1980円でした。1g単位の表示で2kgまで対応しています。

TANITA デジタルクッキングスケール ホワイト KD-176-WH
TANITA デジタルクッキングスケール ホワイト KD-176-WH
このサイトから 6 が購入しました
全体で 15人 がクリック
posted with amazlet on 08.01.21
タニタ
売り上げランキング: 148
おすすめ度の平均: 4.5
4 家庭用には必要十分なスペック

このAmazonの画像はクリーム色がかっていますが、本当は公式サイトの写真のようにちゃんとした白だとレビューに書いてありました。

デジタルスケールを買ったわけは、最近自炊熱が高まってきていて、100円ショップで買ったアナログはかりでは耐えられなくなって購入しました。100円ショップのアナログはかりはプラスチックの部品が途中でひっかかったりして、プラスマイナス20gぐらいの誤差があるような感じでした。しかも小さいのでちょっとバランスを崩すとすぐに倒れます。流石にはかりは100円の物は実用になりませんでした。

1g単位、最大1kgまで対応のKD-173

ちなみにデジタルクッキングスケールは以前に同じTANITAのKD-173を使用していたことがあります。こちらはAmazonで現在、1380円です。1g単位の表示で1kgまで対応しています。

TANITA デジタルクッキングスケール ホワイト KD-173-WH
TANITA デジタルクッキングスケール ホワイト KD-173-WH
このサイトから 3 が購入しました
全体で 3人 がクリック
posted with amazlet on 08.01.21
タニタ (2003/03/01)
売り上げランキング: 20
おすすめ度の平均: 4.5
5 コンパクトで基本をおさえた一品
5 (●^o^●)安くてもとても良いですよ。
4 当初と役割が変わった(笑)

最安値のKD-173ではなくちょっと高めのKD-176を買ったワケ

そもそもの単価が低い製品ですが、KD-173とKD-176の性能的な差は最大重量が1kg(KD-173)か2kg(KD-176)ってところだけです。多分、一人暮らしでする料理であれば1kgで十分だと思うのですが、あえてKD-176にしました。

理由は、KD-176のほうがコンパクトだからです。奥行きと幅はほぼ同じなのですが、厚みが1.3cmも違いました。KD-173が40mmに対してKD-176は27mmです。棚に縦置きするにも、引き出しに横置きするにも厚みはかなり影響するので、600円差であればKD-176だろうということで決定しました。

デジタルスケールは便利!

初めてデジタルスケールを使ったときはその便利さに驚きました。ポイントは2つ。

ボタンを押すだけで、ゼロ調整できる

ここでいうゼロ調整というのは、アナログスケールで「つまみを回して目盛りをゼロにあわせる」作業に相当します。たいてい回しにくいんですよね、あれ。アナログだと面倒で、お皿を乗せたときの重量を記憶しておいて、その差分で読み取っていたりしました。デジタルスケールなら、ワンタッチでゼロに調整できます

重量がデジタル表示で読み取りやすい

2つ目は当たり前なんですが地味に感動しました。デジタル表示は読み取りやすいです。「アナログの数字を正確に読み取るのは、意外に面倒だった」ということを気づかせてくれます。時計など見慣れたもので無い限り、目盛りだけでは正確な数字はわからないんですね。

そもそもアナログメーターは車の速度計などの「即座に、だいたいの値がわかる」ためのものじゃないと適していないですね。時計はメーターではないですし。

最近お気に入りの料理本「今日からおいしくなる洋食のシンプルルール」

最後に、最近お気に入りの料理本をちょっとだけ紹介します。たつをのChangeLogのたつをさんも絶賛する恵比寿のエムズキッチンサントゥールのシェフ、水島弘史さんが書いた洋食料理の入門書です。エムズキッチンは去年いっぱいでレストラン営業を終了され、料理教室と調理研修を主体としたスペースとなるそうです。本当においしい洋食屋さんだったので、ちょっぴり残念です。

今日からおいしくなる洋食のシンプルルール
水島 弘史
高橋書店 (2007/10)
売り上げランキング: 85736
おすすめ度の平均: 5.0
5 おいしくできた!

これを読んで初めてサーモンのソテーやきのこのリゾットなどを作ったのですが、いい感じです。本当にいい料理の入門書だと思うので、いずれ詳細レビューを書きたいですね。

2008-01-21 written by akiyan | レビュー | 固定リンク | コメント (0) | トラックバック (0) | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

CakePHPの入門書「Fast CakePHP」を書きました!

2008-01-10 | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

CakePHPの本「Fast CakePHP (技術評論社)」を書きました!本日より全国発売です!

Fast CakePHP (LLフレームワークBOOKS # 4)
Fast CakePHP (LLフレームワークBOOKS # 4)
このサイトから 17 が購入しました
全体で 262人 がクリック
posted with amazlet on 08.01.09
秋田 真宏
技術評論社 (2008/01/09)

Fast CakePHPはどんな内容?

Fast CakePHP

この「Fast CakePHP」は、技術評論社の人気シリーズ「LLフレームワークBooks」の第四弾にあたる本で、CakePHPとPHPの入門書という位置づけになっています。CakePHPのバージョンは1.1系を対象としています。PHPの入門書も兼ねているので、環境の準備もPHP部分も含めると、CakePHP半分・PHP半分、という構成になっています。書き下ろしがほとんどで、ウェブ連載記事の内容も含まれています。

特にこだわったのは「つまずかずにCakePHPを始められること」「どういうフレームワークなのかを俯瞰(ふかん)できること」でした。フレームワークというものは、どのフレームワークを選ぶかで悩み、そしてどんな簡単なものでも一度始めたらそれなりの労力が必要です。そんな苦労をなるべく抑えるべく、具体的には「コラム部の文章をブログちっくに」「離陸までの解説とチュートリアルの詳細度を、必要最小限に」してみました。

そのため、既にCakePHPをプロダクトで使用してコアのソースコードまで読んでいる人にとっては、参考書としては物足りなさを感じるかもしれません。参考書としても完ぺきに使えるようになれば最高でしたが、実力不足からかどうしても相容ることが出来ませんでした。ただそういった人でも、この本のコラム部分を読み込んでおくと他人にCakePHPを勧めるときに良さをうまく説明できるかもしれません。説明した相手がその気になったときには、この本自体を渡して頂ければ幸いです。使う人が増えるほど、フレームワークの価値は増大すると思っています。

中身の雰囲気は書籍案内:Fast CakePHP|gihyo.jp … 技術評論社ページの「サンプルPDFファイル(PDF 177KB)」から掴めるかと思います。

Fast CakePHP 目次

以下は、Fast CakePHPの目次です。

Chapter 1 CakePHPってなに?

  • 1-1 CakePHPとは
  • 1-2 CakePHPを使いたくなる5つの特徴
  • 1-3 CakePHPのフレームワークとしての機能

Chapter 2 CakePHPを使いこなすための基礎知識

  • 2-1 PHPとは?
  • 2-2 PHPプログラミングの基礎
  • 2-3 フレームワークを使うことについて
  • 2-4 MVCモデルとは

Chapter 3 CakePHPの開発環境を整える

# 3-1 開発環境のインストール:CentOS 4/Linux編
  • yumレポジトリを使ったインストール
  • PHP 5をインストールする
# 3-2 開発環境のインストール:Windows編
  • XAMPP for Windowsとは
  • XAMPPによる開発環境のインストール
# 3-3 CakePHPのセットアップ
  • CakePHPの入手
  • パッケージの展開と設置
  • CakePHPのインストール CentOS4/Linux編
  • CakePHPのインストール Windows編

Chapter 4 入門 CakePHP

# 4-1 CakePHPの特徴
  • CakePHPの特徴のおさらい
# 4-2 CakePHPの構造
  • CakePHPファイル配置の概要
  • CakePHPフレームワークの処理の流れ
# 4-3 モデル
  • モデルの概要
  • モデルのAPI
# 4-4 アソシエーション(関連)
  • アソシエーションのbefore after
  • hasOne
  • belongsTo
  • hasMany
  • hasAndBelongsToMany
# 4-5 コントローラ
  • コントローラの概要
  • コントローラの変数
  • コントローラのAPI
# 4-6 ビュー
  • コントローラ・アクションに対応するビュー
  • レイアウト
  • エレメント
  • コンポーネント
# 4-7 ヘルパー
  • ヘルパーの概要
  • ヘルパーの読み込み
  • HTMLヘルパー
  • JavaScriptヘルパー
# 4-8 CakePHPのグローバル定数とグローバル関数
  • グローバル関数
  • 定数
# 4-9 その他の機能
  • データバリデーション
  • Scaffolding
  • ビューのキャッシュ
# 4-10 CakePHPの規約
  • ファイル名の規約
  • モデルの規約
  • コントローラの規約
  • ビューの規約

Chapter 5 作ってみようCakePHPアプリケーション

# 5-1 ToDo管理アプリケーションを開発する
  • ToDo管理アプリケーションの仕様
  • CakePHPを設置する
  • ToDoデータベースの作成
  • tasksテーブルの解説
  • Tasksコントローラの作成
  • Tasksビューの作成
  • タスクの編集機能を追加する
  • 修正内容の解説:コントローラ編
  • 修正内容の解説:ビュー編
  • タスクの追加をAjax化する

Appendix CakePHPの情報源

  • A-1 国内サイト
  • A-2 海外サイト

この本を書くことになったきっかけ

「本って、どんなきっかけで書くことになるの?」というのは、多くの人の疑問ではないでしょうか。僕もこの本を書くまで、ずっと気になって仕方がありませんでした。以前の共著では、著者の方に誘われた形でちょこっとだけ参加したので、疑問はそれほど解消しませんでした。

ひとつの例として、この本を書くことになったきっかけを紹介いたします。

技術評論社さんとの出会いはけんすうの紹介で

友達のけんすう(ロケスタ社長日記)から、技術評論社の馮さん(Web Site Expert編集長)との打ち上げ飲み会に誘われたのが始まりでした。その頃、ネット界隈ではCakePHPのクオリティの高いプレゼン資料や5分でシリーズなどが相次いで公開されていました。僕自身も、個人でも仕事でもCakePHPをバリバリ使い始めていました。そしてその飲み会ではウェブ・技術・プログラミング・CakePHPはすごい、的な話をした記憶があります。

その後もう一度馮さんとお会いして、お仕事についてのお話と、CakePHPについてのお話をしました。最初に頂いたお仕事はWeb Site expert #12の、はてブTVの記事原稿でした。CakePHPについては書籍を出す前提で、まずはウェブで連載記事のお仕事を頂きました。本ブログでも何度か紹介している「連載:CakePHPで高速Webアプリ開発|gihyo.jp … 技術評論社」です。ウェブ原稿は初めてでしたが、初回の記事に沢山のブックマークがついて本当に嬉しかったです。

そして連載が8回目となったところで、本格的に書籍の執筆に取りかかりました。12月初旬に校了し、本日2008年1月9日に全国発売となりました。ちなみに実は、昨年末の時点で一部の店舗でテスト販売も行われていました。

以下がテスト販売時期に新宿紀伊国屋本店にて浮かれて撮影した写真です。

浮かれ撮影写真

棚からちょっとはみ出ているのがアイデンティティかな、と勝手に思ったりしました。

著者はどこまでやるの?

今回僕が担当したのは、基本的に「文章やソースコードなどのテキスト」と「キャプチャ画像」だけです。大枠の構成は技評さんから頂き、書籍としてのデザインや、綺麗な表組みなどもデザイナーさんにお任せきりでした。LLフレームワークBooksは表紙や中身のデザインが綺麗でとても気に入っています。ありがとうございました!

というわけで

「Fast CakePHP」は本日より全国発売ですので、店頭でも見かけることが出来るかと思います。どうぞよろしくお願いします! (_ _)

Fast CakePHP (LLフレームワークBOOKS # 4)
Fast CakePHP (LLフレームワークBOOKS # 4)
このサイトから 17 が購入しました
全体で 262人 がクリック
posted with amazlet on 08.01.09
秋田 真宏
技術評論社 (2008/01/09)
2008-01-10 written by akiyan | 記事 | 固定リンク | コメント (6) | トラックバック (1) | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

Amazonアソシエイトから全期間の商品注文数をぶっこ抜くPHPコードサンプル

2008-01-09 | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

akiyan.comではAmazonの商品紹介部分に「このサイトから -人 が購入しました」といった情報を掲載しています。最近、これを自動化するために作った「注文数ぶっこ抜きスクリプト」を公開します。ちなみに統一性も美しさも拡張性もへったくれもないコードですので、「とりあえず動く」「どうやればダウンロードできるのかのサンプル」としてご利用ください。

使い方

このスクリプトはPEARのHTTP_Clientを使用します。デフォルトではインストールされていないケースがありますので、root権限で「pear install HTTP_Client」を実行するか、パスの通ったディレクトリにライブラリを設置しておいてください。

そしてこのスクリプトをそのまま利用する場合は、コマンドラインから以下のパラメータで実行します。

$ php 保存したスクリプト.php メールアドレス パスワード

数秒~10数秒後に以下の形式の配列がserializeされたテキストが出力されますので、出力をファイルへリダイレクトして保存するなりしてご利用下さい。

array(
  ASIN => array(
    'store' => ストア名,
    'title' => 商品名,
    'amount' => 注文数,
  ),
    :

PHPコード

文字コードは「UTF-8」で保存してください。

<?php
require_once 'HTTP/Client.php';

list($script, $email, $pass) = $_SERVER['argv'];

$params = array(
  '__mk_ja_JP' => 'カタカナ',
  'path' => '/gp/associates/login/login.html',
  'useRedirectOnSuccess' => '0',
  'query' => '',
  'mode' => '1',
  'redirectProtocol' => '',
  'pageAction' => '/gp/associates/login/login.html',
  'disableCorpSignUp' => '',
  'email' => $email,
  'password' => $pass,
  'action' => 'sign-in',
);

$queries = array();
foreach ($params as $k => $v) {
  $queries[] = $k . '=' . urlencode($v);
}
//var_dump($queries);

$client = new HTTP_Client();


$client->get('https://affiliate.amazon.co.jp/gp/associates/login/login.html');
$response = $client->currentResponse(); 
//var_dump($response);
$client->post('https://affiliate.amazon.co.jp/gp/flex/sign-in/select.html?ie=UTF8&protocol=https', join('&', $queries), true);
$response = $client->currentResponse(); 
//echo $response['body'];

$yesterday = time() - 86400;
$query =   '__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&tag=&reportType=ordersReport&preSelectedPeriod=yesterday&periodType=exact&startMonth=0&startDay=1&startYear=2003&endMonth=' . (string)(date('m', $yesterday) - 1) . '&endDay=' . date('d', $yesterday) . '&endYear=' . date('Y', $yesterday) . '&submit.download_CSV.x=79&submit.download_CSV.y=9&submit.download_CSV=%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%EF%BC%88CSV%E5%BD%A2%E5%BC%8F%EF%BC%89';
//var_dump($query);
$client->post('https://affiliate.amazon.co.jp/gp/associates/network/reports/report.html', $query, true);
$response = $client->currentResponse(); 
$tsv = $response['body'];

mb_internal_encoding('UTF-8');
$rows = mb_split("\n", $tsv);
unset($rows[0], $rows[1]);
//var_dump($rows);

$k_store = 0;
$k_title = 1;
$k_asin  = 2;
$k_amount = 10;

$datas = array();
foreach ($rows as $row) {
  $data = mb_split("\t", $row);
  switch ($data[$k_store]) {
  case '本':
  case 'DVD':
  case 'エレクトロニクス':
  case 'おもちゃ&ホビー':
    if (!isset($datas[$data[$k_asin]])) {
      $datas[$data[$k_asin]] = array(
        'store' => $data[$k_store],
        'title' => $data[$k_title],
        'amount' => 0,
      );
    }
    $datas[$data[$k_asin]]['amount'] += $data[$k_amount];
    break;
  }
}
$amounts = array();
foreach ($datas as $data) {
  $amounts[] = $data['amount'];
}
array_multisort($amounts, SORT_DESC, SORT_NUMERIC, $datas);

echo serialize($datas);

免責

このスクリプトの動作保証はいたしません。また、このスクリプトに起因して生じた損害について、法令等により免責が認められない場合を除いて、一切の責任を負わないものとします。全て自己責任においてご利用ください。

2008-01-09 written by akiyan | 記事 | 固定リンク | コメント (1) | トラックバック (0) | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

フレッシュリーダーに「瞬間スクロール」と「ショートカットキーの追加」改造をする

2008-01-08 | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

RSSリーダー・フレッシュリーダー

サーバー型で、かつ、いつでもフィードの最新読み込みができて、軽いという特徴が他には替えられないRSSリーダー・フレッシュリーダーの、個人的に行っている改造を紹介します。なお、エントリ末尾に改造済みのスクリプトへのリンクがあります。

改造1:ショートカットキーでのスクロールを「瞬間スクロール」にする

改造内容

フレッシュリーダーは、キーボードの「j」「k」キーで、エントリの前後をスクロールすることができます。標準ではスクロールは滑らかに行われるのですが、このスクロールを瞬間移動にすることができます。

修正箇所

フレッシュリーダーインストールディレクトリ/css/hotkey.jsの以下の部分の数値を「0.6」から「0.01」へ変更します。2008-01-08現在の最新版(2.0.07111400)では186行目です。最新版をお使いでない方は、エディタの検索機能で「Math.min」を検索するとよいでしょう。

this.duration = Math.min(0.6, Math.abs((this.smoothfrom - this.smoothto) / 3000));

this.duration = Math.min(0.01, Math.abs((this.smoothfrom - this.smoothto) / 3000));

なお、修正した後は http://フレッシュリーダーのアドレス/css/hotkey.js に直接アクセスし、ブラウザの「更新」ボタンを押すなどして古いキャッシュを更新してください。単にフレッシュリーダーの画面で更新ボタンを押しても更新されないことがあります。

改造2:「リロード(r)」と「全フォルダ(a)」をショートカットキーに追加する

改造内容

左ペインの未読件数のリロードと、左ペインの「(全フォルダ:***サイト)」のリンクを開いたときの動作をショートカットキーとして登録します。この機能追加で僕はフレッシュリーダー上でのマウス操作がほぼ無くなりました。

修正箇所

修正箇所は2箇所あります。

フレッシュリーダーインストールディレクトリ/css/hotkey.jsのHotKeyオブジェクトの定義の先頭に、以下の2つのfunctionを追加します。2008-01-08現在の最新版(2.0.07111400)では130行目です。最新版をお使いでない方は、エディタの検索機能で「var HotKey」を検索するとよいでしょう。

var HotKey = {
  now: function(){

var HotKey = {
  reload_feedlist : function() 
    { 
      var anchors = top._menu.document.getElementsByTagName('a'); 
      for (var i = 0; i < anchors.length; i++) { 
        if ('href' in anchors[i] && anchors[i].href.match(/feedlist\.php\?d=[0-9]+$/)) { 
          top._menu.location.href = anchors[i].href; 
          break; 
        } 
      } 
    }, 
  show_allfeed : function() 
    { 
      top._contents.location.replace('./feedshowall.php'); 
    },
  now: function(){

さらに、同じファイルのfunction on_keypress_event定義の最後尾付近を、以下のように修正します。HotKeyオブジェクトの定義を変更した前提で、445行目です。

  }else if (keycode == 13 || keycode == 111){ // o, enter
    close_event(e);
    HotKey.open_node(e, false);
    return false;
  }

  }else if (keycode == 13 || keycode == 111){ // o, enter
    close_event(e);
    HotKey.open_node(e, false);
    return false;
  }else if (keycode == 114) { // r
    HotKey.reload_feedlist(e);
    return false;
  }else if (keycode == 97) { // a
    HotKey.show_allfeed(e);
    return false;
  }

修正した後は http://フレッシュリーダーのアドレス/css/hotkey.js に直接アクセスし、ブラウザの「更新」ボタンを押すなどして古いキャッシュを更新してください。

改造のポイント

フレッシュリーダーはphpで作られていますが、ionCube Encoderによってスクリプトがエンコードされているため、phpのコードを閲覧したり改造することができません。ただしJavaScriptやCSSはそのままのファイルなので、こういったJavaScriptのみで実現できる改造については可能です。便利な改造方法が思いついたらチャレンジしてみては如何でしょうか。

改造済みスクリプトのダウンロード

今回の改造を反映したファイルです。

2008-01-08最新 2.0.07111400用 /css/hotkey.js [ダウンロード] [ソースを閲覧]

改造済みスクリプトのインストール方法

  1. ダウンロードしたhotkey.js「フレッシュリーダーのインストールディレクトリ/css/hotkey.js」を上書きしてください。上書き前にバックアップをおすすめします。
  2. ブラウザのキャッシュを削除するために「フレッシュリーダーのURL(ファイル名無し)/css/hotkey.js」にアクセスし、(IEやFirefoxの場合は)CTRLを押しながらF5キーを押してキャッシュを完全に更新します。
  3. フレッシュリーダーのURLに再アクセスすれば、インストールは完了です。

免責

このスクリプトの動作保証はいたしません。また、このスクリプトに起因して生じた損害について、法令等により免責が認められない場合を除いて、一切の責任を負わないものとします。全て自己責任においてご利用ください。

2008-01-08 written by akiyan | 記事 | 固定リンク | コメント (0) | トラックバック (0) | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

内面が大事な人は「LOVE理論」で最高になれるんじゃね?

2008-01-04 | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

内面って大事ですよね?社会生活においても、恋愛においても。

だったら、内面を大事にする人が外面も良くなったら最高ではないでしょうか。

あなたが内面を大事にする人なら、LOVE理論で最高になれるかもしれません。

LOVE理論
LOVE理論
このサイトから 6 が購入しました
全体で 56人 がクリック
posted with amazlet on 08.01.04
水野 愛也
大和書房 (2007/07/20)
売り上げランキング: 176
おすすめ度の平均: 4.5
5 読め!そして行動せよ!(俺)
4 愛の求道者、奥義開陳
4 おもしろい!!

表紙とタイトルをみてなんじゃこりゃと思うかもしれませんが、それであってます

...というのは冗談で、この本は夢をかなえるゾウウケる技術の著者である水野氏による、笑える恋愛マニュアル本です。

笑えるといっても中身は完全なノウハウ本。それも僕が好みとする本質に迫るノウハウが多く、普通にためになります。例えばファッションに関しての章では、

まず絶対にやってはいけないこと、それは
「ファッション誌を読むこと」
である。

そもそも、ファッション誌とは、制作のほとんどが「広告費」でまかなわれている。つまり、ページの大半はCMだと思って良い。服を売るために特集が組まれ、服を売るために、流行や新しい着こなしが提案されている。だからこそ「個性が大事」などとのたまうのだ。

といったように歯切れ良くなーるほどと思うアドバイスが出てきます。そして水野氏自身のファッションにまつわる痛い失敗談が続き、どうすれば失敗しないかの具体的な提案がなされます。提案も「あれが悪い」「これが良い」といった使い回しのきかないノウハウではなく、以下のような本質を突いた鋭い指摘がなされます。

個性を重視するくらいなら、
「たとえられないこと」
こちらの方が、よっぽど重要だ。

具体的に言うと、例えばイエローとブラックのボーダーのデザインのジョルジオ・アルマーニのベストがあったとしても、
「ゲゲゲの鬼太郎じゃん」
と言われたらジ・エンドなのである。

そうなんです。「何々みたいだよね(笑)」と言われたときの屈辱といったらありませんよね。...畜生!

じゃあどうすれば最悪の事態は避けられるかというと、「他人に選んでもらう」ことだそうです。なぜなら服は他人が見るものだからです。そして最高なのは「女性に服を選んでもらうこと」です。そんなことをお願いするのは、プライドが邪魔してなかなか出来ないかもしれません。でも気にしなくてよいのです。これは僕の個人的な想像なのですが、お願いされた側からしてみれば、「ちゃんと選んであげないと」といった気持ちが強く働いて、お願いした方のファッションセンスの自信の無さとかそんなのは気にしません。多分、誰しも「誰かに選んでもらった服は、なぜか長く着続けている」経験があって、自分で自分の服を選ぶ難しさを無意識的に知っているのではないかと思います。お願いするのも、無理はない、と。

ちなみに、今のような難しい解釈はLOVE理論にはありません。ひたすら直球。「どうせならホレた相手に服を選んでもらってその人好みのファッションになり、服を選んでくれたお礼もしちゃって、仲良くなってウマー」といったうまくいきすぎだろそれと突っ込まずにはいられない論法で攻めてきます。でもなぜか説得力があったりします。

このような調子で、仕込み・出会い・デート...と、一通りのシーンにおけるLOVE理論が展開されていきます。たまにお笑い要素も絡めてくるので、読んでいて重くなりません。このおかげでLOVE理論を実践する方としては「まあ、やってみっか」と軽い気持ちで実践出来るところに、水野氏の思いやりが感じられます。ひょっとしたら、この気遣いこそがLOVE理論そのものなのかもしれません。

ちなみにこの本は百式の田口さんから「すぐ読め」と強烈にオススメされて頂き、翌日、仕事の休み時間を使って一気に読み切りました。早い人なら1時間で読むことも出来るのではないかと思います。

この本を、「2008年・あなたの本棚の見えるところに置いておきたくない本ベスト10」最初の候補として、強くオススメいたします。

LOVE理論
LOVE理論
このサイトから 6 が購入しました
全体で 56人 がクリック
posted with amazlet on 08.01.04
水野 愛也
大和書房 (2007/07/20)
売り上げランキング: 176
おすすめ度の平均: 4.5
5 読め!そして行動せよ!(俺)
4 愛の求道者、奥義開陳
4 おもしろい!!
2008-01-04 written by akiyan | レビュー | 固定リンク | コメント (0) | トラックバック (1) | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

2008年、あけましておめでとうございます

2008-01-02 | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

今年もakiyan.comをよろしくお願いします! m(_ _)m

2008-01-02 written by akiyan | 日記 | 固定リンク | コメント (0) | トラックバック (0) | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

« 2007年12月 | 2008年2月 »