f8g

JavaScript

ActiveX の Automagic

メモ。 http://d.hatena.ne.jp/arikui/20070411#1176217750 var Recog = new ActiveXObject("Sapi.SpSharedRecognizer"); var Ctxt = Recog.CreateRecoContext(); var GramDict = Ctxt.CreateGrammar(0); Ctxt.EventInterests = 22; GramDict.DictationLoad(…

ファイルを自動で読み込むだけのHTA

自動で読み込むだけだけど、案外使えそう。 window.onload = function(){ autoLoad(); } function autoLoad(){ var fso = new ActiveXObject("Scripting.FileSystemObject"); var base = fso.GetParentFolderName(location.href).replace("file:///", ""); v…

声をTwitterに送る

WSHで。Julius for SAPIを使う。 http://julius.sourceforge.jp/index.php?q=sapi/index.html var user = "username"; var pass = "password"; var xmlhttp = WScript.CreateObject('MSXML2.XMLHTTP'); var Recog = WScript.CreateObject("Sapi.SpSharedReco…

あんまり使わない

ステートメントをメモっておいて、いつか使うようにするとか。 throw var x = 0; try{ if(x == 0) throw /[a-z]/; // 何でも投げる } catch(e){ alert(e); } // "/[a-z]/" これは単に使ってないだけか。 labeled var i = 0, j = 0; label1: for(; i < 10; i+…

toDate

String.toDateをどう実装しようかと思って、最初はこんな感じでやろうとした。 String.prototype.toDate = function(){ var dates = this.split("/"); return Date.apply(null, dates); }; けれど、newじゃないのでダメっぽい。 そもそも、splitなんて使う必…

NaNだけ

var a = [1, 2, 3, "aaa", NaN, 4, "bbb", NaN]; からNaNだけ取り出すとき、 var nans = []; for(var i = 0; i < a.length; i++) if( isNaN(a[i]) ) nans.push(i); とやると、"aaa", "bbb"も引っかかってしまうのか。 if( isNaN(a[i]) && typeof a[i] == "nu…

Windows スクリプト コンポーネント

を試す。 Script Component Wizardを使ってwscファイルを作る。 <component> <registration description="Test" progid="Test.WSC" version="1.00" classid="{00000000-0000-0000-0000-000000000000}" > </registration> <public> <property name="TestP"> <get/> <put/> </put/></get/></property></public></component>

IEのcloneNodeでFuck

IEでcloneNodeしたエレメントは、雛形のオレオレプロパティまで残ってます。そこで、ObjectのクローンFuck。 var test = document.createElement("div"); test.oredayo = 0; var test2 = test.cloneNode(false); alert(test.oredayo); // 0 alert(test2.ored…

GPSで現在地をGoogle Mapsに表示

昨日の続き。何となく動いた。 function load() { if (GBrowserIsCompatible()) { var map = new GMap2(document.getElementById("map")); map.setCenter(new GLatLng(37.4419, -122.1419), 13); $("start").onclick = function(){ startGPS(map); }; } } fu…

そうそう

http://blog.bz2.jp/archives/2005/09/ajax_ssh.html 多分、WinHTTP を使えばこんな Hack というか Fuck しなくても良いんじゃないでしょうか。(試してない) しかし、ActiveX 使ってるってのが難点ですけどね。

WinHTTP で Ajax っぽく

mixi にログイン。ActiveX のイベント捕捉の仕方分からんので、タイマー使ってチェック。Optionでもっと楽にできたりして。 window.onload = function(){ var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1"); WinHttpReq.open("POST", "http…

MSなJScriptイベント

http://www.microsoft.com/japan/msdn/columns/scripting/scripting04092001.aspx なめてるな。 <span id="testnaming">Click me naming - JScript</span> <script language=JScript> function testnaming.onclick() { alert("script naming - JScript") } </script> document.getElementById("testnaming").onclick と同じな…

BU-353のデータをJavaScriptで受信

っていっても、Rubyを介してやってますが。 Ruby側。ActiveScriptRubyで。 require "wincom" def open s = Serial.new s.open(7, 11, 4800, 8, 0, 0, 1, 100) return s end def get(s) s.receive end def close(s) s.close() end こんなのを一々書くの面倒で…

Juliusを使って音声でPowerPointを操作

Juliusのページのサンプルを参考に。 // PowerPoint (事前にスライドショーを実行しておく) var ppt = WScript.CreateObject("PowerPoint.Application"); if(ppt.SlideShowWindows.Count == 0) WScript.Quit(); ppt.SlideShowWindows.Item(1).Activate(); va…

Julius SAPI

http://julius.sourceforge.jp/sapi/ 対話のサンプル。 http://julius.sourceforge.jp/sapi/Samples/JavaScript/dialog.html 一部変更してWSHで使ってみる。 var reco = WScript.CreateObject("Sapi.SpSharedRecognizer"); var Ctxt = reco.CreateRecoContex…

簡単にXMLにポリゴンを付け足す

JSGIの話です。昨日の続き(ではない)。 まず、スキーマを理解してないので、XMLサンプルを参考にポリゴンのXML文字列を作る関数を書く。多少面倒なので気合が必要だけど、DOMだけでやるよりは楽。読めるデータさえできればいい適当関数。(ちなみに下のやつ…

JScriptのGC

http://www2.wbs.ne.jp/~kanegon/doc/jsmemo.txt メモリ管理どうなってんの?とかは思ってたけど。 http://support.microsoft.com/kb/266088/EN-US/ CollectGarbage なんて知らなかった。 http://www2.wbs.ne.jp/~kanegon/doc/office.txt なんか一々呼び出さ…

prototype.jsのindexOf

indexOf: function(object) { for (var i = 0, length = this.length; i < length; i++) if (this[i] == object) return i; return -1; } prototype.jsにあるってことは、ネイティブで実装されてないってことかな。-1を返してるけど、 var a = []; a[-2] = "…

配列でindexOfみたいの無いんだろうか

当然JScriptでの話。 var hairetsu = ["aaa","b","cc","ddd","eee"]; alert(hairetu.indexOf("ddd")); // 3 みたいの。無かったら作ればいいんだろうけど、何か腹立つ。 Array.prototype.indexOf = function(s){ for(var i = 0; i < this.length; i++) if(th…

NaN

ってtypeof使うと"number"なのか。Not a Numberって「数字じゃない」って意味かと思ってた。

電子国土のtop.map.event

電子国土流行ってねえなー、ってことで。 電子国土のイベントは文字列で送る。 top.map.event("leftdown", "top.leftdown"); 関数の実行はevalを使っているみたい。こんな感じで。 eval("top.leftdown" + "(" + x + "," + y + "," + key + ")"); なので、 to…

配列の最大値を出すJavascript Fuck

もう値をキーにして書く癖を付けてしまうんですよ。 a = []; a[5] = null; a[6] = null; a[9] = null; a[3] = null; a[2] = null; max = a.length - 1; 当然もの凄い制約がある上、もの凄い書きづらいので、本気でやるには勇気がいる。

比較に関するうわさと真実

alert({} == {}); // false var a = {}; var b = a; alert(a == b); // true String同士の比較よりNumber同士の比較の方が速い String同士の比較よりBoolean同士の比較の方が速い Boolean同士の比較よりNumber同士の比較の方が速いらしい "1"=="1"より"1"==1…

ADODB

使いづらいなあ。 var result = getResult( adodb.Execute("SELECT * FROM mytable;") ); function getResult(records){ var result = {fields: [], r: []}; for(var i = 0; i < records.Fields.Count; i++) result.fields.push(records.Fields(i).Name); va…

a = 1,2,3; alert(a); a = (1,2,3); alert(a); 上の方は何となく分かるけど、下の方は何?

Greasemonkeyでデータ形式を変えて保存

GreasemonkeyでHTMLから必要なデータ取り出す CSVとかにする btoa dataスキームでリンク ってのは誰かやってそうだ。 JRAの競争成績をJSON形式にするGreasemonkey。右上にリンクが出ます。 // ==UserScript== // @name JRA DB JSON // @namespace http://d.h…

JScriptでPostgreSQL

http://www.jade.dti.ne.jp/kamada/access_and_postgres/pgOleDb.htm ADO。 var user = "user"; var password = "password"; var database = "test"; var adodb = WScript.CreateObject("ADODB.Connection"); // PostgreSQLを開く adodb.Open("Provider=Post…

TURFからUmaSQLにリンクするGreasemonkey

さる競馬blog界隈を裏で牛耳ってる大物から「http://sns-turf.jp/」に招待してもらいました。なにやら競馬予想ができるらしいのですが、運営会社がケチって自分ところのデータに参照できません。腹が立つので他社へのリンクを作るGreasemonkeyを。 data:text…

サムさんが喋る

var v = new ActiveXObject("SAPI.SpVoice"); v.Speak("hello"); で喋るんだって。標高値を文字にしてGoogle Earthのツアーとともに喋らせてみたら、すげえ眠気が襲ってきた。

ファイルをdataスキームにするbookmarklet

というのはどこかにありそうだ。 javascript:s=window.prompt(null,location.href);xhr=new XMLHttpRequest;xhr.onreadystatechange=function(){if(xhr.readyState==4)window.open(%22data:text/plain;base64,%22+btoa((xhr.responseText)))};xhr.open(%22GE…