スキップしてメイン コンテンツに移動

投稿

2015の投稿を表示しています

Flutter x Dartlang で Androidアプリ作成

Flutter x Dartlang で Androidアプリ作成
QiitaにFlutter x Dartについて投稿しました。

Flutterを使うことで、AndroidやiOSなどの Mobile Platform 向けのアプリが Native な Dartlang で開発できるようになります


[投稿]
http://qiita.com/kyorohiro/items/c478b98dd364050d23e5

[GitBook]
調べたことはgitbookにまとめています

https://www.gitbook.com/book/kyorohiro/hello_skyengine/details




-------
Kyorohiro work

http://kyorohiro.strikingly.com



P2P探訪 HetimaNetはDart:ioに対応しました。

hetimanetは、chrome用のsocket機能のみ提供していましたが、新たに、dart:ioに対応しました。hetimanetはdart用のライブラリです。

下記、機能に対応しています。

UDPTCPHttp ServerHttp ClientUPnP Portmap 


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48import'package:hetimanet/hetimanet.dart'; import'package:hetimanet/hetimanet_dartio.dart'; //// main() async { HetiSocketBuilderDartIO builder =new HetiSocketBuilderDartIO(); UpnpPortMapHelper helper =new UpnpPortMapHelper(builder, "test"); //// get network interface List<HetiNetworkInterface> interfaces = await builder.getNetworkInterfaces(); for (HetiNetworkInterface i in interfaces) { print("<ni>${i.address}${i.prefixLength}${i.name}"); } //// portmapping try { StartGetExternalIp exip = await helper.startGetExternalIp(reuseRouter:true); print("<exip> ${exip.externalIp}"); } catch (e) { print("<exip ER…

P2P探訪 DHTを実装してみよう!! (6) おわり

GetPeersでInfoHashに対応するPeerを探す
GetPeersでPeerを探すAnnouncePeerでP2Pネットワーク上に値を保存する

DHTを動作させてみよう
DHTを動作させてみよう!!

「P2P探訪 DHTを実装してみよう!! 」をQiitaに投稿しました。
http://qiita.com/kyorohiro/items/2c60fd072f61d2dc52c4

これで、ひととおり、説明したつもりです。

今後書き直したり修正した内容は、「なぜなにTorrent」のほうに反映していく予定です。多分、いまある、文章は全て入れ替わるはず。

GitBook なぜなにTorrenthttps://www.gitbook.com/book/kyorohiro/doc_hetimatorrent/details
ソースhttps://github.com/kyorohiro/dart_hetimatorrent
REF - http://www.bittorrent.org/beps/bep_0005.html
http://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf

-------
Kyorohiro work

http://kyorohiro.strikingly.com

P2P探訪 DHTを実装してみよう!! (5) FindNodesを実装してみよう

P2P探訪 なぜなにTorrent

Torrent Client開発時に得たノウハウは、「なぜなにTorrent」にまとめています。

https://www.gitbook.com/book/kyorohiro/doc_hetimatorrent/details

-------
Kyorohiro work



http://kyorohiro.strikingly.com

P2P探訪 DHTを実装してみよう!! (4) FindNodesでネットワークを構築する

FindNodeでネットワークを構築するFindNodeクエリでネットワークを構築するレスポンスを受けたらRootingTableを更新する
Qiitaに移動しました。
http://qiita.com/kyorohiro/items/62347c69075bdcb6fdc2





GitBook なぜなにTorrenthttps://www.gitbook.com/book/kyorohiro/doc_hetimatorrent/details ソースhttps://github.com/kyorohiro/dart_hetimatorrent REF - http://www.bittorrent.org/beps/bep_0005.htmlhttp://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf
-------
Kyorohiro work

http://kyorohiro.strikingly.com

P2P探訪 DHTを実装してみよう!! (3) kBucket RootingTable の実装編

RootingTableを実装してみよう。KIdを実装するkBucketを実装するRootingTableを実装する
RootingTableを実装してみましょう。コードに落とす事で理解も深まります。

Qiitaに移動しました。http://qiita.com/kyorohiro/items/f685a905235f8a61ff8a



GitBook なぜなにTorrenthttps://www.gitbook.com/book/kyorohiro/doc_hetimatorrent/details
ソースhttps://github.com/kyorohiro/dart_hetimatorrent
REF - http://www.bittorrent.org/beps/bep_0005.html
http://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf

