へっぽこびんぼう野郎のnewbie日記

けろけーろ(´・ω・`)!

Python

reduxよくわかんなかったのでPythonでredux実装した

class createStore: """ほんとはシングルトンにしないといけないけどわかりづらくなるのでやめた 関数にした場合は、Pythonだと "JavaScriptでは全然考えられてないローカルスコープ" で大変そうなのでクラスにした""" def __init__(self, reducer): self._s…

pythonでdatetime.datetime型に、単にタイムゾーンを付与したいときにやること

毎回忘れてStackoverflow見てるので(メソッドにするのもあれだな感) タイムゾーンをくっつけるだけ >>> import datetime >>> import pytz >>> now = datetime.datetime.now() >>> now datetime.datetime(2016, 9, 9, 11, 5, 34, 943737) >>> now.replace(tzi…

virtual_envの環境を保存しておく

ソース save_workon #!/bin/sh if [[ -z "$VIRTUAL_ENV" ]]; then echo '' > ~/.workonlogin else echo workon "$(basename $VIRTUAL_ENV)" > ~/.workonlogin fi 実行例 $ workon test (test)$ save_workon [ New Terminal ] (test)$

Django, Unittest, AttributeError: 'module' object has no attribute について、3分ハマったので備忘録メモ

結論 パスがおかしい or ファイルの中身がおかしい より細かな調査方法 $ ./manage.py shell $ import foo.bar.target_source_file "Error comes up HERE" このエラーから得られる重要な知見 読み込めてないときは 中身がおかしい、別の場所を示している、別…

flake8(version 2.2.5)が、急にF999エラーを伴ってこけだした話

解決法 flake8の最新版は2.5.4(2016/03/02現在)結論から言うと、flake8を最新版(2.5.4)にしたらなおる 原因 flake8 v2.2.5では、Dependenciesであるpyflakesのバージョン指定が、>=0.8.1しかなかった flake8-2.2.5/setup.py From flake8 2.2.5 : Python Pack…

Django、connection.queriesでSQLクエリが見えない場合、またはテストの中でSQLクエリを見る方法(How to show queries in django tests)

前提 DEBUG = True になっていなければいけないFAQ: Databases and models | Django documentation | Django Make sure your Django DEBUG setting is set to True. Make sure (*´∀`*)Oh Yeah クエリを見る方法 from django.db import connection print(con…

このようにして難読化するのだ[Python]

_.py _ = dict class _: class __(_): def __init__(__): __['_'] = print def _(__): __ = __['_'] __(__) def _(__): class _(__.__): def _(__): __ = __['_'] __('_') return [_] * ((__ == __) + (__ != _)) [_()._() for _ in _()._()] $ python -m_ _…

Django。URLから名前解決する

In [23]: resolve('/api/v1/players/1/home/').view_name Out[23]: 'api:player-home' ↓逆 In [25]: reverse('api:player-home', kwargs=dict(player_id=1)) Out[25]: '/api/v1/players/1/home/' わるいことしたけろ〜(´・ω・`)

Resolved "cannot build python-module libsass in [gcc 4.6 < ] environment, e.g. CentOS 6.5"

$ pip install sass # not "libsass". it's another module This module uses a C++ Library "Libsass" Older Version. This doesn't have dependencies related to gcc 4.6.In the first place, I had tried to do "cross compile" Libsass. However I gave…

Djangoで、RunPythonをマイグレーションファイルに忍び込ませた際の罠 django.db.utils.OperationalError: (1054, "Unknown column 'x_field' in 'field list'")

Migrationクラスに次の文を追加したとする operations = [ migrations.RunPython(call_change_alpha_model), migrations.AddField( model_name='alpha', name='x_field', field=models.PositiveIntegerField(default=0), ), ] call_change_alpha_modelは以下…

C言語でPythonのモジュールを書く!

はじめに 社内勉強会でつかった。 てきとうなのでまちがってたらスマソ。 さいごらへん雑。 ソースにコメント書いたので、それ見たらたぶんわかる。 注意点 makeできない!→python3.rcまでパス通ってない可能性 初歩の初歩向け https://docs.python.org/3.5/…

python. ずらーっと並んでいる日付を、月ごとに見やすくまとめる方法

じみにべんり In [60]: import datetime In [61]: start = datetime.date(2015, 9, 23) In [62]: [start + datetime.timedelta(days=n) for n in range(7)] Out[62]: [datetime.date(2015, 9, 23), datetime.date(2015, 9, 24), datetime.date(2015, 9, 25),…

AWSのマイクロインスタンスにlxmlをインストールできないときに確認すること

stackoverflow.com sudo yum install python34-devel などとする しなくてもいい気がする(´・ω・`)!とりあえず困ったら、sudo yum list | grep hogeで調べればだいたいなんとかなる。Failed to set locale, defaulting to Cなどとおこられたら LC_ALL=C su…

取りたい要素、呼びたい属性が決まっているときにいちいちメソッド定義しなくていいやつ

>>> from operator import * >>> getter = itemgetter('a', 'b', 'c') >>> d = dict(a=1, b=2, c=3, d=4) >>> getter(d) (1, 2, 3)みたいな 他にもf(r)で、r.nameと同じ意味 f = attrgetter('name') f(r)で、r.run()と同じ意味 f = methodcaller('run') f(r)…

python 条件分岐で定義するクラスを変更する

>>> def define_classA(a): ... global A ... if a: ... class A: ... hoge = 1 ... else: ... class A: ... hoge = 'h' ... >>> define_classA(1) >>> A.hoge 1 >>> define_classA(0) >>> A.hoge 'h'メソッドを変更することも可能>>> def define_classA(a):…

WindowsでPython3.4.3の実行環境つくってみた && windowsにpyquery(←lxml)をinstallした

注意 python完全初心者向けではないので、初心者の人はLinuxつかったほうが楽だとおもいます。 本編 Macでつくったpythonのアプリケーションを、WindowsでちょこっとだけGUI化して配布してPythonとか全然知らない一般人でも使えるようにしようかなとおもって…

3秒でわかるSeleniumのつかいかた(Python・ちょっとDjango)

2016/09/22 追記 3秒でわかるようになってなかったので追記。 Seleniumとはなにか 自動でブラウザ動かせれるやつ。テストとかにつかえる。 Seleniumのインストール方法 http://www.seleniumhq.org/download/ Chromeでやる場合、chromedriverをダウンロードす…

Djangoのi18nで、localeが勝手に変わってしまったと思ったらそんなことなかった話

こまってたこと activate('ja')したあと、ふんふんふーんというノリで翻訳対応してたら、いつのまにか翻訳が効かなくなった。 こわくなったのでget_language()をデバッグにさしこんで事なきを得た。下を見れば、なんだあたりまえのことじゃないかというかん…

じゃあPythonでは謎外国語文字からInteger.parseInt的なことをするとどういう挙動をするのか

インスパイアされた ↑Java - String.format("%d", i)で数字が出てくると思ってたら死んだ話 - Qiitaqiita.com ためしてみた Pythonではこうなる >>> int("༡༢༣༤༥༦༧༨༩༠") 1234567890 >>> int('၁၂၃၄၅၆၇၈၉၀') 1234567890 >>> int('111') # おまけ(なんと全角…

IT用語辞典をおまかせ表示(ランダム表示)するサイトつくった

さっきトイレで「あ〜、このうんこしてる時間、なにかに有効活用できないかな〜」と考えて、 「そうだ、IT用語の辞典でも適当に見るか」とおもい、 IT用語辞典のサイトに行ったのだが、 →IT用語辞典 e-Words wikipediaのような「おまかせ表示」がなかったな…

Djangoで、pythonシェルからmigrate前のモデルのフィールドを見る方法

>>> from django.db.migrations.state import ProjectState >>> from django.apps import apps >>> for f in ProjectState.from_apps(apps).models[('applabel', 'hogemodel')].fields: ... print(f) ... ('id', <django.db.models.fields.AutoField>) ('created_at', <django.db.models.fields.DateTimeField>) ('updated_…</django.db.models.fields.datetimefield></django.db.models.fields.autofield>

pythonのシェルで書いたコマンドを再利用するためにファイルに書き出すモジュールつくった

なにしたのか このようにして、何かしらコマンドを打ったとする。その後 「似たようなコマンド打ちたいな〜」 「あ〜、最初からファイルで書けばよかった〜」 みたいなこと、発生しませんか?そんなとき、また同じコマンドを打つ……これほどだるいことはない…

pythonで、性能解析(プロファイラ)して、その結果を画像ファイル(png)で表現してくれるモジュール見つけたので使ってみた 

超便利 実験台 重いです こんな感じのpngファイルができる インストール方法 $ pip install pycallgraph こんなノリでつかう $ pycallgraph graphviz shortcut.py 『実験台』みたいに、ファイルの中でwithとともになんやかんやもできる。依存関係のやつが必…

noseの--testmatchオプションや--match、-mがうまくはたらいてくれてなかった件について

noseのソースにif options.testMatch: self.testMatch = re.compile(options.testMatch)があった。プリントデバッグしてみたら、nosetests --testmatch='^test.*'と書くと ^test.*ではなく、 '^test.*' を正規表現のものとしてコンパイルしてくれるようだ(`…

pythonのインタラクティブシェルでクラスの中の属性とかを簡易的に調べたいときにつかうメソッドつくった

使用例 さっき出力したオブジェクトの属性をみたいとき => some_object => k() さっきつくったオブジェクトの、属性が大文字でできているものだけみたいとき(主に定数) => some_object => k(s=True) あるオブジェクトの属性をみたいとき => k(some_object)…

ニコニコ動画の、動画のIDを入力すると、動画をダウンロードして、ついでにmp3に変換するツールつくりました。

harukaeru/NicoNicogithub.comつくりました!!!!!!!!!!!!!!!!!!

pythonのインタラクティブシェルをViモードでつかう

~/.inpurcに、 set editing-mode vi と書く。おわり(´・ω・`)また、readlineモジュールを使うことで python標準モジュールをいくらでもハックできそうな感じだ(`・ω・´)! さんこうにしました(パクっただけ) 13. Interactive Input Editing and History …

Pythonのデコレータであそんでみた

Enumを使っていることからお察しの通り環境は3.4です。ソースコードを動的に扱えるようになるのが最近の課題。 ついき ちなみに、furikake_dict、関数のなかにありますが、これはあくまで「こういうこともできるよ」であって、 この書き方はあまり良くないで…

L += [3, 4]は、L = L + [3, 4]と等価じゃなかった

あっとうてきに+=のほうが5倍から10倍くらいつよい $ python extends.py | grep 'はやい' | sort | uniq -c 100 +=がはやい あっとうてきではないか。わがぐんは。 +=とリストのメソッドであるextendを戦わせてみた なお内部では、L.extend([3, 4])のよう…

pythonの代入ぜんぜんわかってなかった

イコールの右側:メモリにオブジェクトつくる イコールの左側:そこへのリファレンス イコール:メモリにつくったオブジェクトへのリファレンスを作成するこのようにしてオブジェクトがインスタンスへ超進化するのだ。 インスタンスは、「リファレンスが張ら…

C言語からpython3呼び出してHello Worldしてみた

はじパイ(はじめてのPython)に載っていたやつを参考にしました #include <stdio.h> #include "Python.h"int main() { printf("C: Hello World!\n"); Py_Initialize(); PyRun_SimpleString("print('Python: Hello World!!')"); return 0; } Compile gcc -framework P</stdio.h>…

python3.4ではreloadも、imp.reloadもうまく動かない。importlib.reloadをつかおう!という話

更新日 2016年08月27日:importlib.reload(module)を使おう (´・ω・`)! reload(module)は3から廃止 imp.reload(module)は3.4から非推奨 Ref 2. Built-in Functions — Python 2.7.12 documentationWhat’s New In Python 3.0 — Python 3.5.2 documentation (…

pythonでログ出力するデコレータつくった

loggingモジュールの勉強のためにつくった なにするやつ main.py def hoge(): print("main_hoge!!") if __name__ == '__main__': hoge()というのがあったらmain.py import utils.loginit from utils.log import logger @logger def hoge(): print("main_hoge…

pythonでfor a in Aしたいけど、インデックスも取りたいときにするやつ

Python 3.4.2 (default, Jan 29 2015, 06:35:40) [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> for i, v in enumerate(['hoge', 'moge', 'toge']): ... …

One of the differences between Python2.x and Python3.x related to the Generator

Ref The History of Python: From List Comprehensions to Generator Expressions 2.x $ python Python 2.7.9 (default, Jan 29 2015, 06:28:58) [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin Type "help", "copyright", "credits" or…

起動時にvirtualenvwrapperの環境をworkonして毎回変えるのがめんどくさかったのでめんどくさくなくした

コマンドを作る(別にvimじゃなくてもいい) $ vim /usr/local/bin/reservework その内容 #!/bin/sh if [ -n "$VIRTUAL_ENV" ]; then envname=`basename $VIRTUAL_ENV` echo "workon $envname" > ~/.workonlogin else echo "" > ~/.workonlogin fi 内容はGit…

Djangoのテンプレート、ContextとTemplateについて

環境 1.7。他はしらん。 こたえ python manage.py shell Python 3.4.2 (default, Jan 29 2015, 06:35:40) [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin Type "help", "copyright", "credits" or "license" for more information. (Int…

Djangoのテンプレート、blockとendblockの意味について

baseのテンプレートから継承してオーバーライドできるようにするため Source: Template inheritance defines blocks that child templates can override

jsonファイルやxmlファイルからDjangoのmodelにデータを移動する方法

やりたいこと data.json { {"name": "yamada", "age":26}, {"name": "takemura", "age":31},} のようなデータを DJangoのmodelに突っ込みまくりたいときがあるとする。 (要はデータベースに格納したい) これを、import simplejsonみたいなことして、for文…

MacでHomebrewでpythonのsys.pathとipythonのsys.pathとが一致していなかったりした場合のとき

Homebrewからpythonにシムリンクがちゃんと貼られていない可能性がある。 ので、 $ brew doctor をすると、このへんおかしいぞ!と教えてくれる。 ドクターっていうか実際インストールしたときにやってることをもう1回やって、ちゃんとできてる(true)かど…

ScrapyというやつでWebスクレイピングして、ポケモン一覧をポケモンwikiから取得してみた

はじめに ScrapyはPythonのモジュールで、Webスクレイピングできるやつ。 pypiにあるので、pipが入っていればpip install scrapyでインストールできる。 ないときびしい前提知識 Pythonの文法 CSS等のセレクタへの理解(まぁ、なくてもなんとかなる) これが…

Python + PDFQueryでPDFをParseして1列取得してみた

PDFQueryって? pdfをパースして、 xmlにしてくれて、 pythonのオブジェクトとしても使えるやつ 依存関係 lxmlとかいうのと PyQueryとかいうの (jQueryみたいに書けるように作ったやつ。すごい。ぼくjQuery知らんけど) こんな感じでここから取得できる PDF…

GitHubのソースをサイトとかに載せるGistの<script src=ほげほげ>をいちいち手で打ち込むのがめんどくさかったから、作業フォルダでコマンド打つと作ってくれるやつ作った

つくった!!!!!!!!!!! こんなふうになる!!!!!! asciicast:17091 - asciinemaソース!!!! 追記: 2/28 バグってたから直した

『数学が得意だけどプログラミングは初心者』な人に送る、あんまり勉強しなくてもプログラミング(OOP限定)がわかる文法の考え方とかのTips全部入り【前半】

はじめに 高校数学わかる程度の数学知識を前提として書いています。 一部『知らねーよこんなの!』というものがあるかもしれませんが、知ってください。前から順番に読んでいただくことを想定しているので、 自由奔放な読み方をするとイミフな箇所が発生する…

Pythonで車輪の再生産だけどnumpy使わずに標準偏差を求めるモジュールつくってみた

はじめに 統計学の勉強なう 読んでる本→『統計のはなし』 標準偏差ってなんだ 『複数の数値が存在しているとき、それがどのくらいバラついて存在しているか』を表す数値。 大きければ大きいほどばらついていることがわかる 標準偏差ってどうやって求めるの …

DjangoのCSRF token missing or incorrect.についての解決

追記 csrf_tokenは、単にPOSTするときに投げるランダムに生成された文字列だよ クライアントXは、あるページにHTTPRequest(GET)でアクセスする。 →サーバ側で、Djangoがランダムな文字列を生成 →そのランダムな文字列を含めたHTMLResponseをクライアントXに…

Djangoの概要の概要についててきとうにまとめた

はじめに Djangoの概要についての言及が文字だらけなので ああこんな感じね ってノリで全体を理解できるものがないか探したんですが 見つからなかったので 自分で まとめたまとめた! Djangoとかいうフレームワークと、ウェブサーバ(ApacheやNginx)、デー…

とりあえず片手でブラを外す方法についてのTipsを書きました。

ぼく フロントホックは手間取る程度 コートの上などから一瞬で外すのは無理程度 とりあえず外す速度は1秒かからない程度 え、いつ外した?と言われる程度 はじめに あまりすごくないですがTipsを適当に残しておきます。TPOに合わせてご使用ください。 (た…

Djangonのテスト時でのGot an error creating the test database: permission denied to create database(Postgresql)の解決

事例 コマンド $ python manage.py test polls 結果(yesが僕の入力) Creating test database for alias 'default'... Got an error creating the test database: permission denied to create databaseType 'yes' if you would like to try deleting the t…

Herokuでデータベースへアクセスするときのユーザ名を忘れてしまった・ナニソレ?なときの対処法について

更新日2016/08/27: 恥ずかしすぎて記事を消したい $ heroku run python manage.py syncdb はじめてこれをやったときに、データベースのユーザ名を適当に決め、 その後環境構築であらぶったあと、 『あれ……?なんて設定したっけ……ユーザ名デフォルトだったよ…