at backyard

Color my life with the chaos of trouble.

bottleアプリケーションにflashを使いたい。あと、PyPI初登録の話。

使いたいなと思って探してみたらありました。クリスマスイブの夜のことでした。

pypi.python.org


で、下のコマンドで淹れようとしたらエラーになりました。

pip install bottle-flash
Using cached bottle-flash-0.1.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/mn/q382m6zd3jqbyxy6f4tg97140000gn/T/pip-build-c2dmcbx3/bottle-flash/setup.py", line 17, in <module>
        long_description = open('README.rst').read(),
    FileNotFoundError: [Errno 2] No such file or directory: 'README.rst'

'README.rst'がないというエラーだったので、
ひとまずファイルをダウンロードして直接参照して使用することに決めました。

でも、そのままでは現在のBottleでは使えないようでした。
動くようにメソッド内に手を加えます。と言っても大した変更はしていない。
(Bottleの仕様が途中で変わったのかな?
ちゃんとBottleを使っているわけではないので、これはあくまで想像ですが)

ダウンロードしてきた"bottle_flash.py"の下記の箇所を以下のように書き換えることで、
正常に動きました。(2016/12/24時点)

-        self.app.hooks.add('before_request', self.load_flashed)
-        self.app.hooks.add('after_request', self.set_flashed)
+        self.app.add_hook('before_request', self.load_flashed)
+        self.app.add_hook('after_request', self.set_flashed)

ちなみに私が使用していたbottleやPythonのVersionは下記の通りです。
古いバージョンだとそのまま動くのかもしれない。

Python 3.5.1
bottle==0.12.9

せっかくだから今回の修正を整えて"bottle-flash"の作者にプルリク送ろうと考えていたら、
どうやら、このリポジトリ自体が既になくなっているようでした。

今後Bottleでflash使いたいときに、
pipでinstallしてすぐに使いたいなと思ったので、
このプロジェクトをforkしてPyPIに登録することにしました。
ライセンスも引き継ぐ形でMIT。

なおforkしたリポジトリのURLは下記のとおりです。

Github

github.com


PyPI

pypi.python.org



インストール方法は、下記の通り。

pip install bottle-flash2

"bottle-flash2"って名前にしたのは、
いかにもforkしましたよ的な名前にしようと思ったのと、
なんだかゲームの必殺技っぽい語感だと思ったので。
(今のところ機能拡張などは考えていないので、名前は特に変えなくていいかなと思った)

PyPI登録時にミスしたこと

初のPyPI登録ということもあって、色々と登録時にミスをしてしまった。
どんなミスかは箇条書きで書いていく。

1."setuo.py"内のsetup()内の"name"内の名称を"bottle_flash2"という形で間違えてしまっていた。
nameの部分はpip install時に指定する名称にもなるようなので、ここを間違えるのはイタい。
(そのため最初は"pip install bottle_flash2"という名称でインストールするようになっていたわけだ。)

2.READMEを初め".md"で書いてしまっていた。".rst"でないと整形がされない。

変換方法については備忘録代わりに別記事としてメモしておいた。

shinshin86.hateblo.jp


3.TestPyPIでのテストを行えなかった。
本来PyPIに登録する前にTest用のTestPyPIで登録に関するテストなどを
行っておくべきであるようなのだが、その手順を抜かしてしまった。

TestPyPI · The Python Package Index


これには理由があって、TestPyPIへの登録を済ませて下記のコマンドを叩いたときに、
何故かログインができなくて、調べても原因を救命できなかったので、
仕方なくPyPIへの登録へ進んでしまったのだ。

python setup.py register -r https://testpypi.python.org/pypi

その後TestPyPIへの登録もできて、諸々のミスの修正前テストを行うことが出来た。
(ちなみに、ログインできなかった原因は単純に".pypirc"のパスワードをタイポしていただけだった...orz)

まあ、そういうわけで"bottle-flash2"は公開時点で
いきなりVersionが"0.0.1"から"0.0.3"にあがっている。
最初にドキュメントや記事を丁寧に見ておけば防げたであろうことなので、
これは反省ポイントである。



あと、あとでBottleのAPIもちゃんと読んどこう、この機会に

https://bottlepy.org/docs/dev/api.html

PyPIへの登録の際に参考にさせていただいた記事

ちなみにPyPIへの登録については、下記の記事を参考にさせていただきました。

qiita.com

qiita.com

qiita.com

余談

ちなみに、PyPIって"パイアイピー"って読むんですね
上司と酒飲みながらPythonのこと話すときに
"パイパイっていうPythonパッケージを管理するためのサービスがあってですね〜"って普通に話していました。
はずかしい。。。

追記(2017/1/29)

PyPIの件、普通に皆パイパイって呼んでいるみたいだったので、特に問題ナッシングそう。

Mac環境でMarkdownからreStructuredTextに変換する

ちょっとした備忘録記事。 使用環境はMac環境でbrewでインストールしたPandocを使う。

Pandoc - About pandoc

Install

インストールは簡単で、変換も簡単。

brew install pandoc

Command

変換するコマンド

pandoc -f markdown -t rst -o README.rst README.md

これで"README.rst"が出来上がる。

使った場面

PyPIに"bottle-flash2"というbottle用のプラグインを登録した際、 READMEがrst形式でなければ整形されないために使用。

ちなみに"bottle-flash2"についても別記事としてポストした。

shinshin86.hateblo.jp

Caramel Ship, Beagles, Atlas Kraken Twerski Band

音楽に関する近況報告をします。

Caramel Ship

Caramel Shipのサイトデザインがアップデートされました。

caramelship.net


