サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
シン・〇〇
linux.oboe-gaki.com
Pythonで無限大(inf)や不定(Nan)を判定する 無限大(inf)をチェックする方法 inf = float("inf") if(val == inf): #valが無限大だったときの処理を書く float("inf")で無限大を作ることが出来る。無限大チェックは通常アプリではなかなかやらないかも知れない。 Nanをチェックする方法 if( val != val ): #valがNanだったときの処理を書く PythonではNanとNanを比較するとFalseがかえってくるため。なお、Python2.6以降ではmath.isnal(val)で調べることが出来る。 こちらはとてもよく使う。けど、初めてこのコードを見たら、何やってんだコレ?となってしまいそうなので、# Nan Check とでもコメントを添えておくことにしよう。
Pythonソースコードに日本語を使う わりと常識めいたことのようなのだが、ググッてもパッと出てこない情報なので覚書しておこう。 WindowsでPythonソースコードのコメントや文字列代入などに日本語を使う場合、以下のようにしなければならない。 ソースはUTF-8で保存して、ソースの一行目にこれを書く。 # -*- coding: utf-8 -*- #はpythonではコメント扱いなのだが、この書き方で「このソースコードはUTF-8で記述していますよ」という宣言になるんだそうだ。 さもないと、こういう感じのワケのわかんないエラーが出る。 C:\work\pyode\tut2-2>tut2-2.py File "C:\work\pyode\tut2-2\tut2-2.py", line 6 SyntaxError: Non-ASCII character '\x96' in file
Pythonで、指定した属性(attribute)を持っているかどうか調べる hasattr( オブジェクト,"属性名") 持っていればTrue、さもなくばFalseが返ってくる。 if hasattr( obj, "detail" ): detail = obj.detail これ属性が動的に変わるオブジェクトには、これやっとかないと、AttributeError: 'xxx' object has no attribute 'yyy'みたいなエラーが出る。 なければ空文字列が返る、とかのほうが使い勝手がいいような気がするが、そこはきっと私にはうかがい知れない深い事情があるのだろう。
CentOS6 ntpdを起動して、インターネット上のntpサーバを参照し、時刻を同期させる とりあえず時刻を同期させるだけなら、こんな感じ。rootで実行する必要がある。 (前提として、インターネットに接続できる環境である必要がある) [root@localhost Desktop]# service ntpd start ntpd を起動中: [ OK ] [root@localhost Desktop]# [root@localhost Desktop]# [root@localhost Desktop]# ntpq -p remote refid st t when poll reach delay offset jitter ============
VMwarePlayerでCentOSを動かす 3 さて、CentOSインストールが出来たのはいいが、この時点ではCentOSは日本語対応していない。 とりあえず、先ほど作ったアカウントでログインしよう。インストール時に指定したアカウント名が表示されているので、こいつをクリックしてパスワードを入力するのだ。 しばらくして、デスクトップ画面が表示される。まだ英語表示だ。 画面の何もないところで右クリックし、Open In Terminalを選択。 Terminalが開くので、以下のコマンドを実行。(入力するのは赤文字部分) [kabuki@localhost Desktop]$ su Password: パスワードを入力 [root@localhost Desktop]# [root@localhost yum.repos.d]# yum -y groupinstall "Japanese
Pythonの if __name__ == "__main__": ってなんだ? サンプルスクリプトなんかを見てると、コードの最後のほうにこんなのが出てくる。 myapp.py ・・・ if __name__ == "__main__": app = MyApp(0) app.MainLoop() このifの後ろはアプリケーションのインスタンスを作ってメインループ実行、ということをやってるんだなってことはわかる。 問題は、このif。実は、このifは、「直接実行されたら」という意味になるようだ。 例えば、以下のように実行された場合には、ifの中味が実行される。 python.exe myapp.py じゃあ、「直接実行されないケース」って一体なんなんだというと、importされたとき。importされると、このif分の中味は実行されない。 import myapp ▲別のコードから、imp
wxGladeをざっくり使う pythonコード出力まで wxPython用のGUIを作る目的で、wxGladeを使ってみた。pythonコードを出力するまでを覚書してみたい。 wxGladeダウンロード&インストール wxGlade公式サイトを開く (→wxGlade公式サイト) Downloadをクリック Project Pageリンクをクリック 「Download Now!」ボタンをクリックしてダウンロード&インストール ▲Windows以外は、「View all files」からダウンロード可能。 wxGladeでGUIを作る では、ざっくりとGUIを作ってみよう。完成品はこんな感じ。 ラベルとテキストフィールド(テキストコントロールと呼ぶらしい)、ボタンをデフォルトの名前のまま貼り付けた感じだ。 部品のツリー構造はこんな感じ。 アプリケーション→フレーム→サイザー→パネル→サイザ
pythonでutf-8日本語文字列を、URIエンコード・URLデコードする '全力HP' ← → %E5%85%A8%E5%8A%9BHP Pythonで上のような変換をやりたいときの覚書。 utf-8文字列のURLエンコード utf-8文字列 txt: '全力HP' urllib2.quote(txt.encode("utf-8")) URLエンコード済み文字列 : %E5%85%A8%E5%8A%9BHP URLエンコード済み文字列をutf-8に戻す(URLデコード) URLエンコード済み文字列 enc_txt: %E5%85%A8%E5%8A%9BHP urllib2.unquote(enc_txt).encode('raw_unicode_escape').decode('utf-8') utf-8文字列: '全力HP' サンプルコードをつけたかったが、printなどで表示す
GAE/Pタスクキューで実行頻度の設定と、無限リトライ防止 defaultタスクキューに処理を登録 from google.appengine.api.labs import taskqueue taskqueue.add(url='/job, params={'param1': "batch", 'mode': 'change' }) /jobにparam1とmodeという変数をPostして処理させる。これが基本形。 タスクキューの無限リトライを防止 from google.appengine.api.labs import taskqueue import logging class Job(webapp.RequestHandler): def post(self): if( int(self.request.headers.environ['HTTP_X_APPENGINE_TAS
VMwareでCentOSを動かす 4 VMwarePlayerでCentOS6が日本語環境で動くようになった。 あとは、CentOSを「ブリッジ接続で」ネットワークにつながっている状態に設定したい。 絵で描くとこうしたい。 ホストOSと書いてあるのが、VMwarePlayerが動いている実際のパソコンで、IPアドレスが192.168.1.5が割り振ってある。 そんでもって、ゲストOSと書かれているのが、VMwarePlayer上で動くCentOSで、IPアドレスは192.168.1.6を割り当てたい。 こうしておくと、ネットワーク上の他のマシンからも直接ゲストOSにアクセスできるのだ。 では、やり方。 VMWareメニューの、仮想マシン→取り外し可能デバイス→ネットワークアダプタ→設定を選択 デフォルトだとネットワーク接続設定は「NAT:ホストのIPアドレスを共有して使用」という状態にな
crontabで一分後に実行設定したが動かない crontabの設定テストをしようと思って、実行時を一分後に設定したら動かなかった。 具体的にはこうだ。17:30に以下の設定をした。 % crontab -e ←crontab編集。viでcrontab設定が開く 31 17 * * * /home/admin/test.sh ←毎日 17:31に/home/admin/test.shが実行される設定 vi閉じる 1分待つ 予想では、17:31に/home/admin/test.shが実行されるはず。しかし、実行されなかった。 test.shがエラーで失敗している場合は、実行ユーザ宛にOSからメールが来るが、実行された気配自体がないのだ。/var/log/cronlog(cronの実行ログ)を見てみると、17:31にRELOADというのが実行されている。 そこで、テストの実行タイミングを2分
このページを最初にブックマークしてみませんか?
『定番Linuxフリーウェアまとめ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く