寝ても覚めてもこんぴうた

プログラム書いたり、ネットワーク設計したり、サーバ構築したり、車いじったり、ゲームしたり。そんなひとにわたしはなりたい。 投げ銭は kyash_id : chidakiyo マデ

githubのパスワード変更をした際にSourceTreeでpushしようとすると「fatal: Authentication failed for~」のようなエラーが出る

タイトルの通りだが、
どうやらSourceTreeはPreferenceなどからアカウント設定してもHTTP接続の認証はキャッシュされているようで、いくら設定を変更してもgithubのパスワード変更をした際にSourceTree側の設定が反映されなくてハマったのでメモ。

キャッシュはここにいる

~/Library/Application Support/SourceTree

ディレクトリ配下に、見覚えのあるドメインがファイル名になっているので、
パスワード変更を反映したいドメインのファイルを削除するのが正解。

githubの場合には

{ユーザ名}@STAuth-github.com

のようなファイルがあるはず。

Bitbucket, GitLab, Githubのいずれでもパスワード変更をした際に、SourceTreeで保存するようになっている人はみんなハマるのでは??

自分のPCのキーボードがリコール対象になっているのでメモ

以下の時期のMacはキーボードの無償修理対象になっています。

MacBook (Retina, 12-­inch, Early 2015)
MacBook (Retina, 12­-inch, Early 2016)
MacBook (Retina, 12-­inch, 2017)
MacBook Pro (13­-inch, 2016, Two Thunderbolt 3 Ports)
MacBook Pro (13-­inch, 2017, Two Thunderbolt 3 Ports)
MacBook Pro (13-­inch, 2016, Four Thunderbolt 3 Ports)
MacBook Pro (13-­inch, 2017, Four Thunderbolt 3 Ports)
MacBook Pro (15-­inch, 2016)
MacBook Pro (15-­inch, 2017)

これを確認するためには、

Apple () メニュー >「この Mac について」 を実行し確認することができます。

自分のMacの場合には

MacBook Pro (13-inch, 2016, Four Thunderbolt 3 Ports)

だったので対応機種のようです。

↓のリンクから詳細は確認できます。

MacBook および MacBook Pro キーボード修理プログラム - Apple サポート

Colaboratoryの環境の情報を漁ってみたメモ

Colaboratory環境の情報を取得してみたのでメモ

CPU情報

!cat /proc/cpuinfo
processor    : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 63
model name  : Intel(R) Xeon(R) CPU @ 2.30GHz
stepping    : 0
microcode   : 0x1
cpu MHz     : 2300.000
cache size  : 46080 KB
physical id : 0
siblings    : 2
core id     : 0
cpu cores   : 1
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm pti fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms xsaveopt
bugs        : cpu_meltdown spectre_v1 spectre_v2
bogomips    : 4600.00
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 63
model name  : Intel(R) Xeon(R) CPU @ 2.30GHz
stepping    : 0
microcode   : 0x1
cpu MHz     : 2300.000
cache size  : 46080 KB
physical id : 0
siblings    : 2
core id     : 0
cpu cores   : 1
apicid      : 1
initial apicid  : 1
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm pti fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms xsaveopt
bugs        : cpu_meltdown spectre_v1 spectre_v2
bogomips    : 4600.00
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

OS情報

!cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=17.10
DISTRIB_CODENAME=artful
DISTRIB_DESCRIPTION="Ubuntu 17.10"
NAME="Ubuntu"
VERSION="17.10 (Artful Aardvark)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 17.10"
VERSION_ID="17.10"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=artful
UBUNTU_CODENAME=artful

ubuntuかな。

実行ユーザ

!whoami
root

ホスト名

!hostname
1f9a2dff11bb

多分コンテナの中なのかな?

メモリの情報

!cat /proc/meminfo
MemTotal:       13335192 kB
MemFree:          637404 kB
MemAvailable:   12670100 kB
Buffers:          151300 kB
Cached:         11508280 kB
SwapCached:            0 kB
Active:           527420 kB
Inactive:       11398616 kB
Active(anon):     245308 kB
Inactive(anon):      312 kB
Active(file):     282112 kB
Inactive(file): 11398304 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:               224 kB
Writeback:             0 kB
AnonPages:        264476 kB
Mapped:           146428 kB
Shmem:               792 kB
Slab:             712112 kB
SReclaimable:     678420 kB
SUnreclaim:        33692 kB
KernelStack:        3376 kB
PageTables:         4344 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     6667596 kB
Committed_AS:    1661232 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
AnonHugePages:      4096 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       67532 kB
DirectMap2M:     4126720 kB
DirectMap1G:    11534336 kB

