Subscribed unsubscribe Subscribe Subscribe

枕を欹てて聴く

香炉峰の雪は簾を撥げて看る

JSC Array optimization for adding new property

This is a blog post for 12/6 VM advent calendar. See http://qiita.com/advent-calendar/2012/vm for more nice blog posts :) Introduction ECMA262にとってArrayは最も重要なObjectの1つであり, loop内で高い頻度でアクセスされる性質上, Arrayの最適化…

iv / js ES.next, update for February 27, 2012 Draft

iv / js ES.next parser (my original ES.next parser, see this entry) is updated to follow February 27, 2012 Draft ArrayComprehension ArrayComprehension is supported. [ v * v for (v of [1, 2, 3])]; to [ { "type": "ExpressionStatement", "expr…

ECMAScript code generator: escodegen

Keeping Esprima core simple Esprimaのcoreをparser levelに保つということで, code generatorが単一のmoduleになりました.escodegen Install npm install escodegen example simple example: (from http://ariya.ofilabs.com/2012/02/primavera-updates-of…

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を…

Announcing Lv5 new RegisterVM

lv5がRegisterVMになりました. これを持ってversion 0.0.2とします. 次の目標は, さらなるtuning, RegExp JIT, 部分的なES.next対応の開始です. benchmark RegisterVM ============================================ RESULTS (means and 95% confidence inte…

lv5.current 2011/12/18

lv5の実装進捗 test262はもちろん全てpassしているので安心です. 8bit string is landed in lv5 「天下のJSCさんもやってないからー」と言いつつやってなかったのですが... ある日, https://lists.webkit.org/pipermail/webkit-dev/2011-November/018618.htm…

constへの異常な愛情, または私は如何にして心配するのを止めてConstDeclarationを愛するようになったか

JS Advent Calendar, オレ標準コース 1日目, id:Constellation です. あれから1年ですか... 前半で, ES.nextに導入されたDeclarationについてさっと, そして後半でタイトルの説明をします.この文書は, 2011/12/01現在のES5 Engineの実装とES.next draftに基…

ES.next parser / lexer in JS

現時点でのdraftに対応したES.nextのparser / lexerをJSで書きました.iv / js, ES.next testASTを表示します. BNF baseの方を信用したので, super()とかはSyntax Errorとします. BNFはdraftと ECMAScript 6th の構文をまとめてみた - hogehoge @teramako を…

iv / lv5, ECMA262 5.1th full support

https://github.com/Constellation/iviv / lv5というECMA262 5.1th完全準拠を目指したengineを書いておりました (highly inspired from V8, JSC)で, もうほぼ仕様準拠しておりました, が, 正規表現のみJSCREを使っていて, そこだけECMA262と挙動が異なってい…

Let's WeakMap

ES.nextとして入っていて, ECMAScript 6にも入りそうな気配がするWeakMap. という訳で. WeakMapとは WeakMapとは, harmony:weak_maps [ES Wiki] keyへの参照が弱参照 keyが任意のObject valueはなんでもあり というものです.弱参照であるため, WeakMapのkey…

固定長配列

id:uupaa さんが固定長配列があるといいなあと思う時があるという話を受けて. 食いついてしまいましたー... 固定長配列 ECMA262 5.1thにおいては固定長配列を利用することができます. Arrayのlengthの[[Writable]]をfalseにしてしまえばいいですー! 仕様では…

NaN boxing

書いておかないと将来自分が意味不明になるので, NaN boxingについて. LuaJITが古くから(wingologさんの素晴らしい記事によると), JSCが前から, SpiderMonkeyはfatvalsで, NaN boxingすることによりJSValを64bitに収めることを行っています. iv / lv5は以前…

iv / lv5 VM engine

『ゆるゆり』 のOPが頭から離れなかったのですが, 最近EDも頭から離れなくなってきました...https://github.com/Constellation/iviv / lv5のVM engine化がとりあえず完了し, byte codeにcompileしてstack VMで実行するengineになりました!! 今まで「ECMAScri…

vs UTF-8, UTF-16, UCS4

前置き おはミルキィ! ChromeFullFeedが公開停止になった話を前置きとして書いていたのですが, あまり関係がないのと, 長くなりそうになってきたので, 別の記事に分けました. http://d.hatena.ne.jp/Constellation/20110530/1306701693 概要 という前置きで.…

subsetじゃない悲しい話 (JSON編)

JSON編以外はありません. Edge case "JSON: The JavaScript subset that isn't Timeless" URL2011-05-16 15:49:26 via PNBT このような記事が JSON: The JavaScript subset that isn't — Timelessつまり, LineTerminatorに\u2028 / \u2029が含まれない(JSON)…

Function.prototype.bindは何がいいのか

ES5からFunction.prototype.bindが入りました. これに準ずるものは数々のFrameworkで提供され続けてきたので, あまり馴染みの無さはないのではないでしょうか. このFunction.ptototype.bindは実はとても面白いので. 結論から言えば, Function.prototype.bind…

ES5, Property Descriptor解説

JavaScript Advent Calendar 2010 6日目のid:Constellationです.ECMAScript5になって大きく変更されたといえば, strict mode, early error, Object extras, そしてProperty Descriptorの概念です. ということで今回はES5 PropertyDescriptorについてまるっと…

Re-Implement ECMA262 5th Engine@Firefox Developers Conference 2010

LTで話してきました. Constなんとか Constellation です. Firefox Developers Conference, 素晴らしい方々とお会いできて大変楽しかったです. ありがとうございました.Re-Implement ECMA262 5th Engine - Constellation Scorpiusこれが当日のLTの資料です. …

Math.random

JavaScriptのMath.random()のばらつき具合。 『JavaScript Math.random Test』 URL2010-10-06 17:21:54 via webで気になったので. ばらつきは上記のページで試してみるとして. まず, ES5thのMath.randomはimplementation-dependentです. 15.8.2.14 random ()…

Eval ContextとかInteractive JS Shellとかもろもろ

オレ標準JavaScript勉強会での発表のSlideです. IJS: Interactive JS Shell - Constellation Scorpius内容はInteractive JS Shellを実装する際に問題になる, Token Streamの問題, そして同一Contextでの評価の継続の問題です. Tumblrがまさかのmaintenanceだ…

LDRFullFeed on Safari

Safari拡張の証明書のsignのところで躓いて, はーどうしようかーとか思っていたのですが, id:os0xさんに Loox Uと初音ミクで行こう!: Safariの証明書作成でハマった。 を教えてもらい, 無事certreqすることができたので, とりあえずChromeFullFeedをSafari…

JavaScript Syntax探訪

blogめったに書いてない... 2.5年で110件...前々からJSのScannerを読んだりするのが楽しかったのですが, id:miya2000 さんからの「commentを削除するprogram」という話が出たときに, 結局JSのlexerというものは単体では生成できずParserと密着している(主にR…

tech talkの資料

連携周りのLTをさせていただきましたー. 超早口ですごい緊張していた記憶があるので, ustreamを見るのが怖い...拡張間連携とEvent Driven JavaScript - Constellation Scorpius

embed V8

embed V8がちょう楽しいので. 最近JSの処理系のソースコードを見るのが個人的な楽しみだったのだけれど, embed V8が思ってたよりもずっと手軽に処理系を触れると知って...原文 Embedder's Guide - Chrome V8 — Google Developers id:edvakf さんによる邦訳. …

Function#name

知らなかったのだけれど, こんなのできるんですね. 普通にerror stackをparseしてやろうとか思ってしまっていた. function debug(){ var funcname; if(arguments.callee.caller){ funcname = arguments.callee.caller.name; } if(!funcname) funcname = "ano…

NPAPI拡張 iTunes Daemon

iTunesで今なっている曲の情報を取得するAPIを提供するGoogle Chrome拡張, iTunes Daemonを書きました. Windowsでしか動きません. COMを使っているからです... Constellation/iTunesDaemon · GitHubまだまだ実験段階ですが, installしたい方はこちらのlinkか…

Taberarelooのタグ補完について

Taberarelooは基本的にid:ConstellationによるTombloo experimental branch on Chromiumだと思ってもらって結構で, 面白いと思ったことを放り込みます. そのためbugがでて急遽修正というreleaseも多いのですが... また一方で tomblooと違うというところは大…

ChromeFullFeed API

Chrome拡張は連携超楽しい!! という話になったので, ChromeFullFeedの外部APIを作成し, versionを1.1.0にしました.sample var CHROMEFULLFEED = 'hdcaeobehcekfkhjlkdlipnkmhgfcdpb'; chrome.extension.sendRequest(CHROMEFULLFEED, { action: 'fullfeed', u…

Selection内のHTML Textをいい感じに取得する

追記: Rangeを使うと, 86行に及ぶDOM操作がなんと2行に! 勝手に添削: Selection内のHTML Textをいい感じに取得する: Days on the Moon Tomblooの最新版ではEvernoteの取り込み機能がつき, これに伴いHTML Textを取得する周りで大規模な変更がありました. こ…

Chrome Dirty Hacks 01: fc2 image for LDR

続ける予定は未定ですが01と銘打ちました, ChromeのDirtyなHackをお届けするChrome Dirty Hacks.今回のレシピは, LDR上でfc2の画像を表示する です. 注意 Chrome Dirty Hacksはたまーに見つかるあんなのやこんなので, Chromeで実用性皆無のdirtyなhackを! と…

Yet Another Tombloo on Chromium: Taberarelooを公開しました

Yet Another Tombloo on Chromium, Taberareloo(タベラレルー) を公開します. Constellation/taberareloo · GitHub Taberareloo(タベラレルー)はクロスポストに特化したTombloo互換を目指すChromium Extensionで, 現在, browserActionがscriptableに動作でき…

Diff algorithm

id:smoking186 さんの指摘を受け, First Authorの名前などを付加しました. どうもです. 記事内のcodeは最適化などを施しておらず, 冗長に, 定義どおりに書いています. ifがまとめられたりとかしますが, そのあたりはご容赦を...Rubyでlevenshtein距離を見て…

Deferred.bind

これはすごい. JSDeferred に引数束縛の bind, curry を追加 / Google Chrome の JSDeferred のインテグレーションを書いた - #生存戦略 、それは - subtech ChromiumのAPIは非同期+callback必須ばかりで, 「うわー. JSDeferred / Mochikit Deferredがないと…

API Checkについて

id:you999 さんの疑問に. GM ver 0.8.2からGM_openInTabはデフォルト挙動, つまりconfigのbrowser.tabs.loadInBackgroundの値に沿った開き方をするように変更されました.(手前味噌のものでよければこちら参照Greasemonkey ver 0.82解説 - 枕を欹てて聴く) よ…

Greasemonkey ver 0.82解説

なんか解説を待たれていたらしいので, Twitter上だけでなく, 詳しく. 該当記事はこれ. http://www.greasespot.net/2009/09/greasemonkey-082-released.html * Do not inject scripts into file: and about: URLs by default, for security reasons. (#1000) …

ChromeFullFeed ver 1.0.0

LDRFullFeedのChromium Extension版 ChromeFullFeed ver 1.0.0 http://code.google.com/p/chromefullfeed/contentWindowの穴を埋めるため試行錯誤した結果, ひどい手を使いまくるという結果となりましたが, きちんと動作したので公開します. install Google …

Ruby/jsonschema

今まで, json schemaのvalidation libraryであるjsonschemaはPythonとJavaScriptのものが用意されていました.Chromium Extensionのmanifest.jsonのschemaをid:os0xさんがすでに書いていてhttp://gist.github.com/179669(os0x++)それをcrxmakeで利用したいな…

LDRize Siteinfo parse

多少修正 LDRize作者, snj14さんの許可を受け, Wedata上にLDRizeデータを放り込みました. 以下のRubyのscriptによって作成されたデータを一括登録しています 本家のものにあわせて. はじめに書いたRubyのほう. require 'open-uri' require 'kconv' require '…

unsafeExec on JSDeferred

SmartLDR更新 - 素人がプログラミングを勉強していたブログ のを見て, 関数に押し込むのもいいなあと思った. けど, このままでは返り値が利用できない + Fxのlocation.hrefは非同期らしい JSDeferred を高速化する (試し中) - 冬通りに消え行く制服ガールは✖…

ある要素がAutoPagerizeのどのページから取得されたものかを判断する.

うたたね - Tombloo+ AutoPagerise のお作法(修正版) これ関連. こんなのでどうかな? AutoPagerizeのAPIとして追加する. window.AutoPagerize.nodeOriginUrl = function(node){ if (ap == null || typeof(node) == "undefined") return location.href; var…

GM_listValues, GM_deleteValue, @unwrap

Greasemonkey 0.8.20090123.l # Added translations: ar-SA, bn-IN, hu-HU, id-ID, ro-RO, sr-RS, vi-VN. # Fix for ticket #111 (anomalous separators in the monkey menu). # Add GM_deleteValue() and GM_listValues() APIs (#38). # Restore the anonym…

Client Side Databaseについて

あんまり解説なかったのでメモ. iReader作ったときに利用した. 正直今のところSafariしか対応してないから, iPhone/iPod touch専用ページくらいしか使いどころないのですが.HTML5なのでいつかはcross-platformで役に立つことを願いつつ. 仕様 HTML Standard …

Fx Socket

socket面白いなあ. ということでSMTPじゃないんだから別にnsIFTPChannelとかあるのにFirefoxのsocketでFTP 通信してみた. var Cc = Components.classes; var Ci = Components.interfaces; var WindowMediator = Cc['@mozilla.org/appshell/window-mediator;1…

相対パス解決

なんか適当に書いた. 全くbrowserに頼らず, すべて展開する. きっとbugがある. そうに違いない.. pathToURLは, A要素を使ったもの(browserに頼ってるもの). 比較用. (from AutoPagerize) function pathToURL(path) { var link = document.createElement('a')…

AppJet で適当Cross-Site

気分でこんなの書いてみた. セキュリティー的にひどいとかそんなの気にしてないぜ! ってな感じの実験的なもの. http://access.appjet.net/ Error 404 (Not Found)!!1 /* appjet:version 0.1 */ var default_params = [ 'url', 'method', 'callback' ] functi…

FirefoxからSMTPでメールを送る

Simple Mail を参考に. responseのチェックもしてないし, error処理も書いてないけど要はこの流れでできるということで. 使うときには, error処理とかも書かないと. 命令先は, Gmailのsmtpサーバーで. socketつないで, inputStreamを読みながら, outputstrea…

某侵略者のゲーム

JavaScript でテトリスみたいなゲームを作ろう! - セキュリティ&プログラミングキャンプ JavaScript 入門講座資料 に感化されて作ってみた.ゲーム作るのは難しいです... utatane: Test/InvaderIEでも動くけど, ネイティブじゃないからか使い物にならない遅…

FirefoxのJSでdialogを拡張する

NortificationBoxみたいに最初からwindowから要素自体を取得することができないので、openDialogで作るしかない。 ただ、openDialogの第一引数はURIであり(本来ならここに、自分の作ったxulファイルへのURIを入れるが、今回はJSだけで何とかできないか模索)…

JSDeferred

JSDeferred - 素人がプログラミングを勉強していたブログ これみてJSDeferredを勉強しようとなんかやってみたけど、 // ==UserScript== // @name Deferred Test // @namespace http://d.hatena.ne.jp/Constellation/ // @include http* // @require http://s…

Irvine

downloaderのIrvineってものがあります。 DMonkeyというスクリプトエンジン(言語実装はほとんどJS)を内蔵しているため、JavaScript的な書き方で細かいScriptを書くことができ、便利です。 最近開発が再開してうれしかったのですが、FirefoxからIrvineに送る…