読者です 読者をやめる 読者になる 読者になる

USB メモリを Ubuntu 16 で exFAT にフォーマットする (フォーマット名は小文字でないとエラー)

確認した環境

Install utils

sudo apt-get install -y exfat-fuse

gnome-disks への設定

in terminal

gnome-disks
  • Erase: Don’t overwrite existing data (Quick)
  • Type: Custom (Enter filesystem type)
  • Name: data (何でもいい)
  • Filesystem: exfat

exFAT と書いてあるところが多いけど私の環境ではエラーになった

Error formatting volume
Creation of file system type exFAT is not supported (udisks-error-quark, 11)

諦めた頃に GParted の View -> File System Support で使えるフォーマットのマトリクスを見つけて気づいた。

f:id:h__s:20170410184413p:plain

バージョンとかで違うんだろか . .

秋葉原で Uber EATS 頼めた

いつの間に .. . 千代田区はまだだったんだけど ok googke で遊んでたら出てきたのでつい頼んでしまった

Hungry? Get ¥2000 off your first order on #UberEATS with my code: eats-lgiaj. http://ubr.to/EatsGiveGet

クーポンが出てきたのでどうぞ

TypeScript のコードレビューサービスは CODEBEAT, Codacy 2つ (2017.04時点

当然 tslint, test, coverage は取った上でソースコードのレビューをしてほしい。

経緯

  • TypeScript は書いたことないけど使ってみたい -> お作法とかベストな書き方とか多分できてない
  • チームはたいてい1〜2人 -> 経験のみでのレビューだと指摘の内容が偏りがち。しかも今回はチーム1人
  • Java だと無料で優秀なツールがそろっていたのでその時のような環境を作りたい
    • lint が CheckStyle のイメージ。 FindBug とか PMD のような、もう一歩踏み込んだ指摘がほしい

環境

  • API サーバー用
  • TypeScript 2.0

候補のサービス

共通の特徴

  • 両方共有料。それなりのお値段。 githubと同じかそれ以上くらい
  • PMDとかFindBugとかのインストール型の解析サービスに比べて
    • OAuth でポチポチやるだけなので設定は簡単
    • default で Commit, Pull Request を hook して、結果を勝手にgithub上に押し込んでくれる(CIサービスがやってるような感じ)
    • Badge 嬉しい

Codacy

  • Scala でお世話になった。
  • これも一人だったので助かった
  • サイトがすごく重い .. analyze 済みのものも重いし画面に表示する内容のものがそんなになくても重い
  • exclude の設定をサイト上でするのでリポジトリに固有のファイルをコミットしなくて良い
  • グラフで issue が減っていくのを見ると小さい issue でも対応した時の満足感がちょっと増す
  • Coverage も表示してくれるはずだけど Scala の時は使っていたバージョンが対応していなくて使えなかった
  • TypeScriptに関しては、全然指摘してくれない。今 All A であまり面白くない
  • しばらく使って様子見する予定

CODEBEAT

  • swagger-ui のソースをたくさん指摘してくれる。(書いたところの指摘はあんまりまだ無いけど、codacy よりは多い。)
  • exclude するファイルは gitignore 形式で、コミット必要
  • 画面というか機能は Codacy より少ない印象。(まだ使いこなせてないだけかも)
  • こちらも使いながら様子見

あと、 SideCI も tslint 対応しているみたい 今のところこんな感じだろうか。 他にあったら教えてください . . ..

タブ補完が効かなくなった Ubuntu 16.04

多分 ~/.hashrc をいじってからだと思うけど bash の TAB 補完が効かない。

多分ホームディレクトリを手動で作ったユーザーも効いていない。

~/.bashrcに下記を足して解決した。

. /etc/bash_completion

デフォルトの hashrc には下記で入っているのでこちらで出したほうがいいかと。

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then                                                  
  . /etc/bash_completion
fi

これってもしかして… 手入れ不要のジューサー! JUISIR - Zero cleaning, Maximum juice | Indiegogo

https://www.indiegogo.com/projects/juisir-zero-cleaning-maximum-juice#/

Ubuntu 16 -> Ubuntu 16 の SSH 接続が遅い

尋常じゃなく遅かったけど設定で治ったのでメモ 自分のサーバーへつなぐのも遅いしアマゾンの EC2 につなぐのも遅い

自分のマシンの /etc/ssh/sshd_conig 修正で治った - AddressFamily inet - GSSAPIAuthentication no

sudo systemctl restart sshd.service

nginx, ubuntu 16.04, Let's encrypt, webroot で SSL 導入したあと、http アクセスを https アクセスに転送する

やりたいこと

nginx, ubuntu 16.04, Let’s encrypt, webroot で SSL 導入したあと、http アクセスを https アクセスに転送する

LB 挟まず、1台に複数のアプリケーションをのせている開発用の小さい環境での設定です。

環境

http から https への転送

1. 設定ファイルをエディタで開く

sudo vi /etc/nginx/sites-available/default

2. 80番を受け付けている server の server_name を消して location / ブロックに 301 で https アクセスし直すよう設定

下記で設定の場合です

  • ドメイン yourdomain.example.com
  • http アクセスは https に転送
  • yourdomain.example.com に来たら 9000番に転送
  • できればそのまま letsencrypt renew は動く状態にしたい # これは未確認。早めに確認しないと。。。
server {
  listen 80 default_server;
  root /var/www/html;
  location ~ /.well-known {
    allow all;
  }
  location {
    return 301 https://$server_name$request_uri;
  }
}
server {
  server_name yourdomain.example.com;
  listen 443 ssl;
  include snippets/ssl-yourdomain.example.com.conf;
  include snippets/ssl-params.conf;
  location / {
    proxy_pass http://localhost:9000;
  }
}

3. reload

sudo nginx -t # テスト 心配なら
sudo systemctl reload nginx

で大丈夫なはず . . 多分。

日本語が入力できない (Ubuntu 16.04 LTS, chrome, fcitx, mozc)

日本語入力ができない。今までいつもすんなりいかず、 ibus を使ったり何かの設定をいじってたらいつの間にか動いたりでよくわからない。

ibus がいよいよ動かなくなってきたので fcitx - mozc に変更、動いた方法のメモです。

環境

  • Ubuntu 16.04 LTS
  • Chrome Version 56.0.2924.87 (64-bit)
  • Fcitx
  • mozc

対応

GTK_IM_MODULE 等の設定で動いた。 ibusの時も似たようなのをやってやっと skype で日本語が入力できるようになった気がする。

.profile に下記設定

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
fcitx -d

ansibleにはこうしました

  - lineinfile: dest=/home/{{ username }}/.profile regexp='GTK_IM_MODULE' line='export GTK_IM_MODULE=fcitx'
  - lineinfile: dest=/home/{{ username }}/.profile regexp='QT_IM_MODULE' line='export QT_IM_MODULE=fcitx'
  - lineinfile: dest=/home/{{ username }}/.profile regexp='XMODIFIERS' line='export XMODIFIERS=@im=fcitx'
  - lineinfile: dest=/home/{{ username }}/.profile regexp='fcitx' line='fcitx -d'

Chrome だけ動かない時

flash の設定云々の情報が多いので試したけど変わらず。 chrome を 一度プロセス全部 kill して起動し直すと大丈夫でした。 .profile でログイン時にブラウザを起動する設定を入れていたので、その時点で fcitx が起動しきれていなかったのではないかと思います。 sleep 入れて治りました。

Gemfile.lock もコミットしていいらしい

.lock はもうロックファイルではなかったんだ .. 知らなかった

yarn.lock はコミットしていいらしい

stackoverflow.com

.lock だとロックファイルかと思ってしまうよ。。。

playbook の値にコロンを入れると「ERROR! Syntax Error while loading YAML.」「We could be wrong, but this one looks like it might be an issue with unbalanced quotes. If starting a value with a quote, make sure the line ends with the same set of quotes.」

問題

Ansible の playbook 内の lineinfile の値にコロンが入っていると Syntax error になる。

  • playbook の該当箇所
 - lineinfile: dest="/etc/elasticsearch/elasticsearch.yml" regexp="# network.ost" line='network.host: 0.0.0.0'
  • エラーメッセージ
ERROR! Syntax Error while loading YAML.


The error appears to have been in '/anywhere/tasks/main.yml': line 6, column 102, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

 - apt: name=elasticsearch update_cache=yes
 - lineinfile: dest="/etc/elasticsearch/elasticsearch.yml" regexp="# network.host" line='network.host: 0.0.0.0'
                                                                                                     ^ here
We could be wrong, but this one looks like it might be an issue with
unbalanced quotes.  If starting a value with a quote, make sure the
line ends with the same set of quotes.  For instance this arbitrary
example:

    foo: "bad" "wolf"

Could be written as:

    foo: '"bad" "wolf"'

Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.

対応

ダブルクオートで囲ってコロンだけ中括弧とクオートで囲むと動いた。

 - lineinfile: dest="/etc/elasticsearch/elasticsearch.yml" regexp="# network.ost" line="network.host{{':'}} 0.0.0.0"

環境

user@somehost:~/somewhere$ uname -a
Linux somehost 3.13.0-88-generic #135-Ubuntu SMP Wed Jun 8 21:10:42 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
user@somehost:~/somewhere$ ansible --version
ansible 2.1.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides
user@somehost:~/somewhere$ ansible-playbook --version
ansible-playbook 2.1.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides
user@somehost:~/somewhere$ vagrant --version
Vagrant 1.4.3

作業ログ

vagrant の provisioning です

user@somehost:~/somewhere$ vagrant provision [default] Running provisioner: ansible...
[DEPRECATION WARNING]: Instead of sudo/sudo_user, use become/become_user and 
make sure become_method is 'sudo' (default).
This feature will be removed in a 
future release. Deprecation warnings can be disabled by setting 
deprecation_warnings=False in ansible.cfg.
ERROR! Syntax Error while loading YAML.


The error appears to have been in '/anywhere/tasks/main.yml': line 6, column 102, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

 - apt: name=elasticsearch update_cache=yes
 - lineinfile: dest="/etc/elasticsearch/elasticsearch.yml" regexp="# network.host" line='network.host: 0.0.0.0'
                                                                                                     ^ here
We could be wrong, but this one looks like it might be an issue with
unbalanced quotes.  If starting a value with a quote, make sure the
line ends with the same set of quotes.  For instance this arbitrary
example:

    foo: "bad" "wolf"

Could be written as:

    foo: '"bad" "wolf"'

Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.

バックスラッシュ入れてもダメ

user@somehost:~/somewhere$ vagrant provision [default] Running provisioner: ansible...
[DEPRECATION WARNING]: Instead of sudo/sudo_user, use become/become_user and 
make sure become_method is 'sudo' (default).
This feature will be removed in a 
future release. Deprecation warnings can be disabled by setting 
deprecation_warnings=False in ansible.cfg.
ERROR! Syntax Error while loading YAML.


The error appears to have been in '/anyware/tasks/main.yml': line 6, column 103, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

 - apt: name=elasticsearch update_cache=yes
 - lineinfile: dest="/etc/elasticsearch/elasticsearch.yml" regexp="# network.host" line='network.host\: 0.0.0.0'
                                                                                                      ^ here
We could be wrong, but this one looks like it might be an issue with
unbalanced quotes.  If starting a value with a quote, make sure the
line ends with the same set of quotes.  For instance this arbitrary
example:

    foo: "bad" "wolf"

Could be written as:

    foo: '"bad" "wolf"'

Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.

クオートで囲って解決

user@somehost:~/somewhere$ vagrant provision [default] Running provisioner: ansible...
[DEPRECATION WARNING]: Instead of sudo/sudo_user, use become/become_user and 
make sure become_method is 'sudo' (default).
This feature will be removed in a 
future release. Deprecation warnings can be disabled by setting 
deprecation_warnings=False in ansible.cfg.

PLAY [all] *********************************************************************

TASK [setup] *******************************************************************
ok: [default]

コロンの後にスペースが入っているとエラーになるらしい

Ansible の YAML で「:」を使う方法 - Qiita

Android の suica アプリで広告と背景しか表示されなくなったけど Developer option の強制 GPU レンダリングを OFF にして治った

apt-get が途中で0% [Waiting for headers] [Waiting for headers] から動かなくなる。git clone もうまく行かない

apt-get update が途中で0% [Waiting for headers] [Waiting for headers] から動かなくなる。

user@server:$ sudo apt-get update
Hit:1 http://jp.archive.ubuntu.com/ubuntu xenial InRelease
Ign:2 http://dl.google.com/linux/chrome/deb stable InRelease                   
Hit:3 http://download.virtualbox.org/virtualbox/debian raring InRelease        
Ign:4 http://archive.ubuntulinux.jp/ubuntu xenial InRelease                    
Hit:5 http://archive.ubuntulinux.jp/ubuntu xenial Release                      
Hit:7 http://dl.google.com/linux/chrome/deb stable Release                     
Ign:9 http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist InRelease   
Hit:10 http://ppa.launchpad.net/cwchien/gradle/ubuntu xenial InRelease         
Hit:11 http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist Release    
Hit:13 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease       
Ign:14 https://dl.bintray.com/sbt/debian  InRelease                       
Get:15 https://dl.bintray.com/sbt/debian  Release [814 B]
Hit:15 https://dl.bintray.com/sbt/debian  Release                       
0% [Waiting for headers] [Waiting for headers]            

止まる箇所はいろいろで、 git clone も必ず失敗する。 何か大きすぎるファイルでもあったかなと思うけど これも止まるパーセンテージが毎回違う

user@server:~$ git clone git@gitserver/repos.git
Cloning into 'repos'...
remote: Counting objects: 1242, done.
remote: Compressing objects:  26% (159/611)  

しかも回数試すと落とせている量がだんだん少なくなって不安

user@server:~$ git clone git@gitserver/repos.git
Cloning into 'repos'...
remote: Counting objects: 1242, done.
remote: Compressing objects:  16% (98/611)   
^Cfatal: The remote end hung up unexpectedly

user@server:~$ git clone git@gitserver/repos.git
Cloning into 'repos'...
remote: Counting objects: 1242, done.
remote: Compressing objects:  13% (80/611)   
^Cfatal: The remote end hung up unexpectedly

user@server:~$ git clone git@gitserver/repos.git
Cloning into 'repos'...
remote: Counting objects: 1242, done.
remote: Compressing objects:  19% (117/611)   
^Cfatal: The remote end hung up unexpectedly

毎回必ず減るわけでもなかった

原因

変えてみて治ったからわかったのだけど、
MTU の設定がお気に召さなかったよう。
今 1500 になっている

user@server:~$ ifconfig
~~~

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

ethnum    Link encap:Ethernet  HWaddr nn:nn:nn:nn:nn:nn  
          inet addr:nn.nn.nn.nn  Bcast:nn.nn.nn.nn  Mask:nn.nn.nn.nn
          inet6 addr: nnnn.nnnn.nnn.nnnn/nn Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9272391 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11482380 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4768499875 (4.7 GB)  TX bytes:8317645986 (8.3 GB)
          Interrupt:18 Memory:f71c0000-f71e0000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
~~~

解決方法

mtu を適切に設定

user@server:~$ sudo ifconfig ethnum mtu 1468

最適な MTU の確認方法

パケットのサイズを指定しながら ping を打ってみて、繋がる最大値が最適な値です。
下での確認内容

  1. 1500 で送ってみて、帰ってこないのでNG (1500は今の値なので当然つながらない)
  2. 1400 で OK
  3. 1450 で OK
  4. 1475 で NG
  5. 1462 で OK
  6. 1468 で OK
  7. 1470 で NG
  8. 1469 で NG
  9. 1468 で OK

なので、1468 で設定。
確認がややこしければ1450 とかにしてみて繋がるならそのままでもokです。
効率は悪くなるけど、まずは繋がるんだから . .

user@server:~$ ping -c 1 -s 1500 example.com
PING example.com (93.184.216.34) 1500(1528) bytes of data.

^C
--- example.com ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

user@server:~$ ping -c 1 -s 1400 example.com
PING example.com (93.184.216.34) 1400(1428) bytes of data.
1408 bytes from 93.184.216.34: icmp_seq=1 ttl=51 time=129 ms

--- example.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 129.984/129.984/129.984/0.000 ms
user@server:~$ ping -c 1 -s 1450 example.com
PING example.com (93.184.216.34) 1450(1478) bytes of data.
1458 bytes from 93.184.216.34: icmp_seq=1 ttl=51 time=129 ms

--- example.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 129.737/129.737/129.737/0.000 ms
user@server:~$ ping -c 1 -s 1475 example.com
PING example.com (93.184.216.34) 1475(1503) bytes of data.
^C
--- example.com ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

user@server:~$ ping -c 1 -s 1462 example.com
PING example.com (93.184.216.34) 1462(1490) bytes of data.
1470 bytes from 93.184.216.34: icmp_seq=1 ttl=51 time=129 ms

--- example.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 129.576/129.576/129.576/0.000 ms
user@server:~$ ping -c 1 -s 1468 example.com
PING example.com (93.184.216.34) 1468(1496) bytes of data.
1476 bytes from 93.184.216.34: icmp_seq=1 ttl=51 time=130 ms

--- example.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 130.739/130.739/130.739/0.000 ms
user@server:~$ ping -c 1 -s 1470 example.com
PING example.com (93.184.216.34) 1470(1498) bytes of data.
^C
--- example.com ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

user@server:~$ ping -c 1 -s 1469 example.com
PING example.com (93.184.216.34) 1469(1497) bytes of data.

^C
--- example.com ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

user@server:~$ ping -c 1 -s 1468 example.com
PING example.com (93.184.216.34) 1468(1496) bytes of data.
1476 bytes from 93.184.216.34: icmp_seq=1 ttl=51 time=130 ms

--- example.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 130.318/130.318/130.318/0.000 ms
user@server:~$ 

activator new sampleapp play-scala で作ったプロジェクトを IntelliJで sbt run すると 「object index is not a member of package views.html」エラー

activator new sampleapp play-scala で作ったプロジェクトを IntelliJで sbt run すると 「object index is not a member of package views.html」エラー

 - Compilation completed with 1 error and 0 warnings in 4s 912ms
sampleapp/app/controllers/HomeController.scala
Error:(21, 19) object index is not a member of package views.html
    Ok(views.html.index("Your new application is ready."))

ファイル

controllers.HomeController

package controllers

import javax.inject._
import play.api._
import play.api.mvc._

/**
 * This controller creates an `Action` to handle HTTP requests to the
 * application's home page.
 */
@Singleton
class HomeController @Inject() extends Controller {

  /**
   * Create an Action to render an HTML page with a welcome message.
   * The configuration in the `routes` file means that this method
   * will be called when the application receives a `GET` request with
   * a path of `/`.
   */
  def index = Action {
    Ok(views.html.index("Your new application is ready."))
  }

}

対処

コマンドラインで sbt run してからなら通った。 タスクの作り方が悪かったんだろうか . .

Ubuntu で bluetooth キーボードマウスがログイン時に認識されないのはlocal.rc に1行足したら解決する

現象

ログイン前に bluetooth キーボードマウスが認識されなくてつらい

環境

/etc/rc.local に1行足して解決した

exit の前あたりに下記追加

rfkill unblock all

ansible 風

  - lineinfile: dest=/etc/rc.local line="rfkill unblock all" regexp="rfkill unblock" insertbefore="exit 0"