【info】有料サポート(ベータ)限定 承り中 /【JSサポート(仮称)】
【費用】 とりあえず、言い値で承ります。ただし、できる範囲での限定受付です。込み具合等によりお受けできない場合がありますのであらかじめご了承ください。サポートにご納得いただけなければ料金は不要です。 逆に感動したら多くても構いません(^^;;;。
【できること】 たとえば、かも日記で無料配布されているコードのカスタマイズや、あるいは、JavaScript/Ajax全般+Webサーバーとの連携などのアドバイス&サンプル作成等 。A:jQchartなどでWeb用グラフ設置(エクセル→CSVやデータベースからWebグラフ生成)などのアドバイスやカスタマイズサンプル作成。B:ツリーメニューなどのカスタマイズサンプル。C:Google Mapsのカスタマイズ。etc...
【できないこと】 腕立て伏せ200回
【ライセンス】 私が今まで「かも日記」等で提供してきたコードの大半は、商用利用、改造、自由、連絡不要で、今後もそれらは変わりません。そして、この有料サポートによりカスタマイズコードなどが提供される場合でも、同様に、それらを商用利用しても改造しても自由です。ただし、制限のきついライブラリなどを使う場合は、各ライブラリのライセンスに準拠せざるを得ない場合があります。
【info】いつもいろいろなテストなどをページ内のあちこちでやっているので、重かったり、壊れていたりするf^^;ことも多いですが、何卒、ご了承ください ( _ _ b
Download the latest stable version—1.6.0.2 (January 25, 2008)
http://prototypejs.org/download
Prototype 1.6.0.2: Bug fixes, performance improvements, and security
http://prototypejs.org/2008/1/25/prototype-1-6-0-2-bug-fixes-performance-improvements-and-security
JavaScriptライブラリのパフォーマンス、最速はコレだ!
http://journal.mycom.co.jp/news/2008/01/17/030/
Javascript Library Performance Test Roundup
http://jst.pbwiki.com/
まぁ、ライブラリの評価はそれぞれ特長が違いますから単純ではないのですが、ひとつの目安として役に立つと思います。
関連:【jQuery】圧縮ツールの再検証
http://jsgt.org/mt/archives/01/001876.html
Prototype.js 1.6.0と script.aculo.us 1.8.0の正式版がリリース。
http://prototypejs.org/2007/11/7/prototype-1-6-0-script-aculo-us-1-8-0-and-the-bungee-book-now-available
CHANGELOG
http://dev.rubyonrails.org/browser/spinoffs/prototype/tags/rel_1-6-0/CHANGELOG
#例のハッシュの問題は書き直された模様?
script.aculo.us ver 1.8.0でエフェクトのサンプルが一部動かないものがあるんだけど、なんででしょうかねぇ。
既存のeffect.js使ったライブラリでも差し替えると動かなかったりします。ver 1.5.1.1まではちゃんと動くのに〜
http://www.openspc2.org/JavaScript/Ajax/ref/script.aculo.us/ver1.8.0/index.html
コレ↓だとフェードするけど、フェードするのはなぜかボタン・・・。
new Effect.Fade("box", { from:1.0, to:0.2});って書いてあるのに。謎。動くのもあるんですけどねぇ・・・
Firefox2、Opera9、Safari3が駄目で、IE6は動作しますね。
おそらくですが、関数名fade()が衝突しているのかなと思います。
prototype.jsもscript.aculo.usもグローバルな名前がズラーっと生成されていますから、、、、。すべての名前に精通しないと使うのは難しい、というか危ない?かも。<でも、覚えてられないですよね(^^;;;楽するはずのライブラリなのに、、、ということが、今回もやはり繰り返されそうな、、、?
この点、jQueryは良いですよ。jQueryオブジェクトとそのショートカットの$の2個しかありませんから。
古籏一浩 ( 2007年11月08日 23:27 )script.aculo.usのeffect.jsだとfadeは
Effect.Fade = function(element) {〜}
ってなってるんですよね。確かにfade()をfadeX()にすると動くけど...
prototype.jsはシェア多いけど、つきあうのがだんだんと面倒に(笑)
prototype.jsとjQueryの中間くらいのMooToolsがいいのかもしれないなあ。
Dojoは1.0になったので、これを使うという手もなきにしもあらずだけど...
速度と機能の両立だとMooToolsあたりかなと思うんですけどね〜。
必要な機能だけセレクトして構築できるのもグッドだし。
ああ、mooToolsも良いですよね。サイトは一番きれいなんじゃないでしょうか?<コードとは関係ない^^?
と、思って、今確認したら、mootoolsもかなりグローバル領域を汚してますね、、、。
うーん、昔は全然気にならなかったんですが(笑)、最近のように、他人のライブラリを使う機会が増えると、グローバルな名前の衝突リスクは少し気になってきますね。
ちなみにjQueryとYUIは謙虚ですけど、YUIは、せっかく作ったネームスペースがじゅげむじぃげむのように長くなって、グローバルな結局ショートカット作ってみたりしてますf^^;;;;ので、それが知らないうちにぶつかってしまう可能性はあります(^^;
古籏一浩 ( 2007年11月09日 00:06 )namespaceは以前から予約語になっていたんだから、IE5とかNetscape 6の時に機能するようにしちゃえばよかったんですよね。
YUIはCSS名とかもあまりに長いのと煩雑なので引き気味です・・・
今の所、jQueryならつきあってもいいかなあ、といった具合です。
あれも、これもとなるとDojoにしたら?ということになっちゃうし・・・
今年はjQueryでやるしかないかなあ。
jQueryのUIまわりがYUIくらいあればいいんだけど。
必要なら作れば良いと思います(笑)。
私も今作法?を体得すべく書き散らしていますが、Webでほぼ必須の「DOM扱い」の手軽さは優れていると思います。
jQueryでなければ、たぶん腰を上げることにならなかったような処理も書いてみたりしてf^^;;
古籏一浩 ( 2007年11月09日 00:23 )そうそう、なければ作ればいいんですよ。
ただ、現状ではライブラリの機能や特長を全部把握しきれていないので勉強中といったところです。
全く使ったことがないのはMooToolsだけなので、これはサンプルとか作ってどうにかしたいところです。
Ajaxライブラリの中ではjQueryはコアとしてうまくいっているかと。とにかく回りのプラグインで高機能なものが出てくれないとYUI, Dojoの代替にはならないですね。
Prototype 1.5.1.1 bug fix release
http://prototypejs.org/2007/6/20/prototype-1-5-1-1-bugfix-release
Apolloのサンプルで使われた、美しきJavaScriptフレームワーク「Ext 1.0」
http://journal.mycom.co.jp/articles/2007/04/21/ext/
Ext JS library
http://extjs.com/
Apollo:Applications:Samples
http://labs.adobe.com/wiki/index.php/Apollo:Applications:Samples
#ちなみに、解凍すると、/source/adapterホルダに、jquery-bridge.js、yui-bridge.js、prototype-bridge.jsというファイルがあって、Ext.lib.Domなどの互換クラスを作成しています。その中で、下記を見たときに、やっぱりこの思いは世界中でシンクロしてたのかなぁ(笑)と思いました( これ )。
27年近く前の8ビット機の時代と、未だにやっている事が同じってのも何ともですけどねf(^^;
逆に言えば、人間考えること&行き着くところは、対して変わらないというかフォンノイマン型のコンピュータの場合には仕方ないのかも。
あー、確かに、どこまで行ってもエンドレスなのかもしれないですね〜。
そういえば、いろんな場面でそういうことは感じますね。
エジプトかどこかの壁面に「いまどきの若いものは、、、」みたいな字が彫ってあったのと同じで、人間は千年でも3千年でも同じことを、何度でも形を変えて繰り返していくのかも(笑)。
昔の日記の一部に追記修正。ただ、ちょっと、いまのところ判断つきません。ライセンス文に書いてある通りかなとは思いますけど。どうなんでしょう?
【Spry,prototype.js】$()ドル関数を比較する
http://jsgt.org/mt/archives/01/001113.html
>追記2007.4.15
>prototype.jsのライセンスは、MITスタイルで配布されていますが、MITの肝心な著作権表示に関する行を意図的に?削除しているようにみえます(Thanx confさん)。
>ただ、このMITとして重要な件についての説明がみあたらなかったので、どう判断すべきかちょっと逡巡しています。ちなみに、お仲間である? script.aculo.usの方は正式なMITになっており、著作権表示義務の行も表記された全文になっているようです。
#私は、めんどくさいので、最近は、自分のスクリプトは特別な事情の無いものは大半パブリックドメインと宣言することにしてます。<もちろん、日本ではそれでも、アレなんですけど、、、(^^;。
prototype.js 1.5.1_rc2がリリースされています。
http://prototypejs.org/download
ようやくprototypejs.orgなサイトが立ち上がり、ドキュメントも用意されたようです。
http://prototypejs.org/
Prototype API Documentation
http://prototypejs.org/api
Prototype Tips and Tutorials
http://prototypejs.org/learn
prototype.jsリファレンスver 1.4.0
http://www.openspc2.org/JavaScript/Ajax/ref/prototype.js/ver1.4/index.html
#サンプル付きなのでわかりやすい。
参考:
prototype.js
http://prototype.conio.net/
prototype.js の開発者向けメモ
http://www.imgsrc.co.jp/~kuriyama/prototype/prototype.js.html
『Ajax実践テクニック』 Yahoo UI! ,Dojo,prototype.js ,script.aculo.us ,Rico サンプル
http://jsgt.org/js/books/rc/sample/contents.htm
//=====================================================================
// ライブラリ互換処理
// jslb_ajax.jsのsendRequest、prototype.jsのAjax.Request、
// YUIのConnect.asyncRequest、Dojoのdojo.io.bindを互換させます。
// 使わないライブラリは、実装現場で最後に
// case 'ライブラリ名':から;break;までの該当するブロックを削除
// することで、このソースの軽量化が可能です。
//
use : '',//使用するライブラリ名
//使用するライブラリ名を指定します。
setUse :function(libName){
this.use=(libName=='auto')?this._autoUse():((libName)?libName:'');
},
//setUseの第一引数が'auto'時に、下記配列順に検査しライブラリを自動指定します。
_autoUse :function(){
var lib=['prototype.js','yahoo.js','dojo.js','jslb_ajax.js'];
var liboj=[window.Prototype,window.YAHOO,window.dojo,window.sendRequest];
for(var i=0;i<=liboj.length;i++){
var t=typeof liboj[i];
if(t=='object'||t=='function'){return this.use=lib[i];};
};
},
//置き換え
_sendRequest :function(callback,data,method,url,async,sload){
function mkPrams(b){
var p='';
for(var i in b){
p+='&'+encodeURIComponent(i)+'='+encodeURIComponent(b[i]);
};
return p
};
switch(this.use){
case 'prototype.js':
var op={
method:method,
parameters:mkPrams(data),
onComplete:callback,
asynchronous:async
};
url=(sload)?url+'?'+(new Date()):url;
return new Ajax.Request(url,op);
;break;
case 'dojo.js':
dojo.require("dojo.io.*");
var postContent=''
url=(sload)?url+'?'+(new Date()):url;
if(method.toLowerCase()=='get')url+mkPrams(data)
else postContent=mkPrams(data);
dojo.io.bind({
method:method,
url:url,
load: function(type,data){
callback({responseText:data})
},
sync:async,
postContent:postContent
});
;break;
case 'yahoo.js':
var postData='';
url=(sload)?url+'?'+(new Date()):url;
if(method.toLowerCase()=='get')url+mkPrams(data)
else postData=mkPrams(data);
YAHOO.util.Connect.asyncRequest(
method,url,{success:this.onloaded},postData
)
;break;
case 'jslb_ajax.js':
sendRequest(callback,data,method,url,async,sload);
;break;
}
}
Web 2.0で変わるWebプログラミングの常識:
そのサービスはAjaxフレームワークで一変できるか?
http://www.itmedia.co.jp/enterprise/articles/0608/28/news055.html
>「prototype.js」と呼ばれるJavaScriptフレームワーク。
>多くのAjaxを応用したサービスで使われている「Ajaxフレームワークのデファクト」だ。
#この連載には敬意を表する私ですが、デファクトとまでは言いにくいかも。。。というか、この記事でそういう地位を得ていく可能性はあるかも。でも、prototype.jsを使うと、JavaScript本来の機能に影響を与えてしまいますので、マッシュアップなどには向かないかも。でも、簡単なものや、Ruby on Railsなどの上では超便利かも。
#ちなみに、たとえば、javascript:for(i in [0])alert(i)の期待される普通の動作は、ページのアドレス欄に打ち込んでみるとわかりますが、iの値である0が1回表示されて終わりのはずです。でも、prptotype.jsの読み込まれたページ(たとえばこことか)で試すと、ずらずらと出てきます。iの値だけでなく、中身も取り出そうとして、javascript:a=[0];for(i in a)alert(a[i])とかやるともっと凄いことになります。prototype.jsでは、各ネイティブなオブジェクトへ追加された、こういう動作を知らずに、他のライブラリやWebサービスと組み合わせるのは難しいですし、あの数千行のコードを検査してから使うのも大変かなと。
普通に(?)考えればIE7考慮でXMLHttpRequest()が先頭ですよね。
高橋 ( 2006年07月22日 16:35 )実は、IE7のシェアが、ベータ版でありながら、すでにSafari2.0のシェアを追い抜いています。というか、倍以上(^^;
http://www.w3counter.com/globalstats/
W3Counter Global Web Stats July 21, 2006
Web Browser %
1 Internet Explorer 6.0 65%
2 Firefox 1.5 22%
3 Firefox 1.0 4%
4 Internet Explorer 7.0 2%
5 Safari 2.0 1%
6 Opera 9.0 <1%
7 Opera 8.5 <1%
8 Mozilla 1.7 <1%
9 Safari 1.3 <1%
10 Internet Explorer 5.5 <1%
#IEユーザー人口の3%は新しもの好き?
古籏一浩 ( 2006年07月23日 00:33 )確かに倍ですね(笑)
Adobe Spry見たら、XMLHttpReq優先で、後は新しいバージョンのActiveXという具合にしてますね。
ActiveXObjectの件もありますし、今年以降は、XMLHttpRequestを最初に分岐するのがXHR作法になると思います。
( 2006年07月25日 15:23 )gggggggggg
dojo.byId = function(id, doc){
if(id && (typeof id == "string" || id instanceof String)){
if(!doc){ doc = document; }
return doc.getElementById(id);
}
return id; // assume it's a node
}
テストしてみます。→サンプル