2011/01/14

matplotlibで、日本語を表示させるための3ステップ設定

結構はまったので、メモ

1 フォントをインストール
まず、フォント。これがないと始まりません。
Takao Pゴシック/明朝 がおすすめ。
c:\Windows\Fonts に入れるのはもちろんですが、
c:\Python26\Lib\site-packages\matplotlib\mpl-data\fonts\ttf
にも同様にコピー
しておかないといけません。

2 config追記
c:\Python26\Lib\site-packages\matplotlib\mpl-data\matplotlibrc というファイルの
##FONT
#
#
のちょっと下。
#font.serif 〜〜〜
#font.sans-serif  〜〜〜〜

font.serif : TakaoPMincho
font.sans-serif : TakaoPGothic


3 フォントキャッシュを消す
C:\Documents and Settings\Administrator\.matplotlib\fontList.cache
というファイルが存在していたら、消す。

以上。簡単なんだけど、あまりどこにも書いてない。



(2012/12/09 追記)
Linuxの場合は

/usr/share/matplotlib/mpl-data/fonts/ttf$ sudo ln -s /usr/share/fonts/truetype/takao/Takao* ./

sudo nano /etc/matplotlibrc

同じようにやる。


▼おまけ:サンプルコード

# -*- coding:cp932 -*-

from pylab import *

x=arange(0,10,0.1)
y=sin(x)
plot(x,y,"-")
title(u"さいんかーぶだお  $x_0,x^2,\\lambda$")
show()

2011/01/09

六花亭本店

本州の人々の多くは、六花亭のケーキを口にすることはない。
そもそも、バターサンドくらいのイメージしかなくて、ケーキを売っていること自体知らない人も多い気がする。

ほぼ全品200円未満という、安くておいしいケーキに、無料コーヒー飲み放題という、この上ない幸せなお店です。

ケーキ置いてるのは、帯広と釧路と富良野くらいな気がします。
サクサクパイ目当てなら帯広、雰囲気重視なら富良野がオススメ。

六花亭のケーキを知らなかった皆様、ぜひ足を運んでみては。

2010/11/05

pylabでMemoryErrorが消えなかった原因がようやくわかった!


なんか、Python 2.6でMatplotlibのサンプルを動かそうとしたら、変なエラーが出て困った。
結果からいうと、

C:\Python26\Lib\site-packages\matplotlib にあるfont_manager.pyに

local = None

という1行を加えるだけで解決するんですが、これがなかなかGoogle検索で出なくって、フォントが壊れてるだかなんだか、いろいろやる羽目になりました。


    for fontdir in MSFontDirectories:
        try:
            local = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, fontdir)
        except OSError:
            continue
        
        local = None
        if not local:
            files = []
            for ext in fontext:
                files.extend(glob.glob(os.path.join(directory, '*.'+ext)))
            return files


助けられたページ↓


字が小さいけど。


だめなページ↓

Subject: Re: Re: Could not fire up pylab in Japanese Win XP

これはあてにならなかった。


エラーの内容↓

   key, direc, any = _winreg.EnumValue( local, j)
MemoryError

みたいな。忘れた。一度成功するとエラーが再現しなくなった。うお。

2010/10/23

Nokia N8 が届いた!!しかし・・・

1週間前に1shopmobileで注文したNokia N8がようやく届きました。
円高なのでいやっほーい、とポチったのに、関税が1700円とか。死ね。
それはおいといて、さっそくレビューしてやりたいと思います。

・カメラ
目玉機能として注目を浴びているわけですが、まあまあかなといったところです。
iPhone4は持っていませんが、HTC Legendと比べてみて、
・設定はそれなりに細かくできる。(感度、ホワイトバランス、・・・)
・ノイズが多いので1200万画素が有効活用できているとは思えない
ビデオカメラはかなりきれいに撮れる気がする。
といった感じがします。6万くらいするので、カメラを期待するくらいならデジカメを買いましょう(笑)

・使い勝手
動作は非常に悪いです。iPhoneのパチモンよりもできが悪いのでは?と思うくらいモッサリしてます。
また、メニューの位置があっち行ったりこっち行ったりで統一されていなかったり、ExitとかCloseとかCancelとかの用語や挙動が全然統一されていなかったりで、使い勝手は最悪です。
また、アプリ間の連携も最悪です。Androidのインテントの機構が神すぎるのもあってそれに慣れているためかもしれませんが、撮った写真のフォトアルバムから直接twitterに発信するだとか、そういう便利な連携機能がありません。

・アプリ
これが最大の難点だと思うのですが、なんといってもアプリの数が少なすぎます。
とりあえず
・Google Map
・Skype(非公式にGet)
などは何とか手に入って使えますが、
・EverNote
・DropBox
など「えっ?ないの??」というものはかなり多いです。
日本語入力するためのソフトすらありません
なので、twitterに書きこむにも微妙というかなんというか。
あと、twitterアプリも「これは使いやすい」と感じるものはありませんでした。

というわけで、Nokia
N8はもう少しアプリ側の対応がしっかりしてきてから買ったほうがいいような気がしました。

2010/10/18

情報セキュリティスペシャリスト(午後II)



集中力がいい加減切れてきた午後II、、とりあえず問1のオレオレ解答を晒しておく。
問2はシングルサインオンの見るからに「知るかボケ」な感じだったので、迷うことなく1を選択。
問1は社会人やってソフトウェア開発のプロセスに乗っかって作ってみてこそ解けた感じがする。学生さんたちは「レビュー?なにそれ?」という人もいたんじゃないかなーと予想する。

設問1 a:ア b:イ

