さこ街浪漫

GO ON A HIGHWAY

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

PyCon JP 2015 (2015年10月10日, 11日 東京国際交流館プラザ平成)

メモ。

 
 
1日目
朝08:30くらいに家を出る。
余裕があればホテルの朝食食べたい!と思っていたがモタモタしていたらそんな時間はなくなった。
 
 
 
 
 
 
 
 
 
 
 
ゆりかもめの最前席で写真を撮っていた。ふと振り返ると小さな男の子(2人)と目が合う。ハッ!
 
 
 
 
 
 
 
 
 
 
僕は悩んだ。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
「ここ座るか?」
 
 
 
そう言ったのは僕だった。
 
 
 
 
 
 
お母さん:「ほら、ありがと~って。ありがと~って。」
子供:「ありがと〜」
 
 
子供はちゃんとお礼を言って大きなお兄ちゃんが最前に座ったあと、小さな坊やと喋っていた。
 
 
 
 
 
景色にはそれほどご興味を示されなかった。
 
 
 
 
 
 
 
 
 
 
 

 

 

https://instagram.com/p/8ovT8TnNE9/

Instagram

https://instagram.com/p/8ovVQ8nNE-/

Instagram

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
なんとなくちょっと SMILE☺GARDEN に寄ってから

https://instagram.com/p/8oxjrIHNIn/

Instagram

 

 

 

 

 

この日の現場に CHECK-IN。

https://instagram.com/p/8oxxNpHNI3/

Instagram

 

 

 

 

 

 

 

 

オープニングに間に合った。オープニングと基調講演に参加することにこそ大きな意味がある(ような気がする)。

午前はオープニング、基調講演とセッションを2つ。

 

 

 

 

 

 

 

 

 

 

そろそろお昼かな... 

 

 

 

 

ギョギョ!大人気!!

https://instagram.com/p/8pEVTQnNDv/

Instagram

 

ランチはなんと自動車4台で食事の配給。

この日はチキンライスに決定。ソースが三種類用意されていたが「ハワイアン」を選択した。

 

おいしい!

https://instagram.com/p/8pIcIcHNJR/

Instagram

 
 
 
 

午後もいくつかのセッションを聞いて...

https://instagram.com/p/8papFTnNBU/

Instagram       

 

 

 

 

 

 

お待ちかね、PyParty!ビール飲みます!

https://instagram.com/p/8psLxQnNHL/

Instagram  

 

 

 

 

ご飯!

https://instagram.com/p/8t08lmnNEH/

Instagram    
 
 

 

 


 
ご飯!!

https://instagram.com/p/8t06K_HNEB/

Instagram  

 

 

 

 

 

 

 

ご飯食べたい!!

https://instagram.com/p/8t1LPVnNEj/

Instagram 
    
 
 

 

 

ビ、ビール!

https://instagram.com/p/8p0GsKnNB5/

Instagram 
  
 

 

 

ビール!

https://instagram.com/p/8p0IYfnNB8/

Instagram 
 
 
 
 
野菜!

https://instagram.com/p/8psY_2HNHc/

Instagram 

 

 

 

 

やった!まだたくさんある!!

https://instagram.com/p/8psnD3nNHt/

Instagram

 
 

 

 

 
 
 
こちらはムスリム向けと(もっとたくさんある)

https://instagram.com/p/8psPH1HNHQ/

Instagram 
 
 
 
 
ベジタリアン向け

https://instagram.com/p/8psThDHNHW/

Instagram 

 

 

 

 

 

しこたまビールを飲んで帰った。

つまらない話を聞いてくださった方々、ありがとうございます。

 

 

 

 

 

 

 

 

 

2日目

新橋からゆりかもめに乗る。小雨。

https://instagram.com/p/8rS4stnNEm/

Instagram

 

 

 

 

もう最前は譲らない。

https://instagram.com/p/8rTX7PHNFW/

Instagram

 

 

 

 

 思い出す... マイナビステージ...

 

https://instagram.com/p/8t4DmAHNJL/

Instagram

 

 

 

 

 

 

 

 

 

現場到着。基調講演を聞くためにカンファレンスルームに入る。

 

 

まだ少し早いので人はまばら。

https://instagram.com/p/8rXYWYHNMI/

Instagram

 

 

 

 

 

 

午前は基調講演を聞いたあと、ポスターセッションをまわり...

 

 

 

 

 

 

 

 

 

 

 

ご飯!おいしい!

https://instagram.com/p/8rpiO2nNOi/

Instagram

 

 

 

 

 

午後もいくつかのセッションを聞いて帰りましたとさ。

 

 

 

 

 

謎のステッカー。

 

https://instagram.com/p/8pIb18HNJQ/

Instagram

 

 

 

 

 

 

 

 

また来年〜

 

 

 

 

 

 

まとめ

  • ランチが並び過ぎていた。
  • 食べる場所が少なかった。
  • パーティーでいろいろな飲み物が用意されていたので助かった人は多いのではないかと思った。
  • 他の技術系カンファレンスに比べて PyCon は、データ分析、機械学習ロボット、コンピュータービジョンなどといった分野の話題にやや寄っているように思う。大変興味深く、また強烈な刺激を受ける。
  • コーヒーやお茶のサーバーとお菓子はさりげないがやはり嬉しいもの。
  • 通訳は大変評判が良かった、との噂あり。いつもの人たちだったとすれば納得。
  • ポスターセッションも興味深い。もう少し拡大してみてはどうか。
  • 画面サイズのトラブルなど、細かい部分において調整不足を感じた。
  • こどもワークショップはとても良い。
  • 企業スポンサーのロゴをTシャツに入れないで欲しい。
  • 気になった部分があるとすればそれは結局のところは人手(ともしかしたらスポンサー)の不足であるように思う。このコミュニティを支援するために自分にできることは何かを考えたい。