2010/12/31

[Java]BigIntegerって

階乗の生成のアルゴリズムの調査を行っていて、こちらのリンクに紹介されている文献を読んでいたのですが、その中で、BigIntegerというクラスを初めてみたので、どんなものかちょっとぐぐることに。

変更が不可能な、任意精度の整数です。

via:BigInteger

なるほど、変更ができないんですね。

かつもう少し先を読んでみると、かなり数学的な計算を行うために用意されたクラスのようです。

普段、システムを作る上であまり使われないかもしれませんね。

2010/12/30

[JavaScript]階乗計算

階乗を計算する必要があったので、ちょっと作ってみました。

function getFactorial(n,total){
//引数が一つの場合
if(arguments.length == 1){
//最初の引数が1の場合
if(n == 1){
return n;
//最初の引数が1以外の場合
}else{
return getFactorial(n - 1, n);
}

}else{
if(n == 1){
return total;
}else{
return getFactorial(n - 1, n*total);
}
}
}

この場合、再帰処理とイテレータがあるのですが、メモリをあまり喰わせたくなかったので、イテレータにしました。

2010/12/29

[Android]IS06をゲット

開封式を行いました。

Photobucket

Photobucket

Photobucket

Photobucket
Lady Gagaを彷彿とさせる画面だ。

Photobucket

第一印象ですが、アプリの数が多すぎてどこをどうやって使っていいのか?悩むところです。

まーここら辺は追々なのかなと。

後、アプリのバックアップなどは、SDカードで保存するという寂しさ。
クラウドの時代なのに、今だにハードって。。。

そう考えるとiPhoneとiTunesの組み合わせってすごいなーっと今更ながら実感。

案の定、SIMカードを挟まなくてもネットができるという仕様に関してはiPhoneと同じ。

当分、2台もちが続きそうだ。。。

2010/12/28

[iPhone]新規契約に関して

先日、softbankの上板橋でiPhone 3Gで新規の契約をしようとしたのですが、どうやら規制が変わったらしくパケットし放題フラットではないと契約ができないそうなので、結局、諦めました。。。

それにしても、標準プライスプランでも契約できればいいのになー。
何か不都合なことでもあるのだろうか?

2010/12/27

[本]生物と無生物のあいだ

これもおもしろかったなー。

第一章 ヨークアベニュー、66丁目、ニューヨーク
第二章 アンサング・ヒーロー
第三章 フォー・レター・ワード
第四章 シャルガフのパズル
第五章 サーファー・ゲッツ・ノーベルプライズ
第六章 ダークサイド・オブ・DNA
第七章 チャンスは、準備された心に降り立つ
第八章 原子が秩序を生み出すとき
第九章 動的平衡とは何か
第十章 タンパク質のかすかな口づけ
第十一章 内部の内部は外部である
第十二章 細胞膜のダイナミズム
第十三章 膜にかたちを与えるもの
第十四章 数・タイミング・ノックアウト
第十五章 時間という名の解けない折り紙

via:目次

弾さんの空気を読むな、本を読め。 小飼弾の頭が強くなる読書法に紹介されていたので、手に取ってみたのだが、予想を裏切れたおもしろさだった。

生物とは何か?本書では、それは自己複製システムを持っている物が生物という定義になっているのだが、では、病原体やウィルスはどうなのだろうか?自己複製できるが、電子顕微鏡でその正体をのぞくと、ほぼ物質に近い状態にあり、それって本当に生物なのか?違うのではないのか?そもそも生物の定義が「自己複製システムを持っている」というそのものが、違っているのではないか?というところから本書の旅は始まる。

途中では、野口英夫は本当に敏腕な学者だったのだろうか?という話や、DNAの2重ラセン構造を発見したのはワトソンとクリックなのだろうか?という本書とは若干、脇道にそれたような話もまたおもしろい。

教授や学者などが活躍している学会の実情なども普段の生活からでは中々のぞくことができないことも書かれていて、想像していた以上にこの世界も厳しいことも理解できたのでよかったと思う。

しかし、ペンギンもクジラも秒速2メートルで泳ぐ―ハイテク海洋動物学への招待ゾウの時間 ネズミの時間―サイズの生物学のような生物に関する新書は本当におもしろい。

中学校や小学校で習った生物や化学に疑問を投げかけてくれる作品だからだ。

これからの読書生活を通してもっと、もっとすてきな本に巡り会えたらと思う。


2010/12/26

[本] 無理なく続けられる年収10倍アップ時間投資法

