プログラミング・IT・英語・数学とか

英検1級、TOEIC満点(990点)、セキュリティスペシャリスト、DBスペシャリスト、ネットワークスペシャリスト。英語とITとか。いろいろ試してみたことを書いていきます

【Android Studio】エラーがでるとき。Emulator: emulator: ERROR: Unknown AVD name [Pixel_3_API_29], use -list-avds to see valid list.

エラー内容

11:53 Emulator: emulator: ERROR: Unknown AVD name [Pixel_3_API_29_2], use -list-avds to see valid list.11:53 Emulator: emulator: ERROR: Unknown AVD name [Pixel_3_API_29_2], use -list-avds to see valid list.
11:53 Emulator: Process finished with exit code 1

原因

AVD managerがAVDを作った場所とEmulatorが見に行く場所が違っているかららしい。なぜや・・・。

解決方法

これでいいのかわからないけど、とりあえず動かしたいのであれば以下でできました。

  1. /root/.android/avd
  2. /home/USERNAME/.android/avd

AVD managerは1に作るけどEmulatorは2に見に行くからみたいなので

cp -pr /root/.android/avd/* /home/USERNAME/.android/avd
※USERNAMEは自分のユーザー名に置き換えてください。

とすればエラーなく実行できるようになります。

参考

https://stackoverflow.com/questions/48996437/process-finished-with-exit-code-1-unknown-avd-name?noredirect=1&lq=1

【図解】 sedの図解

sedの図解

sedの図解が探してもなかったので自作してみました。やっぱりコマンドが何をやっているかはイメージ図が合ったほうが理解しやすいので。

sedの構成

標準入力標準出力パターンスペースホールドスペースsedスクリプト

これだけわかっていれば理解しやすいです。

  • 標準入力:ここから一行ずつ読み込みます。
  • パターンスペース:ここがメインの作業場所になります。ここに読み込まれた行をいろいろ操作します。
  • ホールドスペース:一時的な記録場所です。
  • 標準出力:パターンスペースで編集した内容を標準出力に出します。
  • sedスクリプトsedはこのスクリプトに従ってデータを編集します。sedスクリプト内をループしたりもできます。

sedの動作の流れ

sedが何をしているかというと、大きく言えば以下のことをしているだけです。

  1. 標準入力から1行読み込んでパターンスペースに入れる
  2. sedスクリプトをすべて実行する
  3. 標準出力に出してパターンスペースを空にする。

 

pip install --upgrade pocketsphinx が失敗するときの対応方法

現象

こんな感じのエラーメッセージが出る。

・・・省略・・・
deps/sphinxbase/src/libsphinxad/ad_alsa.c:76:28: fatal error: alsa/asoundlib.h: そのようなファイルやディレクトリはありません
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
----------------------------------------
ERROR: Command errored out with exit status 1: /home/shohei/tmp/20190810/env/bin/python3.5 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-__0ixsyy/pocketsphinx/setup.py'"'"'; __file__='"'"'/tmp/pip-install-__0ixsyy/pocketsphinx/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-w1j6dzl6/install-record.txt --single-version-externally-managed --compile --install-headers /home/shohei/tmp/20190810/env/include/site/python3.5/pocketsphinx Check the logs for full command output.

原因

インストールに必要な、いろいろなパッケージが入っていないために起こります。

対応方法

エラーとなったファイルがどのパッケージに入っているかを見つけて、エラーが出なくなるまでインストールし続ければ解決です。

# ファイルからパッケージを探すためにapt-fileをインストールします。インストール済みの場合はしなくてよいです。
sudo apt-get install apt-file
sudo apt-file update

# エラーメッセージから存在しないファイルを特定し探します。この例ではpulse/pulseaudio.hです。
sudo apt-file search pulse/pulseaudio.h

# 対象のパッケージをインストールします。
sudo apt-get install libpulse-dev

 

bzrで間違ってuncommitしてしまったリビジョンを元に戻したいとき

DRTL

bzrtoolsをインストールし、bzr heads --all コマンドでrevidを特定し、bzr pull . -r revid:[戻したいrevid]でできる。

詳細

https://bzrinit.com/05.html#ununcommit の情報を補足した記事です。日本語での情報が見つからなかったため書きました)

以下のようにuncommitしてしまった例で話を進めます。
まず最初にリビジョンが1,2,3と3つあったとします。
概念図:「1 → 2 → 3」
コマンド結果:

[shohei@my-laptop bzrtoolstest]$ bzr log
------------------------------------------------------------
revno: 3
committer: Shohei Hagiwara <shohei@localhost>
branch nick: bzrtoolstest
timestamp: Sat 2019-03-09 12:20:01 +0900
message:
rev3
------------------------------------------------------------
revno: 2
committer: Shohei Hagiwara <shohei@localhost>
branch nick: bzrtoolstest
timestamp: Sat 2019-03-09 12:19:46 +0900
message:
rev2
------------------------------------------------------------
revno: 1
committer: Shohei Hagiwara <shohei@localhost>
branch nick: bzrtoolstest
timestamp: Sat 2019-03-09 12:19:29 +0900
message:
rev1.

ここで間違って、2,3をuncommitしてしまったとします。
概念図:1 → 2 → 3
コマンド結果: 

[shohei@my-laptop bzrtoolstest]$ bzr uncommit -r 1
    2 Shohei Hagiwara 2019-03-09      rev2
    3 Shohei Hagiwara 2019-03-09      rev3
The above revision(s) will be removed.Uncommit these revisions? ([y]es, [n]o): yesYou can restore the old tip by running:  bzr pull . -r revid:shohei@localhost-20190309032001-co5i2nh7w14r1uha
[shohei@my-laptop bzrtoolstest]$ 

 (そして、間違いに気づかずにターミナルを閉じてしまい、revidがわからなくなってしまったとします・・・。)
ここから、2,3を戻したいとします。以下、詳細な手順です。

bzzrtoolsをインストール

ubuntuであれば以下でできます。

sudo add-apt-repository ppa:bzr/ppa
sudo apt-get update
sudo apt install bzrtools

他のOSの方法や公式手順は以下のサイトを参照ください。
http://wiki.bazaar.canonical.com/Download

 

bzr heads --allコマンドでrevidを特定

bzr log だとrev1ですが、bzr heads --allとするとリビジョン3のrevidが表示されていることが確認できます。

[shohei@my-laptop bzrtoolstest]$ bzr log -r -1
------------------------------------------------------------
revno: 1
committer: Shohei Hagiwara <shohei@localhost>
branch nick: bzrtoolstest
timestamp: Sat 2019-03-09 12:19:29 +0900
message:
rev1.
[shohei@my-laptop bzrtoolstest]$ bzr heads --all
HEAD: revision-id: shohei@localhost-20190309032001-co5i2nh7w14r1uha (dead)
committer: Shohei Hagiwara <shohei@localhost>
branch nick: bzrtoolstest
timestamp: Sat 2019-03-09 12:20:01 +0900
message:
rev3

 

bzr pull . -r revid:[戻したいrevid]で戻す

さきほどわかったrevision-idを使ってpullで戻します。

[shohei@my-laptop bzrtoolstest]$ bzr pull . -r revid:shohei@localhost-20190309032001-co5i2nh7w14r1uha
All changes applied successfully.
Now on revision 3.

念の為にbzr logで確認してみると、ちゃんとbranchのリビジョンが3に戻っているのが確認できます。

[shohei@my-laptop bzrtoolstest]$ bzr log -r -1
------------------------------------------------------------
revno: 3
committer: Shohei Hagiwara <shohei@localhost>
branch nick: bzrtoolstest
timestamp: Sat 2019-03-09 12:20:01 +0900
message:
rev3
[shohei@my-laptop bzrtoolstest]$

 

【Ubuntu】 間違ってusermodでsudoを消してしまったとき

sudoをユーザーから外してしまった・・・。

usermodで新しいグループをアカウントに追加しようとしたら間違って他のグループを全部消してしまったときの直し方。

基本的に↓の翻訳です。いや、これがあって本当に助かった・・・。他にも自分のような人がいて、この記事が参考になればさいわいです。

askubuntu.com

手順

  1. 起動時にShiftキーを押しながら起動し、grub2メニューに入る。(自分はShift押し続けていたらBIOSの画面からまったく進まなかったので、一瞬離してやってみてうまく行きました)
  2. Advanced Options for Ubuntuを選択しEnter。
  3. 現在使っているカーネルリカバリーモードに入る。↓みたいな感じでrecover modeってついてるやつ。おそらく一番上のrecovery modeが現在使っているカーネルだと思う。
    Ubuntu xx.xx x.xx.xx-xx-generic (recovery mode)
  4. root - Drop to root shell を選択してEnter
  5. 「mount -o remount,rw /」を実行しファイルに書き込めるようにする。
  6. (※ ここから元記事と違う。元記事ではnanoを使ってるけど、nanoはよくわからないのでviを使うようにした)
    「vi /etc/group」して、sudoの一番後ろに自分のアカウント名を書く。shoheであれば、「sudo: shohei」みたいな感じになる。
  7. 「:wq」で保存して抜ける。
  8. exitで抜ける。
  9. resume - Resume normal boot を選択して起動する。

Variability hypothesisとは?

日本語の説明を探してもなかったので、メモ程度にここで説明。ほぼwikipediaの翻訳だけども。。。

Variability hypothesis = 女性よりも男性の方が知性とか能力とか、いろいろな部分で上下のばらつきがあるんじゃないかという仮説

Variability hypothesisは別名でgreater male variability hypothesisというらしい。このhypothsisの和訳が存在するのかわからないけど、和訳するとすれば、「男性の方がバラツキがあるよ仮説」って感じになるのかな・・・?なんかもっと学術的なのつけられそうだけど、そういうの全然わかんないからなーw

ようするに、人間全体で見たときに、女性よりも男性の方が知性とか能力に上下に幅があるということらしい。たとえば知性で言えば、女性は男性よりも平均的な人が多くて、男性はめっちゃ頭いい人が(女性よりは)多くて、また、めっちゃ頭悪い人も多い、ってことっぽい。

よくよく読むと、人間社会だけでなく他の生物でも見つかる現象なんだとか。

ただ、wikipediaを見た感じだと、ただの仮説であって本当かどうかというところまでは証明ができていないよう。

【Spring Boot】@Valueアノテーションがうまく動かないのはorg.springframework.beans.factory.annotationの@Valueじゃないからかも。

現象

@Valueを使ってもインジェクションができない。

 

原因

import文を見ると、import org.springframework.beans.factory.annotationがあるか?ない場合、他の@Valueアノテーションを使っている。