bootstrap Python package

以前、Pythonパッケージ生成用のテンプレートをシェルスクリプトで作ったのですが、Pythonで一から書き直して bootstrap-py としてPyPIで公開しました。

できること

  • そのままPyPIに登録可能な形でPythonパッケージを生成

  • PyPIで登録されている名前を事前チェック

  • Toxを使ってユニットテストとテストツールを実行

    • pytest-covによるカバレッジの計測

    • pytest-pep8 コーディング規約のチェック

    • pytest-flakes による文法チェック

    • pytest-pylint によるコードチェック

    • PyChecker によるバグ検出

    • docstringのチェック

    • ユニットテストの実行順をランダム化

    • 前回以前のテスト実行時の古いバイトコードを削除

    • Sphinxでのドキュメントビルドチェック

  • Sphinxとautomoduleによるドキュメント自動生成

  • ClassifiersからのOSI Approved LICENSESとdevelopment statusの選択

  • GitHubアカウントを指定した場合に、Travis-CI, Coveralls, ReadTheDocsのステータスボタンをREADMEに設定

  • GitPythonで上記が設定した状態でGitリポジトリを生成し、user.name, user.email およびremote originを設定し、Initial commitを作成

Python 2.7以上、Python3.3以上、PyPy 2.4.0以上で初期コミット状態でtoxが通ります。(生成されたリポジトリでのPythonコードは実質setup.pyだけ、というのもありますが)

使い方などはREADMEにありますのでそちらを参照ください。

リポジトリは、 こちら

GitPython久しぶりに使った

約3年半前に ネタで書いたコード で使って以来、久しぶりにGitPythonを使いました。あー、便利。だけど、早速バグを見つけてしまった(commit時に、.git/HEADに \n が最後に付加されない)ので、バグ報告しておこう。

余談

以前はこれの拡張で、Django + django REST framework + Django絡みのベストプラクティスと言われるようなのを予め反映させるテンプレート(それもやはりシェルスクリプト)を作ったのですが、最近Djangoは使っていないのでとりあえず予定はありません。

おわり。

Activate 0 SIM by so-net

12/25に会社のオフィス近所の書店 1 で購入していた デジモノステーション 2月号 の付録の 0 SIM by so-net をアクティベートしました。接続確認は昔購入して使わなくなった、 b-mobile WiFiルータ を使ったのですが、本誌の記事や So-netの設定用の FAQマニュアル動画 にはダイヤル番号が載っていなくて困ったのですが、 他のFAQ に載っていました。備忘のため、記載しておきます。

b-mobile WiFiルータでの設定

プロファイル名

任意の名前。so-netとしておいた

APN

so-net.jp

ダイヤル番号

*99#

DNS

自動

認証方法

PAP or CHAP。無論CHAPにした 2

ユーザー名

nuro

パスワード

nuro

まとめ

SORACOM SIM買って、b-mobile WiFiルータでIntel Edisonで遊ぼうと思っていたのですが、0 SIM使えば運用コストほぼ0円で済みそうなのでお財布的に助かるなぁと。

Footnotes

1

ちょうどその前日に移転していたのですが、移転前のオフィスのあったビル一階にある書店で、昼休みに探しに行ったら結構売っていました。五反田の国道1号線沿いの他の大きめの書店では売り切れていたので、あそこならありそう、という読みは当たってました。ちなみに会社の同僚数名も同じ書店で購入していました。

2

理由が分からなければ調べてみましょう。

Aspiration of the 2016

あけましておめでとうございます。今年もよろしくお願いします。

そして悲報。今日で休みも終わりです。 妻にとっても悲報です。まだ幼稚園はお休みです。