メモリ使用量

!free -m
              total        used        free      shared  buff/cache   available
Mem:          13022         349         618           0       12054       12375
Swap:             0           0           0

人権ありすぎる・・・w

/配下のディレクトリ構成

!ls /
bin
boot
colabtools
content
datalab
dev
etc
gpu-tensorflow-1.10.0-cp27-cp27mu-linux_x86_64.whl
gpu-tensorflow-1.10.0-cp36-cp36m-linux_x86_64.whl
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tensorflow-1.10.0-cp27-cp27mu-linux_x86_64.whl
tensorflow-1.10.0-cp36-cp36m-linux_x86_64.whl
tf_deps
tmp
tools
usr
var

ユーザ

!cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologinp
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/bin/false

プロセス

!ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  39148  6652 ?        Ss   18:53   0:00 /bin/bash -e /d
root        60  0.0  0.3 674764 41232 ?        Sl   18:54   0:00 node /tools/nod
root        70  0.1  0.3 679668 45436 ?        Sl   18:54   0:00 /tools/node/bin
root        76  0.1  0.4 182140 56144 ?        Sl   18:54   0:01 /usr/bin/python
root        84  0.5  1.0 644688 136036 ?       Ssl  18:54   0:04 /usr/bin/python
root       140 98.0  0.0  33960  5060 pts/0    Ss+  19:08   0:00 /bin/sh -c ps a
root       141  0.0  0.0  63300  6772 pts/0    R+   19:08   0:00 ps aux

ざっくりとこんな感じ。

画像認識とかでよく使う例の画像がなんだかわかったので書く

タイトルの通り。

こういうやつ。
f:id:chidakiyo:20180819034242g:plain

なんか画像使ったサンプル作りたいときに例の画像を利用したいと思ったことがあり、
その時検索したけど見つからずに諦めていたけど見つかったのでメモ。

もともとはPLAYBOYの写真だったらしく、wikipedia 曰く、

レナ(Lenna または Lena)とは、PLAYBOY誌1972年11月号に掲載された女性ヌード写真の一部。画像圧縮アルゴリズムのサンプルに、広く使用されている画像データである。

レナ (画像データ) - Wikipedia

そして、オリジナルデータはここのものが多分それ。

original image: Lena

Kubernetesのどのノードにどのコンポーネントがいるか

なんかいまいち整理できていないな。と思ったので一旦雑に書き出した。

Master

  • etcd
  • apiserver
  • scheduler
  • controller manager

Node

  • kubelet
  • container-runtime
  • kube-proxy

masterはGKE/AKSとかであればマネージドで管理されているので、
ノードを起動していなくても kubectl コマンドが通るのはそのため。

Running Kubernetes Locally via Minikube をなぞってみた

URL : https://kubernetes.io/docs/setup/minikube/

MinikubeはKubernetesの以下の機能をサポートしているそうだ

  • DNS
  • NodePorts
  • ConfigMaps と Secrets
  • Dashboards
  • コンテナランタイム、Docker、rkt、CRI-O(デフォルトはDockerかな)
  • CNI(Container Network Interface)
  • Ingress

Minikubeのインストール

適当にこの辺を見つつインストール
https://kubernetes.io/docs/setup/minikube/

クイックスタート!

Minikubeはいくつかのドライバをサポートしているようですが、virtualboxが楽な気がします。おすすめ。

以下のコマンドでminikubeを起動します

$ minikube start

どうやら minikube start を実行すると kubectl にクレデンシャルが自動的に設定されるようです。
その他のクラスタを並行して触っている場合、勝手に変わっていることがあるので注意しましょう。
私はDocker for Mac上で KubernetesのContext切り替え機能でクラスタのクレデンシャルを切り変えています。

