投稿

Typescriptの連想配列にlengthしちゃった話し

ついついやっちゃう連想配列 VS length じゃなくて、連想配列のlengthを取得したかったら、ちゃんと手順踏みましょうねというお話ですw 連想配列 * length 間違い let ren: object = {id: 0, name: "sample"}; ren.length; 正解 let ren: object = {id: 0, name: "sample"}; Object.keys(ren).length; chips :length プロパティは String オブジェクトの文字列長を UTF-16 コード単位で表します。 おしまい

【Android】API SDK バージョン別の処理とおまけ(ターゲットユーザー分布)

イメージ
Android開発において、何よりめんどくさいのがAPI(SDK)バージョン毎の対応だと思ってる方も少なくないハズ というわけで、今回はAPIバージョン毎に処理を分ける為のメモです(*´ω`) 大抵の方は知ってると思うのでブラウザバックしちゃって下さいませw SDK_INT 対象ハードウェアデバイスで現在実行されているソフトウェアのSDKバージョン いわゆるAPIバージョンですね Build.VERSION.SDK_INT EXAMPLE if(Build.VERSION.SDK_INT > 22) { // API 23以上の処理 Log.d("SDK VERSION", "23-"); } else if (Build.VERSION.SDK_INT > 18) { // API 19以上23未満の処理 Log.d("SDK VERSION", "19-22"); } else { // API 18以下の処理 Log.d("SDK VERSION", "-18"); } ちなみに、下記のコードで現在の開発コードネームが取得できます Build.VERSION.CODENAME VERSION_CODES 数字の直打ちではなくコードネームで分岐する場合はコチラ 各種コードネームを指定する事で、SDKバージョンを取得できます Build.VERSION.<CODE_NAME> EXAMPLE if(Build.VERSION.SDK_INT > Build.VERSION.LOLLIPOP_MR1) { // API 23以上の処理: LOLLIPOP_MR1 = API 22 Log.d("SDK VERSION", "23-"); } else if (Build.VERSION.SDK_INT > Build.VERSION.JELLY_BEAN_MR2) { // API 19以上23未満の処理: JELLY_BEAN_MR2 = API 18

【Android】Gradle Compatible Warning:All com.android.support libraries must use the exact same version specification

ちょっとfirebase使ってみたかっただけなのに、競合とかいらないから(;´・ω・) 警告だから無視してもいいのかなーと逃げたくなりつつ、競合放置は流石によくないですよね・・・ と、重い腰を上げたのでしたw All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 28.0.0, 26.1.0. Examples include com.android.support:animated-vector-drawable:28.0.0 and com.android.support:support-media-compat:26.1.0 There are some combinations of libraries, or tools and libraries, that are incompatible, or can lead to bugs. One such incompatibility is compiling with a version of the Android support libraries that is not the latest version (or in particular, a version lower than your targetSdkVersion). Issue id: GradleCompatible というわけで、勝手にケンカしてくれちゃってるver28さんとver26.1さんを探しに行きましょう! Gradle 競合確認 appディレクトリ配下に移動して確認コマンドを入力します cd app ./../gradlew dependencies 見づらいのでファイルに出力・・・とかはご自由に エラーログによると「com.android.support:animated-vector-drawable:28.0.0」と 「com.android.support:support-media-compat:26.1.0」がケンカしてます( `ー´

【Android】エラー:IllegalStateException: Expected END_OBJECT but was NAME

JsonReaderとかいうめんどくさいモノ使って嫌々ながらパーサー作ったせいで、アホなエラー出してしまったのです(;´・ω・) 2018-10-12 15:15:33.419 5344-5344/com.hoge.fugapp E/AndroidRuntime:FATAL EXCEPTION: main Process: com.hoge.fugapp, PID: 0000 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hoge.fugapp/com.hoge.fugapp.HogeFugaActivity}: java.lang.IllegalStateException: Expected END_OBJECT but was NAME Caused by: java.lang.IllegalStateException: Expected END_OBJECT but was NAME IllegalStateException 間違い reader.beginObject(); while (reader.hasNext()){ if (reader.nextName().equals("hoge")){ hoge = nextString(); }else{ break; } } reader.endObject(); 正解 reader.beginObject(); while (reader.hasNext()){ if (reader.nextName().equals("hoge")){ hoge = nextString(); }else{ reader.skipValue(); } } reader.endObject(); 良い子の皆さんは、決して、次以降のトークンは必要ないからと言って whileをbreakしてendObject()とか、endArray()とかやっちゃいけません;つД`) っていうか、なんでJSON如きにここまでしてやらなあかんねん!

【Android】エラー:plugins won't be able to load の原因は adb binary is obsoleteでした

ずいぶん前に出した・・・出た?エラー 記憶が曖昧だけど、また出そうな気がするから軽くメモっておくことにします( `ー´)ノ とりあえずプロローグw 深夜までデバッグしてて、数時間寝て起きたらビルドできず、こんなエラーが出てました Plugin supporting features (Run Configuration[Android App], Facet[android, android-gradle]) is currently disabled. Unable to apply changes: plugins "Android APK Support", "App Links Assistant", "Firebase App Indexing", "Firebase Services" won't be able to load. えー・・・ 昨夜まで動いてたのに・・・ 誰か私が寝てる間に弄ったでしょ? 今なら許してあげるから白状して下さい と、いらぬ嫌疑をかけつつ、Google様に翻訳をお願いしたところ 「ふむふむ。。。Firebase関係のプラグインが読み込めないみたいだな。あとは知らん!」 とのお告げを受けたのでした( ゚Д゚) っていうか、Firebase関連はともかくとして、Android APK SupportとかApp Links Assistantが読み込めないってどういうことさ! という話なのです(;´∀`) とりあえず、お告げに従って?読み込めないプラグイン関係を外してビルドしてみたところ・・・ 無事ビルド出来たのですが・・・ エミュレーターを起動しようとすると the adb binary found at hoge.appdata.local.android.sdk.platform-tools.adb.exe is obsolete and has serious performance problems with the android emulator. please update to a newer version to get significantly faster app fi

