木曜日, 11月 30, 2006

カレンダースクリプトの対応日付フォーマットをもう少し増やしてみる実験

もう少し対応日付フォーマットを増やしてみた
あまりテストしてないけど…

対応したかもしれない日付フォーマット
 yyyy mm dd系
  2006/11/30
  2006年11月30日
  2006-11-30
 mm dd yyyy系
  木曜日, 11月 30,2006
  11/30/2006
  11.30.2006
  11月 30,2006
 dd mm yy系
  30.11.06
 dd mm yyyy系
  30 11月 2006
  30 11月,2006
 yy mm dd系
  06/11/30

以下未対応
 yyyymmdd系
  20061130
 曜日だけ系
  木曜日
 西暦無し系
  木曜日, 11月 30

yyyymmdd系もそのうち対応できるかも


あとちょっと気づいた点
http://jikkenshitsu.blogspot.com/search?updated-max=2006-09-02T23%3A59%3A59%2B09%3A00&max-results=5
とかの
2006-09-02の部分なんだけど
yyyy-mm-ddだけじゃなく
yyyy-m-dとかでもいいみたい
つまり月と日は0とか付けてわざわざ2桁にする必要がなく
2006-9-2でOKっぽい
yyyy-mm-d
yyyy-m-ddもあり。

カレンダースクリプトの対応日付フォーマットを増やしてみる実験

対応したかもしれない日付フォーマット
 yyyy mm dd系
  2006/11/30
  2006年11月30日
  2006-11-30
 mm dd yyyy系
  木曜日, 11月 30,2006
  11/30/2006
  11.30.2006
  11月 30,2006

以下未対応
 dd mm yy系
  30.11.06
 dd mm yyyy系
  30 11月 2006
  30 11月,2006
 yy mm dd系
  06/11/30
 yyyymmdd系
  20061130
 曜日だけ系
  木曜日
 西暦無し系
  木曜日, 11月 30

たぶん
dd mm yyyy系の日付フォーマットだと
mm dd yyyy系と勘違いしておかしくなる予感
でも、日本人で
日、月、西暦の順番で表示される日付を使ってる人っているのかな?

水曜日, 11月 29, 2006

カレンダースクリプトの処理の順番を変えてみる実験

なんとなく表示が速くなったような気がするようにしてみた
気がするだけで実は早くなってません><
カレンダーだけ最初に作ってリンクの部分を後から作るようにしただけだったり…
逆に時間をかけてリンクの部分にエフェクトかけるのも面白いかも

http://tirasi.no.ura.googlepages.com/koyomi.js
http://tirasi.no.ura.googlepages.com/koyomi.css

火曜日, 11月 28, 2006

金曜日, 11月 24, 2006

検索スクリプトにJSONを使ってみる実験

またまたクリボウ氏のブログから
クリボウの Blogger Tips: Blogger beta が JSON に対応
どうやらブログエントリーをJSON形式で取得できるようになったらしい
なので検索スクリプトでrss(xml)を取得している所をJSONで取得するようにしてみた

パラメータでJSON-in-Scriptとcallbackを使うことによって
データを受け取ったとき関数を実行することができるらしい
ぶっちゃけ関数名でデータを囲ってるだけなんだけど

まあこれによってXMLHttpRequestを使わずにデータを取得できるようになった
もしかするとニンテンドーDSとかでも検索できるのか?
持って無いけどね><


http://tirasi.no.ura.googlepages.com/kensaku.js

火曜日, 11月 21, 2006

カレンダーをWidget化してみる実験

クリボウ氏のブログにWidgetの作り方(?)が載ってたのでカレンダーをWidget化してみた
クリボウの Blogger Tips: Blogger beta の Widget 追加ボタンの作り方


相変わらす日付の表示が
火曜日, 11月 21, 2006
みたいな設定じゃないと使えない><
スタイルシートはBloglendarのがそのまま使えるけど
自分でHEADに挿入しないとダメ…

金曜日, 11月 17, 2006

BloggerのFeedのcontent-type

