Rubyと筋肉とギターとわたし

筋トレが仕事です

elementary OS(ubuntu)へandroid studioを入れてkotlinした

f:id:rdwbocungelt5:20180313113825p:plain

ちょっとハマった話は前の記事に

smot93516.hatenablog.jp

最初はReact Nativeで開発をする予定だったのですが、同僚がiOSをswiftでやると言い出したので、仕方なく僕がkotlinをやることになりました。

なので、環境構築します(最近環境構築しかしてないぞ)。

java & android studioのインストール

忌々しいJavaからインストールしていきます(Java好きの方々すみません)

前の記事でadd-apt-repositoryしてるのですが、その手順も入れておきます。

$ sudo add-apt-repository ppa:webupd8team/java

$ sudo apt update

$ sudo apt install oracle-java8-installer

oracle-java8-installerのインストールの際に赤い確認画面が出てきます。「了解」->「はい」を選択したらおkです。

javaが入ってるか確認

$ java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

問題なさそう。

どんどん必要なパッケージを入れていきます。

$ sudo apt install oracle-java8-set-default

これは入ってたみたい。

$ sudo apt install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
E: パッケージ lib32bz2-1.0 が見つかりません
E: 'lib32bz2-1.0' に一致するパッケージは見つかりませんでした
E: 正規表現 'lib32bz2-1.0' ではパッケージは見つかりませんでした

なんかエラーがでてるので、調べていろいろ試した結果、 lib32bz2-1.0に関しては以下のコマンドで行けた。

$ sudo dpkg --add-architecture i386
$ sudo apt update

$ sudo apt install libbz2-1.0:i386

lib32stdc++6がまだ入ってなかったので直接指定で入れます。

$ sudo apt install lib32stdc++6

多分準備完了

あとはAndroid Studio自体をインストールします。

Android Studio のインストール | Android Studio

SSDだけどまあまあ時間かかる。。。

公式ページに書いてあったのでそれに習って、/usr/localへ移動させます。

$ cd Downloads

$ unzip android-studio-ide-171.4443003-linux.zip

なんかめちゃくちゃ解凍された。てなわけで、移動させてあげる。

$ sudo mv android-studio /usr/local/

これでおk。

起動してみまーす

Android Studioを起動!

$ sudo /usr/local/android-studio/bin/studio.sh 

(java:12819): Gtk-WARNING **: module_path にはテーマ・エンジンがありません: "pixmap",

(java:12819): Gtk-WARNING **: module_path にはテーマ・エンジンがありません: "pixmap",

(java:12819): Gtk-WARNING **: module_path にはテーマ・エンジンがありません: "pixmap",

(java:12819): Gtk-WARNING **: module_path にはテーマ・エンジンがありません: "pixmap",
3 13, 2018 11:23:00 午前 java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.

f:id:rdwbocungelt5:20180313112427p:plain

なんか警告でてるけどスルーします。

とりあえず問題なさげ。

android studioの設定とか

よーわからんので適当に。

Standardで。

f:id:rdwbocungelt5:20180313113225p:plain

もちろんdarkで。

f:id:rdwbocungelt5:20180313113429p:plain

あとはどんどん次に行くだけ。

f:id:rdwbocungelt5:20180313113452p:plain

f:id:rdwbocungelt5:20180313113503p:plain

これがまあまあ長いので待機。TLパトロールでもして待ってください。

f:id:rdwbocungelt5:20180313113542p:plain

おわったのでfinishを押す。と同時にwelcome画面が出てきます。

f:id:rdwbocungelt5:20180313113736p:plain

f:id:rdwbocungelt5:20180313113825p:plain

kotlin pluginをインストール

JetBrains社がプラグインを提供しているらしいのでそれを入れる。

右下のConfigure => Pluginsを選択。

f:id:rdwbocungelt5:20180313115202p:plain

「Install JetBrains plugin ...」を押下後、kotlinで検索。

f:id:rdwbocungelt5:20180313115526p:plain

なんか入ってるっぽいので、updateしておきます。

んでRestart Android Studioを押下。

f:id:rdwbocungelt5:20180313115732p:plain

f:id:rdwbocungelt5:20180313120002p:plain

これで一旦kotlinの環境構築が終了。

残りはまたこんど

projectを作ってJavaのコードをkotlinに変換するのは今度にします。

とりあえずここまでで終わりー。

おつでした。

elementaryOSにbluetoothドライバが入ってなかったのでいれようとした

この前記事にあげた新しいPC(HPのspectre)のLinuxにはbluetoothドライバが入っていたのですが、ThinkPadの方を見てみたら入ってなかったので入れる試みをしました\(^o^)/

PCちゃん

パッケージのインストール

必要なパッケージを指定して入れたいですが、めんどくさい