こちらも読了

年収10倍アップ時間投資法 基礎編
1 なぜ時間管理はうまくいかないのか
2 なぜ新しい行動は続かないのか
3 勝間式「黄金の時間の5原則」
4 黄金の時間を増やすための5つのステップ
年収10倍アップ時間投資法 実践編
5 実践ケーススタディー1―時間効率10倍アップを目指して手帳を使いこなす
6 実践ケーススタディー2―勝間式時間投資法 ある夏の一週間のスケジュール

via:目次

無理なく続けられる 年収10倍アップ勉強法の次にリリースされた本っぽい。

前著同様に、究極に時間の最適化をはかり、仕事の効率化を行う本。

確かに、著者も本書で言っているが、中には、「そんなに時間の効率化をして楽しいのですかー」という突っ込みがきそう。

前作と併用して使って行くのが一番いいのかな。
後、本書は一回だけではなく、たまーに見返すのもいいかも。定期的に。

前の本とあまり内容がかぶっていないところも感動。

読みやすさは、引き続き受け継いでいました。


2010/12/25

[iPhone][JavaScript]iPhoneの位置の取得

前回、iPhoneの位置が変わった時にJavaScriptにonorientationchangeハンドラーがコールされるということを書きましたが、調査してみてわかったのは、向きを変更しなくても、window.orientationを値は取得できるようです。

0がhomeボタンが下の場合です。

参考
DOMWindow Additions Class Reference

2010/12/24

[iPhone][JavaScript]iPhoneの位置が変わった時の通知

JavaScriptでiPhoneの位置(向き)が変わった時の通知してくれるイベントハンドラーを発見したので、サンプルを作りました。

<html>
<head>
<title>Sample Code</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<meta name="viewport" content="width=device-width, user-scalable=no" />
<script type="text/javascript"
src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js">
</script>
<script type="text/javascript">
function OrientationChangeFunction(){
var displayStr = "Orientation : " + window.orientation;
$("#hoge").text(displayStr);

}
</script>
</head>
<body
onorientationchange="OrientationChangeFunction()"
>
<div id="hoge"></div>
</body>
</html>

User Experience Coding How-To's for Safari on iPhoneのHow do I detect iPhone orientation changes in my web application?

Handling EventsのHandling Orientation Events
を参考にしました。

若干の懸念事項として、webページを開いたときに、現状のiPhoneの向きがどうなっているのかが上のソースからでは判断できないんじゃーないかということ。

ちなみに、取得できる角度は、0、90、-90、180で、

右に傾けた場合は、-90
左に傾けた場合は、90
となります。

単位は、ラジアンではなく度です。

2010/12/23

[iPhone][html]zoomさせない方法

についてですが、前回作ったmetaタグに属性を少し追加するだけで対応できるようです。

<meta name="viewport" content="width=device-width, user-scalable=no" />

参考
User Experience Coding How-To's for Safari on iPhone
How do I disable user zooming and scaling in my web application?

2010/12/22

[iPhone][html]コンテンツをiPhoneにあわせる

方法ですが、User Experience Coding How-To's for Safari on iPhoneの「How do I ensure that my web content uses all of the available screen space on iPhone?」を読むと、

<meta name="viewport" content="width=device-width" />

でいけるようです。

試しに実装してみたところ、ちゃんと、iPhoneに最適化されました。

便利ぃー。

2010/12/21

[GoogleAppEngine]Channel APIの大まかな流れ

Google App Engineにやっと念願のChannel APIが導入されました。

これは何かというと、早い話、websocketです。

というわけで、さっそく簡単な例を
(ドメインは、http://hoge.appspot.com/とします)

#!/usr/bin/env python
#
# Copyright 2007 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import os
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
from google.appengine.api import channel
from google.appengine.api import users
from google.appengine.ext.webapp import template

class MainHandler(webapp.RequestHandler):
def get(self):
#下のメソッドの引数は文字列ではないとエラーになる
token = channel.create_channel("websockettest")
template_values = {'token':token}

path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path, template_values))

def post(self):

msg = self.request.get('msg')
msg = msg.encode('utf-8')
self.response.out.write("var ret; ret = {result:true};")
#下のメソッドの引数は上のcreate_channelメソッドと同じでオッケー
channel.send_message("websockettest",msg)

def main():
application = webapp.WSGIApplication([('/', MainHandler)],debug=True)
util.run_wsgi_app(application)


if __name__ == '__main__':
main()