XMLHttpRequestでresponseXMLを使って
xmlファイルを取得しようとすると
Firefoxでは取得できたのにIEでは取得できなかった
なぜ取得できないか結構悩んだけど
ここをみたら原因がわかった
ajax - Content-Type: 許容判定

Bloggerの各xmlのcontent-typeが
rssは
application/rss+xml
atomは
application/atom+xml
となっていて
IEではcontent-typeが
text/xml

application/xml
でないとresponseXMLを使って取得することができないらしい

あきらめてresponseTextを使おう…

木曜日, 11月 16, 2006

文字テスト

() ♥♡
"<>&♥
/\.*+?|()[]{}$^
~♡
>>

一時アクセス停止

Blogger Status
12:30PM (PST)って日本時間で何時だろ?

実体参照の変換方法

部分更新スクリプトのブログのtitleを設定するところで
GETしたレスポンスのタイトルが実体参照に変換されててそのまま
document.title
とかに入れちゃうと&#とか表示されてちょっと困った
いろいろ調べると
実体参照に変換するJavascriptサンプルとかはいっぱいあるのに
逆に展開する方のスクリプトがなかなか見つからなかった
最終的にこのサイトをみつけた
Hawk's Laboratory » prototype.js 1.4.0を読む:string.js
このサイトの中頃にある
escapeHTML: function() {
var div = document.createElement('div');
var text = document.createTextNode(this);
div.appendChild(text);
return div.innerHTML;
},

unescapeHTML: function() {
var div = document.createElement('div');
div.innerHTML = this.stripTags();
return div.childNodes[0] ? div.childNodes[0].nodeValue : '';
},
このスクリプトがなかなかいい感じ
prototypeのスクリプトなのかな?
innerHTML→TextNode→nodeValue
これで変換できるとは裏技みたいな感じです
ちょっとためになったのでメモっときます。

部分更新の実験

アンカーリンク
ブログのアーカイブのツリーの不具合
ブラウザーのタイトル
バックリンク
のところをちょっと変えたり付け加えたり。

月曜日, 11月 13, 2006

日曜日, 11月 12, 2006

Bloggerの日本語化

日本語になったのは良いが
英語表示に慣れてたせいかなんか戸惑う…

ダッシュボードすっきりし杉
設定にある文字が大きすぎる気がする…

Operaで表示してみる実験

Operaをいれてみる機会があったのでちょっと表示してみた
ラベルのリンクがうまくいかないのと
カレンダーが最初に表示された月から動かない…

通信部分のスクリプト(general.js)を弄ってみた
うまく動いてる気がする。

ついでにFirefoxでも安定してきた
リンクをめっちゃクリックしてもエラーがでなくなった。

木曜日, 11月 09, 2006

Blogger日本語化?

この前も日本語化してた気がするんですが
新しい投稿、ホーム、前の投稿、その他いろいろ日本語化されてますね
個人的には日付の並び方を何とかして欲しいんですが…

水曜日, 11月 08, 2006

IEのherf文字化け追加実験

ラベルの名前がアルファベットに半角スペースとか入ってるとこないだの方法ではうまくいかなかった

UTF-8→URLエスケープ(元のURL)→unescape(hrefで取得したURL?)→escape=元のURL(うまくいかないことがある)

文字によってunescapeされる時とされない時があるのかな?

unescapeは1回でも2回でも結果は同じなので
最後のescapeをする前にunescapeすることにしてみた

UTF-8→URLエスケープ(元のURL)→unescape(ブラウザがしたりしなかったり?)→unescape(強制的にしてみる)→escape=元のURL

ちょっと気になったこと

テンプレートに追加したスクリプトは
設定のTemplateのPage ElementsとFonts and Colorsでも実行される件
Page Elementsが機能しなくなって焦った><
設定の時は追加したスクリプトは動かないようにした方がいいかも
スクリプトによるけどね。

次に気になったこと
記事に初めの所にアンカーが埋め込まれてるけど
このアンカーへのリンクってどこで使われてるんだろ?
ソース見ない限り知る術が無いような気がする…