なのでとりあえず必要なもんをaptします。

$ sudo apt install bluez
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
bluez はすでに最新バージョン (5.37-0ubuntu5.1) です。
bluez は手動でインストールしたと設定されました。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。

は?

入ってる臭い。アイコン出てないんだけど!

とりあえずbluemanを入れてみる。

$ sudo apt install blueman
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  blueman
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
1,673 kB のアーカイブを取得する必要があります。
この操作後に追加で 4,948 kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 blueman amd64 2.0.4-1ubuntu2 [1,673 kB]
1,673 kB を 1秒 で取得しました (1,656 kB/s)
以前に未選択のパッケージ blueman を選択しています。
(データベースを読み込んでいます ... 現在 229939 個のファイルとディレクトリがインストールされています。)
.../blueman_2.0.4-1ubuntu2_amd64.deb を展開する準備をしています ...
blueman (2.0.4-1ubuntu2) を展開しています...
dbus (1.10.6-1ubuntu3.3) のトリガを処理しています ...
bamfdaemon (0.5.3~bzr0+16.04.20180209-0ubuntu1) のトリガを処理しています ...
Rebuilding /usr/share/applications/bamf-2.index...
gnome-menus (3.13.3-6ubuntu3.1) のトリガを処理しています ...
desktop-file-utils (0.22-1ubuntu5.1+elementary2~ubuntu0.4.1) のトリガを処理しています ...
mime-support (3.59ubuntu1) のトリガを処理しています ...
hicolor-icon-theme (0.17-1~elementary0.4.1) のトリガを処理しています ...
man-db (2.7.5-1) のトリガを処理しています ...
libglib2.0-0:amd64 (2.48.2-0ubuntu1+elementary0.4.1) のトリガを処理しています ...
blueman (2.0.4-1ubuntu2) を設定しています ...
dbus (1.10.6-1ubuntu3.3) のトリガを処理しています ...

なるほど!君が入ってなかったのか

じゃあ、blueman-manager起動しよう。。。。

f:id:rdwbocungelt5:20180312100208p:plain

あああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ

いみふ。

デーモン起動しなきゃいけないのかなとおもったので起動してみる。一緒にPC起動時にデーモンが自動に起動するよう設定も入れる。

$ sudo systemctl start bluetooth.service

$ sudo systemctl enable bluetooth.service
Synchronizing state of bluetooth.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable bluetooth

$ sudo blueman-manager

......だめだ。同じエラーが出る。

bluezのパッケージを全部指定して入れる。

sudo apt-get install bluez bluez-alsa bluez-audio bluez-btsco bluez-compat bluez-cups bluez-dbg bluez-gstreamer bluez-hcidump bluez-pcmcia-support bluez-tools bluez-utils python-bluez bluewho indicator-bluetooth libbluetooth-dev libgnome-bluetooth11 libbluetooth3 python-gobject python-dbus

んーうまくインストールできない。

blueman-managerがうまくいかないので、bluetoothctlを使う。

$ bluetoothctl
#

対話モードになったけど何も入力できん。詰んでるわこれw

もしやと思って、左上のアプリケーションからbluetoothを検索してみた。

ある!!!!

起動してみた!

f:id:rdwbocungelt5:20180312101900p:plain

ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ

だめっすねこれ。

衝撃の事実

最後にbluetoothイヤホンを接続モードにして以下を試しました。

$ sudo hcitool scan

or

$ sudo bluetoothctl

上ではDevice is not available: No such device。下は安定の対話モードだけど対話する気がない。

これはこれはと思ってThinkPad x230がそもそもbluetooth使えるのか調べてみたら...

ない!!!!!!!!!!!!!

今までの苦労は何だったんだ。今度bluetoothモジュール取り付けてやるからな。

OWARI

kotlinでしょっぱなから詰まった話

現在「kotlinスタートブック」の15章をやっています。

いきなりラムダ式やnull安全やらの内容をやると意味がわからなくなるので、一旦スルーで基本文法だけ抑えて一気にandroid開発の章を見ていましたが、しょっぱなから詰まりました。

error: unresolved reference: model

なんかしらんけどpackage practice.qiitaclient.model.*でエラーをでてるっぽい。

直接ファイル指定(package practice.qiitaclient.model.User)しても同じ結果、イミフ。

同じように詰まっている人たちがいた

qiita.com

teratail.com

teratail.com

すべて試したところ、最後のっぽい。

けどREPLを再起動しても、同じエラーが出る。。。

なんの解決にもなってないけど、一旦全部保存して、同期しなおしてからandroid studioを再起動。

いけたze

f:id:rdwbocungelt5:20180316164510p:plain

参考書が書かれたのは二年前なので同じ内容は出てないけど、一旦問題なくうごいた。