上のプログラムで、まず、from google.appengine.api import channelを使って、Python上のchannel apiをインクルードします。

次に、channel.create_channelメソッドを使って、tokenの発行を行い、クライアント側に引き渡します。

channel.send_messageメソッドは、ある特定のIDにメッセージを送るときに使用します。

<html>
<head>
<title>Sample Code</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src='http://hoge.appspot.com/_ah/channel/jsapi'></script>
<script type="text/javascript"
src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js">
</script>
</head>
<body>
<script type="text/javascript">
var socket;
$(document).ready(function(){

channel = new goog.appengine.Channel('{{ token }}');
socket = channel.open();
socket.onopen = onOpened;
socket.onmessage = onMessage;
socket.onerror = onError;
socket.onclose = onClose;

$("#msg_post").bind('click',function(){

$.ajax({
type: "POST",
url: "http://hoge.appspot.com/",
data: "msg="+encodeURIComponent($("#msg").val()),
success: function(data){
console.log(data)
},
error:function(){
console.log("失敗しました。")
}
});

});
});

function onOpened(){

}

function onClose(){
console.log("閉じます")
}

function onError(error){
console.log("エラーが発生しました。")
}

function onMessage(res){
$("#total_msg").append(res.data + "<br>");
}

</script>
<input type="text" id="msg" value="">
<input type="button" value="投稿" id="msg_post">
<div id="total_msg"></div>

</body>
</html>

まず、JavaScript側では、必ず、http://hoge.appspot.com/_ah/channel/jsapiをインクルードする必要があります。

次は、サーバー側から受け取った、new goog.appengine.Channelでインスタンス変数の作成を行い、openメソッドで、socketの開放を行います。

無事につながった場合は、onopenプロパティーで設定した関数が呼ばれます。

onmessageプロパティーが、サーバー側からメッセージを受信したときに、自動的に呼び出されるメソッドです。
ここが一番ほっとです。

重要なのは、あくまでクライアントからではなく、サーバ側から呼ばれるということ。
ajaxでもこれは実現できません。
これが、websocketのすごさです。

で、onerrorプロパティーがエラーが発生したとき、oncloseプロパティーにセットした関数はsocketをクローズするときに呼び出されます。

これで、websocket系も怖くはありませんね。

2010/12/20

[JavaScript]setTimeoutとsetIntervalについて

JavaScriptの関数の効能を調べるために、よくポケットリファレンスを使っているのですが、その中で、setTimeoutとsetIntervalの各関数の引数について、文字列で渡しているのですが、実際のところ、ここの部分は、無名関数でもいいみたい。

setTimeout(function(){console.log("hoge")},1000)

みたいな感じに。

複数の関数を実行したい場合には、便利かも。

2010/12/19

[本]これってノンフィクション?内側から見た富士通「成果主義」の崩壊

これってノンフィクションなのだろうか?


1 急降下した業績
2 社員はこうして「やる気」を失った
3 社内総無責任体制
4 「成果主義」と企業文化
5 人事部の暗部
6 日本型「成果主義」の確立へ

via:目次

若者はなぜ3年で辞めるのか?
3年で辞めた若者はどこへ行ったのか
と同じ著者が上の2冊を出版する前に書いた本。

成果主義導入よって内部崩壊していく富士通が描かれているのですが、著者は元同社の社員だけあって、生々しさが半端ない。
暴動が起きたり、リストラ、裁判、さらに死者まで発生したそうです。

入社しなくてよかったなーっと読了後、ほっと胸を撫で下ろす。

元社員が書いたとはいえ、一種の暴露本だと思うのですが、ここまで書いてしまっていいのだろうか?とある種違う心配を抱いてしまった。訴えられたりしないのだろか?

大手でも迷走してしまうことってあるんだなーっとなんとも不思議なキモチになってしまった。
一般的に大手に入社すれば大丈夫だと言われている世の中ですが、そのノリで富士通に入社してしまった社員って果たして幸せなのだろうか?と思わずにはいられない。

そんでもって、人事評価というのは、小手先な施策を導入したって決して改善されるわけではないことも改めて納得。

さらに、管理職とはいえ、必ずしも仕事ができるかと言えば、そうでもなくただいるだけの人もいるんだなーっと。
ただ、当然、できる人もいるわけで、それってどうやって判断できるのだろうかと?

著者は、市場の評価から同社の経営者も有能とは言い切れないと書かれていましたが、そこでま言い切ってしまっていいのだろうか?
確かに、一番トップの決断によって、市場の各関係者たちが同社の評価をするのだから、まー、あっていると言えば、あっているのかなと。