-------
Kyorohiro work

http://kyorohiro.strikingly.com

P2P探訪 DHTを実装してみよう!! (2) MainlineDHTはKademuliaのkBucketを利用している

DHTに対応する。MainlineDHTはKademuliaのkBucketを利用している
距離はXORkBucketでRootingTableを構築している
Qiitaに移動しました。http://qiita.com/kyorohiro/items/356a3aa993d9d635235f




GitBook なぜなにTorrenthttps://www.gitbook.com/book/kyorohiro/doc_hetimatorrent/details ソースhttps://github.com/kyorohiro/dart_hetimatorrent REF - http://www.bittorrent.org/beps/bep_0005.htmlhttp://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf ---------- Kyorohiro work kyorohiro.strikingly.com


P2P探訪 DHTを実装してみよう!! (1) Mainline DHTはTrackerなしでPeerを探すことができる。

GItbookで書いている内容を、見直す機会として、Bloggerに投稿してみた。

Mainline DHTはTrackerなしでPeerを探すことができる。
Trackerがなくてもデータを探せる六次の隔たりで実現している距離を定義してネットワークを構築する

本章では、Mainline DHT と呼ばれる機能の解説と実装をしていきます。

Qiitaに移動しました!!http://qiita.com/kyorohiro/items/356a3aa993d9d635235f




GitBook なぜなにTorrenthttps://www.gitbook.com/book/kyorohiro/doc_hetimatorrent/details ソースhttps://github.com/kyorohiro/dart_hetimatorrent REF - http://www.bittorrent.org/beps/bep_0005.htmlhttp://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf ---------- Kyorohiro work kyorohiro.strikingly.com

P2P探訪 HetimaTorrentClient ver 0.1.0 implements DHT with Pure Dartlang

HetimaTorrentClient が ver 0.1.0 で DHT に対応しました。 

残念ながら、 Pre-Alpha バージョンで、まだまだ不安定です。


1GB近くある Big Buck Bunny の動画を使って、DHT経由でダウンロードするテストをしています。 

[DHT] Torrent クライアントは通常、Trackerサーバーから他のTorrent クライアントを紹介してもらいます。しかし、この場合だと、もしも、Tracker Serverがダウンした場合は、うまく動作しません。しかし、 DHT をサポートしたクライアントは独自にP2Pネットワークを組み、Trackerサーバーの変わりをすることができます。
- bep5  http://www.bittorrent.org/beps/bep_0005.html - hetimatorrent
https://github.com/kyorohiro/dart_hetimatorrent
https://github.com/kyorohiro/dart_hetimatorrent/tree/master/example/HetimaTorrentClient

-------
Kyorohiro work

kyorohiro.strikingly.com

WegGL Trial with Dartlang draw rect

四角形を表示するサンプル




