2005-12-29 Thu
JavaScript/Migemo
- Summary
MigemoのJavaScriptによる実装.
- Reference
JavaScript/Migemo
http://www.oldriver.org/jsmigemo/
- Inner Reference
Migemo [2003-05-29-7]
C/Migemo [2004-11-29-9]
XUL/Migemo [2005-09-27-1]
2005-12-27 Tue
X Library
- Summary
ブラウザ互換性に重きを置いたJavaScriptライブラリ.
- Reference
Cross-Browser.com
http://www.cross-browser.com/
XV: X Library Viewer
http://www.cross-browser.com/x/lib/view.php
- via
Trivial Tracks: Javascriptのクロスブラウザライブラリ
http://network.yasu21.net/diary/2005/12/javascript.html
2005-12-26 Mon
JavaScript Interactive Interpreter
- Summary
MochiKitを利用した,JavaScriptのインタプリタ.

- Reference
Interpreter - JavaScript Interactive Interpreter
http://rails2u.com/misc/prototype_interpreter/
- via
2nd life - 2005-12-18 - MochiKit
http://d.hatena.ne.jp/secondlife/20051218/1134914780
2005-12-26 Mon
MochiKit - JavaScript Library
- Screencast
MochiKit - Screencast
http://mochikit.com/screencasts/MochiKit_Intro-1.html
- Reference
MochiKit - A lightweight Javascript library
http://mochikit.com/
2005-12-26 Mon
Cheat Sheets Collection
- Reference
Perl Cheat Sheet
http://juerd.nl/site.plp/perlcheat
Perl Cheat Sheet
http://ali.as/devel/cheatsheet.html
Perl Cheat Sheet
http://goldenink.com/perl/perlcheat.html
PHP Cheat Sheet
http://www.ilovejackdaniels.com/php/php-cheat-sheet/
JavaScript Cheat Sheet
http://www.ilovejackdaniels.com/javascript/javascript-cheat-sheet/
CSS Cheat Sheet
http://www.ilovejackdaniels.com/css/css-cheat-sheet/
mod_rewrite Cheat Sheet
http://www.ilovejackdaniels.com/cheat-sheets/mod_rewrite-cheat-sheet/
Vim Commands Cheat Sheet
http://bullium.com/support/vim.html
Cheat Sheet Roundup
http://www.petefreitag.com/item/455.cfm
2005-12-22 Thu
JavaScriptの予約語
- List
abstract
boolean
break
byte
case
catch
char
class
comment
const
continue
debugger
default
delete
do
double
else
enum
export
extends
false
final
finally
float
for
function
goto
if
implements
import
in
instanceof
int
interface
label
long
native
new
null
package
private
protected
public
return
short
static
super
switch
synchronized
this
throw
throws
transient
true
try
typeof
var
void
volatile
while
with
- 備考
JavaScript1.3の初期バージョンから,comment, debugger, enum, export, label が追加
ECMA-262でvolatileが追加され,commentは削除されたため,それ以後のJavaScript1.3はこれに準拠し変更されている.
false, null, true はECMA-262では予約語とされていないが,NetscapeもMicrosoftも予約語としている.
startという名前の関数をイベントから使用するとIE系でエラーが出る.
colorという名前の関数を使用するとエラーが出る.
start, color とも予約語ではないが,使用は避けた方が良い.
- Reference
SMART! ウェブ講座 - JavaScript - 予約語
http://www.rfs.jp/sb/javascript/01/04.html
JavaScript laboratory - 予約語一覧
http://www004.upp.so-net.ne.jp/sekiuchi/js/help/keywords.html
2005-12-22 Thu
JavaScript で Cookie を簡単に扱うには
- Summary
JavaScriptでCookieを扱う[2005-12-19-5] でCookieの扱いづらさを体験.
そこで cookieクラスを用いる.
どうせなら,Cookieをparseして連想配列で返しても良い気がする.
- Reference
ウェブ木箱:cookie操作
http://www5c.biglobe.ne.jp/~horoau/js_library/cookie.html
クッキーの読み書き
http://www9.plala.or.jp/oyoyon/html/script/cookie.html
2005-12-19 Mon
JavaScriptでCookieを扱う
- Cookieの取得
var cookie = document.cookie;
- Cookieの設定
document.cookie = 'var1=value1;var2=value2;var3=value3;';
- Cookieの有効期限を指定する
document.cookie = 'var1=value1; expires=Tue, 1-Jan-2030 00:00:00 GMT;';
- Cookieの書き込み (有効期限を1時間後に指定)
var xDay = new Date; xDay.setHours(xDay.getHours() + 1); // 有効期限を1時間後に設定 xDay = xDay.toGMTString(); //GMT形式の文字列に変換 document.cookie = "value0=" + + ";expires=" + xDay;
- Cookieの読み込み
function loadCookie(arg){ //argはデータ識別文字列 if(arg){ var cookieData = document.cookie + ";"; //文字列の最後に「;」を追加 var startPoint1 = cookieData.indexOf(arg); var startPoint2 = cookieData.indexOf("=",startPoint1); var endPoint = cookieData.indexOf(";",startPoint1); if(startPoint2 < endPoint && startPoint1 > -1){ cookieData = cookieData.substring(startPoint2,endPoint); cookieData = cookieData; return cookieData; } } return false }
- Cookieの削除
有効期限を過去に設定することでCookieは削除される.
function deleteCookie(arg){ //argはデータ識別文字列 if(arg){ var yDay = new Date; yDay.setHours(yDay.getHours() - 1); // 有効期限を1時間前に設定 yDay = yDay.toGMTString(); //GMT形式の文字列に変換 document.cookie = arg + "=xxx" + ";expires=" + yDay; } }
- Reference
とほほのCookie入門
http://www.tohoho-web.com/wwwcook.htm#CookieWrite
From DFJ - DHTML/JavaScript Index - Cookieの利用
http://www.fromdfj.net/javascript/cookie.html
クッキーの読み書き
http://www9.plala.or.jp/oyoyon/html/script/cookie.html
2005-12-19 Mon
memoization - JavaScriptによるLispソースコードのブロック可視化
- Summary
マウスオーバーした部分のブロックが色分けされてハイライト.

- Reference
memoization
http://community.schemewiki.org/?memoization
- via
/home/pochi/ChangeLog - JavaScript による Lisp ソースコードのブロック可視化
http://www.pochi.cc/~sasaki/chalow/2005-08-29-4.html
2005-12-16 Fri
JavaScriptでビルトインオブジェクトハック (Dateクラス編)
- Summary
最速インターフェース研究会の「実践JavaScriptリファクタリング」に触発されてDateクラスに手を加えてみた.
IEとMozilla系でgetYear(),setYear()の仕様が異なるため,
getFullYear(),setFullYear()を使うことで,年の扱いを4ケタで統一.
- Source
/* 連想配列を返す return Array */ Date.prototype.toHashArray = function(){ var dateArray = new Object(); dateArray["year"] = this.getFullYear(); dateArray["month"] = this.getMonth(); dateArray["date"] = this.getDate(); dateArray["day"] = this.getDay(); dateArray["hour"] = this.getHours(); dateArray["minute"] = this.getMinutes(); dateArray["second"] = this.getSeconds(); return dateArray; } /* その年が閏年かどうか return boolean */ Date.prototype.isLeapYear = function(){ var year = this.getFullYear(); return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)); } /* その日が引数と同じ日付かどうか return boolean */ Date.prototype.isSameDate = function(d){ var arr = this.toHashArray(); var arr2 = d.toHashArray(); return ((arr["year"] == arr2["year"]) && (arr["month"] == arr2["month"]) && (arr["date"] == arr2["date"])); } /* その時間が引数と同じ時間かどうか return boolean */ Date.prototype.isSameTime = function(d){ var arr = this.toHashArray(); var arr2 = d.toHashArray(); return ((arr["hour"] == arr2["hour"]) && (arr["minute"] == arr2["minute"]) && (arr["second"] == arr2["second"])); } /* その時間が引数と同じ日付、同じ時間かどうか return boolean */ Date.prototype.equals = function(d){ return (this.isSameDate(d) && this.isSameTime(d)); } /* その日が今日と同じ日付かどうか return boolean */ Date.prototype.isToday = function(){ return this.isSameDate(new Date()); } /* 時間を 00:00:00に設定 */ Date.prototype.resetTime = function(){ this.setHours(0); this.setMinutes(0); this.setSeconds(0); return; } /* その月の日数を取得 return int */ Date.prototype.getDayNumber = function(){ var year = this.getFullYear(); var month = this.getMonth(); var dayNumber = (month == 0 || month == 2 || month == 4 || month == 6 || month == 7 || month == 9 || month == 11) ? 31 : (month == 3 || month == 5 || month == 8 || month == 10) ? 30 : (this.isLeapYear()) ? 29 : 28; return dayNumber; } /* その月の週の数を取得 return int */ Date.prototype.getWeekNumber = function(){ var dayNumber = this.getDayNumber(); var weekOfTheDay = this.getDay(); var weekNumber = Math.ceil((weekOfTheDay + dayNumber) / 7); return weekNumber; } /* 閏年を考慮して前の月のDateを返す (3月29日,30日,31日の前の月は2月28日 or 29日) return Date */ Date.prototype.getPreviousMonth = function(){ var year = this.getFullYear(); var month = this.getMonth(); var date = this.getDate(); var prevYear = year; var prevMonth = month; var prevDate = date; if (month == 0){ prevMonth = 11; prevYear--; } else if (month == 1 || date > 28){ prevDate = (this.isLeapYear()) ? 29 : 28; prevMonth--; } else { prevMonth--; } var retDate = new Date(prevYear,prevMonth,prevDate); retDate.resetTime(); return retDate; } /* 閏年を考慮して次の月のDateを返す (1月29日,30日,31日の次の月は2月28日 or 29日) return Date */ Date.prototype.getNextMonth = function(){ var year = this.getFullYear(); var month = this.getMonth(); var date = this.getDate(); var nextYear = year; var nextMonth = month; var nextDate = date; if (month == 11){ nextMonth = 0; nextYear++; } else if (month == 0 || date > 28){ nextDate = (this.isLeapYear()) ? 29 : 28; nextMonth++; } else { nextMonth++; } var retDate = new Date(nextYear,nextMonth,nextDate); retDate.resetTime(); return retDate; } /* その月の最初の日付を返す。時間は00:00:00にリセット。 return Date */ Date.prototype.getFirstDate = function(){ var year = this.getFullYear(); var month = this.getMonth(); var retDate = new Date(year,month,1); retDate.resetTime(); return retDate; } /* 読みやすい形式で日付の文字列を出力 return String */ Date.prototype.toReadableString = function(){ var dateArray = this.toHashArray(); var displayMonth = dateArray["month"] + 1; var ret = ''; ret += dateArray["year"] + '/' + displayMonth + '/' + dateArray["date"]; return ret; } /* 読みやすい形式で日付と時刻の文字列を出力 return String; */ Date.prototype.toLongReadableString = function(){ var dateArray = this.toHashArray(); var day = this.getWeekOfTheDay(); var ret = ''; ret += this.toReadableString(); ret += '(' + day + ')' + dateArray["hour"] + ':' + dateArray["minute"] + ':' + dateArray["second"]; return ret; } /* 読みやすい曜日を返す return String; */ Date.prototype.getWeekOfTheDay = function(){ var day = this.getDay(); var ret = this.weekOfTheDay[day]; return ret; } /* 読みやすい曜日表示の設定 引数は "7つの要素を持つArray" return boolean; */ Date.prototype.setWeekOfTheDayArray = function(arr){ var state = (arr.length == 7) ? true : false; if (state){ this.weekOfTheDay = arr; } return state; } Date.prototype.weekOfTheDay = new Array("日","月","火","水","木","金","土"); // Date.prototype.weekOfTheDay = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
- Reference
最速インターフェース研究会 - 2005-10-06 - 実践JavaScriptリファクタリング
http://la.ma.la/blog/diary_200510060733.htm
最速インターフェース研究会 - 2005-10-06 - 実践JavaScriptリファクタリング、その2
http://la.ma.la/blog/diary_200510062243.htm
2005-12-14 Wed
Under Translation of ECMA-262 3rd Edition
- Reference
Under Translation of ECMA-262 3rd Edition
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/
Standard ECMA-262 - ECMAScript Language Specification - 3rd edition (December 1999)
http://www.ecma-international.org/publications/standards/Ecma-262.htm
2005-12-14 Wed
JavaScript で連想配列
var hash = new Array(); hash['year'] = 2005; hash['month'] = 12; hash['date'] = 14; var str = ''; for ( key in hash ){ str += key + ":" + hash[key] + "\n"; } alert(str);
- 追記
JavaScriptはObjectで連想配列を利用可能.
var hash = new Object();
- Reference
にっき - 2005-12-15
http://bigfield.ddo.jp/diary/20051215.html#p03
2005-12-14 Wed
マウスホイールイベントの登録
- Summary
prototype.js を読み込んだ後に wheel_event.js を読み込むと,
mousewheelイベントを扱えるようになる.
イベントハンドラの第二引数にホイールカウント(1 or -1)が入ってくる.
Event.observe(element, 'mousewheel', function(element, wheel_count){ wheel_count == 1 ? alert('wheel up') : alert('wheel down'); });
- ブラウザのホイールを無効にする
event.preventDefault ? event.preventDefault() : (event.returnValue = false);
- Reference
mouse wheel event demo
http://rails2u.com/misc/wheel_event/
- via
2nd life - 2005-12-08 - prototype.js with mousehweel event
http://d.hatena.ne.jp/secondlife/20051208/1134020332
2005-12-02 Fri
JavaScript::Swell - JavaScript のソースコードを整形
- Reference
JavaScript::Swell
- via
cl.pocari.org - 2005-11-27 - JavaScript のソースコードを綺麗に整形してくれる Perl モジュール JavaScript::Swell
http://cl.pocari.org/2005-11-27-3.html
YappoLogs: JavaScript::Swell - Web2.0 時代のHackモジュール
http://blog.yappo.jp/yappo/archives/000343.html
2005-11-25 Fri
text-hatena.jsを利用したはてな記法ワープロ
- Summary
Text::HatenaのJavaScript移植版.
- Reference
はてな記法ワープロ
http://tech.nitoyon.com/javascript/application/texthatena/wordpro/
text-hatena.js 公開 [tech.nitoyon.com]
http://tech.nitoyon.com/javascript/application/texthatena/download.html
Text::Hatena
- via
cl.pocari.org - 2005-11-23 - Text::Hatena の JavaScript 移行版 text-hatena.js
http://cl.pocari.org/2005-11-23-5.html
2005-11-25 Fri
prototype.js の使い方
- Reference
prototype.js v1.3.1 の使い方
http://www.imgsrc.co.jp/~kuriyama/prototype/prototype.js.html
- via
cl.pocari.org - 2005-11-24 - prototype.js v1.3.1 の使い方
http://cl.pocari.org/2005-11-24-6.html
2005-11-09 Wed
実践JavaScriptリファクタリング
- Summary
とても連載希望.
- Reference
最速インターフェース研究会 :: 実践JavaScriptリファクタリング
http://la.ma.la/blog/diary_200510060733.htm
最速インターフェース研究会 :: 実践JavaScriptリファクタリング、その2
http://la.ma.la/blog/diary_200510062243.htm
Ruby.js
http://www.advogato.org/proj/Ruby.js/
2005-11-09 Wed
ページ内リンクでスムーススクロール
- Reference
[ajax] ページ内リンクでスムーススクロール @ ZEROBASE CAST
http://zerobase.jp/blog/entry-268.html
2005-11-08 Tue
JavaScriptでTropyクローン
- Reference
Tropix
http://la.ma.la/misc/tropix/
最速インターフェース研究会 :: Tropyクローンを作った
http://la.ma.la/blog/diary_200511070134.htm
2005-11-08 Tue
自動ログインスクリプト
- Reference
[を] amazon アソシエイト・セントラルへ自動ログイン
http://chalow.net/2005-11-07-1.html
[を] Google AdSense へ自動ログイン Version 2
http://chalow.net/2005-11-06-1.html