本書が発刊されたのは、2004年で、もう6年経過しているのだが、その後、どうなったのか、続きが読みたくなる。

最後に蛇足になってしまうのだが、光文社から発刊されたということで、たまーに、英単語が入っているのですが、これって、必要なのか?仮にこれがあったとして、アメリカ人は読めないと思うのだが。なんで、こんな配慮がしてあるのか理解できなかった。
逆にあることによって、ものすごく読みにくかったです。本書の内容と全然、違うけど。


2010/12/18

[本]無理なく続けられる 年収10倍アップ勉強法

読了

年収10倍アップ勉強法―基礎編
1 なぜ勉強するのか?
2 なぜ勉強が続かないのか?
3 まずは道具を揃えよう
4 勉強の基本的なコツを知る
5 目でする勉強―本・新聞・雑誌・ネット
6 耳でする勉強―オーディオブック・音声コンテンツダウンロード
7 目と耳でする勉強―セミナー・DVD
8 学校に行ってみる
9 基礎編のまとめ―「勉強の仕組み」を投資しながら組み立てる
年収10倍アップ勉強法―実践編
10 何を勉強すればいいのか?
11 英語―めざせ、TOEIC八六〇点
12 会計―「さおだけ屋」を超える知識とは?
13 IT―みんなに頼られるエキスパート
14 経済―日経新聞の裏を読める
15 転職―身につけたものをお金にしよう
16 資産運用―勉強内容が収入に直結する
17 さぁ、スケジュール帳に予定を入れましょう

via:目次

「勉強法」というくくりで他の書籍を読んだ事がないので、比較できないのですが、1ページあたりの字も他の書籍を比較して少な目なので、サクサクと読めとてもおもしろかった。

なんとなーく「勉強法」と言われてしまうと、何か読んで鉛筆を手に取ってメモをするという印象を抱いてしまうのですが、本書は全然、そうではなく、ITツールをいかに駆使して効率よく勉強していくかという方法について重点的に説明されている。

しかも、ツールの選別方法までかかれている優しさ。

ITツールを駆使する意外にも、勉強する習慣が意地できるような仕組み作りのエッセンスがたくさん詰まっている。
目で勉強するだけではなく耳を使って勉強したり、実際に学校に通ったりなど。

どんなに勉強してもやはり重要なのは、やはりアウトプットするということは重要なんだなと。
その観点からすると、ブログを通して学習したことを書いているので(書評を含め)、すでに実践していたので、本書がさらに後押ししてくれた形となりました。

これからもドンドン学習したことを書いていくぞと胸に秘める今日この頃。


2010/12/17

[android]IS06

を予約しました。

別名
SIRIUS α

予約した理由としては、androidのshareは確実に、iPhoneのそれを抜くのと、やっぱり、今後のキャリアを考えた時に、androidアプリも作れたほうがいいのかなーっという感じです。

23日までにはゲットしたいのですが、果たして?

2010/12/16

gNewsFeedがReject

されました。

原因としては、ただのwebコンテンツを出すのは、NGとのこと。

ただコンテンツを出力するだけではなく、「設定」アプリから言語が選択できるようにしたのですが。

あまりにも年内にリリースした気持ちが先行しすぎて少し焦ってしまったのかもしれません。

今年中には、無理そうなので、来年こそ、腰を落ち着かせて確実にリリースしたいと思います。

2010/12/15

[本]小飼弾のアルファギークに逢ってきた

読了


#0 Ruby on Rails開発者 David Heinemeier Hansson
「アーキテクト」って言葉を使ったら負け

#1 (株)はてなCTO 伊藤 直也
良いサービスを作るのに,マネジメントはやはり重要

#2 Perl開発者 Larry Wall
優れたソフトウェアも,文化を持たなければ普及しない

#3 livedoor 池邉 智洋/谷口 公一/ma.la
ネットは個人の人生に何をもたらしているか

#4 Twitter Co-founder Evan Williams
大事なのは「好き」を貫けること

#5 The Seasar Project チーフコミッタ ひが やすを
世の中の根底にあるニーズに合ったものを提供したい

#6 『達人プログラマー』著者 Dave Thomas
コーディングを続けるという情熱が重要。それ以外は取るに足りない

#7 Pathtraq / Japanize 開発者 奥 一穂
自分は,コミュニケーションの形態を考えてる。ウェブは手段

