プログラミング

Pythonでプラットフォームごとに処理を切り替える

プラットフォームで処理を切り替えたいことがたまにある。 sysモジュールを使うと割と簡単にできる。 import sys # "darwin", "linux", "win32" or "cygwin" sys.platform # Pythonのパスを取得したい場合は sys.executable

PythonでスタンドアロンなGUIアプリを作る

Mac Yosemite 上に構築する。 下準備 Homebrewのインストール クロスプラットフォームなGUIアプリを作るためにQtというライブラリを利用する。 Qtをインストールするのにbrewコマンドが必要となる。 Homebrew このページの先頭にあるスクリプトをコピーして…

Read-onlyなclasspropertyデコレータの実装

class classproperty(property): def __init__(self, fget): super(classproperty, self).__init__(fget) self.__doc__ = fget.__doc__ def __get__(desc, self, cls): return desc.fget(cls) class A(object): @classproperty def __tablename__(cls): retu…

ターミナルから起動するプログラムについて

catプログラムを起動する 例えば、ファイルの中身を見るcatというプログラムを起動してみよう。 ファイル名を引数にとって、ファイルの内容を出力する。 $ cat hello.txt hello, world!! プログラムの場所 プログラムはどこかになくてはならない。 catはどこ…

SQLAlchemyでリレーション

以下のサンプルでは、 各クラスについてidやテーブル名を定義するのが面倒なのでベースクラスを用意する。 from sqlalchemy.ext.declarative import declarative_base, declared_attr Base = declarative_base() class BaseModel(Base): # 継承してね __abst…

SQLAlchemyでサブクエリ

問題 SQLAlchemyから集約関数sumを使ったとき、 同じ列を重複してカウントしてしまった。 以下のようなSQLを実現したい。 sqlite> select l.lemma, lf.total, t.token, tf.total from lemma l join ( select lemma_id, sum(count) as total from lemma_in_fi…