So-net無料ブログ作成

久しぶりDart [Dart]

GWで時間が取れたので、久しぶりにDartを触ってみました。
随分と変わっていて、やる気がそがれました。

1. JavsScriptの代わりにはならない
随分前に発表されていますが、当初目指していたJavaScriptの代わりはあきらめたようです。
ブラウザでDartがネイティブになることはありません、DartはJavaScriptにコンパイルし続けるしかないようです。

2. Dart Editor がなくなった?
以前は Dart Editorから SDK をアップデートしていたのですが、いまはできません。
調べてみると、Dart Editor 自体がもうないようです。
Dartのインストールページで調べて、chocolateyというツールを使って SDKのアップデートはできたのですが、Dart Editorがアップデートされず、よくよく見たら Editor として Dart Editorが載っていませんでした。
WebStorm をお勧めするとか。これって有償らしいです。

ちなみに chocolatey について調べたことメモ...
・インストールは c:\ProgramData という隠しフォルダにされる
・Dart SDK は c:\tools\dart-sdk にインストールされるが、Dart Editor 使用時とはインストール先が異なるのでコピーが必要


Dart( #dartlang ) で前ゼロ [Dart]

Dart で数字を前ゼロで表示させようと思い調べてみました。

まずはDart の APIマニュアルを探したのですが、見つけられませんでした。
このようなときは、Java や JavaScript で、どのようにするか調べると参考になることがあります。
Dart でも同じメソッド名になっていたりするからです。

そこで、Java や JavaScript での前ゼロを調べたのですが、同じ方法が Dart にはありませんでした。

ついでに分かったことは、前ゼロはゼロパディング(Zero Padding) というそうです。
そうしたら Dart にありました。padLeft() です。

具体的な使い方はこちらに書きました。

http://studyhallweb.com/dart/page018.html

Dart Editor をアップデートしたら不具合が( #dartlang ) [Dart]

Dart Editor をアップデートして Version 1.6.0 dev_00_00 にしました。

そうしたら、Editor から Dartmium でのプレビューができません。

Could not start pub serve or connect to pub

というエラーがでます。

Pub Get や Pub Upgrade をしてみても次のようなエラーがでます。

Pub get failed, [-1073741819]
** Warning: Application may fail to run since packages did not get installed.Try running pub get again. **

Pub upgrade failed, [-1073741819]


さて、どうしたものでしょう。

#dartlang テキストファイルの読み込みとダウンロードファイルの作成 [Dart]

Dart言語にて、ローカルのテキストファイルをブラウザへ読み込んで表示する方法と、ダウンロードファイルを作成する方法のページを追加しました。
http://studyhallweb.com/dart/page027.html

IE11では、ダウンロードファイルの作成に一部不具合があります。
Chromeでは、意図したとおりに動作します。


AngularDart に関するメモ 2 [Dart]

昨日の続きです。 #dartlang のAngularDartに関するお話です。

pubspec.lockの内容が異なるので、サンプルコードに含まれているpubspec.lockに戻してビルドしてみたらエラーなく実行できました。

pubsepc.lockの中身はパッケージのバージョンが書かれています。
エラーが起きる(いったんangularパッケージのバージョンを0.11.0にあげて0.10.0に戻した)pubspec.lockとサンプルコードの(angularのバージョンは0.10.0)のpubspec.lockを比較すると、バージョンが違うパッケージがいくつか見られます。

バージョンが違うパッケージを個々に検証していけばよいのでしょうが、エラーメッセージを見てもどれを直せばよいのやら分かりません。
もし今回のエラーをつぶせたとしても、他のプログラムでも同様のことが起きそうです。

それではあまりにも効率が良くないので、AngularDartもPolymerと同様にしばらく様子見とし、使わないことにします。

AngularDart に関するメモ 1 [Dart]

Polymer.dart がうまく行かないので、こんどは AngularDart です。
こちらでも良くわからないことがおきているのでメモしておきます。

AngularDart Tutorial のページにある Hello World を使って検証。

新規のプロジェクトに html、dartコード、pubspec.ymal をコピーして動かすと問題なく動きました。
JavaScript へのコンパイルも出来ました。

このとき、angular パッケージのバージョンは 0.10.0 です。

これを最新版の angular 0.11.0 に入れ替えてみました。
するとbuild が出来ません。
Dartium では動作します。

angular のバージョンを 0.10.0 に戻しても変わりません。
初めはbuildできたのに、いったん 0.11.0 にしたらエラーが発生するようになってしまいました。

pubspec.lockの内容を比較するとangular以外のパッケージがいくつかバージョンが変わっているようですので、それが原因のような気がします。

今日は時間がないので、続きは後ほど。

参考にbuildエラーの内容を添付します。
--- 6:29:52 Running pub build on E:\Users\MyData\studyhall_angluar ... ---
Pub build failed, [65] Loading source assets... (0.4s)
Loading di transformers... (1.9s)
Loading angular transformers... (0.8s)
Building AngularDart... (0.1s)
Build error:
Transform HtmlDartReferencesGenerator on AngularDart|web/index.html threw error: Class 'AssetId' has no instance getter 'id'.

NoSuchMethodError: method not found: 'id'
Receiver: Instance of 'AssetId'
Arguments: []
dart:core-patch/object_patch.dart 45 Object.noSuchMethod
http://127.0.0.1:53313/packages/barback/src/transformer.dart 52:17 Transformer.isPrimary
http://127.0.0.1:53313/packages/$pub/serialize/transformer.dart 22:37 _serializeTransformer.. http://127.0.0.1:53313/packages/$pub/serialize.dart 92:33 respond. dart:async/future.dart 168 Future.Future.sync http://127.0.0.1:53313/packages/$pub/serialize.dart 92:7 respond http://127.0.0.1:53313/packages/$pub/serialize/transformer.dart 20:12 _serializeTransformer. dart:async/zone.dart 730 _rootRunUnary dart:async/zone.dart 864 _RootZone.runUnary dart:async/zone.dart 582 _BaseZone.runUnaryGuarded dart:async/stream_impl.dart 333 _BufferingStreamSubscription._sendData dart:async/stream_impl.dart 263 _BufferingStreamSubscription._add dart:async/stream_controller.dart 560 _StreamController&&_SyncStreamControllerDispatch._sendData dart:async/stream_controller.dart 440 _StreamController._add dart:async/stream_controller.dart 399 add dart:isolate-patch/isolate_patch.dart 124 _RawReceivePortImpl._handleMessage dart:core Object.noSuchMethod http://127.0.0.1:53313/packages/barback/src/transformer.dart 52:17 Transformer.isPrimary http://127.0.0.1:53313/packages/$pub/serialize/transformer.dart 22:37 _serializeTransformer.. http://127.0.0.1:53313/packages/$pub/serialize.dart 92:33 respond. dart:async Future.Future.sync http://127.0.0.1:53313/packages/$pub/serialize.dart 92:7 respond http://127.0.0.1:53313/packages/$pub/serialize/transformer.dart 20:12 _serializeTransformer. dart:isolate _RawReceivePortImpl._handleMessage Build error: Transform HtmlDartReferencesGenerator on AngularDart|web/main.dart threw error: Class 'AssetId' has no instance getter 'id'. NoSuchMethodError: method not found: 'id' Receiver: Instance of 'AssetId' Arguments: [] dart:core-patch/object_patch.dart 45 Object.noSuchMethod http://127.0.0.1:53313/packages/barback/src/transformer.dart 52:17 Transformer.isPrimary http://127.0.0.1:53313/packages/$pub/serialize/transformer.dart 22:37 _serializeTransformer.. http://127.0.0.1:53313/packages/$pub/serialize.dart 92:33 respond. dart:async/future.dart 168 Future.Future.sync http://127.0.0.1:53313/packages/$pub/serialize.dart 92:7 respond http://127.0.0.1:53313/packages/$pub/serialize/transformer.dart 20:12 _serializeTransformer. dart:async/zone.dart 730 _rootRunUnary dart:async/zone.dart 864 _RootZone.runUnary dart:async/zone.dart 582 _BaseZone.runUnaryGuarded dart:async/stream_impl.dart 333 _BufferingStreamSubscription._sendData dart:async/stream_impl.dart 263 _BufferingStreamSubscription._add dart:async/stream_controller.dart 560 _StreamController&&_SyncStreamControllerDispatch._sendData dart:async/stream_controller.dart 440 _StreamController._add dart:async/stream_controller.dart 399 add dart:isolate-patch/isolate_patch.dart 124 _RawReceivePortImpl._handleMessage dart:core Object.noSuchMethod http://127.0.0.1:53313/packages/barback/src/transformer.dart 52:17 Transformer.isPrimary http://127.0.0.1:53313/packages/$pub/serialize/transformer.dart 22:37 _serializeTransformer.. http://127.0.0.1:53313/packages/$pub/serialize.dart 92:33 respond. dart:async Future.Future.sync http://127.0.0.1:53313/packages/$pub/serialize.dart 92:7 respond http://127.0.0.1:53313/packages/$pub/serialize/transformer.dart 20:12 _serializeTransformer. dart:isolate _RawReceivePortImpl._handleMessage Build error: Transform _Serial on AngularDart|web/main.dart threw error: No top-level method 'parseCompilationUnit' with matching arguments declared. NoSuchMethodError: incorrect number of arguments passed to method named 'parseCompilationUnit' Receiver: top-level Tried calling: parseCompilationUnit("import 'package:angular/angular.dart';\nimport 'package:angular/application_factory.dart';\n\nvoid main() {\n applicationFactory().run();\n}\n", suppressErrors: true) Found: parseCompilationUnit(String, {name: String}) dart:core-patch/errors_patch.dart 166 NoSuchMethodError._throwNew http://127.0.0.1:53313/packages/code_transformers/src/entry_point.dart 35:18 isPossibleDartEntry. dart:async/zone.dart 730 _rootRunUnary dart:async/zone.dart 864 _RootZone.runUnary dart:async/future_impl.dart 488 _Future._propagateToListeners.handleValueCallback dart:async/future_impl.dart 571 _Future._propagateToListeners dart:async/future_impl.dart 331 _Future._completeWithValue dart:async/future_impl.dart 393 _Future._asyncComplete. dart:async/schedule_microtask.dart 23 _asyncRunCallbackLoop dart:async/schedule_microtask.dart 32 _asyncRunCallback dart:isolate-patch/isolate_patch.dart 128 _RawReceivePortImpl._handleMessage dart:core NoSuchMethodError._throwNew http://127.0.0.1:53313/packages/code_transformers/src/entry_point.dart 35:18 isPossibleDartEntry. dart:isolate _RawReceivePortImpl._handleMessage Build failed.

Polymer.dart の不具合 [Dart]

Dart のホームページにあるサンプルですら動かないから、どうしようにもない。

'... \packages\observe\src\compound_path_observer.dart' (OS Error: 指定されたファイルが見つかりません。

というエラーが出ているので、パッケージの中身が少ないのでしょうか。

observe パッケージを追加してやっても消えないので、なす術がありません。

unmodifiable_collection パッケージに関するエラーで出ていましたが、こちらはこのパッケージを追加してあげることで解決しました。

sitemap.xml作成 [Dart]

Dart で書いた sitemap.xml 作成プログラムをバージョンアップしました。 (Ver.0.2.0 → 0.2.1)

被リンク数がゼロの場合、sitemap.xml に書き出さないようにしました。

詳しくはこちら
http://studyhallweb.info/freesoft/dartmkstmap.html

#dartlang

Dart 1.5.0 [Dart]

Dart を 1.5.0 にバージョンアップしましたが、不具合がありますね。 #dartlang

致命的なのは、build です。
先ほどから20分以上たっていますが終わりません。

もう1つは、EditorからHTMLを起動したとき、Dartiumで開きません。
こらちは、URIを直接入力すれば開くのですが面倒です。
また表示が崩れるときがあります。
残像が残る感じです。

dartium画面乱れ.PNG

各種情報の取得不具合の原因判明 [Dart]

Dart( #dartlang )からコンバートしたJavaScriptが動作しない件、原因が分かりました。

■URIの取得
もともとはjsonファイルを読み込もうとdocument.baseUriを使用としましたが出来ませんでした。
これはIEが対応していないからでした。
参考
http://www.w3schools.com/jsref/prop_doc_baseuri.asp

そこで、location.pathnameに変更することでIEにも対応しました。
これでjsonファイルの読み込みは出来るようになりました。


■各種情報の取得
つぎに、Dartによる各種ブラウザ情報の取得ページ(http://studyhall.webcrow.jp/dart/page022.html)で確認したところ、Dartプログラム内では取得できているはずの location.pathname が表示されませんでした。

これは、コードの実行が location.pathname に行く前のステップでエラーが発生していたからでした。

調査したところ window.navigator.productSub でエラーが発生していました。
これも IEは対応していないそうです。
参考
https://developer.mozilla.org/ja/docs/Web/API/window.navigator.productSub

そこで、ブラウザ情報の取得ページ(http://studyhall.webcrow.jp/dart/page022.html)を更新して、どこでエラーが発生しているか分かるようにしました。

ちなみに Chrome と Siri では問題なく表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。