February 2009 Archives

早いもので第3弾になった飲み物シリーズ。
今回はALOHA MAID NATURAL(オレンジ)を飲んでみたのでレポートします。

まず気になる価格ですが、なんと48円!
よくある缶ジュースの約半額です。

しかも、果汁100%です。
成分表に書いてあったビタミンC 200%と書いてあったのですが、最初いったい何の200%かわからず...
英語に堪能な方に読み進めていってもらったところ、1日に必要なビタミンCの量の200%が入っているということだそうです。
とにかくビタミンCは多いようですね。
もう1つ気になったのが、アラビアガムという表記。
あまり聞かない名前なので調べてみたら、お菓子やガムシロップに乳化剤や安定剤として使用されるものだそうです。

さて、早速飲んでみました。
特にすっぱいわけでも甘いわけでもなく、普通のオレンジジュースでした。
よく飲むオレンジジュースより甘くなく、甘すぎるものがあまり得意でない私にはちょうど良い味でした。もっと特異な味を期待していたのですが、普通においしかったです。

ちなみに、次の日、口の中にあった口内炎がきれいに治ってました。
もしかしてこのジュースのおかげ...?

HI3A0001.JPG

前回のチェリーコーラに引き続き、今日はA&Wクリームソーダを飲んでみたのでレポートします。

価格は100円。
缶はチェリーコーラと同じく、アメリカンな感じの缶です。
いつも、輸入缶飲料の缶は日本のアルミ缶に比べて薄いような印象を受けます。
でも実際薄いかどうかはわからないんですが...

さて、早速飲んでみたいと思います。
空けてまずにおいをかいでみました。
めちゃくちゃバニラエッセンスのようなにおいがしました。
クリームソーダということで、クリームの香りなんですね、きっと。

そして、一口。
炭酸は弱めです。
ひたすらクリームの味がします、というかほぼクリームの味しません。
ともかく甘いです。
クリームソーダでクリームを最初にひたすらまぜればこんな味になるのではないかと思いました。

社長にも一口飲んでもらい、コメントをもらいました。

「これ、おいしくないですか?」

いろんな意味でとれるコメントですが、どちらにせよおいしいということでした。
私は甘すぎるのは好みではないので、チェリーコーラの方がおいしかったです。

HI3A0003.JPG

(本調査は、HDEが非公式に、毎月20日頃に日経225採用銘柄のドメインに対し、SPFレコードが設定されているかどうかを独自調査し、主要企業の対応動向を毎月レポートするものです)

 2009年2月20日時点での日経225採用銘柄におけるSPFレコード登録の状況は、全体で41件となりました。1月調査時点の40件から1件の増加となり、設定率は17.8%となっています。

20090220_225spf.png

<主なトピックス>
・松井証券が新しくSPFレコードを登録。(~all)

2009年1月の調査
Pythonの文字列は、Java等と同様にImmutableであり、頻繁に文字列を操作する場合においては、気をつけないと思わぬパフォーマンスの低下を招きます。

代表的なケースとしては、文字列に新たな文字列をどんどん連結していくケース。

  s = s + "新たな文字列1"
  s = s + "新たな文字列2"
  s = s + "新たな文字列3"
  . . .
  . . .
 
とせずに、配列を使って、
  L = []
  L.append("新たな文字列1")
  L.append("新たな文字列2")
  L.append("新たな文字列3")
  . . .
  . . .
  s = ''.join(L)

とするのが定石イディオムとされています(最初の例では、毎回新たな文字列が生成されるオーバーヘッドがあるとされる。参考:「Pythonクックブック」)。

これは本当に正しいのでしょうか。また、mutable文字列っぽいアプローチにはどのような方法があり、どれが一番良いのでしょうか。実際に性能を確かめてみないと納得できないので、上記の単純連結ケースについて軽く調べてみました。

オフィスの近所にコンビニなどであまり買うことができない海外製の飲み物を多く取り扱っているお店があります。
私はよくその店で普段あまり目にしない飲み物を購入して試し飲みしています。
今日はそのレポートをしてみたいと思います。

今回購入したのはCocaCola cherryという飲み物。
普段いろいろなコカコーラが売ってますが、チェリーは初めて見ました。

さっそく飲んでみたところ、炭酸以外の何か刺激的なものが入っているような感じがしました。
味はそれほどチェリーっぽくもなく、普通のコーラに匂いがついているようなものでした。
周りにいた人に飲んでみてもらいましたが、ちょっと炭酸が強いという印象でした。

変った味を期待していたのですが、ちょっと期待はずれだったようです。
次回はまた違う飲み物をレポートしてみたいと思います。