今回の年末年始のお休みは

  • Debian JP Projectのサーバーリプレース作業の準備(とりあえず一段落)

  • おまめ一号と温泉の回数券使い切るタスク(おまめ一号はソフトクリーム目当て)

  • おまめ二号のアデノウイルス感染症で可哀想&辛い(おまめ一号とこまちゃん以外は眠れない日々)

  • 久々に大掃除した(妻の家事力がパワーアップしていて助かりました)

  • ディズニーランドに行く計画は中止(子連れだと基本日にち指定は買わないのでいいんだけど)

  • 年賀状作成に追われる(今回も年明け…)

  • Amazon定期便の事前通知のあと調整忘れる(必要なくてキャンセルする必要のあったのまで発送されて涙目)

  • 実家に行って、妹の結婚絡みの話が長引いておまめ一号と一泊して帰宅(日帰りの予定だった)

  • 実家帰りのその足で法定一年点検(ワイパーブレードとエアコンフィルター交換で思わぬ出費)

という感じでした。いつもよりむしろ休んでないよね。

今年の抱負

昨年もそういえば、おまめ二号はこの時期風邪を引いていました。昨年の振り返り(Review the 2015)でも書いたとおり、11月に職場も仕事も変わり、サーバーサイドはRailsで実装しているサービスのお仕事をすることになりました 1 。2ヶ月かかってようやく慣れてきたところで新年を迎えられました。ということを踏まえ、

「家族皆健康第一、短い時間できっちり成果出す」

を今年の抱負にします。

年末の振り返りから再度KPTは以下。

Keep

  • 7-16時勤務の朝型生活

    • これからの繁忙期も維持できるのか分からないですが、この辺はマネージャーと話をちゃんとしよう

  • 毎日コーディング

  • Debian の活動が減っているので無理ない程度に増やす

Problem

  • おまめ一号のDebianデビュー

  • 妻にPythonを教える

Try

  • 英語を使う機会が減っているのでまず習慣化する

  • 娘たちとのコミュニケーションを改善する

  • 年明けてこの三日間はとりあえず良好

  • 自分に余裕がなくなると悪化する、というのはわかっているので、仕事、健康、家庭、自分の時間と、如何に一定に保つか、が重要

  • 環境や条件が変わっても一定に保つってのが一番難しいので

  • おまめ一号のキーボード操作レクチャー

  • 中断したHaskellの勉強の再開&何か作る

  • C++の勉強継続、何か作る

  • 一昨年、昨年と妻と一緒に娘のことで悩んだり決断したことを、なんらかの形にする

Footnotes

1

遠回しに言ってますが、要は転職しました。例のリストは こちら です。常時Welcomeです。

Review the 2015

あと30分弱で新年ですが今年の振り返りをしてみました。

Aspiration of the 2015

「家族皆健康第一」は?

12/30におまめ二号が発熱し、大晦日もぐったりしていたので病院に連れて行ってみたところ、アデノウイルス感染症で終わった一年でした。 それとは別に、今後どう向き合う、というか付き合っていくか、ということを何度も考えたり、決断をすることが多かった一年ではあったのですが概ね健康で過ごせたかなと思います。

その他の目標

  • 7-16時勤務の朝型生活

    • 11月から職場を変えたので、一時期維持するのが難しかったのですが現在は概ね戻せて来た感じです。

  • 毎日コーディング

    • 概ね達成できてます。最近はアウトプットだけでなくインプットも増やしてます。

  • Debian の活動が減っているので無理ない程度に増やす

    • とりあえず現状維持。

  • 英語を使う機会が減っているのでまず習慣化する

    • 未達成。要見直し。

  • おまめ一号とのコミュニケーションを改善する

    • おまめ二号も自我が出てきて、さらに環境も変わって、むしろ悪化している気がする…。

  • おまめ一号のDebianデビュー

    • 未達成。字をようやく覚え始めたのでキーボード操作はまだその後かなという感じ。

  • 妻にPythonを教える

    • 「私には無理」と拒絶。別のアプローチが必要

  • 中断したHaskellの勉強の再開&何か作る

    • これは未達成だったものの、仕事上、Python&GoだったのがRuby&Railsを扱うことになりました。

    • プライベートではC++の勉強をはじめました

  • (2015年)4月からおまめ一号の幼稚園でさらに支出が増えるので、収支の改善方法を検討&実行する

    • 私および妻ともに、auからIIJ mioに切り替えることで月々の電話料金の削減は達成 * 育児用品や生活用品などの購入をAmazon Primeと楽天だけだったのをヨドバシや他のサイトを利用することになったことで、定期的な購入費用は割と改善できた感じ

    • コストコや楽天などでの大量購入の頻度を上げる

    • 高速道路の利用頻度が増えたので、ETC導入

    • 基本未着手分を増額するなど、予算の立て方変更

