Home > Programming Archive

Programming Archive

[JavaScript] Date型を文字列に変換

[JavaScript] W3C-DTF形式の文字列をDate型に変換 – www.be-styles.jp
http://www.be-styles.jp/archives/5328

作った Data を文字列に変換するのはカンタン。ビルトイン関数があるのでこれを使えばおっけー…だが、なんかWebブラウザーによって挙動がだいぶ違うような気がする。気にしないという手もあるのだけど、練習がてら関数にしてみる。

function DateToString(date) {
	return date.getFullYear() + '/'
		+ ('00' + (date.getMonth()+1)).slice(-2) + '/'
		+ ('00' +  date.getDate()    ).slice(-2) + ' '
		+ ('00' +  date.getHours()   ).slice(-2) + ':'
		+ ('00' +  date.getMinutes() ).slice(-2);
}

(‘0×n個’ + 数字).slice(-n) は、0を挿入して桁数を合わせる処理のイディオムとして覚えておくとよいのかな? 月に1足しておくのを忘れずに。なんで月だけ0-11にしたんやろ…

[JavaScript] W3C-DTF形式の文字列をDate型に変換

function W3CDTFtoDate(w3cdtf) {
	var m = w3cdtf.match(/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})/);
	var date = new Date(m[1], m[2] - 1, m[3], m[4], m[5]);
	date.setTime(date.getTime() + 9 * 60 * 60 * 1000);
	return date;
}

W3CDTF ってのは、RSS などで利用されている日付形式。2010-05-22T23:37.30+9:00 といった形式であらわされる。たまに最後が「Z」と表記されていることもあるけれど、それは UTC で表記されているということらしい。

やってることは簡単で、正規表現でW3C-DTF文字列をばらして Date オブジェクトを作成するだけ。ちょっと気をつけなきゃいけないのは、月が0-11であらわされるということ。なので、月は -1 しておかないとね。

最後は +9時間決めうちで時間をずらしている。汎用性を高めるには、引数に逃がしておくべきだけど、自分が使うだけなのでキニシナイ。あと、W3CDTF は日付だけ、分まで、ミリ秒までなどなど、さまざまな形式があるので、全部に対応するのはちと面倒そうだ。この程度のことは、標準で対応しておいてほしいなーとか、にわか JavaScripter の私は思うんですよね。

Blockquote を HTML5 っぽく整形

<blockquote cite="urn:isbn:8158-0179-7" title="カンティロン『商業一般の本性にかんする試論』">
<p>土地はそこから富が引き出される源泉、あるいは素材である。人間の労働はその富を生み出す形式である。そして富それ自体は食料や日常の便利で快適な品々にほかならない。</p>
</blockquote>

これを HTML5風にマークアップするとこうなる。

<figure>
<blockquote cite="urn:isbn:8158-0179-7" title="カンティロン『商業一般の本性にかんする試論』">
<p>土地はそこから富が引き出される源泉、あるいは素材である。人間の労働はその富を生み出す形式である。そして富それ自体は食料や日常の便利で快適な品々にほかならない。</p>
</blockquote>
<figurecaption>
カンティロン<cite>『商業一般の本性にかんする試論』</cide>より
</figurecaption>
</figure>

メンドクサイである。できたら、最初のようにマークアップするだけで、スクリプトで自動変換できるとありがたいかなぁーとか思った。

Continue reading

FriendFeed のログをブログのサイドバーへ表示するスクリプト

image

昔ドコかからいただいてきたモノを利用させていただいていたんだけど、jQuery の勉強ついでに全部書き直した。なので、動作には jQuery が必要。

改善点は、

  • FriendFeed のAPIエントリポイントを v2 にした(それに伴ないデータ構造が変わったのでロジックを書き直し)
  • 取得したアイテムが時系列じゃない場合があるので、自分でソートした
  • アイコン表示のロジックを簡素化、Favicon を直に取りに行くようにした(しかし、16×16 のアイコンが取得できるとは限らなくなったので、スクリプト側でサイズをコントロールする必要が生じたので、アイコンを background ではなく <img> で扱うようにしている)
  • アイテム全体にソースへのリンクを貼る方法をやめた。アイテムへURLがあっても、直接クリックしてリンク先へ飛べないため。

Continue reading

WallpaperToggler v1.0

デスクトップのスクリーンショットを撮るとき、すぐに単色背景に切り替えるために作りますタ。実行ファイルのダブルクリックを2回行ってみれば、使い方は把握できると思います。

まったく参考にはなりませんが、ソースコード込みです。

.NET Framework 3.0以降が必要。(ラムダ式を使ってみたかっただけ!)

閑話休題。

image

Windows 7 って壁紙を複数選択して、一定時間おきに壁紙を切り替える機能があるんですが、それ関係のレジストリってドコに保存されているんでしょうかねぇ…。

