2008-08-24

pythonで文字列の中に携帯の絵文字が含まれているかどうかを確認する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
pythonで文字列の中に絵文字が含まれるかどうかを確認しようとして以下のような関数を作ってみました。
とりあえず、受け取るフォームはutf-8で作られているとしています。

def include_emoji(str):
'''指定文字列内に絵文字が含まれるかどうかを確認する

  引数
str String チェック対象文字列(utf-8)
  戻り値
Boolean'''
if str is None:
return False
try:
dummy = unicode(str,'utf-8').encode('euc_jp')
except UnicodeEncodeError,UnicodeDecodeError:
return True
return False

本当にこんなんでいいのかどうかよくわからないけど、簡易的に試した限りはうまくいく気配。
でも、本当は携帯の絵文字をキャリア毎に変換することをやりたいと思ったのですが、pythonでのやり方がわからず挫折。
perlやPHPでは変換モジュールみたいのがあるのですが、pythonでは見つからず。。。
作り直すには技術が足らず。。。

cssでドロップダウンメニュー

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
とりあえず、

http://www.dynamicdrive.com/style/csslibrary/item/inverted-shift-down-menu/
http://blog.faro.main.jp/?eid=369489
にお世話になりドロップダウンメニューを作ってみました。

こんな感じ

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!--ここからCSS-->
<style type="text/css">
body {
margin: 0; /*ブラウザデフォルトの空白を除去*/
}

.menu {
position: absolute;
top: 100px;
width: 100%;
padding: 0;
border-top: 5px solid #D00;
font: bold 12px Arial;
}

.menu_list {
margin:0;
margin-left: 40px; /*メニューの横の隙間*/
}

.menu dl {
margin:0;
padding: 0;
float: left;
}

.menu dt {
margin: 0 2px 0 0; /*メニュー間の隙間*/
}

.menu dd {
display: none;
margin: 0;
padding: 5px 10px 5px 10px;
border-left: 1px solid #000;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
background-color: #DDD;
}

.menu dl:hover dt {
background-color: #DAA;
padding-top: 9px;
padding-bottom: 5px;
color: #FFF;
}

.menu dl:hover dd {
display: block;
}

.menu a {
display: block;
color: #000;
text-decoration: none;
}

.menu a:hover {
color: #FFF;
}

.menu dd a:hover {
color: #D00;
}

.menu .current {
background-color: #D00;
padding: 9px 10px 5px 10px;
color: #FFF;
}

.menu dl:hover dt.current {
background-color: #D00;
}

.menu .menu_item {
padding: 5px 10px 9px 10px;
}
</style>
<!--ここまでCSS-->
</head>

<body>
<div class="menu">
<div class="menu_list">
<dl><dt class="current">Menu1</dt></dl>
<dl><dt class="menu_item"><a href="">Menu2</a></dt></dl>
<dl><dt class="menu_item"><a href="">Menu3</a></dt></dl>
<dl><dt class="menu_item">Menu4</dt>
<dd><a href="">Menu4-1</a></dd>
<dd><a href="">Menu4-2</a></dd>
<dd><a href="">Menu4-3</a></dd>
</dl>
<dl><dt class="menu_item"><a href="">Menu5</a></dt></dl>
</div>
</div>
</body>
</html>


FireFox3とIE7では動くみたいですが、IE6はひょっとしたら
http://blog.faro.main.jp/?eid=369489
に書いてあるjavaスクリプトも入れないといけないのかもしれないです。

そして関係ないですが、
色指定で
#D00
と書いたら
#DD0000
の意味になるらしいですね。

2008-08-02

Google App Engineで日本時間を表示する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google App Engineでdateime型を利用すると日本時間が表示されないでちょっと困ります。
そこでいろいろ調べた結果
http://webdba.blogspot.com/2008/04/google-app-engine4python.html
を参考に以下のような感じで解決することにしました。

モデルを以下のように作成します。
モデル内にget_create_tという関数を作成してここで時間の表示したい形式でフォーマッティングします。

from datetime import *
from google.appengine.ext import db

class Samples(db.Model):
name = db.StringProperty(required=True)
create_t = db.DateTimeProperty(required=True,auto_now_add=True)

def print_create_t(self):
jd = self.create_t + timedelta(hours=9)
return jd.strftime("%Y-%m-%d %H:%M:%S")


その後、実際に出力するさいには
sample.print_create_t()
とすることで利用できます。