#8 Mozilla Corporation / jQuery開発者 John Resig
自分が興味を持っているものに集中し,最適化を加える

#9 「Binary 2.0」「スルー力」提唱者 高林 哲
ハッカーに一番重要なのは,「深追い」できること

#10 Perl Mongers Ingy dot Net / Dave Rolsky / Jesse Vincent / C.L. Kao
今どき正気の人はいない。大事なのは役に立つ狂気かどうか

#11 『IT戦士』 天野 仁史 & こんにちはこんにちは! はまちや2
勢い重要。脆弱性とか気にしないでシンプルにリリースすべし

#12 夫婦対談. (株)はてな 近藤 淳也・令子×小飼 弾・直美
行動を起こしたほうに情報はついてくる

#-1 スペシャル対談:前編 きたみりゅうじの 小飼弾に逢ってきた
アルファギークとSEの現実と

#-2 スペシャル対談:後編 きたみりゅうじの 小飼弾に逢ってきた
知られざる小飼弾の歴史

via:目次

弾さんが、いろいろなアルファーギークにあって対談したものを一冊にまとめた本。

何かを学ぶというよりも、色々な人がいるんだなーっと実感することが大きいかったかな。

特に可もなく不可もなくという感じでした。


2010/12/14

[本]勝間式「利益の方程式」 ─商売は粉もの屋に学べ!

こちらも読了

第1章 なぜ、利益の概念が必要なのか
第2章 利益はどう計算するのか
第3章 利益を上げる方程式の解き方
第4章 原則1 どうやって顧客単価を上げるのか
第5章 原則2 どうやって顧客獲得コストを下げるのか
第6章 原則3 どうやって顧客原価を下げるのか
第7章 原則4 どうやって顧客数を伸ばすのか
第8章 明日からできる行動習慣

via:目次

本書は、以前、書評した「弾言」に紹介されていておもしろそうだと思い、手に取りました。

当初、いろいろな商売がどうのようにして成り立っているのか分析している本なのかなーっと思ったのですが、決してそうではなく、著者が開発した「利益の方程式」に基づいて、いかに現状を打破して、利益を伸ばして行くのかということが解説されていました。

普段何気なく利益ってこうなっているんだろうなーっと空想していることを、事細かに活字にしているので、教科書的なあるいは実践的な本としてよくまとまっていると感じました。

確かに、弾さんもおしゃっているように、

応用範囲がすごい
次にすごいのが、本書の応用範囲。本書の「利益の方程式」は、小は個人のアフィリエイターから、大はトヨタクラスの企業まで、利益を必要とする者全てに応用が利く。方程式の醍醐味がここにある。

via:4つのすごい - 書評 - 勝間式「利益の方程式」

だと思いました。

要望として、携帯電話業界に関する説明が多かったのですが、他の業界に関する情報もほしかったなーっと。
IT業界に勤務しているので、全然、それでも構わないのですが。

後、副題として、「商売は粉もの屋に学べ」とありましたが、実際に粉もの屋の例はそんなにでていなかったような気がしたので、それであっていたのかどうか疑問に残るところがありました。

でも、あんまり気にする必要がないのですが。。。

というわけで、利益を出す方法だけでなくのばす方法について知りたい方は、是非是非。


2010/12/13

[本]ホリエモン×ひろゆき 語りつくした本音の12時間 「なんかヘンだよね・・・」

おもしろすぎてすぐに読了


第1章 格差社会
第2章 政治・裁判・税金
第3章 メディア
第4章 教育
第5章 IT
第6章 食とオンナとオシャレとお金

via:目次

元ライブドア創業者の堀江貴文と元2ch管理人のひろゆきの対談本。

各章毎にテーマが決まっているのですが、二人の赤裸々な内容に、思わずクスクスと笑いながら読めました。
ここまで言っていいのかなーっと思うほど。
何かを得るためというよりも、二人がどんな会話をするのかという方に興味があったので、その点でもよかったと思いました。

後、本書を読んで思ったのは、二人とも思考が似ているんじゃーないのかなーっと。
もちろん100%クリソツというわけではありませんが。

しかし、二人とも、ものすごく知識量を持っていることはすぐにわかりました。
途中、途中でそこにそんな例を出すのかーっと思ってしまうことが多々あったので。

やっぱ色々な努力をしているんだなーと思いました。


2010/12/12

[mac]改行コードについて

普段は全然、意識しない改行コードなのですが、CotEditorを使う時に、改行コードの設定をしなくてはいけないので、ここら辺できちんと調べることに。

