2007-12-01から1ヶ月間の記事一覧

GolfDic

.st

@@golf_hash class変数の追加方法が分からず試行錯誤。 Object.GolfDic := Dictionary new! " <= ?? " !Object methodsFor: 'golf'! doesNotUnderstand: m | a s k | a := m arguments size. s := m selector, '*' copyReplaceAll: ':' with: '*:'. k := {m …

$><<'hoge'

.st

GoSTでRubyっぽく↑を実現しようとして詰まった。 !Character methodsFor: 'test'! doesNotUnderstand: m ^super doesNotUnderstand: m! ! $$ hoge! これがループしてスタックオーバーフロー(?)する。何故だ。 …と思ったら上記コードだけだとちゃんと動く(エ…

Rhino 1.7R1pre

.js

ftp://ftp.mozilla.org/pub/js/rhino1_7R1pre.zip 試してみた。 Generator print(primes = (function(){ yield 2; for(var n = 3;; n += 2){ for(var d = 3, m = Math.sqrt(n), f; d < m && n % d; d += 2); if(d >= m) yield n; } })(), uneval(primes)); p…

宣言不要

GoSTをいじってるうちに,大文字で始まる変数に直接代入が利く*1ことを今更知った。 nilをAとかZとか(大文字なら何でもいい)で代用出来ることには気付いていたが,グローバル変数として普通に使えるとは。(−−;)変数宣言の分ちょっとずつ縮むので,送信し直さ…

言語別ランキング

anarchy golf - Results by a language anarchy golf - Results by a language anarchy golf - Results by a language 欲しかった機能が。(−−#)

GoST continue

.st

今日のgoruby → [ruby] Log of /trunk/golf_prelude.rb マジで開発しているらしい。こうなったら出来る範囲で追いかけることにする。 !Object methodsFor: 'golf'! doesNotUnderstand: m | a s | a := m arguments size. s := m selector, '*' copyReplaceAl…

js.bml[12] = 'id: Stalker'

javascript:({name:'hatena-id-stalker',apps:'abdfhr',_:function(i,p,m,c){with(this){if(p=prompt(name,(self.getSelection?self.getSelection:document.selection.createRange().text)||(m=/hatena.ne.jp\/([^\/]+)/.exec(location.href))?m[1]:''))for(…

js.bml[11] = 'Hatena SemiAutoPager'

javascript:(function(n,i,j,e,d){for(i=document.images,j=i.length;j--;)if(/quickpager/.test(i[j].src)){e=i[j];d=setInterval(function(){e.click();--n<1&&clearInterval(d)},50);break}})(16) IEでしか動かないっぽい。Firefoxでリンクのクリックをエ…

GoST

gorubyに対抗してみる。 GoST.st !Object methodsFor: 'golf'! doesNotUnderstand: m | a s | a := m arguments size. s := m selector, '*' copyReplaceAll: ':' with: '*:'. ^m selector: (self class allSelectors asSortedCollection detect: [ :x | (x …

あなごるいじり

あなごるをコンパクトに表示してスクロール量軽減。連続投稿も。 [Patterns] Name = "anagol hacks" Active = TRUE URL = "golf.shinh.org/" Limit = 512 Match = "<form action="submit.rb*name="reveal">" "$SET(1=<form target=_blank action="submit.rb" method="POST" enctype="multipart/form-data">\n" "Name: </form></form>

js.bml[10] = 'Set Attributes'

/// 指定エレメントの指定属性を変更 /// javascript:(function(o,k,a,e,r,i){for(k in o)for(e=document.getElementsByTagName(k),i=e.length;i--;)for(a in r=o[k])e[i][a]=r[a]})({form:{target:'_blank'}}) フォーム送信の結果を別窓で開くようにする例…

echo: 21

神ゴルファーの一人でhttp://www.darrenks.com/golfscript/の作者でもあるflagitiousさんが最近 Smalltalk にも手を出し始めており,早速いくつか記録を更新している。 なんとか追いつこうとググったりマニュアルを眺めたりしていたら全然関係無いところの謎…

Mirroring Characters

kemcoさんに触発されてやり直したら結構縮んだ。 'hoge'.split('').reverse().join('') なんて書き方がゴルフに向くわけも無く。

String.prototype.format

.js

String.prototype.format = (function(regx, zero){ return function(){ var args = arguments, x = 0; return this.replace(regx, function(_, pos_s, flag, width, pos_w, prec, pos_p, type){ if(type == '%') return '%'; if(~width.indexOf('*')) width…

pl.gs

http://www.darrenks.com/golfscript/ なんかすごそう。でもスタックベースの言語は全く未知の世界。 512,{: 4096+8base 1>' is -'9,-1%{.3%['x''w''r']=2@? \/1&\'-'if}/n}% 解らんながらもなんとか動くものが出来たので送信したら Time out。 そうか,そん…

js.bml[9] = 'Link Them All--'

404 Blog Not Found:Bookmarklet - link them all! 勉強になるけど,オーバーキルの感が否めない。 javascript:(function(target){with(document.body)innerHTML=innerHTML.replace(/<(?:[^"'>]+|"[^"]*?"|'[^']*?')+>|(s?[fh]t?)?(tps?:\/\/[-\w_.!~*'();/?…

Print numbers

-7to:7 do:[:x|((16 radix:9-x)subStrings:$r)last displayNl]! Integer>>#radix: は基数が先頭に付いた文字列を返すので,これを除くために長くなる。 '10 11 12 13 14 15 16 17 20 22 24 31 100 121 10000'display! 実はこれでも同じ59バイト。報われない…

js.bml[8] = 'Load Scripts'

/// 外部スクリプト群の読み込み /// javascript:with(document)(function(){for(var i=0,s;s=arguments[i++];)body.appendChild(createElement('script')).src=s})('http://jqueryjs.googlecode.com/files/jquery-1.2.1.js','http://www.billyreisinger.com…

a ||= b ⇔ a || (a = b)

.rb

ライブドアブログ(livedoor Blog)| 読みたいブログが見つかる マニュアルによると,そもそも無駄な代入は生じない。 コメント出来ないようなのでここにメモ。

CSSは難しすぎる

新しいデザインにはもう一つ(より深刻な)問題があって,IEではコード部分と行番号がずれてしまう。前回のフィルターから試行錯誤した結果,どうやらこれで直るらしい。 [Patterns] Name = "Doukaku Font-Resizer" Active = TRUE Multi = TRUE URL = "ja.douk…

String.prototype.evalSharps

.js

prototype.js の Template 周りの複雑さには正直驚いた。何も考えずに実装すると String.prototype.evalSharps = function(context){ with(context === undefined || context === null ? window : context) return this.replace( /(\\?)#\{((?:[^{}]+|\{[^{}…

js.bml[7] = 'Check Readers'

/// ページからフィードを抜き出して指定のリーダで確認 /// javascript:(function(){for(var l=document.getElementsByTagName('link'),i=l.length,j,u;i--;)if(/rss|atom/.test(l[i].type))for(j=0;u=arguments[j++];)open('http://'+u+l[i].href)})('r.ha…

はてブのはてブ

http://b.hatena.ne.jp/entry/http://b.hatena.ne.jp/entry/http://ja.doukaku.org/ 今更気付いてにんまり。 追記: 自分はブクマしてないことにも気付いて慌てて追加した。使いこなしてないなぁ。*1 *1:というかそもそもいわゆるWeb2.0的なサービスは軒並み…

js.bml[6] = 'HTB/LCD Counters'

懲りずに車輪の再発明。 javascript:with(document)(function(h,d){d.innerHTML='<a href="http://b.hatena.ne.jp/entry/'+h+'" target=_blank><img src="http://b.hatena.ne.jp/entry/image/'+h+'" border=0 /></a><a href="http://clip.livedoor.com/site/'+h+'" target=_blank></a>

「デザインが多少変わりました」

ver.0.56(rev335) なんだかフォントが大きくなって見づらいので修正。 [Patterns] Name = "Doukaku Font-Resizer" Active = TRUE URL = "ja.doukaku.org/" Limit = 5 Match = "

正規表現ネタ

がやけに多いことに「最近言及したキーワード」で気付く。タグを追加するべきか否か…。

Number.prototype.toCommaed2

.js

数値をカンマ区切りにする: Days on the Moon 流石。拙作ではハナから無視したけれど,小数点以下まで区切るとなるとこうせざるを得ないか。 いや,あえて正規表現一発で出来ないことも… Number.prototype.toCommaed2 = function(interval){ var i = interva…

js.bml[5] = 'Selection to Service'

/// ページの選択文字列を取得するイディオム /// top.getSelection ? getSelection() +'' : document.selection.createRange().text // IE Opera と Safari が手元に無いので確認出来ないが,たぶんこんな感じ。 これを使ってテンプレートを作る。 // 文字…

String#rpn

.rb

http://uk-studio.net/2007/12/01/ruby_rpn_ujihisa_sixeight/ ぱっと見さらに縮みそうなので Ruby の練習にやってみる。 class String def rpn scan(/-?\d+|\S+/).inject([]){|s, t| s << (t =~ /\d+/ ? t.to_i : eval("%s#{t}#{s.pop}" % s.pop)) }[0] end…

Number.prototype.toCommaed

.js

iandeth. - javascriptで数値をカンマ区切り文字列に変換する関数メモ 例のやり方で書き換えてみる。この程度なら(対象文字列が短いので)無茶な正規表現でもさほどのオーバーヘッドは無いはず…。 Number.prototype.toCommaed = function(interval){ return S…