@font-your-faceモジュール

Drupal6全盛期の頃、WEBサイトの文字をフォントも含めて装飾するために、SightWriterというモジュールを使っていました。

https://www.drupal.org/project/signwriter

よくできたモジュールで、フォント、前景色、背景色、影などを設定すると、テキストが設定に基づき画像に置き換わるというモジュールです。汎用性が高い点として、タイトルやメニューなどの他に、プロフィール設定の項目に置き換え用の正規表現を設定することで、フォーマットのフィルターとして利用できるようになり文字として入力したコンテンツを自由に彩ることが出来ました。

そんなSignWriterですが、Drupal7になり途中まで移植されたものの、Webフォントが流行る昨今、@font-your-faceに取って代わってしまったようです。

https://www.drupal.org/project/fontyourface

SQLAlchemyのdeclarative_base関連

PythonのORMであるSQLALchemy。 とても便利なモジュールですが、巨大なモジュールで構造も複雑です。

そのSQLALchemyでモデルとデーターベースへのマッピングを同時に行うために利用する、declarative_baseの備忘録(なにぶん把握出来ておりませので間違い等あるかと思います)です。

まず、モデルの構築方法を。

from sqlalchemy import MetaData
from sqlalchemy.ext.declarative import declarative_base

modelClasses = {}
modelBase = declarative_base(class_registry = modelClasses, metadata=MetaData())

データーベースのテーブルにマッピングされるモデルを作成するには、"declarative_base"のインスタンスから派生する必要があります。

”10 Most Common Mistakes that Python Programmers Make”から

先日のFaceBookのPythonグループに投稿されたリンクから。

10 Most Common Mistakes that Python Programmers Make

上記の投稿を見ていて知らない部分もあったことから忘れないためのメモです。


#1 デフォルト値の扱いについて

関数の引数のデフォルト値が評価されるのは、関数が定義された時の一度だけで、 尚且つmutableだよというもの。


#2 クラス変数について

クラスオブジェクトそれぞれに名前と値の辞書が定義されています。

継承関係にあるクラスの場合、下位から上位に向かって名前を検索するため、 派生クラスで未定義の場合、上位クラスから検索し値を取得しますが、 派生クラスで同名で定義することで、派生クラスに新たなオブジェクトが定義され辞書に登録されます。

そのため上位クラスなどに影響を与えないよというもの。