も1つ
idがBlog1のタグの中にさらにidがBlog1のタグができることがある
特にOlder Postsとかでページを更新した時とか

火曜日, 11月 07, 2006

IEのhrefの文字化けによるリンク不具合の実験

部分更新スクリプトでラベルのリンクがうまく取得できなかったのでちょっと調べてみた

ラベルを日本語にするとURLに日本語が含まれることになるけど
ソースを見ると既に日本語の所はURLエンコードされてる
Firefoxだと問題はないけどIEだと問題が出るようだ
最初スクリプトが間違ってたのかと思ったけど
IE系ブラウザでスクリプトでリンクのhrefを取得するとこの時点で既に文字化けしてた
いろいろ検索してみたところこんなサイトを発見
alert window への日本語表示
具体的な対処方法が載ってなかったけど
なんとなくエンコード、デコードの順番の問題かなと思った
UTF-8の日本語をURLエンコードしてるとIEではそれを変な風にデコードしてしまうって事なのかな?
今IE系のブラウザのMaxthonを使ってるけど
Bloggerの日本語ラベルリンクを真ん中クリックで他のタブで開くと
URLの最後の方が文字化けしてうまくリンクを開けない
その辺と関係がありそうだ
そういえばwikipediaとかはてなダイアリーキーワードとかも中クリックの時はうまく開けなかった気がする
次に文字化けしたURLを
[ サンプル ] _ encoder / decorder(文字列の符号化・復号化)
でエンコードしてみた
そしたらソースにあったURLと同じになった
つまり
UTF-8→URLエスケープ(元のURL)→unescape(hrefで取得したURL?)→escape=元のURL
と戻すことができたのかな
escapeするだけだと今度はFirefoxで表示した時おかしくなるのでその辺はブラウザによって処理分けする必要があるかな
OperaとかSafariとかIE7じゃどうなるかわかんないけどね
とりあえずIE6とFirefoxだけみれればいいかな

IEの時だけescapeするようにしてみたら部分更新スクリプトがうまく動くようになった!

月曜日, 11月 06, 2006

更新高速化実験

アーカイブとかラベルのリンクでも部分更新するようにしてみた

カレンダーはこのスクリプトにまだ対応させてないので外しといた
結構サクサク動いてる気がする。

<script charset='Shift-JIS' src='http://tirasi.no.ura.googlepages.com/general.js' type='text/javascript'/>


追記
IEだと日本語ラベルの所がおかしくなる><

日曜日, 11月 05, 2006

カレンダーのリンクを部分更新にしてみる実験

カレンダーのリンクをクリックした時、
ページ全体が更新されるのではなく
記事の部分だけを更新するようにしてみた。
といっても、リンクのonclickに"Older Posts"と同じ関数を付けただけ
でも表示の切り替えが速くくて(・∀・)イイ
カレンダーに月の切り替えも付けてみたんだが
古い方の月に行くのはいいんだけど
新しい月に行く方がうまくいかない
updated-maxを指定しないで
updated-minとmax-resultsだけ指定すると
範囲は最新の記事からupdated-minで
表示される記事はその範囲の新しい記事からmax-results分となり
結局最新max-results分の記事しか表示されない…
なんかいい方法ないかな?

<script charset='Shift-JIS' src='http://tirasi.no.ura.googlepages.com/koyomi.js' type='text/javascript'/>

土曜日, 11月 04, 2006

indexページの"Newer Posts"と"Older Posts"を自前で処理する実験

indexページで"Newer Posts"と"Older Posts"をクリックした時の処理を自前の処理に差し替えてみた
自前といってもwidgetsの関数を使わせてもらってるけど…
これでページが更新されたタイミングがわかるため
部分更新でもカレンターの更新ができるようになった
目次の方はまだスクリプトに組み込んでない。

<script charset='Shift-JIS' src='http://tirasi.no.ura.googlepages.com/bloginit.js' type='text/javascript'/>

Revert widget templates to default を押してみた

EditHTMLにあるRevert widget templates to defaultを押してみた
テンプレートのwidget内を書き換えた所は元に戻ったけど
headとかはそのままだった。


