Home > 11 月, 2008

2008.11.21

オープンソースライセンスについて

弊社でもオープンソースのソフトウェアであるEC-CUBEのカスタマイズを手がけているわけですが、

オープンソース = ソースコードが公開されている = 何でもやっていい

というわけではありません。
オープンソースのソフトウェアには、それぞれライセンスが設定されており、使用・改変・再配布などについては、この制限を受けるわけです。
「制限」と聞いて、「え!?」と驚いた方もいるかもしれませんが、多くのオープンソース・ライセンスにおいては、

  • 著作権表示を維持すること
  • 無保証

の2点と、他いくつかの規制があるだけです。
当たり前ですけど、「ソースコードの改変不可」なんて制限はついていないのでご安心を。

以下、主要なものをいくつか紹介。
(more…)

2008.11.17

uamobileを使ってみた

突然ですが、Pythonライブラリのuamobileを使ってみました。

記事) http://d.hatena.ne.jp/perezvon/20081117/
DL) http://pypi.python.org/pypi/uamobile/
マニュアル的記事) http://labs.unoh.net/2007/08/python_3.html

Django上でこんな風↓に動作確認

# views.py に追加
def mbtest(request):
from uamobile import detect
d = detect({'HTTP_USER_AGENT': request.META['HTTP_USER_AGENT']})
return HttpResponse(
”’<html>”’
”’<body>”’
”’<p>user_agent: %s</p>”’
”’<p>is_docomo: %s</p>”’
”’<p>is_ezweb: %s</p>”’
”’<p>is_softbank: %s</p>”’
”’<p>is_nonmobile: %s</p>”’
”’<p>model: %s</p>”’
”’</body>”’
”’</html>”’ % (d, d.is_docomo(), d.is_ezweb(), d.is_softbank(), d.is_nonmobile(), d.model)
)

地味だけど(失礼)、便利なライブラリですね。

* * *

時に、特にモバイル案件がある訳ではなかったのですが・・・

(起)DjangoでISO-2022-JPでメールが送信できない
 ↓
(承)MS Outlookでもutf-8でメールが見れるじゃないか
 ↓
(転)何か困ることあるの?
 ↓
(転)携帯へのメール送信で困るよね
 ↓
(転転転)
 ↓
(結)今日、pypiに登録されたというuamobileでも使ってみよう

・・・と、このような理由らしき理由が無い理由から使ってみることになりました。
今は試して良かったと思っています。
月曜日の集中力の無さがなせる業とも言えますね!

2008.11.11

無線LANの規格を再整理

先日、ヤマダ電気のワゴンセールで無線LANルータを衝動買いしてしまった。
まあ、ネットの最安値よりも3000円安かったので良しとしよう。

ルータの箱にはデカデカと「スピード最大 300M」と書いてあるんだけど、「これって何だ?」と思ったのでこれを機会にザックリと無線LANの規格について調べてみた。

無線LANで知っておくべきことは大きく分けて2つ、「無線方式」と「暗号化方式」だろう。

【無線LANの方式】

いくつかの方式があるらしいが、IEEE 802.11シリーズが最も広く普及している。
また Wi-Fi と呼ばれる事もあるけど、これは別団体が認証している名称。

かなり乱暴に言ってしまえば一般的に

  • 無線LANといえば、IEEE 802.11シリーズを指す
  • Wi-Fiというのは、無線LANの1種

と思って良いだろう。

IEEE 802.11シリーズには主に b、a、g、n の4つがある。
他には「無し」とか「i」とか「j」などもあるけど、市販製品ではほとんど見かけない。

これらの違いを理解するのは 【周波数帯】 と 【速度】 がポイントになる。

(more…)

2008.11.10

jQueryでもはまるクロスブラウザ問題まとめ

IEとfirefoxなどのブラウザ間でjavascriptの仕様が違うというクロスブラウザ問題。最近はjQueryなどのライブラリを用いることによって、その違いをライブラリが吸収し、開発が容易になっています。しかし、残念ながら、jQueryを使っても、結構、クロスブラウザ問題にはまってしまいます。以下、そのようなはまった点についてまとめみます。

1.連想配列の最後のカンマ。firefoxだと無視されますが、IEだとエラーになります()。分かっていても、ついやってしまいます。

2.width/heightの解釈の違い。前回のブログにも詳細が書いてあります。jQueryのwidth()/height()でもその違いは吸収できません。前回のブログにあるように、DOCTYPEをきちんと指定するしかないようです。

3.z-Indexの解釈の違い。firefoxではz-Indexが最優先なのに対し、IEではz-Indexがhtmlの構造に依存します(参考)。

4.jsonpのレスポンスヘッダ。IEだと’text/html’にすると受け付けません。サーバーサイドで、’application/json;charset=utf-8′などにする必要があります(参考)。

5.forEachやmapなどのjavascript1.6の新機能。基本的にはIEで使えません。IEで使うにはfirefoxのページで公開されてる互換性パッチ()をソースに組み込む必要があります。

6.Canvas。IE以外ではデフォルトで使用できますが、IEで使用するには、ExploreCanvasのようなライブラリを読み込む必要があります(参考)。ただし、ExploreCanvasでは多少の機能制限があります。

7.jQueryのeventhelpersにないイベントに注意。特にmouseenter/leaveです。jqueryでbind(’mouseenter’,fn)などで呼び出せますが、IEとfirefoxで違います。IEだとイベント発生のオリジナルの子要素が取得できません(参考)。IEでの子要素取得には、mouseenter/leaveを拡張したjQueryのmouseover/outによって可能ですが、mouseoverのイベントは子要素に入ったとき全てにおいて発動するので、もとのmouseenterと挙動が異なるので注意が必要です。

とりあえず以上です。あと、ライブラリにある関数は一通りチェックして、極力使用するようにしたほうがいいと思います。何かしらクロスブラウザ対応しているので。