万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    Xamarin プログラミングもくもく会 #4

    Xamarin プログラミングもくもく会 #4 - 無差別級もくもく会 | Doorkeeper

    アイコンの設定

    ・ここが詳しい Hello, iOS - Xamarin : XLsoft エクセルソフト

    ・アイコンのサンプルのzipのURLのパスはこれが正しい http://developer.xamarin.com/guides/android/getting_started/hello,android/Resources/XamarinAppIconsAndLaunchImages.zip

    このサイトの↓の項目が実際に見つからない。

    アイコン

    f:id:shinriyo:20160811110751p:plain

    スプラッシュ

    f:id:shinriyo:20160811110800p:plain

    ↓現実

    f:id:shinriyo:20160811111116p:plain

    f:id:shinriyo:20160811111129p:plain

    WebViewのcssやjsのパスについて

    Xamarin.FormsでWebビューを使用するには? - Build Insider

    YouTubeのURLを指定すればをvideoタグに直接入れられるプラグイン MediaElement.js - HTML5 video and audio unification framework

    広告

    AmazonにXamarin用プラグインがある(Unityも)

    クロスプラットフォームエンジン用のモバイル広告プラグイン - アマゾン アプリ 開発者ポータル

    csvプラグイン

    コレを使用 https://github.com/JoshClose/CsvHelper/

    "1", "2"CSVの場合、"1""2"となる。 "は書かない方がいい。 エスケープするときは"""1"のようだ。

    ※RFC4180的にはどちらでも良い。

    1, 2と書いてる場合はカンマの後の半角スペースを消す方がいいと思う。 → 1,2

    作者のissue

    https://github.com/JoshClose/CsvHelper/issues/458#issuecomment-239072342

    Label内での改行

    CSVに書くときは<br />を書いておき、表示するときEnvironment.NewLineでリプレースした。

    Desc = detail.Replace("<br />", Environment.NewLine)

    トランザクション

    もともと

    // ①CSVファイルのDLするメソッド
    static async Task<string> GetWebPageAsync(Uri uri)
    {
        // do something. 
    }
    // ①を実行 & Realmの操作
            public static void Hoge(
                ref int id,
                string lang, int type, HttpClient httpClient,
                string url
            )
            {
                // 取得したいWebページのURI.
                Uri webUri = new Uri(url);
    
                // GetWebPageAsyncメソッドを呼び出す
                Task<string> webTask = httpClient.GetStringAsync(webUri);
    
                // Mainメソッドではawaitできないので、処理が完了するまで待機する.
                webTask.Wait();
    
                // RealmにInsertするコード
                do something.....
            }
    public static async Task<bool> Initialization()
    {
        Hoge();
        Hoge();
        Hoge();
    }

    トランザクションエラー。

    おそらくCSVのダウンロードが投げっぱなしになり、前後関係を待たずにCSVをInsertしているから?

    Take 1

    public static async Task<bool> Initialization()
    {
        var str1 = await csv1のDL();
        var str2 = await csv2のDL();
        var str3 = await csv3のDL();
    
        str1とRealmに入れるメソッド();
        str2とRealmに入れるメソッド();
        str3とRealmに入れるメソッド();
    }

    csvをstringに入れることでメモリ足りなくなって?、シミュレータが落ちる。

    Take2 Realmにいれたらstrを使いまわして無駄に変数に突っ込まないようにする

    var str = csv1のDL();
    // このラムダ式で挟む
    await Task.Run(() =>
    {
        strをRealmに入れるメソッド();
    }
    
    str = await csv2のDL();
    await Task.Run(() =>
    {
        strをRealmに入れるメソッド();
    }
    str = await csv3のDL();
    await Task.Run(() =>
    {
        strをRealmに入れるメソッド();
    }

    →が・・・まだTransactionエラーがたまに・・・ 一応エラー時にはダイアログ入れた。

    Unityとの対応覚書

    Unity 非同期プログラミング
    IEnumerator async Task返り値を使わない時は単にasync Task
    yield return await
    yield break return の値を普通に返す。