wikipediaの改行コードの改行コードを見ると、

LFがUNIX系
CR+LFがwindows
CRがmacなのですが、バージョン9までとのこと。

なので、macで使う場合は、LFでいいようです。

2010/12/11

[本]ラッキーマン

読了


第1章 モーニングコール
第2章 脱出の名人
第3章 ハリウッド・ハイ
第4章 びっくりハウスで迷子になって
第5章 現実は厳しい
第6章 驚異の年
第7章 頭にあいた穴のように
第8章 プレゼントの包みを開ける

via:目次

マイケル・J・フォックス初の自叙伝。

本書を通して感じたのは、罹った病気によっては、それを明らかにする自由すら与えられてないということ。
著者もパーキンソン病であることを明かすの7年もかかったそうだ。
病気をおおいっぴらにできない不自由さや孤独、寂しさ、葛藤などが克明に書かれている。

単純な話、軽ーい風邪や骨折、ねんざなどは告白したところで、仕事を失うことはないし、明日に続く道があるし、病気もなおるが、パーキンソン病となると話は違ってくる。

本書では、マイケル以外にも、多くの方が、パーキンソン病を告白したことによって生活がとても苦しくなったことが書かれていたし、さらに、病気を明かすことができないことによってドンドン症状が悪くなっていく人のことも書かれていた。

暗い自叙伝のように感じるが、実際のところそうでもなく、パーキンソン病は難病の中でも一番治療の可能性が高い病気として位置している。

しかし、Back to the futureやファミリータイムズでものすごく成功している最中でも、こんなに自己の中で葛藤していたなんて、本書を読まなければとてもじゃーないが、わからなかった。

ハリウッドスターが書いた作品としてこんなに自己のことを明かしたのは本書が初なのではないだろうか?

月並みな言い方になってしまうが、みんな、悩んでいるだなーっと改めて実感した一冊。


2010/12/10

[Python]pythonのURLエンコード

ajaxで送信されたパラメータをPython(正確に言うと、GoogleAppEngine)でキャッチすることはできたのですが、そこからURLエンコードするのに苦戦をしてしまいましたので、その方法を紹介。

import urllib
ajaxparam = self.request.get('hoge')
ajaxparam = ajaxparam.encode('utf-8')
ajaxparam = urllib.quote_plus(ajaxparam)

上のサンプルコードでは、ajaxparamがajaxでキャッチしたパラメータになります。

いきなり、urllib.quote_plus(ajaxparam)を実行すると、エラーになります。
(ちょーど下のような感じ)
import urllib
ajaxparam = self.request.get('hoge')
ajaxparam = urllib.quote_plus(ajaxparam)

これは、ajaxparam変数が、文字列かつエンコードが、UTF-8として認識されていないからだと思い、ajaxparam.encode('utf-8')を追加したら、正常終了することはできました。

参考
pythonのurlエンコードが酷い件について

2010/12/09

Black and Whiteをリリース

昨日、chrome web storeがオープンしました。

Googleからの事前通告なしに、いつの間にか、Black and Whiteもリリースされていました。

Chromeのバージョンが8以降で、Googleにログインしていることが要件なのですが、
こちらからインストールすることが可能です。

もちろん無料なので、是非、是非、遊んでいただきたい。

感想や意見、要望などは、ここのReviewか、ブログのコメントに書いていただけると大変助かります。

2010/12/08

chrome web storeがオープン

しました。

こちらからアクセスすることができます。

有料、無料といろいろなアプリをインストールすることができます。

果たして、この試みによって、widget業界を制覇することができるのでしょうか?

それを考えると、これも、一つのGoogleの挑戦なのかもしれない。

今まで、どの会社もこの分野に参入したが、未だに決定的にシェアを占めている会社はいないと思っています。

Yahoo widget

Opera widget

Windows vista gadget

Google desktop gadget

Apple Dashboard

など、色々とありますが。

今後の動きに注目していきたい。

2010/12/07

[iPhone][html]status barのstyleを変更する

Safari Web Content GuideのConfiguring Web Applicationsを読んで気になったのですが、実は、ホーム画面にwebページを追加した後、そこから、開いたときにどうやら、ステータスバーのスタイルを変更することができるみたいです。

で、具体的にどうするかというと、metaタグに下記の2行を追加すればいいそうです。

<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />

実際に、試してみたところ、確かに、ステータスバーの色が変化しました。
Photobucket