Posts Tagged ‘エラー’

Firefox4でcan’t wrap XML objectsというエラーが出る件について

Firefox4にしてから主にGreasemonkeyのGM_addStyleメソッドで

TypeError: can’t wrap XML objects

というエラーが出たりすることがあります。
これはBug 609143 – E4X XML objects cannot be passed to sandboxのsandbox内でのE4X(XML)の挙動が変わった(意図的に)のが原因らしいです。(あまり詳しくないので…)

GM_addStyle(<><![CDATA[ 
/* 適当なCSSのコード*/
    .clearfix:after {
        content: ".";  /* 新しい要素を作る */
        display: block;  /* ブロックレベル要素に */
        clear: both;
        height: 0;
        visibility: hidden;/*表示はしない*/
    }
 ]]></>)

のような感じでE4X(XML)を直接GM_addStyleに渡しているときなどに起きています。
これを回避するためには、E4X(XML)を明示的に文字列化して渡せばよい見たいです。

GM_addStyle(String(<><![CDATA[
/* CSSコード */
]]></>));

のようにString(E4X)するか、E4X全体をtoString()、”"+E4X のような感じで文字列化すればいい。
もしくはGreasemonkeyにはメタ情報に// @resource CSS example.css という感じで、CSSファイルをロードできるので、そのファイルをGM_addStyle(GM_getResourceText(‘CSS’));して使うなどでもいいと思います。

もしくは下のようにGM_addStyleを書き換えてしまう事でも回避できそうです。(あんまり推奨しないけど)

function GM_addStyle(css) {
    if (!GM_addStyle.style) {
        var head = document.getElementsByTagName("head")[0] ||
                document.documentElement;
        if (!head) {
            return;
        }
        GM_addStyle.style = document.createElement('style');
        GM_addStyle.style.type = 'text/css';
        head.insertBefore(GM_addStyle.style, head.firstChild);
    }
    GM_addStyle.style.appendChild(document.createTextNode(css) + '\n');
}

書き換えの参考

Constellation’s gist: 803115 — GistのようにTomblooパッチでGM_addStyleの挙動を変えてしまおうと思ったけどよく分からなくなってあきらめました。

参考

東京Node学園 1時限目のアウトラインメモ

東京Node学園 1時限目

~サーバサイドJavaScriptの幕開け~

http://atnd.org/events/13529

Togetter - #tng1のまとめ

http://togetter.com/li/115851

 

タイムテーブル

時間

題目

発表者

Ust

19:00-19:25

開場

 

 

19:25-19:30

ご挨拶 / 5分でわかるNode.js

@meso

#1 04:42AM

19:30-20:00

ECMAScript5時代のJavaScript再入門

@masuidrive

20:10-20:40

『非同期プログラミングの改善』のエッセンス

@koichik

21:50-21:20

Nodeにおけるテスト手法

@Jxck_

#2 05:49AM

21:30-21:50

LT大会

 

 

 

Kinect + node.js + Audio Data API でテルミンみたいな楽器を作る

@hakobera

 

「node.jsによるマルチプレイヤーネットワークゲームの可能性」

@ndruger

-22:00

完全撤収

 

 

 

ご挨拶

http://tng1.mesolabs.com/

Node.jsについては著者のブログを読む

Node.jsの目的はスケーラブルなネットワークプログラムを作成する

既存のI/Oライブラリがないため、位置からブロックしないライブラリを作成することができる。

 

ECMAScript5時代のJavaScript再入門

増えた機能

JSONサポート

配列のイテレーター

Getter, setter

Strict mode

5thは誰のためのもの

独自仕様の整理してAjaxなどから大規模なものも増えてきた。

多人数の開発やコードのりユーズのための整理

非同期処理

JavaScriptは非同期処理を書きやすいけどネストが深くなる。

JSDeferredライブラリで縦に非同期処理がかけるのとエラー処理を最後にまとめて書くことができる。

Property Descriptor

Setter/Getter

ObjectFreeze/Sealでアクセスレベルの指定

Object.create(),cloneなど

Objectの拡張はライブラリでも似たようなことが可能だが、ESでの仕様としてあることで共通知識として利用できるため可読性などが向上する。

PhotoShare

サーバー側はRuby

HTTP経由でアプリテストすると時間がかかる。

 

ES5によって独自から共通へ

 

『非同期プログラミングの改善』のエッセンス

http://www.slideshare.net/koichik/node1

Node.jsの非同期スタイル

イベントリスナ・スタイル

onメソッドでイベント

コールバック・スタイル

APIの最後にコールバック関数を渡す

(プロミス)

今はない

Deferredみたいなメソッドチェーンもできた

 