こんなエラーは出ないようになってほしいのぉ。。。

今後同じようなエラーが出てちゃんと調査したら関連記事作成しまっす。

後日談

他のファイルを作成して同じようなことをしてもエラーが発生する。

まじでイミフ。

調査が出来次第、また記事にあげます。。。。

elementaryOSでトラックパッドの検出範囲を変えた話

winで最初作業していた時は全く無かったのですが、Linuxデュアルブートしメインで使い始めたらめちゃくちゃ気になり始めたので修正しました。

タイピングをするたびにマウスが動いて仕方がなかった。。。

おかげでとっても快適です!

PCスペ(前も書いたけど)

  • HP spectre x360

まずは手のひら検出

ここを参考にしました。

Synaptics タッチパッド - ArchWiki

結果的には全く効力がなかったですw

これは諦めました。

次に範囲の設定

まずはトラックパッドの範囲を調べます。

$ grep range /var/log/Xorg.0.log
[     6.128] (--) synaptics: SynPS/2 Synaptics TouchPad: x-axis range 1302 - 5640 (res 37)
[     6.128] (--) synaptics: SynPS/2 Synaptics TouchPad: y-axis range 1116 - 4740 (res 64)
[     6.128] (--) synaptics: SynPS/2 Synaptics TouchPad: pressure range 0 - 255
[     6.128] (--) synaptics: SynPS/2 Synaptics TouchPad: finger width range 0 - 15

これでトラックパッドのx座標とy座標がわかります。

今回は手の平があたるのが問題だったので、x座標のみいじりました。

座標の見方はx座標の一番左が1302、一番右が5640って感じみたい。

ここを参考にさせていただきました。

qiita.com

設定を /etc/X11/xorg.conf.d/50-synaptics.conf に記述すればいいらしい。ない場合は /usr/share/X11/xorg.conf.d/50-synaptics.conf をコピーして作成せよ、と。

…僕のPCそもそも/usr/share/X11/xorg.conf.d/50-synaptics.confがないんですけどw

ってことで直接 /etc/X11/xorg.conf.d/50-synaptics.conf だけ作成して、以前作成したThinkPadのやつを参考に作りました。

それが以下。

Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"

        Option "AreaLeftEdge" "2000"
        Option "AreaRightEdge" "5000"
EndSection

x軸の1302~2000, 5000~5640の範囲を無効化するって意味です。

おわり

トラックパッドが動かなくなっただけで超快適になりました!

座標の範囲の見方が全然わからなくて設定で迷ってましたが、やっといけた。

では。

elementary OSにandroid studioを入れようとしたときにadd-apt-repositoryコマンドがないと言われた

業務でkotlinを使うことになり、最初にjavaを入れようとしたら速攻詰まりました。

add-apt-repositoryコマンドがない!!!!!!!!

ubuntu環境への環境構築の記事等でよく見ていたので知ってはいたんですけど、標準装備でないとは想定外でした。

パッケージの検索

以下からadd-apt-repositoryを検索

Ubuntu – Ubuntu パッケージ検索

すると結果がこれ

Ubuntu – Package Contents Search Results -- add-apt-repository

software-properties-commonの中にあるっぽい。

$ sudo apt install software-properties-common

$ sudo add-apt-repository ppa:webupd8team/java

他の方法

apt-fileを使う方法

$ sudo apt install apt-file
$ sudo apt-file update
$ sudo apt-file search add-apt-repository
software-properties-common: /usr/bin/add-apt-repository
software-properties-common: /usr/share/man/man1/add-apt-repository.1.gz

software-properties-commonにあることがわかります

おわり

うまく行ったZE。

elementaryOSは最小構成とはいえ、add-apt-repositoryくらい入れておいて欲しいっすね。

Win10とelementaryOSでデュアルブートしてみた

Rubyのためにブログを開設したのにまったく違うことしか書いてないですが、今回もそんな感じっす。

新しい会社(まだ正式には入っていないけど)でPCを購入していただいたので、そちらのPCへLinux環境を作ってみました。

マシンスペック

なんで仮想環境にしなかったのか

VMとかVirtualBoxで作ってもよかったんですが、Linuxなのに仮想環境だとその早さを実現できないのではと危惧したからです。

実際他の方の記事をみるとそういった不満が多かったというね。

業務でwinを使うことはほとんどないですし、Linuxで捗る作業が多い。

でも、もしofficeとかいれることになったときに困るので、winのOSを残しつつデュアルブートで快適に開発を行おうと思ったのですた。

準備

以前、thinkpad x230にelementaryOSを入れたときのライブUSBがあったので、それをそのまま流用することにします(なので手順は省きます)。

一応以下のリンクからダウンロードできます(カスタムで0$にすれば無料です)。

elementary.io

