i++

プログラム系のメモ書きなど

Unreal Engine : C++ クラスを削除する

Visual Studio 上で削除対象のクラスの .h と .cpp を削除します Visual Stdio 2015 の Remove ではプロジェクトから削除するだけのようなので、エクスプローラーを開きファイルの実体も削除しておきます Visual Studio 上でソリューションをビルドします こ…

Unreal Engine : C/C++ コードからのログ出力

コンソール(Output Log)へのログ出力と、ゲーム画面上へのログ出力の2通りの方法でログを確認できます。 Console ログ出力 カテゴリなし 単一ファイル用カテゴリ 複数ファイル用カテゴリ ログレベルの種類 画面ログ出力 参考 Console ログ出力 UE_LOG(カ…

Unreal Engine : Blueprint/UserWidget.h が Visual Studio で認識されない

(プロジェクト).Build.cs ファイルに UMG を使うための依存関係を設定する 一度 Visual Studio を閉じ、エクスプローラーで .uproject ファイルを選択して右クリックメニューから "Generate Visual Studio project files" 選択する これで Visual Studio の…

Unreal Engine : Starter Content を後から追加する

Content Browser の Add New ボタン(左上緑色)を押して Add Feature or Content Pack を選択 Content Packs タブから Starter Content を選択して Add to Project ボタンを押す 新規プロジェクト作成時のテンプレートとして使用できる他プロジェクトの Blu…

Unreal Engine : C++ プロジェクトの作成でエラー

Common Tools for Visual C++ 2015 がインストールされていないせいでした。そういえば、Visual Studio 2015 はデフォルトでは C++ が入っていないんでしたね。 Visual Studio 2015 を Unreal Engine で使用するために必要な設定は以下のとおりです。 無料開…

Android : Overflow Menu で表示されるメニューに Horizontal の ImageButton 列を表示したかった(Chrome みたいに)

この画像の、メニュー上部に戻るボタンやお気に入りボタンが並んだものを作ろうとしたわけですが… 方法 具体的な方法は調査中であるものの、どうやら PopupWindow もしくは ListPopupWindow を使ってゴリ押しで実装するしかないようです。 あまり面倒なこと…

Android : Runtime Permission 対応

Android 6.0 (Marshmallow, API level 23)に導入された Runtime permission に対応しようと思って調べたところ、インターネット接続に利用していた ACCESS_NETWORK_STATE と INTERNET は自動でパーミッションが付与される Normal Permissions という種類の権…

Android : gradle で定義された versionName を string リソースとして利用する

Android アプリではバージョン情報として versionCode と versionName があり、以下の様な形で gradle (app) で設定します。 defaultConfig { applicationId "com.example.increment" minSdkVersion 21 targetSdkVersion 23 versionCode 1 versionName "0.1"…

Android : Error:Execution failed for task ':app:packageRelease'. > Unable to compute hash of .... build\intermediates\classes-proguard\release\classes.jar

ProGuard を有効にした Signed apk を作成しようとした際に発生しました。 Error:Execution failed for task ':app:packageRelease'. > Unable to compute hash of (プロジェクトのフォルダ)\app\build\intermediates\classes-proguard\release\classes.jar …

Android : java.lang.RuntimeException: Missing type parameter (ProGuard + gson)

原因は gson を使っていた + gson 用の ProGuard の設定をしていなかったことでした。ProGuard によって難読化されたことで serialize / deserialize 対象のタイプ、クラスが正しく参照できなくなってしまい例外を引き起こしていたようです。 参考先の progu…

Android : android.view.InflateException: Binary XML file line: Error inflating class android.support.design.widget.NavigationView

今回の NavigationView については自分の場合は ProGaurd が原因で、以下の行を proguard-rules.pro に書き加えることで、実行時に表題の InflateException が発生することはなくなりました。 -keep class android.support.v7.widget.LinearLayoutManager { …

Android : Overflow メニューにアイコンを表示する

Overflow メニューに入れられたメニュー項目はそのままではアイコンが表示されませんが、以下の方法でアイコン表示を行うことができました。 コードで実現するバージョン 利点 標準的なメニューの見た目、挙動を保てる 欠点 Reflection を使用しているので将…

Android : Can't bind to local 8600 for debugger 確立された接続がホスト コンピューターのソウトウェアによって中止されました

AndroidStudio でアプリを実機デバッグしようとした際に遭遇しました。 デバイスを抜き差しするだけでは直らず、 デバイスの USBケーブルを抜く AndroidStudio を終了する Waiting for process detach ダイアログが終わらなかったので強制終了 AndroidStudio…

Kotlin : ビット演算メモ

& や | という記号ではなく and、or を使います。 また、|= や &= といった複合代入演算子形式の記載方法はありません。 Java/C系言語での書き方 Kotlin での書き方 x &= y x = (x and y) x |= y x = (x or y) x ^= y x = (x xor y) ~x x.inv() ※ and や or …

Android : SwipeRefreshLayout の更新中 Indicator を起動時に表示する

onCreateView で直接 SwipeRefreshLayout.setRefreshing(true) をしても表示されないので、post を使って少し遅らせてから refreshing が true になるようにします。 SwipeRefreshLayout の onMeasure が呼ばれて、サイズが確定してから refreshing を true …

Android : WebView 覚え書き(ズーム関連の機能の有効化、Progress の表示、Back Key のハンドリングなど)

やりたい事 方法 ピンチ操作によるズームイン / ズームアウトの有効化 webview.settings.builtInZoomControls = true ダブルタップによるズームイン / ズームアウトの有効化 webview.settings.useWideViewPort = true ズームボタン(右下に表示される±のルー…

Android : SwipeRefreshLayout で ListView に EmptyView を設定すると ListView が空の時に Refresh 表示が上手くされない問題を解消する

ListView.setEmptyView で Empty View を設定していると、ListView が空の状態で SwipeRefresh (PullToRefresh) を実行すると Refresh の Indicator (上の方でくるくる回る、setRefreshing でコントロールされるもの)が、更新が終わった瞬間辺りに一瞬表示…

Android : Warning:Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (23.1.0) and test app (22.2.0) differ.

エラーメッセージ全文は以下のとおりです。 解決のために参考となる URL が記載されているなんて素晴らしい! Warning:Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (23.1.0) and test app (22.2.0) dif…

Kotlin : as, !, ? 周りのチートシート

キャストや、型や変数の後ろにつける ! 記号、 ? 記号の意味についてのまとめです。 ? var b : String? = "abc" b = null 型宣言に付けた場合は nullable (Kotlin は明示的に ? を付けないと null を代入できない)。 var l = b?.length 変数に付けた場合は…

Git : fatal: Failed to lock ref for update: No such file or directory

Git

エラーが発生した手順 sandbox/foo というブランチを作成する sandbox/foo/bar というブランチを作成しようとする エラーの原因 sandbox/foo というブランチを作成しようとした時点で、 git が sandbox 以下に foo というファイルを作成している sandbox/foo…

Android : SlidingTabLayout を使う + タブの幅をウィンドウ幅に合わせる

SlidingTabsBasic | Android Developers のコードをダウンロードして(右上のボタンで可能)Android - SlidingTabsBasicをプロジェクトに導入する - Qiita に沿って適宜ファイルをコピーしていけば SlidingTabLayout を使えます。 ただし、SlidingTabsBasic …

Kotlin : Unresolved reference: field

Kotlin の custome setter で $プロパティ名 を使っていたところ、$プロパティ名 という書き方は deprecated になったので代わりに field を使ってね、というメッセージが出たので素直に従ったところ、Unresolved reference Error が発生しました。Kotlin の…

C#/.NET : インストールされているドライバーのリストを調べる、検索する

サンプルコード ※「参照の追加」で「System.Management」を追加する必要があります(アセンブリ⇒フレームワーク)。 System.Management.SelectQuery query = new System.Management.SelectQuery("Win32_SystemDriver"); // 特定のドライバーを検索したい場合…

WPF/XAML : DataGrid の表示内容を TextBox への入力内容でフィルタリングする

ポイントは以下の3点です。 DataGrid の ItemsSource に CollectionViewSource.View を使う CollectionViewSource.Filter にフィルタリング用の関数を登録する TextBox の入力に変更がある度に CollectionViewSource.View.Refresh() を呼ぶ サンプルコード …

Android : ListView (ArrayAdapter) で使う View に RadioGroup.setOnCheckedChangeListener を使うと起こる問題について

原因や問題が起きる条件が全く解明できていないものの、ひとまずメモ。 ListView で表示する項目の View に RadioGroup を含める その RadioGroup に setOnCheckedChangeListener を設定し、その中でデータ(getItem(position) で得られるもの)を変更する …

Android : Toolbar + DrawerLayout で Drawer を一時的に無効にして Navigation Icon (homeAsUpIndicator) を変更する

ActionBarDrawerToggle.setDrawerIndicatorEnabled(false) で「ハンバーガーアイコン + Drawer の開閉」を無効にすると、 setToolbarNavigationClickListener で設定したリスナーが呼ばれるようになる Toolbar.setNavigationIcon で Navigation Icon (左上の…

プログラマの英語 : Power off と Shutdown

※ Linux 等のコマンドの違いの話ではなく、Power Off(電源を切る) と Shutdown(シャットダウン)、それぞれの語から受ける言葉の印象の話です。 どちらも同じ結果を意図して違いを意識せずに用いられる事が多いと思いますが、それぞれ以下のようなニュア…

WPF/XAML : TextBox に入力ヒントを表示する

WPF界隈では hint ではなく watermark とも呼ぶらしいですね。Android の方では watermark という呼び方を聞いたことはないのですが。 参考にしたサイト(下記記載)には AttachedProperty を使った方法や Trigger を使った方法も掲載されており、「TextBox …

プログラマの英語 : state と status の違い・使い分け

どちらも「状態」を意味し、普通の英文として使う場合でも、コード中の変数名や enum 定義に使用する場合でも、往々にして交換可能なのですが、全く同じ意味合いを持っているという訳ではありません。 そのニュアンスの違いと使い分け方について考えてみます…

プログラマの英語 : enbug の正しい言い換え方と語源の推測

enbug(エンバグ)とは「ある変更が(他の箇所で)別のバグを生む」というような意味で使われる用語ですが、これは和製英語であって世界的に標準的な英単語としては存在しません。 例えば英辞郎や Weblio といった日本の英語辞書サイトではエントリーが存在…