javascript

忍者バリアーを無効化するgreasemonkeyスクリプト

JS切ってブラウジングしてるととても邪魔。 meta refleshが実行されるタイミング的にどうかなーと思ったが、onload時にwindow.stop()でうまくいくっぽい。 // ==UserScript== // @name ninja barrier breaker // @namespace http://d.hatena.ne.jp/ruby-U/ /…

ページのスクロール位置を自動で保存/復元するgreasemonkeyスクリプト

俺がタブを数百枚とか、時にfirefoxが1.5GBにも達するほど開くのはタブを閉じると以前のスクロール位置が失われるからで、要するにどこまで読んだかを保存しておきたかった。 grasemonekey+gearsでやってみよう、と今日の午後に始めたが、 http://code.googl…

javascriptからpythonへ移植したときのメモ

サーバサイドでパーサを動かしたいのでjavascriptで書いたパーサを移植した 去年までならperlで書いたところだが、appEngineが出て自分の中でのpythonの重要度がとても高くなったのでpythonモジュールに http://code.google.com/p/sorrex/source/browse/trun…

正しいパスワードが入力されているかを色で明瞭にする

colors.jsをアップデートして、 カラーコードからRGBへの変換 RGBからカラーコードへの変換 RGBからHSVへの変換 HSVからRGBへの変換 ができるようになったので、その機能を使ってデモを作った inputに適当な文字を入れると反応する 上のinputはbackground-co…

kmyaccのパーサのテンプレートのバグ?じゃないかと疑ってる点(勘違いでした)

kmyacc version4.1.4を使ってjavascriptで動くパーサを書いてて、それについての話です http://sorrex.googlecode.com/svn-history/r48/trunk/js/parse.html に 。水平。 :背景 青 。左 ここも青で表示されてしまう を食わせると <div id="root"> <hr style="background-color:#0095d9;" /> <div style="background-color:#0095d9;" align="left"> <span class="line" id="5">ここも青で表…</span></div></hr></div>

もういっちょiGoogleガジェットを書いてみた(カラーピッカ)

適当に選んでクリックするとカラー名とカラーコードが取得できる http://d.hatena.ne.jp/ruby-U/20081129/1227885989 で書いたものをガジェットにしただけ 作業時間は一時間半ぐらい これはわりとニーズがありそうな気もする しかしiGoogleガジェットってほ…

igoogleガジェットを書いてみた

作ったものは、例によって独自タグからHTMLを生成するやつ関係 。表、 ああ、いい うう、ええ 。 とか入力して簡単にHTMLを得られる パーサの実装はあらかた終わったのでちょっと遊んでみた ガジェットは楽しいな iGoogleのトップに置いてみたりするとすっげ…

firefox3.1 beta2をさわってみた(適当なベンチ)

めちゃくちゃ適当だが、 http://sorrex.googlecode.com/svn-history/r63/trunk/js/parse.html に 4万文字の適当なプレーンテキストを食わせると Chrome 10ms firefox3.0 30ms firefox3.1 beta2 23ms IE6 80ms http://sorrex.googlecode.com/svn-history/r63/…

クラスの継承、オーバーライド