コールバックスタイルの問題

無名関数を使うとネストが深くなってしまう

関数名をつけて使うとgotoもどき

try..catchがうまくいかない

改善するには

コールバックと無名関数を分離する

コールバックの役割は「次」の無名関数を読み出す

その無名関数は「アクター」と呼ばれる

アクターとコールバックを結びつける

フロー制御モジュールライブラリを使う

複数のアクターを受け取ってって、アクターにコールバック(next)を提供する。

フロー制御を導入すると

ネストが深くならない

可読性が向上する

エラー時のルーティング

アクターごとのエラー処理をしたくない

エラーが起きたら途中のアクターを飛ばす

 

Nodeにおけるテスト手法

Nodeにおけるテストの考え方

Assertion

require(“assert”);

Testing フレームワーク

 

require(“should”);

obj.should.test(“”)

Objectを拡張して、列挙されないようにしてる

require(“expresso”);

赤いシャツの人が作った

jscoverageの出力

tearDownとかない

require(“nodeunit”)

Unit系のモジュール

qunitみたいな感じ

ブラウザでも動作する

exportの代わりにthisを使うことで、どちらでも動作するコードがかける

sandbox機能

CI的な機能もあるよ

クライアントとサーバサイドどちらも同じようにかけるのは大きな利点になる

require(“Vows”);

非同期に適してる作り

 

require(“tobi”)

ブラウザ的なものをシミュレートしてテスト(envjsみたいな)

 

 

LT大会

Kinect + node.js + Audio Data API でテルミンみたいな楽器を作る @hakobera

http://d.hatena.ne.jp/scalar/20110324/1300983209

kinnect hackatonではXBOX360所有者がで2/20

kinect+node.js+Socket.IO

Kinect -TCP/IP - NodeJS – Socket API – ブラウザ

 

Kinect.jsの作成

C++実装 -> Javaラッパー -> Rhino -> JavaScript

JavaScriptkinectで動くものが帰る

DSJ(デバイスサイドJavaScript)

現在の欠点

遅い

使ってるラッパーの制限

node.jsではない

 

node.jsによるマルチプレイヤーネットワークゲームの可能性 @ndruger

http://www.slideshare.net/ndruger/nodejs-7375453

リアルタイム→Node.jsなら簡単

サーバークライアントで693行程度で簡単にかける

敷居が高かったものが手軽に作成できる時代

 

 

他の参加者のまとめ

東京Node学園 1時限目 メモ – すぎゃーんメモ

2011-03-25 – のりーごのアミーゴ日記

東京Node学園 1時限目にいってきた – Web::Service::Blog->new( user => ’hide_o_55’ )

東京Node学園1限目行ってきましたメモ – y-kawazの日記

詳細に書かれているので参考になる

 

感想

会場(リクルートアネックス1ビル B1F)も伴ってか何かゆったり広々な感じであんまりガツガツとした雰囲気がなかった。角度、距離(文字サイズなども)的にスライドを見るのがつらい部分もあった。

『非同期プログラミングの改善』のエッセンスLTが面白かった。


タイムテーブル

時間


題目


発表者


Ust

19:00-19:25


開場







19:25-19:30


ご挨拶 / 5分でわかるNode.js


@meso


#1 04:42AM

19:30-20:00


ECMAScript5時代のJavaScript再入門


@masuidrive




20:10-20:40


『非同期プログラミングの改善』のエッセンス


@koichik




21:50-21:20


Nodeにおけるテスト手法


@Jxck_


#2 05:49AM

21:30-21:50


LT大会










Kinect + node.js + Audio Data API でテルミンみたいな楽器を作る


@hakobera







「node.jsによるマルチプレイヤーネットワークゲームの可能性」


@ndruger




-22:00


完全撤収





Jetpack SDKで生成したアドオンの名前にスペースなど入れる方法

xpiの名前変えたいのだけどよくわからん。パッケージフォルダ名とpackage.jsonを書き換えて同名にしてもcfx xpiでエラーでる。

コード整形とシンタックスハイライトするjetpackを作った – Cherenkovの暗中模索にっき

Jetpack SDKでcfx xpiによってxpiファイルを生成して、そのアドオンをインストールするとpackage.jsonのnameに書かれていた名前がアドオンの名前になります。
しかし、package.jsonのnameはパッケージの名前なので大文字やマルチバイト文字やスペースなどが使えず自由に名前をつけようとするとエラーになります。
名前を自由につけるにはpackage.jsonにfullNameというキーを追加して、そこにスペースや大文字(マルチバイトをつけるとエラーになった…)を使った名前をつけることで、cfx xpiによって生成されたアドオンの名前に反映されます。