まとめ

書き始めたのが遅かったので書き終えたら年越しちゃったよ。

A sequel to pull request for ansible-ldap

昨日の記事(ansible-ldap is very simple and useful)で、ansible-ldap のAnsible Galaxy 対応のPRを送ったところ、早速返事がありました。

If you’d like to publish these on Ansible Galaxy, feel free. You don’t need anything from me.

Ansible Galaxyでの公開はしないそうですが、公開そのものはご自由にどうぞ 、ということでした。

ということで、 fork版として公開 しました。

今後の方針

現状、テストコードがなく、Ansible 2.0も未対応なのでその対応を行う予定です。 1 upstream側での変更が今後されるのかわかりませんが、可能であれば追従していくつもりです。

インストール方法

ansible-galaxy コマンドでインストールできます。

$ ansible-galaxy install -p library mkouhei.ldap

Mercurial から Gitへの変換

オリジナルはMercurialのリポジトリとしてBitbucketで公開されています。一方、Ansible Galaxyで公開するにはGitHubで公開する必要があります。 そこで、次の手順でMercurialからGitに変換しました。

  1. hg-fast-exportをインストール

$ sudo apt-get intall hg-fast-export
  1. インポート先のGitリポジトリを作成

$ mkdir ansible-role-ldap
$ cd ansible-role-ldap
$ git init
  1. MercurialからGitに変換

    • 変換元のMercurialのリポジトリは、却下されたPull requestを作成するためにfeature branchを作ったローカルリポジトリを使いました。

$ hg-fast-export -r /path/to/ansible-ldap
master: Exporting full revision 1/6 with 4/0/0 added/changed/removed files
master: Exporting simple delta revision 2/6 with 0/2/0 added/changed/removed files
master: Exporting simple delta revision 3/6 with 0/2/0 added/changed/removed files
for-ansible-galaxy: Exporting simple delta revision 4/6 with 1/0/0 added/changed/removed files
for-ansible-galaxy: Exporting simple delta revision 5/6 with 2/0/2 added/changed/removed files
for-ansible-galaxy: Exporting simple delta revision 6/6 with 0/2/0 added/changed/removed files
Issued 6 commands
git-fast-import statistics:
---------------------------------------------------------------------
Alloc'd objects:       5000
Total objects:           28 (         3 duplicates                  )
      blobs  :           11 (         2 duplicates          6 deltas of         11 attempts)
      trees  :           11 (         1 duplicates          5 deltas of         11 attempts)
      commits:            6 (         0 duplicates          0 deltas of          0 attempts)
      tags   :            0 (         0 duplicates          0 deltas of          0 attempts)
Total branches:           2 (         2 loads     )
      marks:           1024 (         6 unique    )
      atoms:              8
Memory total:          2344 KiB
       pools:          2110 KiB
     objects:           234 KiB
---------------------------------------------------------------------
pack_report: getpagesize()            =       4096
pack_report: core.packedGitWindowSize = 1073741824
pack_report: core.packedGitLimit      = 8589934592
pack_report: pack_used_ctr            =          7
pack_report: pack_mmap_calls          =          3
pack_report: pack_open_windows        =          1 /          1
pack_report: pack_mapped              =      19729 /      19729
---------------------------------------------------------------------

$ git branch
  for-ansible-galaxy
* master
  1. GitHubにリモートリポジトリを作成

  2. git push

$ git remote add origin git@github.com:mkouhei/ansible-role-ldap.git
$ git push --mirror
  1. for-ansible-galaxy ブランチを master にマージ

  2. Ansible Galaxyでインポート、公開

footnotes

1

先日公開した include_csv もですが。