HI3A0002.JPG

64bitか否か

| | Comments (0) | TrackBacks (0)
最近では64bit環境でのソフトウェア開発も珍しくなくなってきましたが、シェルなどでパスを調べるときlib64なのかlibなのか調べるベストな方法がわからず悩んでいたんですが、コレダってのを見つけたので紹介します。

  if [ "`arch`" = "x86_64" ]; then
  LIBDIR="lib64"
  else
  LIBDIR="lib"
  fi

archってコマンド用意されてました。調べた環境がCentOS5なので他の環境であるかわかりませんが知ってると便利ですよね。

ちなみに uname -i でも同じものがとれるんですがね...w

コマンドから抜粋
# uname --help
Usage: uname [OPTION]...
Print certain system information.  With no OPTION, same as -s.
  -m, --machine            print the machine hardware name
  -p, --processor          print the processor type or "unknown"
  -i, --hardware-platform  print the hardware platform or "unknown"

vim上でpythonコードをデバッグする

| | Comments (0) | TrackBacks (0)
社内ではemacs派に押され気味のvim派ですが・・・

vimだってできるもんっ!ということで

先日の記事 emacs上でpythonコードをデバッグする に対抗してvim版をご紹介します。

HDEラボの桜井です。
今日はどうでもいいネタで。

Apache付属のhtpasswdコマンドが使うcryptを適当に実装してみた。
import random, crypt
import sys

# とりあえず64文字のsaltの種を用意
saltSet = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
           'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
           '0','1','2','3','4','5','6','7','8','9','.','/']

# Randomクラスのインスタンスを生成
r = random.Random()

# saltを作成
salt = str(saltSet[r.randint(0, 63)]) + str(saltSet[r.randint(0, 63)])

# 引数があればcrypt
if len(sys.argv) > 1:
  print crypt.crypt(sys.argv[1], salt)

これで引数にパスワード文字列を指定して実行すると、cryptされた文字列が出てきます。
HDEラボの桜井です。
今日2/9はなんと夏目漱石の誕生日(1867年)なんですねぇ。

今回は、Twistedを使ったWebサーバにBasic認証機能を追加してみます。

まずは、必要なパッケージをimportします。
from twisted.application import internet, service
from twisted.web import error, server, twcgi, static, resource
from twisted.cred import checkers, credentials
import crypt
import copy

次に、server.Siteクラスを継承したBasic認証を可能にするクラスを作成します。
class BasicAuthSite(server.Site):

  # パスワードファイルをセットします
  def setPasswordFile(self, file):
    self.passwordFile = file

  # server.Site.getResourceFor をオーバーライドします
  # superの使い方がよくわからなかったのでこんなコードになってます、すいません
  def getResourceFor(self, request):
    # ユーザ名とパスワードが違ったら、認証ダイアログをあげる
    if self.authorize(request.getUser(), request.getPassword()) == False:
      request.setResponseCode(401, "Authorization Required")
      request.setHeader('WWW-Authenticate', 'Basic realm="Authorization Required"')
    request.site = self
    request.sitepath = copy.copy(request.prepath)
    return resource.getChildForRequest(self.resource, request)

  # 認証を行うメソッド
  def authorize(self, user, password):
    # データベースファイル(Apacheのhtpasswdコマンドで作成)を開く
    file = checkers.FilePasswordDB(self.passwordFile)
    # 認証
    try:
      # ファイルよりユーザを取得
      data = file.getUser(user)
      # ユーザ名とパスワードをチェックするクラスのインスタンスを生成
      check = credentials.UsernameHashedPassword(data[0], data[1])
      # 入力されたパスワードが正しいかどうかチェックしてboolean型で返す
      return check.checkPassword(crypt.crypt(password, data[1]))
    # 該当するユーザがいない場合はFalse
    except KeyError:
      return False

HDEラボの桜井です。
今日は節分ですが、私は恵方巻にはあまり縁がないので歳の数だけ豆を食べました。

さて、今日はweb.pyというpythonの簡単なWebフレームワークに付属する
テンプレート機能の使い方を簡単に説明したいと思います。

まず、下記からweb.pyをゲットしましょう。(downloadより取得してください)
http://webpy.org/

それから、web.pyを導入します。
# tar zxvf web.py-0.31.tar.gz
# cd webpy
# python setup.py install

これで下準備ができました。

About this Archive

This page is an archive of entries from February 2009 listed from newest to oldest.

January 2009 is the previous archive.

March 2009 is the next archive.

Find recent content on the main index or look in the archives to find all content.