牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

Python

Tern Link B7 のギア比を考えるメモ

変更検討 13-28Tに変更 11-28Tに変更 フロントを56T (or 58T)に変更 ギア比を計算してみる 追記: ギア比を計算してみる、その2 リンク ある程度カスタマイズしたら平地でトップの7速のみでラクに走れるようになって軽すぎる気がするので検討。 変更検討 標…

Python で xlsx ファイルを読み込んで配列にするメモ

(python2.7.x) Install $ pip install xlrd Source code import xlrd def get_sheet_lines(xlsx_filename, sheet_name, num_of_header_lines=1): book = xlrd.open_workbook(xlsx_filename) sheet = book.sheet_by_name(sheet_name.decode('utf8')) lines = …

Python でランダムにパスワード生成してみるメモ

# coding=utf-8 import random def generate_password(password_length): digits_and_ascii_letters = list('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') ignore_strings = list('lIO0') password_strings = [s for s in digits_and_…

Python のクラスを継承した時にどちらのメッソドが上書きされるのかメモ

python2.7 # coding=utf-8 class Base: class_name = 'base' def method(self): print "Base!" print self.class_name class BaseB: class_name = 'base_b' def method(self): print "BaseB!!!!" print self.class_name class Hoge(Base, BaseB): class_name…

git commit時にPythonのFlake8でコードチェックするメモ

バージョン変わってやり方も変わってたので一応メモ $ pip install flake8 $ flake8 --version 3.2.1 # プロジェクトのルートで以下コマンド $flake8 --install-hook git ファイルが作成される .git/hooks/pre-commit #!/usr/local/opt/python/bin/python2.7…

flake8 の設定を変更するメモ

(python2.7.13, flake8v3.2.1) ~/.flake8 にファイルを作って設定を書く [flake8] max-line-length = 120 参考 Configuring Flake8 — flake8 3.3.0.dev0 documentation

Python で Loto6 の当選確率の計算をしてみるメモ

(pytho2.7) In [9]: import itertools In [10]: len([i for i in itertools.combinations(range(43), 6)]) Out[10]: 6096454 # 1等 1/6096454 In [19]: len([i for i in itertools.combinations(range(6), 5)]) * len([i for i in itertools.combinations(ra…

Python で Ruby の each_slice みたいなやつメモ

(python2.7) def each_slice(arr, n): return [arr[i:i + n] for i in range(0, len(arr), n)] print(each_slice([1, 2, 3, 4, 5], 2)) print(each_slice([1, 2, 3, 4, 5], 3)) print(each_slice([1, 2, 3, 4, 5], 4)) # => [[1, 2], [3, 4], [5]] # => [[1,…

django-ckeditor の画像アップロードでハマったメモ

(django1.8, python2.7) 手順 ここ に書いてあるけど... Add ckeditor_uploader to your INSTALLED_APPS setting Add CKEDITOR_UPLOAD_PATH = "uploads/" setting Add (r'^ckeditor/', include('ckeditor_uploader.urls')), project's urls.py 略 Install pi…

Python で Zip ファイルを解凍するメモ

(python2.7.11) from zipfile import ZipFile import os dir_name = 'fuga' os.mkdir(dir_name) with ZipFile('hoge.zip', 'r') as z: z.extractall(dir_name) extractall() でディレクトリを指定しないとカレントディレクトリにディレクトリを作らずファイ…

Python でファイル作成する時に指定したディレクトリが無ければ作るメモ

(python2.7.11) ディレクトリが無いとこで open して write するとエラーになるので mkdir する # coding=utf-8 import os def write(filename, text): file_path = os.path.dirname(filename) if not os.path.exists(file_path): os.makedirs(file_path) wi…

Python のメソッドを文字列で呼び出すメモ

(python2.7.11) # coding=utf-8 class Hoge: @property def fuga(self): return 'fugafuga' h = Hoge() print h.fuga print getattr(h, 'fuga') # print getattr(h, 'fu') # AttributeError print getattr(h, 'fu', 'Nothing!') # -> fugafuga # -> fugafuga…

Python3.5 の async を使って非同期でwebサイトにアクセスしてステータスコードを取得するメモ

(python3.5.1) Web DB Press Vol.82 の Go特集でやってたやつを python で書いてみる hoge.py import asyncio from urllib import request urls = [ 'http://example.com', 'http://example.net', 'http://example.org', ] async def display_status(url): r…

Python でとある日付から今日まで何日か取得するメモ

(python2.7.11) In [10]: import datetime In [11]: date = datetime.datetime.strptime('2016-01-01', '%Y-%m-%d') In [12]: date.today() Out[12]: datetime.datetime(2016, 3, 8, 16, 7, 57, 767309) In [13]: d = date.today() - date In [14]: d.days O…

Python で今日から30日後の日付はいつなのか取るメモ

(python2.7) 忘れるんでメモ 標準ライブラリのみで In [16]: import datetime In [17]: today = datetime.datetime.today() In [18]: today.strftime('%Y-%m-%d') Out[18]: '2016-02-12' In [19]: d = today + datetime.timedelta(days=30) In [21]: d.strft…

pip で前のバージョンの最新をインストールしたいメモ

