Google Compute Engine の Debian 8 jessie でロケールが ja_JP.UTF-8 にならない
Ubuntu 14.04 LTS の pip list で謎の AssertionError
事象
pip list
で謎の実行時例外
cat /root/.pip/pip.log ------------------------------------------------------------ /usr/bin/pip run on Sat Apr 2 08:30:48 2016 adium-theme-ubuntu (0.3.4) apt-xapian-index (0.45) argparse (1.2.1) cffi (1.5.2) chardet (2.0.1) colorama (0.2.5) command-not-found (0.3) cryptography (1.3.1) debtagshw (0.1) defer (1.0.6) dirspec (13.10) distribute (0.7.3) duplicity (0.6.23) enum34 (1.1.2) Flask (0.10.1) html5lib (0.999) httplib2 (0.8) idna (2.1) ipaddress (1.0.16) itsdangerous (0.24) Jinja2 (2.8) lockfile (0.8) lxml (3.3.3) MarkupSafe (0.23) oauthlib (0.6.1) oneconf (0.3.7.14.4.1) PAM (0.4.2) pexpect (3.1) Pillow (2.3.0) pip (1.5.4) piston-mini-client (0.7.5) protobuf (2.6.1) pyasn1 (0.1.9) pycparser (2.14) pycrypto (2.6.1) pycups (1.9.66) pygobject (3.12.0) pyOpenSSL (16.0.0) pyserial (2.6) pysmbc (1.0.14.1) Exception: Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main status = self.run(options, args) File "/usr/lib/python2.7/dist-packages/pip/commands/list.py", line 80, in run self.run_listing(options) File "/usr/lib/python2.7/dist-packages/pip/commands/list.py", line 142, in run_listing self.output_package_listing(installed_packages) File "/usr/lib/python2.7/dist-packages/pip/commands/list.py", line 151, in output_package_listing if dist_is_editable(dist): File "/usr/lib/python2.7/dist-packages/pip/util.py", line 366, in dist_is_editable req = FrozenRequirement.from_dist(dist, []) File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 286, in from_dist assert len(specs) == 1 and specs[0][0] == '==' AssertionError
見解
- apt-get で入れてしまった python-pip に問題がある模様。version が 1.5.4 とかよくわからないバージョンを示していた。
easy_install pip
などが正解
環境
- Ubuntu 14.04 LTS (Desktop)
- Linux ------------------ 4.2.0-27-generic #32~14.04.1-Ubuntu SMP Fri Jan 22 15:32:26 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
補足
python-pip のアンインストールは
# apt-get autoremove python-pip
Sublime Text 2 で上下にスクロールする際のスムーズな動きを止めるには
Sublime Text 2 のオプションの中で、発見した時に最も感動したもの。
それは...
"scroll_speed" !!
↓下記のように 0 にすることにより、死ぬほど快適になる。
"scroll_speed": 0
これについて誰も言及してなさすぎ笑
※設定は [Preferences] -> [Settings - User] から
秘密のバー
久しぶりにみつけてお邪魔したところ改装していた。以前はカウンター9席ほどの小さな店であったのに、なんと店の中心を180度囲む形でゆるい半円状にカウンターが延びている。カウンターの内側(つまり店主がいる方)が広い。店主が遠い。隣の客が遠い。白やオレンジを基調とした小綺麗なカフェ風に大胆に模様替えしてしまった。あの店が実はこんなに広かったのか、と驚いてしまった。
その店は以前はまあなんというか小さな真っ暗なバーであった。ママが一人。ママといってもおそらくは二十代前半の、おそらく雇われママであったように思う。学生かもしれなかった。高円寺とか阿佐ヶ谷とかにいそうな芸術系のにおいがする女の子だった。
彼女と話した記憶はない。いや、話したのかもしれないし、ずっと話していたのかもしれない。彼女の声の記憶もない。低い声だったのか、それとも高い声か。ゆっくり話す人か早口の人か。そういえば他の客と話している記憶もないような気がする。謎の女の子。
初めにその店を訪れたのはいつのことだったかもう忘れてしまった。20代の頃か、それともわりと最近なのか。あの店はいつからそこにあったんだろう。いや、そこはどこだったんだろう。高円寺の駅前だったような気もするし、阿佐ヶ谷だったような気もする。下北沢だったかもしれないし、どこかもっと遠くの、いつかたまたま訪れた街だったかもしれない。
忘れた頃、ふと気がつくとドアを開けて酒を飲んでいる。どうやってきたかも覚えていないし、いつ帰ったのかもわからない。
ずっと探している店。忘れた頃に突然夢の中に出現する小さなバー。
もしかしたら今もどこかで、僕に似た誰かがゆっくりとグラスを傾けているのかもしれない。
そんな秘密のバーのお話。
Slack の Incoming WebHook を投げてみたメモ
はじめに
何らかのシステムから Slack のチャネルにメッセージを飛ばすメモ。
Integrations -> Incoming WebHooks から WebHook を作っておく。ここで Slack から提示された URL に POST を投げると Slack のチャネルにメッセージが届く、という仕掛け。
curl コマンドによるサンプル
どちらでもよいが、↓こういう投げ方と
curl -X POST --data-urlencode 'payload={"text": "えいっ!"}' https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXX
↓こういう投げ方がある。
curl -X POST --data '{"text": "えいっ!"}' https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXX
- “channel” や “username” といったキーも使用できる。"channel" が指定されれば、そのチャネルに、"username" が指定されればそのユーザー名でメッセージがポストされる。指定しなければ WebHook に設定したチャネルやユーザー名が適用される。
Python によるサンプル
payload のあたりがよくわからず、いろいろと試行錯誤してしまったが結局↓こういうこと。
#!/usr/bin/env python # coding: utf-8 import requests import json def _main(): # # コンテンツを準備 # values = {'text': 'えいっ!'} content = json.dumps(values, ensure_ascii=False) # # 組み立てたコンテンツ(=JSON)を Slack に送信 # url = 'https://hooks.slack.com/services/XXX...' answer = requests.post(url, data=content) print(answer.text) _main()
Perl によるサンプル
#!/usr/bin/env perl # coding: utf-8 use strict; use utf8; use LWP::UserAgent; use JSON; sub _main { binmode(STDIN, ':utf8'); binmode(STDOUT, ':utf8'); binmode(STDERR, ':utf8'); # # コンテンツの準備 # my $values = {text => 'えいっ!'}; my $content = JSON::to_json($values, {utf8 => 1}); # # 組み立てたコンテンツ(=JSON)を Slack に送信 # my $url = 'https://hooks.slack.com/services/XXX...'; my $user_agent = LWP::UserAgent->new(); my $response = $user_agent->post( $url, Content_Type => 'application/json; charset=UTF-8', Content => $content); if(!$response->is_success) { print($response->status_line, "\n"); return; } print($response->decoded_content, "\n"); } _main(@ARGV);
Ruby によるサンプル
#!/usr/bin/env ruby # coding: utf-8 require 'uri' require 'net/http' require 'json' def _main() # # コンテンツを準備 # values = {'text' => 'えいっ!'} content_text = JSON.generate(values) uri = URI.parse('https://hooks.slack.com/services/XXX...') request_data = Net::HTTP::Post.new(uri.request_uri) request_data['Content-Type'] = 'application/json' request_data.body = content_text # # コンテンツ(=JSON)を Slack に送信 # http_client = Net::HTTP.new(uri.host, uri.port) http_client.use_ssl = true response_data = http_client.request(request_data) print(response_data.message, "\n") end _main()
まとめ
payload??