2015-09-06
2015-09-07
■使っていないimport文が勝手に消されてしまうのを回避する
「importしていること」が必要で「importされたもの」を全然使っていない文があった。
Flaskの起動スクリプトが
from app import app import views if __name__ == '__main__': app.run()
ってなったのだけど、この import views がそう。
このviews.pyにルーティングが書いてあるのでこのimportは消せない。
消せないけどPyCharmはここが使ってないぞ! というWarningになった。
これでうっかり PyCharm で optimize import してしまうと消えてしまう。困った。いや。困らないけど気持ち悪い。
解決は2つあって
from app import app import views __all__ = ['views'] if __name__ == '__main__': app.run()
とする。
from xxx import *
した時にインポートされる要素を明示するための記法。これを流用する。
もうひとつは、
from app import app # noinspection PyUnresolvedReferences import views if __name__ == '__main__': app.run()
として、インスペクションを抑止するコメント行を書く。
説明と中身が合っていないような気がするが多分私の理解不足だろう。
おきまりで書いてた
if __name__ == '__main__': reload(sys) sys.setdefaultencoding("utf-8")
なんかも
if __name__ == '__main__': reload(sys) # noinspection PyUnresolvedReferences sys.setdefaultencoding("utf-8")
と書いて抑止できた。
これ、便利っぽいので検索したら書けるかもしれないマークアップの一覧を見つけたのでメモ。
メモ
def archive_note(pk): try: note = Note.get(Note.id == pk) except Note.DoesNotExist: abort(404) # noinspection PyUnboundLocalVariable note.archived = True note.save() return jsonify({'success': True})
abort(404) が適切に例外を再raiseする(ハズな)のでtryの下に到達しないのだけど、PyCharmはそれが分からずに「Noteが初期化されてないかもしれないぞ」と言ってくる。tryの上に note = None とか意味ない(=意図をコメント残しておかないといけないような)文を入れて抑止するよりもこれの方がいいかも。
2015-09-08
■てっとりばやくCSV1行分を読みこむ
CSV系のライブラリって「ファイルを読みこむ」のが多いなぁ。
StringIOでラップしてしまうのがいいかな。
pandasを使って、
import pandas as pd from StringIO import StringIO pd.read_csv(StringIO('a,c,d," e ", f,",", 3'), header=None).values.tolist()[0]
['a', 'c', 'd', ' e ', ' f', ',', 3]
みたいな感じか。
でも、日本語は面倒かも。必要に応じてUTF-8だと思ってdecodeしないといけないのか。
あ、"次の行に続く"ケースがないと事前に分かっている時の話しです。
2015-09-13
■ザ・ストレイン
アメリカでドラマ化されてシーズン2がもうすぐ終わる、
の原作。
で紹介されていて、なんか面白そうなので読んだ。
吸血鬼もの。
オカルトに振らずに、SF側に振った設定。ウィルスや寄生虫といったギミックが、バイオハザードあたりから「ゾンビもの」のメイン・ストリームになってしまったの同様のことをやっている。
いるのだけど、一方で「鏡に映らない」とか「人に招かれない限り人の領域に入れない」とか「流れる水をわたれない」とかいった古めかしい特徴も残しているところが面白い。その理屈は続刊で何か判明するのかどうか。
ウィルスや寄生虫を取り入れているけど、その設定を取り込んで「吸血鬼もの」を構築する部分、お話を下支えする部分は手を抜いてないし、かなりの紙幅を割いて書いている。
おかげで展開が遅いと感じる部分部分もあるけど、じわりじわりと人間社会が冒されている様子をきっちり書き切っているってことでもあるので悪印象はない。
続刊も読むよ−。
2015-09-24
■Postgres.appとRubyとPythonと
OS X用のPostgreSQLを実行するアプリケーション、Postgres.appがあります。
Homebrewでインストールしたりするんじゃなくて、アプリケーションを実行したときだけPostgreSQLサービスが起動します。
Postgres.app – the easiest way to get started with PostgreSQL on the Mac
で、PythonやRubyから使う時のメモ。
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin/
をシェルのプロファイルに追加したりするなど。
Pythonは実行パスさえ通してあればOK。
pip install psycopg2
で済む。
RubyGems と bundle は……、
Gemfileに
source 'https://rubygems.org' gem 'pg'
と書いたあと、
bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config mkdir vendor ARCHFLAGS="-arch x86_64" bundle install --path vendor/bundle
でOKだった。
bundle config によって .bundle/config というファイルができている。
追記
Postgres.appの中身のバージョンは都度確認のこと。
2015-09-29
■パインズ
記憶をなくした主人公、迷い込む見知らぬ土地、一見して温和な村人たち、やがて知る外に出ることができないという状況……。
と、まぁ、正直にいうとサスペンス的にはありがちなスタートで、オチにも特にひねりとか新味はない。
なので道中の展開の妙と、主人公に対して徐々に提示されていく「奇妙な点」を楽しむべき。
……と言いたいが、オチから考えていくと色々とおかしな点がある。そのおかしな点に対しての一応のいいわけ的なことも提示されているが、それじゃあ納得できないなぁ*1。
主人公の最後の選択こそが、一番怖いところなのかもしれない。
シャマラン監督の手でテレビシリーズ化されているのが、
で紹介されていて興味を持った。
テレビドラマは見るのがとてもしんどいので小説で読んだ次第。
確かに、ドラマにすると映えそうなお話であった。
*1 と偉そうに書いているけどちゃんと考えるとつじつまあってるのかもしれないと不安もある。