HKEY_CURRENT_USER\Control Panel\Desktop の Wallpaper "C:\Users\<USER>\
AppData\Roaming\Microsoft\Windows\Themes\TranscodedWallpaper.jpg"という値がセットされて、それが HEY_CURRENT_USER\Control Panel\Personalization\
Desktop Slideshow 値に従ってスライドショー表示できるらしい…というところまでは突き止めたのですが…その先はちょっとわかんない。

今日も今日とてお勉強♪

image

今日はちょっと Google Analytics API について調べていた。かなり柔軟度があるみたいで、やりようによっては有用なツールになりそう。ただ、データの保存は約25ヶ月しか保証されていない点については注意する必要があるかも。現時点ではデータが消えることはないみたいだけど、これからもずっとそうであるとは限らない。企業用途などではどうすればいいんでしょうね。

今日のお勉強の成果としてはこんなのできました。

sshot-487

WordPress の月別アーカイブ画面に、アクセス数をグラフを載せてみました。PHPは殆ど知らないので結構大変でしたけど、

この二つのライブラリを組み合わせたら結構カンタンでした。それにしても、んー、わかりにくいな、PHPって。

PaperClipped と Lightbox2 を組み合わせて利用する

RadiantCMSへ画像・動画・ファイルといったメディアを管理できる機能を追加するPaperClippedを使えば、画像をアップロードし、いつでもあらかじめ決めておいたサイズで呼び出せるようになります。たとえば、

<r:assets id="1" size="thumbnail" />
<r:assets title="昔撮った写真" size="original">

という、Radiusタグを書くだけで。<r:assets:url />などと組み合わせれば、リンク付きの画像も簡単に埋め込めます。

今回はこの機能とLightBox2を組み合わせて、画面遷移のない・美しい表示エフェクト付きの拡大画像リンクを実装しましょう。

http://www.daruyanagi.com/articles/2010/02/05/combine-paperclipped-and-lightbox2/ (外部リンク)

[JavaScript] ドメイン外のリンクをすべて別ウィンドウ表示にする

自分のドメイン内はページ内リンク、自分のドメイン外は"target=_blank"で別ウィンドウで表示したい場合。

<script type="text/javascript">
<!--
var p = location.protocol;
var h = location.hostname;

window.onload = function () {
  var nodes = document.getElementsByTagName('a');
  var i = nodes.length;
  while (--i >= 0){
    var l = nodes[i].getAttribute('href');
    if ( (l.indexOf(p) == 0) && (l.indexOf(h) < 0) )
      nodes[i].setAttribute('target', '_blank');
  }
}
// -->
</script>

JavaScript はあまり書きなれていないのだけど、こんな感じでいいのだろうか。とりあえず動いてるっぽ。でも、これだと厳密には http://exsample.com/my-domain/ だと別ウィンドウで表示されないよな。

l.indexOf(h) < p.length + ‘//’.length + h.length

だったら完璧かな。そこまでする気はないけれど。location.host を使えばいいのかな?

ってか、 foreach ないの? JavaScript って。知らんかった。

Continue reading

どっちかにしてくれ。

sshot-435

Firefox での場合。

sshot-436

IE8 での場合。

[[Wiki Name]] の先が Not Found だと新規作成ページへリダイレクトするのだけど、新規作成には認証が必要。というわけで、Restful_Authentication で認証するために /login に飛ばされるのだけど…ブラウザによって挙動が違うのねん。

どっちでもいいけど、どっちかにしてくれ!

泥棒を捕まえようと思い立ったので、縄を編んでみた。

sshot-434

わーい♪ Rails で Wiki もどきができたよ!

そろそろ本で読んだ感想なんかをまとめる Wiki がほしくなったのだけど、そのためには Wiki を作る必要があるんじゃねーか? と思い立ったので。確か昔も一度挑戦したのだけど、そのころのコードを見てもちんぷんかんぷんだったのでもう一回作り直した。ここまでで、所要時間3時間…

とりあえず、拡張型Markdownと[[]]ブラケットでWikiネームを使えるようにしました[1] 。普通のWikiと違うところは作成編集削除にログインが必要で代わりに凍結機能がないこと、Sqlite 3データベースに保存されること。ファイルがわらわらできると、いろいろめんどくさくね?

まだバージョン管理とタグ機能、ファイル添付機能を入れていないのでまだまだだけど。コメントとトラックバックはDisqusを使う予定なので、ファイル添付機能もあえてつけずに外部サーバーと連携するようにするかなぁ…とか考え中。編集画面のサイドバーで添付ファイルを選択すれば、編集画面へタグが挿入されるとか、そういうのを画策。

Continue reading

  1. Bluefeather: http://ruby.morphball.net/bluefeather/ (*)

Home > Programming Archive

My Friend Feed

http://friendfeed.com/daruyanagi

Google Analyticator

550
 Unique Visitors 
 (1 day) 
Powered By Google Analytics

Return to page top