例えば Django の最新バージョンは 1.9.1。だけど 1.8.x 系の最新をインストールしたい場合。 $ pip install 'Django<1.9' Collecting Django<1.9 Using cached Django-1.8.8-py2.py3-none-any.whl Installing collected packages: Django 参考 pipの使い方 …

関数呼び出しタイミングのメモ

いちおう想定通りの結果になるか確認してみた javascript (es2015) 'use strict'; function foo(func) { console.log('foo!'); func(); console.log('end foo!'); } foo(() => {console.log('bar!');}); //=> foo! //=> bar! //=> end foo! python 2.7.x #!/…

Python で画像URLから画像のサイズを取るメモ

(python2.7) $ pip install pillow #!/usr/bin/env python # coding=utf-8 from PIL import Image from cStringIO import StringIO from urllib import urlopen def get_image_size(url): file = StringIO(urlopen(url).read()) img = Image.open(file) retu…

Python と boto で S3 の情報を取得してみるメモ

# coding=utf-8 import json import re from boto3.session import Session AWS_ACCESS_KEY_ID = 'AWS_ACCESS_KEY_ID...' AWS_SECRET_ACCESS_KEY = 'AWS_SECRET_ACCESS_KEY...' BUCKET_NAME = 'hoge' session = Session( aws_access_key_id=AWS_ACCESS_KEY_I…

python で配列を n 個の配列に分割するメモ

コード # coding=utf-8 def chunked(iterable, n): return [iterable[x:x + n] for x in range(0, len(iterable), n)] if __name__ == '__main__': arr = range(10) print(chunked(arr, 4)) # => [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9]] 参考 python2でリスト…

python で yes/no で実行する/しないの処理のメモ

コード hoge.py # coding=utf-8 def yes_no_input(): while True: choice = raw_input("Please respond with 'yes' or 'no' [y/N]: ").lower() if choice in ['y', 'ye', 'yes']: return True elif choice in ['n', 'no']: return False if __name__ == '__m…

Python でバイグラムのメモ

(python2.7) def ngrams(text, n): text_list = list(text) return [text_list[i:i + n] for i, char in enumerate(text_list)] ngrams_list = ngrams(u"今日はいい天気ですね。", 2) print(("\n").join([u"{}".format(u"".join(chars)).encode('utf8') for …

Python で空文字列 "" とブール値の真か偽のメモ

(python2.7) $ ipython In [1]: def check(val): ...: if val: ...: return True ...: else: ...: return False ...: In [2]: check("") Out[2]: False In [3]: check("" and True) Out[3]: False In [4]: check("" and False) Out[4]: False In [6]: check(…

docker-compose で Django と PostgreSQL で runserver 起動してみるメモ

ほぼ "Getting started with Compose and Django" そのまま (macosx10.9, boot2docker1.6.0, docker-compose1.2.0, django1.8) インストール boot2docker http://boot2docker.io/ docker-compose Docker Compose - Docker Documentation boot2docker 実行 $ …

Docker でカレントディレクトリをマウントして Flask の表示を変更してみるメモ

開発環境を整えるのに何かいい方法ないかなと思いつつなんとなく (macosx10.9, boot2docker1.6.0) boot2docker インストール http://boot2docker.io/ 略 コード docker-sample-mount-a-volum/ Dockerfile hello.py requirements.txt Dockerfile FROM debian:…

Docker で最小限の flask コンテナを作って起動してみるメモ

(macosx10.9, boot2docker1.6.0) コードをコピペするの面倒なのでgithubに置いた https://github.com/CortYuming/docker-hello-flask 参考 WEB+DB PRESS Vol.86|技術評論社 Docker 特集

【書評】『Pythonエンジニア養成読本』を読んでみた

押さえておきたい事がひと通り含まれているので、これから Python を学びたい人や復習したい人にちょうど良さそう。 Pythonエンジニア養成読本[いまどきの開発ノウハウ満載!]gihyo.jp 第1章 その特徴,歴史とコミュニティ The Zen of Python の和訳が掲載…

Python で XOR のメモ

(Python2.7) In [1]: 0 ^ 0 Out[1]: 0 In [2]: 0 ^ 1 Out[2]: 1 In [3]: 1 ^ 0 Out[3]: 1 In [4]: 1 ^ 1 Out[4]: 0 In [5]: bool(0) != bool(0) Out[5]: False In [6]: bool(0) != bool(1) Out[6]: True In [7]: bool(1) != bool(0) Out[7]: True In [8]: bo…

Python でソルト生成してハッシュ値メモ

(python2.7) import random def generate_salt(digit_num): DIGITS_AND_ALPHABETS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" return "".join(random.sample(DIGITS_AND_ALPHABETS, digit_num)) salt = generate_salt(20) print(s…

Python の配列だけでなく辞書でも pop() メモ

(python2.7) とあるライブラリのコード見てたらあれっこれは?と思い、手元でやってみたらできた... 配列で pop() まあこれは知ってた a = ['hoge', 'fuga'] b = a.pop() print(a) # ['hoge'] print(b) # fuga 辞書で pop() a = {'hoge': 'HOGE', 'fuga': 'F…