2019/04/03

コマンドラインから Android emulator を起動しようとしたら "Missing emulator engine ..." が出てしまった場合の対処方法

emulator 28.0.25.0 (build_id 5395263) on Ubuntu 18.04


久しぶりにコマンドラインから Emulator を起動してみると以下のようなエラーが。(Android Studio から起動した場合は問題なく起動しています)

```console
`gutter: false;
$ emulator -avd Pixel_2_API_28
PANIC: Missing emulator engine program for 'x86' CPU.
```

調べてみると、2017年3月の v25.3.0 以降、emulator コマンドのパスが変わったらしい2年もコマンドラインから Emulator 起動してなかったのか。

2019/04/02

[Python] venv のプロンプトを任意のものに変更する

@Python 3.6.7

Python2 系も使うことが無くなってきたので、遅ればせながら [virtualenv](https://virtualenv.pypa.io/en/latest/) から [venv](https://docs.python.org/ja/3/library/venv.html) に移行してみました。

調べてみると、venv では virtualenvwrapper のような一元管理を使うのではなく、プロジェクト直下に `venv` というディレクトリを作って管理したほうが良いと書いてあるサイトがちらほら。

> 参考
>
> [venv: Python 仮想環境管理 - Qiita](https://qiita.com/fiftystorm36/items/b2fd47cf32c7694adc2e)

2019/02/27

RTNETLINK answers: File exists が出てしまった時の対処方法

@Ubuntu  18.04.1 LTS

一度 DHCP で IPアドレスを取得してしまったネットワークデバイスを静的アドレスに変更すると、以下のようなエラーが出ることがあります。

```console
`gutter: false;
$ sudo ifup eth0
RTNETLINK answers: File exists 
Failed to bring up eth0
```

これを解消するには、登録されているIPアドレスを一度消去してやります。

```console
`gutter: false;
$ sudo ip addr flush dev eth0
```

> 参考
>
> [networking - Solving “RTNETLINK answers: File exists” when running ifup - Raspberry Pi Stack Exchange](https://raspberrypi.stackexchange.com/questions/13895/solving-rtnetlink-answers-file-exists-when-running-ifup/51947#51947)

2018/12/15

Android Studio で "Argument for @NotNull parameter 'message' of ..." が発生するようになってしまった

@Android Studio 3.2.1 on Ubuntu 18.04 LTS

Android Studio を 3.2.1 にしたところ、IDE Fatal Errors が発生するようになってしまいましたAndroid Studio をアップデートするまでは特に問題がなかったプロジェクトです。

具体的には以下のようなエラー。

``` Argument for @NotNull parameter 'message' of com/android/tools/idea/gradle/project/sync/GradleSyncState.syncFailed must not be null java.lang.IllegalArgumentException: Argument for @NotNull parameter 'message' of com/android/tools/idea/gradle/project/sync/GradleSyncState.syncFailed must not be null at com.android.tools.idea.gradle.project.sync.GradleSyncState.$$$reportNull$$$0(GradleSyncState.java) at com.android.tools.idea.gradle.project.sync.GradleSyncState.syncFailed(GradleSyncState.java) at com.android.tools.idea.gradle.project.sync.idea.IdeaSyncPopulateProjectTask.doPopulateProject(IdeaSyncPopulateProjectTask.java:135) at com.android.tools.idea.gradle.project.sync.idea.IdeaSyncPopulateProjectTask.populate(IdeaSyncPopulateProjectTask.java:97) at com.android.tools.idea.gradle.project.sync.idea.IdeaSyncPopulateProjectTask.access$000(IdeaSyncPopulateProjectTask.java:39) at com.android.tools.idea.gradle.project.sync.idea.IdeaSyncPopulateProjectTask$1.run(IdeaSyncPopulateProjectTask.java:86) at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:750) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:157) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:580) at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:525) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:85) at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:144) at com.intellij.openapi.progress.impl.CoreProgressManager$4.run(CoreProgressManager.java:395) at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:305) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) ```
2018/12/04

[Python] date と datetime オブジェクトの相互変換まとめ

[datetime オブジェクト、Unix time、文字列の相互変換まとめ](https://kokufu.blogspot.com/2018/12/python-datetime-unix-time.html) を書いたので、ついでと言っては何ですが date と datetime の変換についてもまとめてみました。