【Android】Warning: XML tag has empty body

最近、Androidアプリ作ったんですけど、思ったよりめんどくさかったけど、おもしろかった(*´▽`*) とかいう、謎な感想は置いといて、タイトルの「XML tag has empty body」ですね XML tag has empty body Reports empty tag body. The validation works in XML / JSP / JSPX / HTML/ XHTML file types. ふと気づいたらマニフェストで警告が出てる・・・ なんでしょう? 何も間違ってはないと思うのですが・・・? とかなんとか、AndroidStudio様に聞いてみても英語が苦手な私には、さっぱり分からず(;´∀`) ググってみても中々情報が見つからず・・・ っていうか、「tag」と「empty」辺りで気付け!って話なんですけど、しょうもないケアレスミス?でしたw XML tag has empty body 間違い <activity android:name=".WebViewActivity" android:parentActivityName=".MainActivity"></activity> 正解 <activity android:name=".WebViewActivity" android:parentActivityName=".MainActivity"/> 中身がないタグは、わざわざ終了タグを作らないで下さいね。 ゴミを量産しちゃだめですよ。 冗長なコードは最低です。 と、天下のGoogle様はおっしゃっていたらしいです( *´艸`) 皆様もお気を付けくださいませw

別のプログラムがこのフォルダーまたはファイルを開いているので、操作を完了できません。【windows】

たま~にありますよね(;´・ω・) 別のプログラムがこのフォルダーまたはファイルを開いているので、操作を完了できません。 フォルダーまたはファイルを閉じてから再実行してください。 タスクマネージャー開いてプロセス見てもそれらしきものはなく・・・ 開いてないですよ? いや、やっぱどっかで開かれてるのかな? どいつが犯人なんだーーーっ!ってなる事もしばしば・・・。 そんなときに便利なコマンドがコチラ! openfiles 管理者権限でコマンドプロンプトなりcmderなり立ち上げて・・・ openfiles |findstr "hoge" たったこれだけで、真犯人が分かっちゃうのです( `ー´)b ただ、初めてこのコマンド使う方はローカルファイルのハンドルを追跡可能な状態にできるように下準備がいるんですよね(/ω\) openfiles /local on 上記のコマンド入力してからPC再起動しなきゃいけないから、今この記事見てる人には役に立たないハズ・・・ というわけで、GUIの優秀な助っ人をもう一つ リソースモニター はい、ドラえもん風に読んでみましょう! リソースモニター♪ ・・・じゃなくて、使い方ですねw とりあえず、タスクバーを右クリックするなり、Windowsボタンを右クリックするなりしてタスクマネージャーを起動します パフォーマンスタブの最下部にリソースモニターを開くと書いてあるのでクリック 無事リソースモニターに辿り着けたら、CPUタブ内「関連付けられたハンドル」のハンドルの検索欄に調べたいファイルもしくは、フォルダ名を入力してENTER 検索欄下のイメージの項目にアプリケーション名が表示されてるハズです♪ 犯人、もとい、アプリケーションを右クリックしてプロセスを終了しちゃえばタイトルのエラーとはさよならです(*´▽`*) めでたしめでたしw