継承したい オーバーライドしたい 親のコンストラクタは暗黙に実行したい という用途でいろいろと試してみたがいいものがなかったので適当に書いた var C1 = newClass({ initialize: function(){ this.value1 = "foo"; }, getValue1: function(){ return thi…

colors.jsを使ったデモを追加(HSVそれぞれでセルをグラデーションするテーブル)

http://sorrex.googlecode.com/svn/colors.js.demo2.html何か有意義な使い方ができそうだと思ったのでとりあえず書いてみた テーブルのセルが500msごとに一行ずつ書き換わります 一行はHかSかVのグラデーションで、それぞれランダムに範囲(1/24)の中から一…

この間書いたパーサをgooglecodeでMITライセンスで公開することにした

前から使ってみたいと思ってたのでいい機会かも、と昨日登録してふにふにした http://code.google.com/p/sorrex/ googlecodeのホスティングはかなり使いやすくてSubversionに慣れた人なら何も考えることなく作業できると思う 私はブランチ分けたりってのをや…

KMyaccが生成するコードがグローバル変数だらけなのでクロージャで隠蔽する

http://www005.upp.so-net.ne.jp/kmori/kmyacc/kmyacc.html KMyaccユーザーズガイド を参考に気になったので手を加えてみた kmyacc.js.parserを展開してコードが生成されるのでこれを適当にほげほげする $semval($) yyval $semval($,%t) yyval $semval(%n) y…

google chromeのDateはセンシティブ というか他のブラウザ大丈夫なのか

ありえない日付の文字列でDateをnewしてgetTime()すると var integer = new Date("2008/20/1 0:0:0").getTime(); IE6/firefox3は数字が返る chromeはNaN

ひたすらメモリリークと戦ったが…

クロージャがどうのとかDOMでイベントアタッチがどうのとかでリークと聞いていたのでIEをとても疑ったが、ext-jquery-adapter.jsを使ってjQuery+ExtJSでやってたのが悪かったみたいだ ext-base.jsに差し替えて修正したらリークはなくなった Ext.WindowにGrid…

Ext.data.DataProxyを継承してGearsのデータベースに対応するProxyを作る

http://d.hatena.ne.jp/fits/20080217/1203260584 Ext JS の DataGrid でページング処理を実装 を参考にした(というかほぼそのまま…) var db = google.gears.factory.create('beta.database', '1.0'); db.open("hoge"); db.execute( 'CREATE TABLE IF NOT …

LocalServer APIのignoreQuery=true時の挙動について調べた

例えばignoreQueryがfalseのとき { "url": "hoge.html" } オフライン時にhoge.html?hoge をリクエストしてもキャッシュはされてないのはわかる しかし、 { "url": "hoge.html", "ignoreQuery": true } のとき、hoge.html?hogeをリクエストしたら URLはhoge.h…

perlとpython用encodeURIComponent()

App Engineと適当な鯖とjavascriptでクッキーをやりとりするのでencodeURIComponent()で動作を揃えることにした javascript encodeURIComponent() perl sub encodeURIComponent { my $str = encode('utf-8', shift); $str =~ s/([^0-9A-Za-z!'()*\-._~])/spr…

KMyaccでjavascriptで動く独自文法パーサを書いた

独自タグを使ったリアルタイムHTMLエディタのデモ http://d.hatena.ne.jp/ruby-U/20080908/1220865377 で使ってるパーサはパーサのパの字も知らないときに勢いで書いてみたもの 半月もかかった挙げ句にごらんの通りの出来・・・ switch(post){ case "、": postf…

テキストエリアのカーソル位置を取得する

先頭からの文字数取得 var getNowP = function(target){ var pos = 0; try{ if(Prototype.Browser.IE){ document.getElementById(target).focus(); var s = document.selection.createRange(); var r = document.getElementById(target).createTextRange(); …

save2local.jsをflash側でデータ圧縮して格納するように改変(中途半端な出来…)

ネタがないので http://d.hatena.ne.jp/ruby-U/20080908/1220865377 で試したことをしばらくは書いていこう! Gearsを知る前だったので http://labs.unoh.net/2007/01/pcjavascriptsave2localjs.html ローカルPCへ大容量データを保存するJavaScriptライブラ…

google chrome時代に最適?なちょっと重いWEBアプリの例とか(独自タグのリアルタイムHTMLエディタ)

文章投稿サイトを作ろうと思って前々から構想を練ってるんだけども、携帯でHTMLタグを書くとかどんな罰ゲームなんだよ!といいたくなるぐらいアレな作業なので、いかに携帯で簡単に(軽い)タグ構造のテキストを入力するか、という問題について考えた まずタ…

gears使って作ってみるテストその1 アンテナっぽいデモ

デモ http://sorr.biz/sorra/ソース http://sorr.biz/sorra/sorra.js 要gears http://gears.google.com/ gearsインストール方法 http://codezine.jp/a/article/aid/1397.aspx はてなアンテナがそろそろいっぱいになりつつあって、自前でやろうかと以前から考…

google検索のような記法でgearsのデータベースをググるために検索文字列からSQLのWHERE句を組み立てる(AND OR NOT フレーズ対応)

ORとかNOTとか使ってググったこと無かったんだがとりあえずちょろっと下調べをして挙動をまとめた 基本的な形は hoge hage と複数のキーワードを並べるとAND検索 hoge OR hage でOR検索 hoge -hage でNOT "hoge hage" でフレーズ んで NOTはどこで指定しても…

複数のjsファイルをそれぞれの読み込み・評価完了まで待ちながら順番にappendChild()する(jQueryとそのプラグインとか依存があるもの対策)

ブックマークレットからjQueryとjQuery.blockUIを使いたかったので書いてみた IE6とfirefox2ではこれで動いてた var RSLoader = function(arr, callback){ this.target = arr; this.index = 0; this.callback = callback; this.load(); }; RSLoader.prototyp…

gears使い始めて二日、要点をメモ

データベースを開いてテーブルを作る try { db = google.gears.factory.create('beta.database', '1.0'); db.open('hoge'); db.execute( 'CREATE TABLE IF NOT EXISTS hoge('+ 'id INTEGER PRIMARY KEY AUTOINCREMENT,'+ 'hoge TEXT' ')' ); } SQLiteそのも…

はてなアンテナにブックマークレットから追加しようとしたらURLの&以降が切れるのは

ブックマークレットが javascript:location.href='http://a.hatena.ne.jp/append?'+location.href; だから location.hrefが 〜?hoge=hogehoge&hage=hagehage ... の場合 http://a.hatena.ne.jp/append?http〜?hoge=hogehoge(ここで切れる)&hage=hagehage .…

Ajaxで低負荷な掲示板を作ってみるテスト

スタンダードなCGI掲示板をそのへんのフリースペースに設置して、そこそこ利用者が増えて人が多い時間帯に403とか吐きはじめたらもうそろそろ終わりが見えている。 perlプロセスが立ち上がってデータをファイルなりSQLなりから読み込んで出力。 これがリクエ…