dullhikoのだるいブログ

殆ど日記のだるいブログ

備忘録 vimで直前の動作を繰り返す

2005年08月31日 | ソフトウェア
いやまあ実に基本的なコマンドなわけだが忘れやすいというか実はいままで知らなかったような気もする。

.

ピリオドですね。こいつを打つと直前の動作を繰り返す。
複数行をタブでインデントなどする時に便利、だと思う。

Inkscapeの0.42.2が出ていた

2005年08月31日 | ソフトウェア
バグ修正版、だそうだが。
XPのスタイルが適用されるようになっていた(単にmanifestファイルがくっついてるだけかもしれないが)

あと描画バグが直ってるっぽい。ちょっと変な時があったが一応、いまのところそれはなくなっている。

いいじゃん。Inkscape。

やっぱりPyGTKのほうがいいやと思えてきた

2005年08月31日 | Python
ちょっと弄ってみたが…
なんつーか、ドキュメントが少ないというか…
実は…
よくわかんない。コード以前にもっと基本的なところが。
たとえばどうコントロールを配置すればいいのかという時点から。
VBとかDelphiみたいに自由に置けない。
XRCedというのも魅力的ではあるんだが、こちらはさらによくわからない。

というわけで、やっぱPyGTKのほうがいいというか、GTKのGladeのほうが使いやすいかなぁ、と。

んで、いままで俺はバカみたいにGladeが吐くCのソースコードを変換していたわけだが、ふと、~.gladeファイルをテキストエディタで開いてみたら、

これは中身が単なるXMLですね?

ということは、XMLパーサを使ってコンバートするスクリプトを書けばもっとスマートかつ簡単ではないのか、という。
やってみるか。

今更になってwxWidget/wxPythonを使う

2005年08月25日 | Python
保守的というか臆病者というかなんというか、wxWidgetをなんとなく敬遠していたわけだが、思い切って使ってみた。
というのも、Audacityというフリーなwaveエディタがあって、こいつの使い勝手のよさには正直感心していたのだ。
それ以前にはTWEというやはりフリーなwaveエディタを使っていたのだが、こいつが長大なwaveデータの加工・編集には向いていないのだ。
でかいデータの真ん中辺りでちょっと削除しようもんなら作業用の一時ファイルに膨大な時間をかけて処理をしてくれてしまう。
そこでAudacityなら一時ファイルを分割して作業しているので、いかに大きなデータでもサクサクだ。

って、話がズレた。

ともかく、AudacityはwxWidgetsを使っている、ということ。
それを知ったのもwxWidgets導入の動機でもある。

そういうわけで、wxWidgetsを入れてみる決心をしたわけだ。
もちろん、wxPythonも使って、だ。ついでだから、wxGladeも入れたりして。

これが、かなり行ける。なんつってもPythonソースに直に対応してるし。
GladeでpyGTK向けにコンバータを書いてた自分はアホそのものだったなと思える。
とはいえ、本家GTKが2.8になりcairoを取り込んだということで、その辺にpyGTKが対応すれば面白いわけで、全くの無駄だったとは思ってないが。
まあ、それはともかく。

wxPythonのデモみてるだけで面白いですよ…。

Python によるゲームプログラミング実況中継が更新されていた

2005年08月23日 | Python
http://www.unixuser.org/~euske/doc/pygame/index.html

Yusuke Shinyamaさんの、FlashでPygame実況プログラミングというシビれるスタイル。正直カコイイ。
第一回から更新の間が空いていたのでどうしたものかと思っていたが知らぬ間に更新されていた。

ちなみに俺がPygameをきちんと知ったのはこのサイトが初めてだったように思う。

Pythonのグローバル変数

2005年08月19日 | Python
いよいよPythonに親しむに従い、さらに知らなかったことを知る。楽しからずや。

今回はグローバル変数。正直、「変数は極力ローカル」という教えに従いそう生きてきた俺だったが、遂にやむにやまれずグローバル変数に手を出すことにした。というかむしろトリッキーなコードになるぐらいなら素直に積極的にグローバル変数に手を出した方がマシと思うのだが、まあいいか。(そういうときは設計の間違いのようにも思える)

が、それはともかく、Cのように適当にやればグローバルになるわけではなかった。
クラスのコンストラクタ内で使おうとしたら、そんなローカル変数は定義されていないとか言いやがる…
スコープ内でglobalと宣言していなければ、グローバル変数としては扱われない…?

確かに、そうしてみたら、問題のコードではグローバル変数として認識され、動いた。

が、Pythonコンソール(PythonWin)や、極小にしてみたコードをpythonから実行してみるのでは、普通に外部の何もないところで宣言したグローバル変数がグローバル変数として使えているようで、何がなんだかよくわからない…

と、弄ってるうちに理由が判明したので、ここに書いておこう。

global_val = 0

class hoge:
  def __init__(self):
    self.myval = global_val

これは普通に使用できるし、グローバル変数の中身を参照も出来ている。

global_val = 0

class hoge:
  def __init__(self):
    self.myval = global_val
    global_val+=1

こっちはエラー。

global_val = 0

class hoge:
  def __init__(self):
    global global_val
    self.myval = global_val
    global_val+=1

これなら動く。

要するに。グローバル変数を書き換えるには、global宣言が必要!ってことだと思う。tclに似てるな。

やはり備忘録:vimで新規ファイルにsyntaxを適用する

2005年08月19日 | ソフトウェア
当たり前だが、新規ファイル(つかバッファ)を作ったとき、いきなりはsyntax coloringが適用されない。
そりゃ作成直後は無名、ファイル形式を探る方法さえないのだから当然である。

そこで、俺はいままで無精者の本領を発揮してメニューからマウスでわざわざ選択していた。てか、これってやっぱり余計に面倒じゃん、ということで。
ググりました。

set ft=python

こんな感じ。

ところで、vimのファイルエクスプローラにディレクトリ生成が無いのがちょっと悲しい… 俺がその方法を知らないだけの予感はしまくっているが

VimのSignについて間違えたことを書いていた俺

2005年08月18日 | ソフトウェア
pythonなどに絡んでVimの統合開発環境化を狙いつつ。
signってどうだったかな、と日記blogの備忘録的な使い方を実践してみたが、実は自分が間違ったことを書いていたことが判明した (汗

「備忘録 Vimで特定行に印をつけるにはどうするか ソフトウェア / 2005年04月19日」
の記事に書いてあることだが、

sign place 0 line=30 name=s1 buffer=1

これは、エラーになる。signのIDは1から始まる。0はエラーとして受付られないようだ。

sign place 1 line=30 name=s1 buffer=1

つまり、これが正しい。なおbuffer引数はバッファリストでも見て適切なバッファIDを得ないとやっぱりエラーになる。当然だが。

該当記事には自己トラックバックしておいた。が、いまいちトラックバックについてよく理解できていない俺。

クリエイティブコモンズに参加してみようかとも思ったが

2005年08月16日 | お絵かき
ちょっとPythonでデジカメ用の自動メモリカード内容コピースクリプトを作ったので、そのアイコンに使おうと思ってこんなものをつくってみた。
まだ少し、使いづらいな… > Inkspace
ただ、前よりは遥かに簡単だ。特にグラデ回りは。
アイコン化にはtowofu's softさんの「@icon変換」を使用。MS公式のアイコン作成手順がばかばかしいほど簡単にアイコンが生成できた。

んで、一回限りの使い捨てじゃつまらないので、クリエイティブコモンズというかOpenclipart.comに登録してみようかとも思ったが、なんだかよくわからないのでとりあえずやめておいた。いずれ、やってみよう。