空想犬猫記

※当日記では、犬も猫も空想も扱っておりません。(旧・エト記)

JavaScript

JavaScript(JScript)で自動化するための準備とインテリセンスを利用するためのメモ

背景 今まで業務で使用する自動化をRubyで書き溜めてきたものの、Windows上のRubyというのは敷居が高くいまいち手離れが悪いので、Windowsに標準でインストールされているWSHスクリプトで書き直そうとしている。WSHスクリプトはクライアントとして複数の言語…

FireBugでプロファイルをとってみた

ネタとしては1年半前の流行なのかも知れないが,ようやく prototype.js の中身を読んでいる。これを機に,v.1.4 から最新の v.1.6 にバージョンアップ。ソースコードが整理されているだけでなく,速度の違いが体感できるくらい速くなっていておどろく。イベ…

uneval(obj) は obj の JSON ではない件

JSON がなかなか楽しいので,CGI へのデータの受け渡しも JSON でやってしまうことにした。最初は JavaScript のオブジェクトを encodeURIComponent(uneval(obj)) みたいな感じで POST していたんだけど,これだと CGI(Ruby)側で JSON.parse に失敗する。…

for文と局所変数についてのメモ

A re-introduction to JavaScript を読む。はてブでは 4 ユーザしかブックマークしていないけれど,もっと評価されても良いと思う。日本語版は力つきて途中で終わっているけれど,暇があったら翻訳を手伝ってもいいかなと思う。JavaScriptの勉強=バッドノウ…

JSONの罠?

JSONが気に入ってけっこう重めのデータ(〜200KB)を転送するようなコードを書いてみたが,1日遊んで気付いたのは Firefox の eval は遅い。XML のパースよりも遅い。 Safari の eval は速い。たぶん XML のパースよりも速い。 200KB 程度の JSON を使ったベ…

JSON

前々から知ってたけど,手つかずだった JSON を試しに触ってみた。Ajax (Asynchronous JavaScript and XML) で,XMLでデータを送る代わりに,JavaScriptのオブジェクトをそのまま送ってしまうという方法。Ajax ならぬ Aja です。3つ以上の単語をイニシャルで…

テキストをクリック→テキストボックスを表示→インラインで編集→テキスト更新を実現するクラスを作ってみた。

なるべく小さな部品をクラスという形で提供して,再利用しやすい俺ライブラリをこまめに作っていこうと思います。id:xoinu:20071231 でやろうとしていたこととは少し外れるので,エト記に書いておきます。表題の通り,今日作ってみたのは,はてなグラフの編…

続・JavaScript のクラスのメンバ関数をイベントハンドラに登録する方法