昨日"Newer Posts"と"Older Posts"が日本語表示されてたような…
気のせいか…。

widgetsの関数を使って書き換えてみる実験

ページの部分更新をwidgets.jsにある関数を使って書き換えてみる実験です。
なんとなくw_ca()という関数を使うのがよさげ

w_ca(a,b,c)
a = POSTするアドレス
b = POSTするパラメータの配列
c = コールバック関数

だいたい関数の引数はこれであってるかと思います。

こんな関数を作ってみました

function setblogposts(url)
{
var a = "http://" + document.domain;
var b = ["action","nextposts","widgetId","Blog1","widgetType","Blog","responseType","js","path",url];
var c = function(e){return true};
w_ca(a,b,c);
}

引数のurlに表示したいurlをいれます

urlは
http://****.blogspot.com/search?updated-min=***&updated-max=***&max-results=*
というのが有効で他のは使えないのかもしれません
updated-minとupdated-maxは表示する記事の日付の範囲を指定します
これは片方だけでもOKです
日付は
2006-11-04T11:11:00+09:00
こんな感じでURLエンコードするといいでしょう
日付の範囲からURLを生成する関数を作ると便利かもしれません
最後の所のmax-results=*の*の部分なんですが
これを例えば5に設定すると記事が5件表示されます
Older Postsとかのリンクもこのmax-resultsの値に書き換わってしまうので注意が必要です。

cのコールバック関数のeにはXMLHttpRequestが返ってくるので
e.responseTextを使うと書き換え用のJavascriptが取り出せます
コールバックの戻り値がtrueの場合は自動的に表示が更新され
falseの場合は表示は更新されません
なので

function(e){
try{
eval(e.responseText);
}catch(e){
}
--この辺に書き換え後の処理--
return false;
};

こんな風に自前で更新させ事後処理とか追加するのもいいかもしれない。

金曜日, 11月 03, 2006

ページの部分更新についての実験

ページの切り替えを調べてたら
ページのホストURL(?)に適当なパラメーターを追加してPOSTすると
ページの一部を書き換えるJavascriptが返ってくることがわかった

このページの記事の所を部分更新する場合
POST先は
http://jikkenshitsu.blogspot.com/

パラメーターは
action=nextposts
widgetId=Blog1
widgetType=Blog
responseType=js
path=http://jikkenshitsu.blogspot.com/search?updated-max=2006-10-30T21%3A52%3A00%2B09%3A00&max-results=5
みたいな感じで送ると良いみたい

これをXMLHTTPとかでPOSTして返ってきたresponseTextをevalで実行すればページの一部が書き換わるはず
これはなかなか面白いですね
パラメーターについてはこれからいろいろ試してみる必要ありです。

木曜日, 11月 02, 2006

カレンダーを改造してみる実験

bloglendarを改造してみた

表示する月はページの一番最初にある記事の月を表示するようにした

テンプレートにタグを埋め込むのをやめた
これは('A`)マンドクサイから

設定の日付を日本語のにした
っていうかこの辺を変えるにはスクリプト弄らないとだめだけど
デフォは"土曜日, 10月 28, 2006"みたいなやつ
ここからカレンダーの日付を作成する
これによってテンプレートにタグを埋め込む必要がない
なのでテンプレートによっては使えないかも
相変わらず汎用性がない…

カレンダーの日付からのリンクはアンカーではなく各日付の記事にリンク
この方が普通のブログのカレンダーっぽい気がする

設置メモ

HEAD内に
<link href='http://****/bloglendar.css' rel='stylesheet' type='text/css'/>
<script charset='Shift-JIS' src='http://****/bloglendar.js' type='text/javascript'/>
<script charset='Shift-JIS' src='http://****/bloglendar-main.js' type='text/javascript'/>

カレンダーを付けたい所に
<div id='bloglendar'><!-- Bloglendar here --></div>

だいたい予定通りの動作をするようになったかな
もう少し弄ってうまく動くかテストしないと
後ちゃんと綺麗にスクリプトを書かないとダメかな…