{
 "id": "jid0-xxxxxxxxx",
 "version": "0.1",
 "description": "test",
 "name": "test-package",
 "fullName" : "THIS is TEST package",
 "author": "azu"
}

実際の生成の流れとしてはpackage.jsonにfullNameがなかったら、nameの中身がfullNameとして扱われるようになっているみたいです。
fullNameに日本語入れる方法はよく分かりませんでした。ユニコードエスケープしてもエラーになる。
生成されるxpiファイル自体のファイル名はnameの中身が使われるようです。

Google Web Historyに見たページを自動記録するアドオン(Jetpack SDK) | Web scratch
http://efcl.info/2010/0809/res1872/
Labs/Jetpack/JEP/31 – MozillaWiki
https://wiki.mozilla.org/Labs/Jetpack/JEP/31#Packages

iTunesが起動できない&アンインストールできない

iTunesをバージョンアップしたら、エラーがでてアンインストールできなくなり、インストールもできなくなったので解決方法のメモ。

原因はレジストリがロックされているという感じらしいけど、強制的にレジストリを削除するRegASSASSINを使ってみたりしたが、それもで禁買ったようなので、Windows Installer CleanUpを使ったところ上手くアンインストールできた。

Windows Installer CleanUpをダウンロードしてきて、Vistaの場合は管理者権限で実行するを選ばないとインストール出来ないので注意。
なぜかスタートメニューに追加され無かったのでC:\Program Files\Windows Installer Clean Upに行き、msicuu.exeを管理者権限で実行して、iTunesを選んで削除する。
そしてiTunesをインストールし直したら、起動するようになった。

エラーページを便利にする拡張機能「ErrorZilla」とキャッシュページを探す「Resurrect Pages」

Webを巡っていると404などのエラーページに遭遇することがあります。
そこで、利用者はどうするかというとあきらめてまた後でくるか、グーグルのキャッシュを覗くなどのWebサービスを利用した閲覧をためしてみたりする。

そういうWebサービスへのアクセスを助けてくれるアドオンとして「ErrorZilla」があります。
このアドオンは何かと派生が多いので、自分に合ったものを使えばいいかと。
本家ErrorZillaは更新していないので、

辺りが候補になる。CrendKingErrorZilla Modをベースにしていてプロクシを通してのアクセスが容易にできるように改良されています。

後はほぼ同一の機能で
- Google Cache (view the page cached by Google)
- Coralize (use Coral CDN proxy to connect again)
- Wayback (view an earlier version of this page)
- Ping (use a server to ping the target server)
- Trace (trace the network route from you to the server)
- Whois (look up who owns the website)

それぞれへのリンクがエラーページ上で表示されます。
背景画像をlolifoxにしたlolifox-ErrorZillaなんてのもあります。

また同様にキャッシュへのアクセスを助けてくれるResurrect Pagesというアドオンも紹介。
Resurrect Pagesは主に検索エンジンのキャッシュページへのアクセスをナビゲーションバー上のボタンもしくは右クリックから行うことができる。

o CoralCDN
o Google Cache
o Yahoo! Cache
o The Internet Archive
o MSN Cache
o Gigablast
o WebCite

主に海外の検索エンジンが使われています。

VistaとXPのMicrosoftエラー報告ダイアログを無効にする方法

アプリケーションが強制終了などした場合に、「Microsoftへのエラー報告」というポップアップの表示を無効にする方法

Vistaでは完全に対応してないアプリを普通に終了した場合にも起きたり、根本的な解決手段をこれから得ることが難しいので、
無効にしてみた。

Vista

  1. スタートメニューから「コントロールパネル」を開く。
  2. 「システムとメンテナンス」をクリック。
  3. 問題のレポートと解決策のグループにある“解決策の確認方法の選択”をクリック
  4. “詳細設定を行います”をクリック
  5. “無効にします”を選択してOK

XP

  1. 「マイコンピュータ」を右クリックして「プロパティ」 を選択
  2. 詳細設定のタブを開いて「エラー報告」をクリック
  3. 「エラー報告を無効にする」にチェックを入れてOK

Vistaだと少し面倒くさいですが、毎回のように表示されるのがいやな人は設定してみるといいかも。

参考サイト

プロフィール: azu(アズ)
Firefoxの事やソフトウェアの紹介や使い道、Greasemonkeyの作成
  • OS:Windows Vista, 7
  • ブラウザ:Firefox
  • Twitterのアカウントはこちら
  • azu_re
  • メールアドレス(Twitterの方が確実)
  • info@ドメイン名
リンク

WebMoney ぷちカンパ