システム修復ディスクの作成

めんどくさかったのでカット(USBメモリ買わんと行かんかったし)

バックアップの作成

会社のNASにぶち込みました。

「設定」->「更新とセキュリティ」->「バックアップ」でバックアップ先をNASにしてあげればいけます。

バックアップ先はデフォルトでは接続しているドライブしか表示されないので、「ネットワーク上の場所をすべて表示」で共有フォルダを選択したらおk。

win機のパーティション分割

f:id:rdwbocungelt5:20180309144723p:plain

左下のwinアイコンを右クリックし、「ディスク管理」を開きます。

Windows(C:)ドライブを右クリックしてボリューム縮小してください。

f:id:rdwbocungelt5:20180309145537p:plain

デフォルトでだいたい半分になったのでこれで行きます。

マルチブートの起動順位を変更

以下を参照

www.billionwallet.com

ライブUSBを指してF9連打

PCにelementaryOSの入ったUSBを指してブート画面を開きます。

「Try elementary OS without instaling」を選択。

すぐにelementary OSの象徴である「e」のマークが出てきます。

無事デスクトップが表示されたら、elementary OSのマークのアイコンを選択します。

elementary OSのインストール

言語で日本語を選択 -> wifiを接続

次に「elementaryのインストール中にアップデートをダウンロード」と「〜サードパーティーソフトウェアをインストール」にチェックをいれて、セキュアブートを無効にします。

インストールの種類で「それ以外」を選択し、「続ける」を押下。

パーティションの振り分け

winの方で縮小したドライブから、4GBだけ残してあとはすべて割り当てます。

空いている領域を選択し「基本パーティション」「この領域の始点」にチェックをつけ、利用方法を「ex4ジャーナリングファイルシステム」にします。そして、マウントポイントを「/」としておkを選択。

残りの4GBはswap領域として作成します。「基本パーティション」「この領域の終点」「スワップ領域」でおkを選択。

ブートローダをインストールするデバイスでは自身のSSD/HDDを選択するようなので、一番上を選択する(ここをミスるとOSにアクセスできなくなるらしい、要はチェックメイト状態)。

無事完成!…と思ったら

一旦再起動してwinの方を立ち上げてみたら、シャットダウン出来なくなりましたwww

シャットダウンしても、またwinが立ち上がるという。。。

ちょっと意味が分からなかったので、まだやっていなかったwinの高速スタートアップを無効にする設定をやりました。(これもあとで記事書くわ)

するとやっとシャットダウンできるようになった!!!

最後に

とりあえずデュアルブートできるようになって、起動したらBIOS画面が出るようになったのでめでたし。

新しいPCの設定をいろいろやっていきたいと思います。

それもまた記事にします。

何かわからないことがあればコメントにお願いします。

ではでは〜

React Nativeを環境構築してみたら詰まった話

ちょっと所用でReactを触ることになり、先にちょっとだけReact Nativeを触っちゃおうということになったので環境構築してました。

安定して詰まったのでそれをここに記す。

環境

  • OSX (バージョン忘れた)

パッケージのインストール

nodebrewが入っている状態で進めていっています(これもバージョンわからないので後で書く。。。) まずはhomebrewでReactに必要なものをインスコします。

$ brew install npm

$ brew install watchman

$ brew install flow

npm5だとreact nativeが動かないようなので、対応するnodeを入れます。
ここではv7.10.1です(7系で一番新しいやつ)。

$ nodebrew install-binary v7.10.1

$ nodebrew use v7.10.1

$ node -v
v7.10.1

$ npm -v
4.2.0

npmでcreate-react-native-appreact-native-cliを入れます。 (なぜかcreate-react-native-appコマンドが使えなく、react-nativeコマンドしか使えなくなったので調査中)

$ npm install -g create-react-native-app

$ npm install -g react-native-cli

$ npm start
2018-03-01T17:30:34,051: [cli] Failed to open /Users/fndm40/Library/LaunchAgents/com.github.facebook.watchman.plist for write: Permission denied

Watchman:  watchman --no-pretty get-sockname returned with exit code=null, signal=SIGABRT, stderr= 2018-03-01T17:30:34,051: [cli] Failed to open /Users/fndm40/Library/LaunchAgents/com.github.facebook.watchman.plist for write: Permission denied

やっぱ何かしらエラー出ますよね。。。
brewで入れたWatchmanに権限がないようなので与えてあげます。

$ sudo chown -R $(whoami):staff ~/Library/LaunchAgents

$ npm start

うまく行けば、ブラウザに画面が表示されます!

最後に

今回はお試しでmac環境を作ったので、次は本格的にUbuntuの方で出来たらなぁーと思います。
React Nativeじゃなくて、kotlinを使うことになりそうですが。。。