また、現在は新曲を作成中。
Desmondと日夜やり取りしつつ、楽曲を生み出しているところです。

Beagles

Beaglesでもちょこちょこ曲を作り出しました。
そしてSound Cloudにもアップしています。

soundcloud.com


soundcloud.com


soundcloud.com

Atlas Kraken Twerski Band

Atlas Kraken Twerski Bandでも曲を2曲ほどSoundCloudにて公開しました。
ポップでロックな曲と、静かめな曲。

soundcloud.com

soundcloud.com


是非ぜひ聴いてみてください。

Pythonでbyebugみたいにdebugしたい

普段の業務ではRuby on Railsを使っており、私はそこでbyebugを多用しています。
実際に変数の中身をチェックしたりしつつ、自分の書いたク○コードの後処理を黙々としている普段の私ですが、
byebug使ったdebugをPythonでもやりたいなと常々思っていたところ、下記のような方法があることを知りました。

racchai.hatenablog.com

な、なるほどー!
pdbの存在は知っていたものの、なんとなく手を出さないでいましたが、
下記の1行を挟むだけで、debug出来るっていうのを知ると、一気に敷居が下がりました。

import pdb; pdb.set_trace()

本当に感謝です。
あと、食わず嫌いをしてしまっていた自分に対して、深く反省。
あとでちゃんとドキュメントにも目を通しておこう↓

pdb --- Python デバッガ — Python 3.10.0b2 ドキュメント

同じ階層内にあるjpgファイルを、python使って全て白黒にする。

機械学習用に用意した顔画像を全て白黒に一括変換したかったので、
Python使って変換しました。opencv使っています。

メモする必要ないほどのシンプルなスクリプトなのだけど、
自分の頭の中のメモリはかなり品質に問題がある気がするので、
一応、自分用にメモを残して置いておこうと思った次第

# -*- coding: utf-8 -*-
import cv2
import os
import glob
from os import path

for i in glob.glob(path.join(os.getcwd(), "*.jpg")):
	im = cv2.imread(i)
	cv2.imwrite(path.basename(i), cv2.cvtColor(im, cv2.COLOR_RGB2GRAY))

※実際には対話モードで書いて作業していたものを、改めてスクリプトという体裁に書き直している。一応、動作確認済み。

MacBook Proの値段、Gentoo、

rebuild ep166を聴いていたら、
このまえのHakさんの回に引き続き、
MacBook Proの話題が出てきた。

rebuild.fm

Naoya Itoさんが購入されたMacBook Proの構成が、
私が注文したMacBook Proと全く同じスペックだったので、
レビュー内容にかなり一喜一憂しながら聴いていた。
(ちなみに前回のHakさんの回も、かなり一喜一憂しながら聴いていた)

rebuild.fm

MacBook Proの値段のこと

ポッドキャストでも言われているし、
色々なブログにも書かれている通り、今回値段は高かった。。。まあ、しょうがないのだけど。
たぶんこんなにMacBook Proのレビューに対して真剣になるのも、
ひとえに購入時のコストが高かったからがゆえであろう。

出たら値段は気にせず、スペックを盛って買おうと決めてはいたものの、
それでも購入ボタンを押す前に、その値段の高さに一瞬躊躇った。
値段が高くて購入を躊躇うという経験自体があまりなかったので、
ある意味貴重な体験でもあった。
(私は貧乏性なので、普段は自分が納得した値段のものしか買わない達である)

また、今使っているMacBook Proがスペックの割にオトクな値段で買えた、
という経験があるのもでかい。
(2012年のモデルで、Retinaじゃなかったので安かったのだろう)

値段の割に高性能なPCを提供するなんて、Appleっていう企業は、
"デザインが良い"とかそういう単語だけじゃとても語れない、
実にユーザフレンドリーな素晴らしい企業だ!
とか当時感動していたのだけど、
今回は"この値段分の働きを本当にこのマシンはしてくれるのだろうか....?などと
懐疑的な気持ちになっている。

まったく、現金な人間だなと自分でも思うし、
いかに自分が金に縛られている人間か、というのが、
よく分かった今日このごろである。

というわけで、クリスマスまでには届くようなので気長に待とうと思う。

gentooについて

d.hatena.ne.jp

最近こんな記事を出て、興味深く読みました。
(Rebuildでも紹介されていましたね)、
Gentooってかなり敷居が高そうで、まだ試したことないけど、
勉強になりそうだし、今度使っていないマシンかVMに今度インストールしてみようかなと。

逆にこんな記事も見つけた

kizkoh.hatenablog.com

プログラミングしたくなる動画3選

またもやこのタイトルで書いていきます。
微妙に前回とタイトル違うけど、特に意味は無いです。

ちなみに前回のはこれ。

shinshin86.hateblo.jp

Debugging with GDB

vimeo.com

GDBの使い方がかなり分かりやすく解説されている動画。
動画自体のテンポ感もよく、見ているとデバッグしたくなってくる、そんな動画。

Live Hacking - EFF-CTF 2016 - Level 0-4 (Enigma Conference)

youtu.be

丁寧に解説しながらのCTF Writeup。
解説ありなので普通に勉強になるし、とても良質な動画。

Oh My ZSH

railscasts.com

Rails castsから"Oh My Zsh"の動画。
普段から使っているものなので、見ていて勉強になるし、
"どれ、いっちょ触ってみようか"という気分になる。
普段から使っているツールのことをもっと深く知ろうという気にもなるし
そういう意味でも見る意味のある動画。

関係ないけど、現在のAtom環境のシンタックスのカラーテーマは
Rails Castsスタイルにしてある。
配色がどことなく落ち着いていて、秋っぽいので今の時期に合う笑。 これ↓

atom.io