タグ

ブックマーク / constellation.hatenablog.com (33)

  • How to write JS code generator - 枕を欹てて聴く

    esprimaに入りました. 次のversionからesprima.generateで利用可能です. Issue 89 - esprima - Code generator: convert AST to source code - ECMAScript parsing infrastructure for multipurpose analysis - Google Project Hosting JSのpretty printerを作りました. ECMAScriptのparserとしてesprimaを使っていて, 自作のcode generatorがASTから綺麗なJSをprintします. で, 現在はesprima code baseに持って行こうとしています. 将来的にesprimaで使えるようになる予定なので, 使いたい!! という方はお待ちください. operator prec

    How to write JS code generator - 枕を欹てて聴く
    mattn
    mattn 2012/02/02
  • iv / lv5, ECMA262 5.1th full support - 枕を欹てて聴く

    https://github.com/Constellation/iv iv / lv5というECMA262 5.1th完全準拠を目指したengineを書いておりました (highly inspired from V8, JSC) で, もうほぼ仕様準拠しておりました, が, 正規表現のみJSCREを使っていて, そこだけECMA262と挙動が異なっていることがあり, 「ぐぬぬ」と言っていました. JSCREとは, 昔V8やJSCが使っていたものでIrregexpやYarrに取って代わられる前のもので, この間DartのVM見ていると, libjscreをcompileしていました. おかえりJSCRE! ちなみにJSCREはもともとPCREをWebKitさんがforkして別物に書き換えちゃったものです. ですが, この度一念発起してRegExp Runtime, AeroHand (so

    iv / lv5, ECMA262 5.1th full support - 枕を欹てて聴く
    mattn
    mattn 2011/10/19
    すごい...
  • iv / lv5 VM engine - 枕を欹てて聴く

    『ゆるゆり』 のOPが頭から離れなかったのですが, 最近EDも頭から離れなくなってきました... https://github.com/Constellation/iv iv / lv5のVM engine化がとりあえず完了し, byte codeにcompileしてstack VMで実行するengineになりました!! 今まで「ECMAScript engineをー」と言われるたびに, 「といっても, ASTのInterpreterなんですけどね」と言っていたのですが, これで心置きなくengineを名乗れそうな気がします. ちなみに, AST Interpreterですが, 抽象化の結果ひとつのengineでどちらも使えるとかいうかなり怪しいことになっており, --interp optionを付けるとInterpreterで評価することができます(はっきりわかるほどVMの方が速いです.

    iv / lv5 VM engine - 枕を欹てて聴く
    mattn
    mattn 2011/07/27
    今後Constナントカさんは「JavaScriptエンジン書いちゃった人」と呼ぶことにします!
  • サイボウズ・ラボユースに採択されました! - 枕を欹てて聴く

    id:TAKESAKO さんに応募のお誘いをいただき, ラボユースの方に応募させていただきまして, 採択をいただきました! そして日(と言いましてもすでに昨日ですが...), サイボウズ・ラボの方におじゃまさせていただきました! サイボウズ・ラボ : 人材募集 : サイボウズ・ラボユース 内容は, ECMAScriptの解析です. ECMAScriptの静的解析などについては今年に入ってから非常に興味を持っており, strict modeのsemanticsなどを調べ strict mode - motivation and semantics - Constellation Scorpius ECMAScriptの解析としてどこまで出来るのかを探ってまいりました. そこでこの素晴らしい機会を頂いたので, お力をお借りして, ぜひ一度やってしまいたい! という目的を持っております. Pr

    サイボウズ・ラボユースに採択されました! - 枕を欹てて聴く
    mattn
    mattn 2011/06/06
    Constナントカさん、ユースなんだ
  • ChromeFullFeedが公開停止になった話 - 枕を欹てて聴く

    ChromeFullFeedがGoogleのiconっぽいとかいう理由で一撃必殺, 公開停止になった id:Constellation です! 中身とかいちいち見てるはず無いので, おそらくあのFのアイコンだと思うのですが, あれってGoogleを暗示してますかね? いやいやいやいや, それはどうなのー, しかも説明文もGoogle関係ないじゃん...ということで, 現在反論のmailを送っていますが返ってきません!! id:os0x さんにはご迷惑をおかけして申し訳ないです... 一周してテンション高くなってきて, つい記念にscreenshotをとったりしています. すごい! 珍しい! BAN! 追記 your item [ChromeFullFeed] has been removed from the Chrome Web Store because it uses Google

    mattn
    mattn 2011/05/30
    まだBANされてないGoogleReaderFullFeedが、ちょっと前を通りますよ。
  • vs UTF-8, UTF-16, UCS4 - 枕を欹てて聴く

    前置き おはミルキィ! ChromeFullFeedが公開停止になった話を前置きとして書いていたのですが, あまり関係がないのと, 長くなりそうになってきたので, 別の記事に分けました. http://d.hatena.ne.jp/Constellation/20110530/1306701693 概要 という前置きで. ECMAScriptと切っても切れない文字コード, UTF-16. iv / lv5はUnicode変換のためにICUに依存していたのですが, UTF-8 <=> UTF-16なら何とか自分でも書けるのではないかと思い, Unicode Converterを書きました. これでlv5の依存はlibboost, libgc (Boehm GC)に減りましたー. Unicodeの変換の教授, bugつぶしにおいて, id:masa141421356 さんに非常にお世話になりま

    vs UTF-8, UTF-16, UCS4 - 枕を欹てて聴く
    mattn
    mattn 2011/05/30
  • subsetじゃない悲しい話 (JSON編) - 枕を欹てて聴く

    https://tc39.github.io/proposal-json-superset/ JSON編以外はありません. Edge case "JSON: The JavaScript subset that isn't Timeless" URL 2011-05-16 15:49:26 via PNBT このような記事が JSON: The JavaScript subset that isn't — Timeless つまり, LineTerminatorに\u2028 / \u2029が含まれない(JSON)ので, StringLiteralがうっかりJSONの方が許容範囲が広がってしまっているという話です. eval('"\u2028"'); // SyntaxError JSON.parse('"\u2028"'); // OK 自作ECMAScript Engine, lv5

    mattn
    mattn 2011/05/17
  • Chrome Dirty Hacks 01: fc2 image for LDR - 枕を欹てて聴く

    続ける予定は未定ですが01と銘打ちました, ChromeのDirtyなHackをお届けするChrome Dirty Hacks. 今回のレシピは, LDR上でfc2の画像を表示する です. 注意 Chrome Dirty Hacksはたまーに見つかるあんなのやこんなので, Chromeで実用性皆無のdirtyなhackを! というもので, 実用性位ではありません. 最近ちょっと忙しいのですが, せっかくろくでもないことを思いついたので, 試しておかなくてはと... 結果 あら不思議! fc2のblogで著名なネタ帳さんのページを例としてあげさせていただきました. LDRの記事未読件数とかが破産寸前になってて恥ずかしいので隠しました. 成果物のChrome拡張はここにおいておきます. ちなみにsupportは予定していません... fc24ldr.crx 内部的概要 fc2の画像はfc2以

    Chrome Dirty Hacks 01: fc2 image for LDR - 枕を欹てて聴く
    mattn
    mattn 2011/01/28
  • Function.prototype.bindは何がいいのか - 枕を欹てて聴く

    ES5からFunction.prototype.bindが入りました. これに準ずるものは数々のFrameworkで提供され続けてきたので, あまり馴染みの無さはないのではないでしょうか. このFunction.ptototype.bindは実はとても面白いので. 結論から言えば, Function.prototype.bindはtarget functionのConstructに完全に移譲するのでConstructorの引数束縛が行えます. またConstructor callに対して配列を渡すapply形式のものといったapplyConstructorやcallConstructorをbindを使って実装することができます. 基 Function.prototype.bindは基的にはthisとargumentsに特定の値を束縛する関数です. bindは第一引数にthis, 次から

    Function.prototype.bindは何がいいのか - 枕を欹てて聴く
    mattn
    mattn 2011/01/13
    eval使っちゃえば(ry いえ、なんでもないです。
  • LDR Full Feed security update - 枕を欹てて聴く

    security上非常に問題があるので, 必ずupdateしてください. userscript 0.0.27 http://userscripts.org/scripts/show/22702 Chrome extension (こちらは自動でupdateされます) 1.1.1 https://chrome.google.com/extensions/detail/hdcaeobehcekfkhjlkdlipnkmhgfcdpb

    LDR Full Feed security update - 枕を欹てて聴く
    mattn
    mattn 2010/10/22
  • LDRFullFeed on Safari - 枕を欹てて聴く

    Safari拡張の証明書のsignのところで躓いて, はーどうしようかーとか思っていたのですが, id:os0xさんに Loox Uと初音ミクで行こう!: Safariの証明書作成でハマった。 を教えてもらい, 無事certreqすることができたので, とりあえずChromeFullFeedをSafariにうつしてみました. fullfeed.safariextz - chromefullfeed - safari - ChromeFullFeed is extension for Chromium(or Google Chrome). loading full entry on LDR and Fastladder - Google Project Hosting ChromeAPIとほとんど同じなのにかこつけて, chromeのconnectionを使っていた部分を, var con

    LDRFullFeed on Safari - 枕を欹てて聴く
    mattn
    mattn 2010/06/18
  • JavaScript Syntax探訪 - 枕を欹てて聴く

    blogめったに書いてない... 2.5年で110件... 前々からJSのScannerを読んだりするのが楽しかったのですが, id:miya2000 さんからの「commentを削除するprogram」という話が出たときに, 結局JSのlexerというものは単体では生成できずParserと密着している(主にRegExpとRegExpとRegExpのせいです)ということがわかり, 自分でも書きたいという考えが浮かんできてC++でずっと書いていました. AST構築までできて, jqueryなどをparse成功 + json形式のtreeにシリアライズする程度になったのですが, せっかくなのでLLVMへのbridgeとか検討しています. LLVMおもしろいー. Constellation/iv · GitHub で, Constellation's gist: 387832 — Gist くら

    JavaScript Syntax探訪 - 枕を欹てて聴く
    mattn
    mattn 2010/05/21
  • embed V8 - 枕を欹てて聴く

    embed V8がちょう楽しいので. 最近JSの処理系のソースコードを見るのが個人的な楽しみだったのだけれど, embed V8が思ってたよりもずっと手軽に処理系を触れると知って... 原文 Embedder's Guide - Chrome V8 — Google Developers id:edvakf さんによる邦訳. 素晴らしく, 読むとわくわくしてきます. Embedder's Guide - V8 JavaScript Engine - JavaScriptで遊ぶよ - g:javascript で, V8の該当ソース読み, C++で動かしてみて, id:edvakfさんの最後に言ってる疑問が確証もとれたので. #include <v8.h> #include <stdio.h> using namespace v8; static Handle<Value> acGetsGe

    embed V8 - 枕を欹てて聴く
    mattn
    mattn 2010/04/08
    embedのし易さならv8が1番な気もする。
  • NPAPI拡張 iTunes Daemon - 枕を欹てて聴く

    iTunesで今なっている曲の情報を取得するAPIを提供するGoogle Chrome拡張, iTunes Daemonを書きました. Windowsでしか動きません. COMを使っているからです... Constellation/iTunesDaemon · GitHub まだまだ実験段階ですが, installしたい方はこちらのlinkから拡張をdownloadしてください. Extension APIについて 外部APIしか提供しません. また, 拡張機能のID/itunes_daemon.jsを用意しているので, function itunes_daemon(){ console.log('iTunes Daemonがinstallされているよ!!'); } var script = document.createElement('script'); script.type = "

    NPAPI拡張 iTunes Daemon - 枕を欹てて聴く
  • Taberarelooのタグ補完について - 枕を欹てて聴く

    Taberarelooは基的にid:ConstellationによるTombloo experimental branch on Chromiumだと思ってもらって結構で, 面白いと思ったことを放り込みます. そのためbugがでて急遽修正というreleaseも多いのですが... また一方で tomblooと違うというところは大抵bugであるとみなしてもらって結構です. Twitter / Constellation: @you999 何かbugありましたかー? 基的に ... と公言していたりするのですが(Chromeでは実現不可能とかいう部分以外に関して), Tomblooと意図的に差別化している部分があります. それがタグ補完部分です. 今回logicをもうちょっと変更しいろいろ面白くなったので記事にしました. 補完, 何やってるの? Taberarelooの補完はAbbrevia

    Taberarelooのタグ補完について - 枕を欹てて聴く
    mattn
    mattn 2010/02/26
  • ReBlogできる, Taberareloo ver 1.0.0 - 枕を欹てて聴く

    Chrome Web Store - Taberareloo Taberareloo の ver 1.0.0を公開しました. ReBlog, Text, Photo, Quote, Videoなどなどに対応し, 一段落したのでmajor version番号を上げ, 1.0.0となります. 以下使い方および追加機能です. QuickPost 使い方 Chromeには標準ではcontext menuをさわることはできません. そこで, 特定のキーを押すと, 上記動画のようにメニューが表示され, 選べるという形にしました. まず, キーの設定です. id:os0x さんのChromeKeyconfig, もしくはChromeGestureをinstallしている方は, そちらのほうでも設定ができます. 2つもの拡張がキーを監視するのはもったいないですからね!!! Chrome Keyconfig

    ReBlogできる, Taberareloo ver 1.0.0 - 枕を欹てて聴く
    mattn
    mattn 2009/12/31
  • Ruby Net::GitHub::Upload - 枕を欹てて聴く

    GitHubのdownloadsが遅延がひどく, Taberarelooのversionを0.0.2にしても一向に変化しないのと, いちいちdownloadsに入れるのが億劫になったので, Big Sky :: 被はてなブックマーク数を表示するGoogle Chrome拡張書いた。で見たNet::GitHub::Uploadを使おうと思ったのだけれど, どうせならRakefileから全部Rubyでやりたいという思いがわきあがってきたので, typesterさんのtypester/net-github-upload-perl · GitHubRubyに移植しました. Constellation/ruby-net-github-upload · GitHub これを使うと, # require require 'rubygems' require 'net/github-upload' #

    Ruby Net::GitHub::Upload - 枕を欹てて聴く
    mattn
    mattn 2009/12/15
  • crxmakeをGoogle Extensions Galleryに対応 - 枕を欹てて聴く

    追記 id:os0x さんから, @Constellation ちょうど同じネタで書いてましたね。ちなみに、pemファイルを含める必要があるのは初回のみなので、割と事故率は低いかも。 http://twitter.com/os0x/status/6303238609 と教えてもらいました! Google Extensions Galleryにわくわくしています. で, なんだかんだでこのzipファイルを作るのが面倒になってくることがあります. なぜなら, pemファイルを入れてzipにしなければならないからです. 拡張が複数になるとpemファイルも増え, 名前ごとにtaberareloo.pemなどにしますが, zipファイルにはkey.pemで入れなければならないらしいTransferring an existing extension to the gallery. - Chromiu

    crxmakeをGoogle Extensions Galleryに対応 - 枕を欹てて聴く
    mattn
    mattn 2009/12/04
  • Yet Another Tombloo on Chromium: Taberarelooを公開しました - 枕を欹てて聴く

    Yet Another Tombloo on Chromium, Taberareloo(タベラレルー) を公開します. Constellation/taberareloo · GitHub Taberareloo(タベラレルー)はクロスポストに特化したTombloo互換を目指すChromium Extensionで, 現在, browserActionがscriptableに動作できないという都合上, Link Post部分のみの移植となっています. そのためTaberarelooは現在, Tomblooのlink post部分の移植となっており, Reblogなどは出来ませんが, SBMへのクロスポストなどが可能になっています. browserActionがscriptableな動作可能になるか, もしくはbrowserActionがもう全くscriptableにする気はない! と断定

    Yet Another Tombloo on Chromium: Taberarelooを公開しました - 枕を欹てて聴く
    mattn
    mattn 2009/11/30
    great!
  • Goでtree - 枕を欹てて聴く

    面白そうなのでGoでとりあえずtree command(色なし版)書いてみた. なぜtreeなのかはちょっとわかりません. channelも使えて満足です. goroutineもとってつけたように使っています. http://gist.github.com/231953 package main import ( "fmt"; "flag"; "path"; "io"; "os"; "container/vector"; ) type Walker struct { Floor int; List *vector.Vector; Out chan string; } type Node struct { Floor int; Last bool; Name string; } func (w *Walker) VisitDir(p string, d *os.Dir, last bool)

    Goでtree - 枕を欹てて聴く
    mattn
    mattn 2009/11/12