解説:
Java?そんなのしらんよ。勘だよ勘!ってのがホンネ(笑)
とりあえず
・stmtを宣言しているのがa
・bでSQLを実行しているんだろうな
くらいはさすがにわかる。
そんで、
・sqlという変数に「?」が入ってて、ここをstmt.setString(1,param)で置換してる?のかな?
・ということはstmtの宣言時には内部にsqlを取りこむものでないといけない。
・ということはSQL実行のbでは引数にsql入れる意味がない。
ってことで、なんとなくbはイと想像できた。

aはホントに勘なのだが、とりあえず明らかにフィルター(絞り込み)とかしてないからdoFilterなんてありえない。
バインド機構だからってbindって、あまりにも短絡的過ぎじゃないか。だいいち、JavaってStatementとかいういかにもベースクラス的なものに「?をsetStringで置換する」とかいう気の利いた機能盛り込むような言語じゃないだろ。お利口さんに派生クラスで実装を追加するもんじゃないか?ってことでPreparedStatementっぽい。よし。アだ。

Google検索してみたら、正解っぽかった。ふぅ。


設問2
(1)脆弱性が発見された場合に出戻りが発生し、修正により長い期間を要するため。
(2)設計する各コンポーネントに既知の脆弱性を含んでいないかを調査・確認する。
(3)セキュアなコードで書かれているか、既知の攻撃手法が適用できないかを有識者やツールを用いて確認する。

解説:
あまり自信はない。ただ、「修正は後の行程ほど大変」という一般法則があるし、「最後にちょちょっと脆弱性見てそれをリリースまでの半月で修正できるの?それまで6か月かけてきたプロジェクトだよ?」という主任の声が天から聞こえてきた(笑)ので、そのまま書いてみた。
レビューで脆弱性を見るって言うのはあまり経験がないので、とりあえずてきとーに書いた。
「セキュアプログラミング」っていう定石があってそれにのっとっているか、もう少し言うと、既知の「ありがちなミス」をしていないか、っていうのがポイントなんだろうな、ということでこういう解答に至った。

設問3
(1)利用者IDのパラメータに任意の利用者IDを取得するSQL条件文を含ませたHTTPリクエスト
(2)想定外の文字が含まれていないか、従業員テーブルに存在するIDか、を確認する。

解説:
午後1午後2を通して、もっとも自信がない。(1)の55文字制限が本当に微妙で何を書いて何を書かないかがホントに悩ましかった。

(1)について
とりあえずどこにインジェクションするかについては、顧客IDについては何の情報もなかったので、クッキーとかに書かれているとすると、それ勝手に書き換えたらログインできなくなるんじゃないか、ということで、利用者IDのほうに着目した。
利用者IDベタ書きなので、とりあえず 「' OR 1=1'」という常とう手段は使えそう。でも、問題文の「データの型チェック」というのはどこまでさしているんだ?単純にStringの型チェック?それとも特殊記号のサニタイズとかも含めてる? うぎゃあああ意味わからん。IPAの試験問題作ったやつ出てこい!
ってわけで、都合よくStringの型チェックしかしてないんだろうと仮定して、ベタな解答に仕上げた。これ推敲だけで30分以上かけた気がする。

(2)について
SQLインジェクションの対策っていうベタすぎる問題。ここでも「データの型をチェック」の意味する範囲がわからなかったので、上記のStringであることしか確認してないと仮定。まずは従業員IDでクオテーションとかスペースとか使うことはないだろっていうのをチェック。でもこれじゃ字数が余るぞ?念のため、従業員IDリストに含まれるかどうかも確認しとくかー、ってことで上の解答に至る。

設問4
(1) 顧客ごとにテーブルあるいはデータベースを分けて、アクセス権も顧客ごとに設定する。
(2) ガイドラインに基づくチェックリスト付きのレビュー報告を委託先に義務付け、X社が確認・承認を行う。


いい加減集中力が切れてきたところ。

(1)について
ありえんやろ!なんで全部の顧客の情報が一つのテーブルに入っとるんよ!?
素人でもここまでやらんだろー。
ってことで、テーブル単位かDB単位で顧客を管理するように変更すべきだと。あとは、念のため顧客ごとにアクセス権(OSとかDBシステム提供の機能で)を設定したら、WebApp経由で特定のアクセス権で実行されても他のはPermission Deniedでしょ、って感じで。

(2)について
レビュー記録というシステムがないと、「レビューしましたー」だけで済ませられるとどこまで信用していいのか分からないんじゃないだろうか?ということで、コーディングガイドラインを守っていますだとか、そういう報告を含めた記録を委託先に提出してもらうようにせんとダメでしょう。うん。きっとそうだ。
知らん。

設問5
(1) c:ア
(2) FWのアクセス制御ルールでインターネット側からのTCP8080番ポートへのアクセスを拒否している。
(3) 設計に含まれる各コンポーネントの脆弱性に関する情報を定期的にチェックすること。

解説:
どういうわけか、最後に一気に楽なのが来た感じ。
(1)について・・・省略。当たり前やろ。

(2)について
この脆弱性がTCPの8080番にインターネット側からのなんとかかんとか、、、って書いてあるので、「え?そもそもインターネット側から8080番ポートとかって開けてたっけ?」ということを思い出す。ファイアウォールで遮断してるので、この攻撃のパケットはRejectされるはず。

(3)について
ミドルウェアでパッケージものだからって安心してるからこういうことになる。エンドユーザーはミドルウェアのことなんか知らないわけで、作ったもの全部に脆弱性がないかどうかが心配なはず。
また、設計途中に脆弱性が発見されるということもこのご時世だと珍しくはなさそう。使用しているコンポーネントについては定期的にチェックするに越したことはないはずだ。おれはやりたくないけど(笑)ってことでこういう解答に至る。


あああ、、どうか合格していてほしい