1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69import'dart:html'as html; import'dart:web_gl'as webgl; import'dart:typed_data'as data; void main() { var canvas =new html.CanvasElement(width:500, height:500); html.document.body.append(canvas); webgl.RenderingContext GL = canvas.getContext3d(); GL.clearColor(0.6, 0.2, 0.2, 1.0); GL.clear(webgl.RenderingContext.COLOR_BUFFER_BIT); // setup shader webgl.Shader vertexShader = loadShader(GL, webgl.RenderingContext.VERTEX_SHADER, "attribute vec3 vp;\n"+"void main() {\n"+" gl_Position = vec4(vp, 1.0);\n"+"}\n"); webgl.Shader fragmentShader = loadShader(GL, webgl.RenderingContext.FRAGMENT_SHADER, "precision mediump float;\n"+"void main() {\n"+" gl…

P2P探訪 About Hetima Torrent Tracker

dart製、hetimatorrent library は、Tracker Server と Tracker Client の機能をサポートしています。


support following spec
- bep0003
http://www.bittorrent.org/beps/bep_0003.html
- bep0023
http://www.bittorrent.org/beps/bep_0023.html

基本 Torrent Client は、Tracker Server を利用して、他のTorrent Clientをつがします。つまり、Torrent でデータを共有したい場合は、Tracker Server が必要になります。

hetimatorrent example: server code


1 2 3 4 5 6 7 8 9 10 11 12a() { TrackerServer trackerServer =new TrackerServer(new HetiSocketBuilderChrome()) ..address ="0.0.0.0" ..port =6969; trackerServer.start().then((StartResult result) {}); List<int> infoHash =new List.filled(20, 1); trackerServer.addInfoHash(infoHash); new Future.delayed(new Duration(minutes:30)).then((_) { trackerServer.stop(); }); }
hetimatorrent example: client code

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16b() { TorrentFile torrentfile =null; // ..//create Torrent file Object from blob;// .. TrackerClient.createTrackerClient(new HetiSocket…

WegGL Trial with Dartlang clear screen

Dartlang は快適な開発環境を持ちます。Dart x Eclipse は、自動補完機能は優秀です。なので、Dartlang で WebGL の学習を始めることにしました。

まずは、画面をクリアするサンプルを書いた。




import'dart:html'as html; import'dart:web_gl'as gl; void main() { var canvas =new html.CanvasElement(width:500, height:500); html.document.body.append(canvas); gl.RenderingContext GL = canvas.getContext3d(); double r =0.6; double g =0.2; double b =0.2; double a =1.0; GL.clearColor(r, g, b, a); GL.clear(gl.RenderingContext.COLOR_BUFFER_BIT); }

ソース

https://github.com/kyorohiro/dart_hetimagl/tree/master/web

------- Kyorohiro work
kyorohiro.strikingly.com

P2P探訪 hetimatorrent で mainline dht を サポートしました。

hetimatorrent で mainline dht (bep5) を サポートしました。

--

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29a() { KNode node =new KNode(new HetiSocketBuilderChrome(), verbose:true); String localIp ="0.0.0.0"; int localPort =28080; //// node.start(ip: localIp, port: localPort).then((_) { node.onGetPeerValue.listen((KGetPeerValue v) { print("---onGetPeerValue ${v.ipAsString}${v.port}${v.infoHashAsString} "); }); }); //// initial nodeString initailNodeIp ="0.0.0.0"; int initailNodePort =38080; node.addBootringNode(initailNodeIp, initailNodePort); //// search target List<int> infoHash =new List.filled(20, 4); node.startSearchValue(new KId(infoHash), 18080, getPeerOnly:true); new Future.delayed(new Duration(minutes:30)).then((_){ print(node.rootingtable.toInfo()); return node.stop(); }); } --

hetimatorrent は名前の通り、torrentプロトコルでまデータの共有ができます。
pure dartlang で書かれています。
今は、ch…

Eclipse での Dart製 Chrome app の開発

Chrome app 開発用に, DartEditorからEclipseに移行しました DartEditorの開発が止まったので、Eclipseに移行しました。選択肢として WebStormを使うことも検討したのですが、 WebStormでのDart製のChromeアプリの開発が面倒だったので、Eclipseを利用することにしました。

- 標準でChrome アプリ用のテンプレートが含まれていない
- 標準でmanifest.json を右クリックからの動作確認ができない

Eclipseならば、簡単につかえます。




インストールが不便 しかし、素直にEclipseのインストールが上手できなくて、結構苦労しました。Dartiumを認識させ方が不明。Eclipseが起動しなくなるとか。

軽くEclipseでの環境の設定方法について解説したいと思います。



EclipseをInstallしよう eclipse を手に入れましょう。僕はJava Developers版を利用しました。をhttp://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/marsr

選んだ理由は、余計なものが入っていなさそうだから。



Dart plugin をインストールしよう 1. Menu:Help --> Install New software.. 2. addボタンを押す。Add Repositoryダイアログが表示される。 3. Nameをdartrepo. Locationを"http://www.dartlang.org/eclipse/update/channels/stable/"にして、OKボタンを押す。 4. Work with をdaerreoにする。自動でそうなるはず。 5, 表示されたものを選択して、Nextボタン等をおして、後は指示に従って進めてください。

Dart SDK をインストール Dart SDK はプラグインからダウンロードできます。 1. Menu:Windows --> Preferences 。Preferencesダイアログが表示される。 2. Dart-> SDK 3. Dart SDK のところの、Downloadボタンを押してく…

Strikingly を利用してポートフォリオを作成しました。kyorohiro.strikingly.com

Strikingly を利用してポートフォリオを作成しました。kyorohiro.strikingly.comで公開しています。kyorohiroが無職になってから、2〜3ヶ月経過しました。公開しているもの、未公開で粛々と進めているもの等色々ありますが、自プロジェクトが発散してしまいました。10〜20ほどまで増えました。

今更ですが、無職で自由に時間が使える期間も無制限にあるわけでもないことに、気がつきました。

なるたけ短い期間で成果物を公開して、世の中に何かしらの影響を与えていけるように、整理していきたいと考えています。

で、kyorohiro.strikingly.comに成果が出せそうな物を載せて、それに、労力をかけることにしました。





まずは、P2P関連のものだけまとめました 近々で、Outputがていたのは、Dart 向けのP2P関連のライブラリでした。とりあえず、プロジェクトごとにリンクだけ載せました。今は、ほぼリンクだけ、ゴールとかは書けてません。






学習内容もプロジェクト形式で公開します ただ、今回、kyorohiro.strikingly.comにまとめるに当たって、気がいた事として、非公開のもので、私ひとりで行っているものは、あまり良い形でまとまってませんでした。

こなれていない分野のプログラムとかドキュメントとかxxxとかは、公開するのが、とても恥ずかしいのですが、P2P関連のものみたく、赤裸々に公開していくと良いかなぁ〜。と思いました。

なので、適当にプロジェクト名をつけて、ゴールを決めて、kyorohiro.strikingly.comで公開します。

よろしくお願いします。



P2P探訪 dart_hetimatorrent へ、DHT関連のコードを追加しました。

dart_hetimatorrent (https://github.com/kyorohiro/dart_hetimatorrent)へ、DHT関連のコードを追加しました。

やっぱり、DHT対応は必要!! HetimaTorrentClientを、pre-AlphaからBeta相当へ格上げすべく、さまざまな作業をしていました。実環境で使用してみたちころ、Trackerサーバーが死んでるために、ダウンロードできない状況におちいる事がかなりありました。

しかし、このような場合でも、Bittorrentでは、ダウンロードが可能なことがありました。DHTが効果的に動作しているようです。

プリ実装しました。 実運用を考えると、HetimaTorrentClientでもDHT対応を実現すべきと判断しました。先週からコーディングを始めました。そして、プリ実装を終えました。シミュレーター上ではとりあえず動作しています。

ver 0.1.0として、来週公開予定です。
今後、HetimaTorrentClient に、組み込みながら性能を上げていく予定です。特に問題がなければ、HetinaTorrentClient ver 0.1.0として、DHTに対応したclientを今週末ないし、来週中には公開します。



https://chrome.google.com/webstore/detail/hetimatorrentclientpre-al/bepllifcfhpjoijdddiafgmclfhgjnfb


P2P探訪 P2Pファイル共有アプリ。 HetimaTorrentClient (pre-Alpha) ver 0.0.3 をリリースしました。

P2Pファイル共有アプリ。 HetimaTorrentClient (pre-Alpha) ver 0.0.3 をリリースしました。 https://chrome.google.com/webstore/detail/hetimatorrentclientpre-al/bepllifcfhpjoijdddiafgmclfhgjnfb

Dart製の Chrome App です。まだまだ不安定。今回は、Torrent ライブラリの部分も、Dartlang を用いて、フルスクラッチで書きました。 興味のある型は以下をご確認くだい。 ( https://github.com/kyorohiro/dart_hetimatorrent )
BEP 0003 ( http://www.bittorrent.org/beps/bep_0003.html) に準拠しています。もちろん、pre-Alpha版なので、まだまだ安定していません。安定版はもう少々お待ち下さい。 [PS] - HetimaTorrentTracker とセットで利用してください Torrent Clientは、データを配信する際に、Trackerサーバーが必要になります。hetima torrent library では、このサーバーアプリも用意しています。 名前をHetimaTorrentTrackerと言います。こちらも、Chrome Appです。

https://chrome.google.com/webstore/detail/hetimatorrenttrackersampl/achgjpmkcelodbhjhhcjeolfehheahnc
- ノウハウは「なぜなにトレント」を参照してください Torrent Clientを作成した時の発見したことをチュートリアル形式で、ドキュメント化しています。P2Pアプリの作成について興味のある方はこちらも御覧ください。 (※ 書きかけです。) gitbook版 なぜなにTorrent(https://www.gitbook.com/book/kyorohiro/doc_hetimatorrent)paboo版 なぜなにTorrent(http://p.booklog.jp/users/kyorohiro)当面は、gitbook版の方で更新していきますが、整形したものを…