久々に JavaScript をいじる。言語として見ても,面白いし,テキストエディタとブラウザ(と簡単なCGI)だけで,素敵な UI を伴ったアプリケーションが作れるってのは,魅力的だなと改めて思う。id:xoinu:20061025 にて var _this_ = this; addEvent(element…

隙間に思う。

プログラムを書いていると,コード中に入れるスペースをどうすべきかで,悩むことがある。社内には勿論規約というものがあるのだが,スペースに数に関しては個人の感覚によるところが大きく,議論を煮詰めるとその人の人格否定にまで及んでしまうので,触れ…

C++ プログラマが,JavaScript を入門してみるテスト (3) − Singleton

コンストラクタではなく,{} でオブジェクトを作れば new 出来ない。これって Singleton? var mySingleton = { x : 1, increment : function() { ++this.x; } }; みたいな。static メンバの定義も同じく,prototype メンバではなく,クラスに直接メンバを追…

C++ プログラマが,JavaScript を入門してみるテスト (2)

JavaScript で使われる idiom。これから使用するオブジェクトが,既に定義されているかどうかを確認する方法。 if (typeof Effect == 'undefined') throw("dragdrop.js requires including script.aculio.us' effects.js library"); みたいな感じ。ブラウザ…

scriptaculous.js

Drag-N-Drop を実現するためのライブラリを探してみた。どうやら scriptaculous.js が本命。MIT ライセンスで,ソースコードも読みやすい。ライブラリの名前がもう少し分かり易ければと思う。 JavaScript のオブジェクトモデルについて勉強したあとで,改め…

JavaScript Object Model

このブログでも数回触れたことがある JavaScript について,もう少し調べてみる。入門編として「まずは動かしてみる」という段階を踏まえ,最近まで open source の JavaScript を「読んでみる」というという段階を経てきた。prototype.js を使うとなんだか…

互換性について

Safari & Firefox で開発した Web アプリを会社のサーバに up したんだけど,ここで大きな問題が。どうも IE7 で動かないらしいのだ。調べてみると DOM 回りの API については,Safari や Firefox の JavaScript と JScript とでは,互換性があまりないらし…

Web-based tool

先週立てた計画どおり殆ど実装が済む。たまたま日本から様子見にやってきていた, CTO にも売り込んで,なかなか好感触を得た。これから全社的に売り込んでみようと思う。当初の目的は達せられたものの,職場で使う都合上,これ以上は公開できなくなってしま…

JavaScript のクラスのメンバ関数をイベントハンドラに登録する方法

先週の土曜日 に JavaScript をいじり始めて真っ先に戸惑ったのが C++ と JavaScript の間の this の違いだった。JavaScript には「カレントオブジェクト」なる概念があって,this は「カレントオブジェクトへの参照」という定義らしい。で「カレントオブジ…

Ajax with prototype.js の実験と Web アプリの MVC に関する妄想

さて,昨日の予定通り,本日は prototype.js の Ajax クラスを調べてみる。参考にしたのはこちら。だいぶ流行から乗り遅れたおかげで,資料が充実した環境で効率的に学べるという恩恵に与れるとは,マイペースも悪く無いなとおもう(我ながらおめでたい)。C…

ProgressIndicator

Professional な人には(そうでない人も,恐らく)禿しく既出だとおもうけど,prototype.js の記法を使って,ProgressIndicator を制御するクラスを作ってみた。 var ProgressIndicator = Class.create(); ProgressIndicator.prototype = { count : 0, indic…

Ajax までの道のり

MySQL データベースと簡単なやり取りをする Web アプリケーションをよなよな作っている。仕事で楽をするためとはいえ,最初のハードルが結構高い。とりあえず,やる事リストを作ってみる。 mysql の復習 database の設計 Ruby の mysql アダプタで実験 Web A…

OutlineView もどき

JavaScript をつかって,Outline 表示できるテーブルを作ってみる。ピコピコ開いたり閉じたり,動くようになった。アイコンは,わりと人気がありそうな silk icons を試用。ちょっとハマりかけたのが, this。JavaScript の this は「カレントオブジェクト」…

C++ プログラマが,JavaScript を入門してみるテスト

社内で使うちょっとした GUI 付きのツールを作成しようと思っている。色々検討(脳内会議)した結果,Web ベースでやるのが一番いいんじゃないかという話になった。で,CGI で作るだけじゃ面白く無いから,JavaScript を使って動的なページを作ってみようと…

Google Maps APIは意外とお手軽

お正月休みも残りわずか。OpenGLに関してはかなり読み進めることが出来たので,本日はJavaScriptで遊んでみた。まずはEmacsにecmascript-modeをインストール。 emcascript-mode.elをダウンロードする。 site-lispにコピー。銭谷さんのパッケージを使っている…

JavaScript でメガデモ

先日知った濃ゆい世界を探索中。その中でも(いま流行の)JavaScriptで書かれたメガデモを発見!素晴らしい。スクリプトだしどこまで凝れるのか分からないけど,とにかくJavaでもFlashでもなくJavaScriptってところがくすぐられます。 http://waxy.org/rando…