boot2dockerで "/var/run/docker.sock: no such file or directory" と言われた時の対処

boot2dockerを停止してから再起動した所以下のようなメッセージが出た

Get http:///var/run/docker.sock/v1.19/containers/json: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?

$(boot2docker shellinit)環境変数の初期化を行えばよかったようだ

$ docker ps
Get http:///var/run/docker.sock/v1.19/containers/json: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?
$ $(boot2docker shellinit)
Writing /Users/hoge/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/hoge/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/hoge/.boot2docker/certs/boot2docker-vm/key.pem
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Thanks

qiita.com

MySQLのデータベースを削除する

DROP DATABASE hogehogeを使う

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| hoge               |
+--------------------+
4 rows in set (0.01 sec)
mysql> DROP DATABASE hoge;
Query OK, 2 rows affected (0.03 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.01 sec)

Pythonのlen()で配列の数を調べる

len()を使って調べるようだ

array = ['hoge', 'hoge', 'hogeeen']
print len(array)

結果はこうなる

$ python test.py
3

条件式に渡すこともできる

array = ['hoge', 'hoge', 'hogeeen']
if len(array) == 0:
print 'kara da'
else:
print 'haitteru'

結果はこうなる

$ python test.py
haitteru

Pythonでisset()的なことをする

Pythonで変数の存在確認をしながら処理を実行するにはこうするtryだけでは実行できずexceptは必須なのだろうか。仕方ないのでpassをする。

want = 'hoge'
try:
print want
except NameError:
pass

ちなみに存在しない変数をそのまま使おうとすると

print want

こんな風になる

$ python test.py
Traceback (most recent call last):
File "test.py", line 1, in <module>
print want
NameError: name 'want' is not defined

Pythonでin_array()みたいなことをする

'hoge' in wordsみたいな形式でいけるようだ

words = ['hello', 'hoge', 'man']
print 'unti' in words

これは存在しないのでFalseになる

$ python test.py
False

一方これは中に含まれているので

words = ['hello', 'hoge', 'man']
print 'hoge' in words

このようにTrueとなる

$ python test.py
True

実際に使う時はこうやってifの中に入れればいい

words = ['hello', 'hoge', 'man']
if 'hoge' in words:
print 'OK'

Thanks

stackoverflow.com

Pythonで配列をjoinする

Pythonで配列をjoinするにはこうする

words = ['hello', 'hoge', 'man']
print '+'.join(words)

出力結果はこうなる

$ python test.py
hello+hoge+man

words.join('+')な感じでいけると思っていたんだが勘違いだった

Pythonでarray_filterをする

PHPでいう所のarray_filter()Pythonでやるにはこんな感じだそうだ

Data = [6, 7, 8, 9, 10, 11, 12]
RemoveSet = set([6, 9, 12])
print [a for a in Data if a not in RemoveSet]

処理の意味はaを入れる、aDataを回したものだが、aRemoveSetの中に入っているものではないものだけを回して返すという意味だと思うw

Thanks

stackoverflow.com

Pythonでヒアドキュメントを使う

Pythonでヒアドキュメントが使うにはstrip()を使った以下の方法がベストだと思った

split()を使う

ヒアドキュメントを普通に書いて最後にsplit()するやり方

print """
<!DOCTYPE html>
<html>
<head>
  <title>Test</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="app.css">
  <script src="app.js"></script>
</head>
<body>
</body>
</html>
""".strip()

出力結果はこうなる

$ python test.py
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="app.css">
<script src="app.js"></script>
</head>
<body>
</body>
</html>

中に変数を仕込む時は

format()を使ってテンプレートみたいな感じで埋め込む

option = '<script src="app.js"></script>'
print """
<!DOCTYPE html>
<html>
<head>
  <title>Test</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  {option}
</head>
<body>
</body>
</html>
""".format(option=option).strip()

結果はこう

$ python test.py
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="app.js"></script>
</head>
<body>
</body>
</html>

ちなみにsplit()を使わないと

前後に空白が入る。"""の前後に改行を入れなければいいのだが、そうするとヒアドキュメントとして使いづらくなるのでsplit()を使う方法がいいと思った。

$ python test.py
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="app.css">
<script src="app.js"></script>
</head>
<body>
</body>
</html>

Thanks

qiita.com

外部に置いたscriptをユーザーの環境で実行させる

ユーザーに実行させたいscriptを毎度ダウンロードさせて実行させていると面倒だし、scriptに更新があった場合に再度ダウンロードをお願いする必要があるが、curlを併用すればそんなことしなくてよくなる。

curl -sS http://example.com/hello-world.py | python
hello world

curlのオプションに指定しているsSは、進捗のメッセージを表示しないが、エラーについては表示するというもの。

$ curl -help | grep -e '\-[sS],'
-S, --show-error    Show error. With -s, make curl show errors when they occur
-s, --silent        Silent mode. Don't output anything

Githubに置いた私のファイルもこのようにして実行できる

$ curl -Ss https://gist.githubusercontent.com/hoge/dc65742898754de9ba30/raw/cfc10aacd4a392c30c3cdbb770601cc80b3c9701/hello-world.py | python
['']

引数を渡す時はこんな感じ

$ curl -Ss https://gist.githubusercontent.com/hoge/dc65742898754de9ba30/raw/cfc10aacd4a392c30c3cdbb770601cc80b3c9701/hello-world.py | python - hoge hoge hogeen
['-', 'hoge', 'hoge', 'hogeen']