クラスタのクレデンシャルとは、k8sクラスタに接続する鍵です

上記 start コマンドを実行するとクレデンシャルが設定されるので以下のコマンドで確認してみます。

$ kubectl get nodes

以下のようにminikube nodeが見えるはずです

NAME       STATUS    ROLES     AGE       VERSION
minikube   Ready     master    8m        v1.10.0

ちなみに、kubectlコマンドの引数は以下のように省略することも可能です

$ kubectl get no

クイックスタートのとおりに hello-minikube をデプロイしてみる

$ kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.10 --port=8080

デプロイメント hello-minikube のポートをexposeする。

$ kubectl expose deployment hello-minikube --type=NodePort

Podが起動していることを確認してみる

$ kubectl get pods

ステータスが Running になっていればOK.

デプロイしたPodに以下のコマンドでアクセスできる。

$ curl $(minikube service hello-minikube --url)

IPアドレスは動的に変更され、以下のコマンドでも取得可能のようだ。(接続するためにはポートがわからないが)

$ minikube ip

サービスを削除する

$ kubectl delete services hello-minikube

デプロイメントを削除する

$ kubectl delete deployment hello-minikube

minikubeを停止する

$ minikube stop

その他のランタイムを使うためには

CRI-O

以下のコマンドでminikubeを起動する

$ minikube start \
    --network-plugin=cni \
    --container-runtime=cri-o \
    --bootstrapper=kubeadm

拡張版として使う場合には以下のようにする

$ minikube start \
    --network-plugin=cni \
    --extra-config=kubelet.container-runtime=remote \
    --extra-config=kubelet.container-runtime-endpoint=/var/run/crio.sock \
    --extra-config=kubelet.image-service-endpoint=/var/run/crio.sock \
    --bootstrapper=kubeadm

rkt

$ minikube start \
    --network-plugin=cni \
    --container-runtime=rkt

クラスタの管理

バージョンを指定してクラスタを起動する

minikubeがサポートしているバージョンは以下のコマンドで確認できる

$ minikube get-k8s-versions

バージョンを指定してk8sクラスタを起動するには以下のコマンドのようにする

$ minikube start --kubernetes-version v1.10.0

クラスタとの対話

minikubeはコンテキストを自動で設定するが(なるほどやはり)手動で設定するには以下のコマンドを利用する

$ kubectl config use-context minikube

ダッシュボード

ダッシュボードを起動するには以下のコマンドを実行する

$ minikube dashboard

ノードポートを利用して公開しているサービスのURLを得るには以下のコマンドを利用する

$ minikube service [-n NAMESPACE] [--url] NAME

$ minikube service hello-minikube --url

例2
直接ブラウザを開く場合には --url を省略する

$ minikube service hello-minikube

Network

アクセスできるIPを取得するには minikube ip が利用できる。

ポートを取得したい場合には

$ kubectl get service hello-minikube --output='jsonpath="{.spec.ports[0].nodePort}"'

のような形で取得できる

Persistent Volumes

Minikubeでは hostPath と呼ばれるタイプのPersistentVolumesがサポートされている
これは、Minikube VM内のディレクトリにPersistentVolumeとしてマップされる。

Minikube VMはtmpfsで起動するのでほとんどのディレクトリは永続化されない(再起動で消える)
以下のディレクトリだけは永続化できる

/data
/var/lib/localcube
/var/lib/docker

dataディレクトリに永続化するためのPersistentVolume設定は以下のようになる

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv0001
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 5Gi
  hostPath:
    path: /data/pv0001/

ところどころ端折ってるけどこんな感じ。

goでsliceのdeepcopyをする

タイトルのとおりなんですが、 goでsliceのディープコピーを作りたかったので。

やり方は以下。

orig := []string{"a", "b", "c", "d", "e", "f"}  // 元sliceデータ
 
fmt.Printf("%p, %v\n", orig, orig)              // 0x10438150, [a b c d e f] 
 
copy := append([]string{}, orig...)            // sliceをコピーする
 
fmt.Printf("%p, %v\n", copy, copy)           // 0x10438180, [a b c d e f] ← 異なるポインタになっている。

という感じで結構簡単にコピーできた。

参考URL : go - Concisely deep copy a slice? - Stack Overflow