娘がナンを食べたいといってうるさいので、富士宮の王様のカレーに行ってきた。
ここのチーズナンがたいそう美味い。

今回僕はほうれん草ベースのチキンカレー辛さLv.4 with ライスというオーダー。もっと辛くても良かったかな。

娘がナンを食べたいといってうるさいので、富士宮の王様のカレーに行ってきた。
ここのチーズナンがたいそう美味い。

今回僕はほうれん草ベースのチキンカレー辛さLv.4 with ライスというオーダー。もっと辛くても良かったかな。

31012010 Haskell
さきのオイラー法よりも効率の良いRunge-Kutta法をHaskellで
runge h f p = runge'
where runge' = p:zipWith runge'' runge' [h*x| x <- [1..]]
where runge'' x t = x + (k1 + 2*k2 + 2*k3 + k4)/6
where
k1 = h * f x t
k2 = h * f (x + k1/2) (t + h/2)
k3 = h * f (x + k2/2) (t + h/2)
k4 = h * f (x + k3) (t +h)
f x t = x
刻み幅がそんなに小さくなくても、かなりいい精度が出ていることがわかる。
*Main> let eu = runge 0.1 f 1
*Main> eu !! 10
2.718279744135166
テーラー展開はこれが参考になるというか、展開をするというイメージをつかみやすくなると思う。
30012010 life
30012010 Haskell
オイラー法とはあれです、常微分方程式解くやつ。
これをHaskellで実装してみた。下の二行。
euler h f = euler'
where euler' = (f 1.0 0.0): zipWith (+) euler' [h*y| y <- (zipWith f euler' [h*x| x <- [1..]])]
f = xにすればx = e**tが解になるので。
f _ 0.0 = 1.0
f x t = x
として解いてみる。
*Main> euler 0.00001 f !! 100000
2.7182510547639454
あんま刻み幅を小さくしすぎるのはだめ。
*Main> euler 0.000001 f !! 1000000
*** Exception: stack overflow
pylons bookの19章を参照。
from simplesite.model import meta
meta.metadata.bind = meta.engine
をいまいちきちんと理解できてない。
model/meta.pyをみたら
"""SQLAlchemy Metadata and Session object"""
from sqlalchemy import MetaData
from sqlalchemy.orm import scoped_session, sessionmaker
__all__ = ['Session', 'engine', 'metadata']
# SQLAlchemy database engine. Updated by model.init_model()
engine = None
# SQLAlchemy session manager. Updated by model.init_model()
Session = scoped_session(sessionmaker())
# Global metadata. If you have multiple databases with overlapping table
# names, you'll need a metadata for each database
metadata = MetaData()
ってなってるだけだった。
29012010 music
若干 No Coolだったというか、もうひとつメランコリック感が足りなかった
Real Life Is No Coolこっちのほうが、、、
Mighty Girlは良いですな。
29012010 Python
SQLAlchemy 0.5から使えるようになったDeclarative APIはマッパーとテーブルとクラスを一度に定義するものらしい。
なのであとはengineをバインドすればよろしくやってくれる。
上の例だと
import datetime
from sqlalchemy import schema, types, orm
metadata = schema.MetaData()
def now():
return datetime.datetime.now()
from sqlalchemy.ext.declarative import declarative_base
# Assign the same metadata object we created earlier.
Base = declarative_base(metadata=metadata)
# We still need the pagetag table because we don't want to explicitly define a
# Pagetag class but still
# need to specify the table in the relation between pages and tags.
pagetag_table = schema.Table('pagetag', metadata,
schema.Column('id', types.Integer,
schema.Sequence('pagetag_seq_id', optional=True), primary_key=True),
schema.Column('pageid', types.Integer, schema.ForeignKey('page.id')),
schema.Column('tagid', types.Integer, schema.ForeignKey('tag.id')),
)
class Page(Base):
__tablename__ = 'page'
id = schema.Column(types.Integer,
schema.Sequence('page_seq_id', optional=True), primary_key=True)
content = schema.Column(types.Text(), nullable=False)
posted = schema.Column(types.DateTime(), default=now)
title = schema.Column(types.Unicode(255), default=u'Untitled Page')
heading = schema.Column(types.Unicode(255))
comments = orm.relation("Comment", backref="page")
tags = orm.relation("Tag", secondary=pagetag_table)
class Comment(Base):
__tablename__ = 'comment'
id = schema.Column(types.Integer,
schema.Sequence('comment_seq_id', optional=True), primary_key=True)
pageid = schema.Column(types.Integer,
schema.ForeignKey('page.id'), nullable=False)
content = schema.Column(types.Text(), default=u'')
name = schema.Column(types.Unicode(255))
email = schema.Column(types.Unicode(255), nullable=False)
created = schema.Column(types.TIMESTAMP(), default=now())
class Tag(Base):
__tablename__ = 'tag'
id = schema.Column(types.Integer,
schema.Sequence('tag_seq_id', optional=True), primary_key=True)
name = schema.Column(types.Unicode(20), nullable=False, unique=True)
page_table = Page.__table__
これをmodel.pyとかしといてpython対話環境で
>>> execfile('model.py')
>>> from sqlalchemy.engine import create_engine
>>> engine = create_engine('sqlite:///test.db')
>>> metadata.bind = engine
>>> metadata.create_all()
とやってengineをバインドすればsqliteのファイルが作られる。metadataのところはテーブルからもアクセスできて
>>> page_table.metadata.bind = engine
>>> page_table.metadata.create_all()
でも同じことができる。
sqlite> .schema
CREATE TABLE comment (
id INTEGER NOT NULL,
pageid INTEGER NOT NULL,
content TEXT,
name VARCHAR(255),
email VARCHAR(255) NOT NULL,
created TIMESTAMP,
PRIMARY KEY (id),
FOREIGN KEY(pageid) REFERENCES page (id)
);
CREATE TABLE page (
id INTEGER NOT NULL,
content TEXT NOT NULL,
posted TIMESTAMP,
title VARCHAR(255),
heading VARCHAR(255),
PRIMARY KEY (id)
);
CREATE TABLE pagetag (
id INTEGER NOT NULL,
pageid INTEGER,
tagid INTEGER,
PRIMARY KEY (id),
FOREIGN KEY(pageid) REFERENCES page (id),
FOREIGN KEY(tagid) REFERENCES tag (id)
);
CREATE TABLE tag (
id INTEGER NOT NULL,
name VARCHAR(20) NOT NULL,
PRIMARY KEY (id),
UNIQUE (name)
);
27012010 Linux
カーネルプリミティブ