トップ «前の日記(2010-08-07) 最新 次の日記(2010-08-09)» 編集

ヨタの日々

2001|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|12|
2024|01|02|03|

2010-08-08 :-)

_ 読書

2010年7月26日 - 2010年8月1日の読書メーター
読んだ本の数:0冊
読んだページ数:0ページ


読書メーター

_ 朝ッ

0900 起床

_ [Python][デザインパターン][Factory]Python でデザインパターン - Factory

書き換え[ 20090506#p04 ]

#!/usr/bin/python
# -*- coding: utf-8 -*-

# Head First デザインパターンを写経する - 4章 Factory パターン - ヨタの日々(2009-05-06)
# http://www.area51.gr.jp/~rin/diary/?date=20090506#p04

class PizzaStore:
  def orderPizza(self, _type):
    self.pizza = self.createPizza(_type)
    self.pizza.prepare()
    self.pizza.bake()
    self.pizza.cut()
    self.pizza.box()
    return self.pizza

  def createPizza(self, _type): pass

class NYPizzaStore(PizzaStore):
  def createPizza(self, item):
    if item == "チーズ":
      return NYStyleCheesePizza()
##    elif item == "野菜":
##      return NYStyleVeggiePizza()
##    elif item == "クラム":
##      return NYStyleClamPizza()
##    elif item == "ペパロニ":
##      return NYStylePepperoniPizza()
    else:
      return None

class ChicagoPizzaStore(PizzaStore):
  def createPizza(self, item):
    if item == "チーズ":
      return ChicagoStyleCheesePizza()
##    elif item == "野菜":
##      return ChicagoStyleVeggiePizza()
##    elif item == "クラム":
##      return ChicagoStyleClamPizza()
##    elif item == "ペパロニ":
##      return ChicagoStylePepperoniPizza()
    else:
      return None

class CaliforniaPizzaStore(PizzaStore):
  def createPizza(self, item):
    if item == "チーズ":
      return CaliforniaStyleCheesePizza()
##    elif item == "野菜":
##      return CaliforniaStyleVeggiePizza()
##    elif item == "クラム":
##      return CaliforniaStyleClamPizza()
##    elif item == "ペパロニ":
##      return CaliforniaStylePepperoniPizza()
    else:
      return None


class Pizza:
  def __init__(self):
    self.name = None
    self.dough = None
    self.sauce = None
    self.toppings = None

  def prepare(self):
    print "%s を下処理" % (self.name)
    print "生地をこねる..."
    print "ソースを追加..."
    print "トッピングを追加:"
    for t in self.toppings:
      print " %s" % (t)

  def bake(self):
    print "350度で25分間焼く"

  def cut(self):
    print "ピザを扇形に切り分ける"

  def box(self):
    print "PizzaStore の正式な箱にピザを入れる"

  def getName(self):
    return self.name

class NYStyleCheesePizza(Pizza):
  def __init__(self):
    self.name = "ニューヨークスタイルのソース&チーズピザ"
    self.dough = "薄いクラスト生地"
    self.sauce = "マリナラソース"
    self.toppings = []
    self.toppings.append("粉レッジャーノチーズ")

class ChicagoStyleCheesePizza(Pizza):
  def __init__(self):
    self.name = "シカゴスタイルのディープディッシュチーズピザ"
    self.dough = "極厚クラスト生地"
    self.sauce = "プラムトマトソース"
    self.toppings = []
    self.toppings.append("刻んだモッツァレラチーズ")

  def cut(self):
    print "ピザを四角形に切り分ける"

def main():
  nyStore = NYPizzaStore()
  chicagoStore = ChicagoPizzaStore()
  pizza = nyStore.orderPizza("チーズ")
  print "イーサンの注文は %s" % (pizza.getName())
  pizza = chicagoStore.orderPizza("チーズ")
  print "ジョエルの注文は %s" % (pizza.getName())

main()
% python factory.py
ニューヨークスタイルのソース&チーズピザ を下処理
生地をこねる...
ソースを追加...
トッピングを追加:
 粉レッジャーノチーズ
350度で25分間焼く
ピザを扇形に切り分ける
PizzaStore の正式な箱にピザを入れる
イーサンの注文は ニューヨークスタイルのソース&チーズピザ
シカゴスタイルのディープディッシュチーズピザ を下処理
生地をこねる...
ソースを追加...
トッピングを追加:
 刻んだモッツァレラチーズ
350度で25分間焼く
ピザを四角形に切り分ける
PizzaStore の正式な箱にピザを入れる
ジョエルの注文は シカゴスタイルのディープディッシュチーズピザ

_ [Python][デザインパターン][State]Python でデザインパターン - State

書き換え[ 20090531#p06 ]

#!/usr/bin/python
# -*- coding: utf-8 -*-

# Head First デザインパターンを写経する - 10章 State パターン - ヨタの日々(2009-05-31)
# http://www.area51.gr.jp/~rin/diary/?date=20090531#p06

class State:
  def insertQuarter(self): pass

  def ejectQuarter(self): pass

  def turnCrank(self): pass

  def dispense(self): pass


class HasQuarterState(State):

  def __init__(self, gumballMachine):
    self.gumballMachine = gumballMachine

  def insertQuarter(self):
    print "もう一度25セントを投入することはできません"

  def ejectQuarter(self):
    print "25セントを返却します"
    self.gumballMachine.setState(self.gumballMachine.getNoQuarterState())

  def turnCrank(self):
    print "クランクを回しました..."
    self.gumballMachine.setState(self.gumballMachine.getSoldState())

  def dispense(self):
    print "販売するガムボールはありません"

  def __str__(self):
    return "waiting for turn of crank"

class NoQuarterState(State):

  def __init__(self, gumballMachine):
    self.gumballMachine = gumballMachine


  def insertQuarter(self):
    print "25セントを投入しました"
    self.gumballMachine.setState( self.gumballMachine.getHasQuarterState())

  def ejectQuarter(self):
    print "25セントを投入していません"

  def turnCrank(self):
    print "クランクを回しましたが、25セントを投入していません"

  def dispense(self):
    print "まず支払いをする必要があります"

  def __str__(self):
    return "25セントが投入されるのを待っています"

class SoldOutState(State):

  def __init__(self, gumballMachine):
    self.gumballMachine = gumballMachine

  def insertQuarter(self):
    print "25セントを投入することはできません。このマシンは売り切れです"

  def ejectQuarter(self):
    print "返金できません。まだ25セントを投入していません"

  def turnCrank(self):
    print "クランクを回しましたが、ガムボールがありません"

  def dispense(self):
    print "販売するガムボールはありません"

  def __str__(self):
    return "売り切れです"

class SoldState(State):

  def __init__(self, gumballMachine):
    self.gumballMachine = gumballMachine

  def insertQuarter(self):
    print "お待ちください。すでにガムボールを出しています"

  def ejectQuarter(self):
    print "申し訳ありません。すでにクランクを回しています"

  def turnCrank(self):
    print "2回回してもガムボールをもう1つ入手することはできません!"

  def dispense(self):
    self.gumballMachine.releaseBall
    if self.gumballMachine.getCount() > 0:
      self.gumballMachine.setState(self.gumballMachine.getNoQuarterState())
    else:
      print "おっと、ガムボールがなくなりました!"
      self.gumballMachine.setState(self.gumballMachine.getSoldOutState())

  def __str__(self):
    "dispensing a gumball"

class GumballMachine:
  def __init__(self, numberGumballs):
    self.soldOutState = SoldOutState( self )
    self.noQuarterState = NoQuarterState( self )
    self.hasQuarterState = HasQuarterState( self )
    self.soldState = SoldState( self )
    self.state = self.soldOutState

    self.count = numberGumballs
    if  numberGumballs > 0:
      self.state = self.noQuarterState

  def insertQuarter(self):
    self.state.insertQuarter()

  def ejectQuarter(self):
    self.state.ejectQuarter()

  def turnCrank(self):
    self.state.turnCrank()
    self.state.dispense()

  def setState(self, state):
    self.state = state

  def releaseBall(self):
    print "ガムボールがスロットから転がり出てきます"
    if self.count != 0:
      self.count = self.count - 1

  def getCount(self):
    return self.count

  def refill(self, count):
    self.count = count
    self.state = self.noQuarterState

  def getState(self):
    return self.state

  def getSoldOutState(self):
    return self.soldOutState

  def getNoQuarterState(self):
    return self.noQuarterState

  def getHasQuarterState(self):
    return self.hasQuarterState

  def getSoldState(self):
    return self.soldState

  def __str__(self):
    result = ""
    result += "\nMighty Gumball, Inc."
    result += "\nJava対応据付型ガムボール モデル #2004"
    result += "\n在庫: #{self.count} 個のガムボール"
    result += "\nマシンは%s" % (self.state)
    return result


def main():

    gumballMachine = GumballMachine( 5 )
    print gumballMachine

    gumballMachine.insertQuarter()
    gumballMachine.turnCrank()
    print gumballMachine

    gumballMachine.insertQuarter()
    gumballMachine.turnCrank()
    gumballMachine.insertQuarter()
    gumballMachine.turnCrank()
    print gumballMachine

main()
% python state.py

Mighty Gumball, Inc.
Java対応据付型ガムボール モデル #2004
在庫: #{self.count} 個のガムボール
マシンは25セントが投入されるのを待っています
25セントを投入しました
クランクを回しました...

Mighty Gumball, Inc.
Java対応据付型ガムボール モデル #2004
在庫: #{self.count} 個のガムボール
マシンは25セントが投入されるのを待っています
25セントを投入しました
クランクを回しました...
25セントを投入しました
クランクを回しました...

Mighty Gumball, Inc.
Java対応据付型ガムボール モデル #2004
在庫: #{self.count} 個のガムボール
マシンは25セントが投入されるのを待っています

_ ウマシカ

  • オカルト学院
  • 屍鬼
  • サマーウォーズ

サマーウォーズ録画しといたので見始めたんだが 10 分で挫けた【お察しください】

_ 盛り上がるネタ

  • ベストなテキストエディタはなんですか?
  • おすすめのプログラミング言語はなんですか?
  • Linux って Windows よりショボイんでしょ?
  • ○○されるほうが悪い( ○○には犯罪の名前が入る )
  • 処女厨

_ ,

ベイシスケイプ分がまったく不足しているのでトレジャーハンターGを聞くなどしている。

_ sizeof

CentOS 64bit な環境でリベンジ [ 20100502#p02 ]

#include <stdio.h>

int main( int ac, char** av )
{
  printf( "%d\n", sizeof( int ) );
  printf( "%d\n", sizeof( long ) );
  printf( "%d\n", sizeof( void* ) );
  return 0;

}
$ gcc size.c && ./a.out
4
8
8

フォカヌポウ

_ LPIC って自慢になるの?

周囲には趣味で LPIC 出題範囲内くらいのことをおこなっているひとはゴロゴロいるし自分でもやってるので( 自宅にサーバー設置して Linux でも *BSD でもいいからテキトーな計算機にテキトーにオペレーティングシステムをインストールして DNS 設定して Postfix などを運用しメーリングリストなどを使えるようにしておけば LPIC レベル 2 まではイケル ) LPIC 取得した程度で自慢になるのかどうか分からん。

本日のツッコミ(全2件) [ツッコミを入れる]
_ うさだー (2010-08-09 06:24)

LPIC、自己満足のためだったら意味はないといっておこう。<br>業務を割り当てるときの能力を示す指標で使うものだから、<br>そういう使い方してない会社ではどんな資格も価値無いよ^^;

_ みわ (2010-08-09 13:48)

業務ではまったく使わないし、会社からおカネもらえるのでやってるだよ