さこ街浪漫

GO ON A HIGHWAY

Google Compute Engine の Debian 8 jessie でロケールが ja_JP.UTF-8 にならない

概要

いくら試してもロケールが ja_JP.UTF-8 にならなくて困っていた(それほど困ってはいなかった)が解決した。

手順

必要なパッケージ群をインストール(重要)。この中のどれかが重要なのだと思うがそこを突き止める時間はない。

# apt-get install task-japanese

ja_JP.UTF-8 の行を有効にする

# vi /etc/locale.gen

更新

# locale-gen

ロケールを ja_JP.UTF-8 に変更して

# vi /etc/default/locale

再起動

# reboot
コメント
  • GCE Debian 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 などが正解
環境
補足

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 に設定したチャネルやユーザー名が適用される。

f:id:masal3:20151207222614p:plain

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??