月別アーカイブ: 2009年7月

MIME Type is disjoint

そういえば Windows の MIME Type はどうなっているのだろう?

MIMEタイプの取得・判定 – Programming/Tips – 総武ソフトウェア推進所

ふむふむ、そうやるのか。
Windows の場合は拡張子が全てなので Python の mimetypes モジュールでよさげだが。
せっかくなので試してみよう。

# -*- coding: UTF-8 -*-

import clr

clr.AddReferenceByPartialName("PresentationCore")
clr.AddReferenceByPartialName("PresentationFramework")
clr.AddReferenceByPartialName("WindowsBase")

from System import *
from System.IO import *
from System.Windows import *
from System.Windows.Controls import *
from Microsoft.Win32 import *

class MimeTypeWindow(Window):
    """
        Get MIME Type for Windows
    """
    def __init__(self):
        self.Width = 320
        self.Height = 240
        self.Title = "MimeTypeWindow"
        self.AllowDrop = True
        self.Drop += self.on_drop
        self.textblock = TextBlock()
        self.textblock.Text = "Drop"
        self.Content = self.textblock

    def on_drop(self, sender, e):
        files = e.Data.GetData(DataFormats.FileDrop)
        ext = Path.GetExtension(str(files[0]))
        if ext:
            key = Registry.ClassesRoot.OpenSubKey(ext)
            if key:
                s = key.GetValue("Content Type")
                if s:
                    self.textblock.Text = s
                else:
                    self.textblock.Text = "No MimeType"
            else:
                self.textblock.Text = "No Registry Key"
        else:
            self.textblock.Text = "No Extension Value"

if __name__ == "__main__":
    a = Application()
    a.Run(MimeTypeWindow())

今頃知ったけど .NET Framework の null は None でイイんだね。
これと Python の mimetypes モジュールとでどうなるか試す。
ぱぇぽぃ2 ? Blog Archive ? Get MIME Type and Description
で GNOME と違うのかもついでに、zip アーカイブを試す。

mime_all

あら…
ついでに Opera は Linux 版なのに

opera_mime

なんというか、やっぱりアプリケーションによってバラバラだよ。

SeeMe for Windows v4 beta

昨日勢いで SeeMe for Windows v4 beta を公開した、我ながら名前が長い。
というかインストーラ化がやはり不安なので早めに出しておこうと。

てかまだ自分で Windows 7 での動作を確認していない。
ということで再び Ubuntu 9.04 の HDD に戻して…

今後こういう機会が多くなりそうな感じ。
今まで HDD を取り替えしていたけど 2 つ付けて抜き差しだけで変更できるようにすべ。

ドスパラ – BTOオリジナルパソコン Prime(プライム) Prime ALightning AM

のマザーが 690G の頃な古いマシンなんだがメンテナンスが超やりにくい。
HDD を増設するのに一度マザーを外す必要がある、やはり自作のようにいかない。
素直にデュアルブートにしとけばよかったという感じ。

しかしドエリャァ安くなったものだ、Windows 7 はコイツを買って入れるかな。
何とか一時間掛けて HDD をもう一つ付けるのを完了。

Ubuntu のほうをブートして VirtualBox ose 上の Windows 7 を起動。
自分のサイトから SeeMe v4 beta を落としてインストール、なんか変な気分。

よしよし、インストーラは問題なく動くぞと。
よしよし、インストーラ経由ならブロックされずに起動できるぞと。

seeme4b

XP でも問題無さそう、あれ? Dynabook を使っていた頃より凄く早いぞ。
もしかして VirtualBox とか仮想で動かすほうが .NET って早いの?

seeme4bxp

Vista 以外の Windows での動作確認を Ubuntu で行うというのはこれいかに。
やっぱりもう一つマシンを買ったほうがよさそう、しかしもう XP は仮想で十分だ。
ということはやっぱり Windows 7 待ちになってしまうんだよなぁ。
それとも Ubuntu 9.10 の時にするか、悩む。

それにしても Windows 7 で配布ってインストーラしか選べないのかな?メンドクセ。

Comix

Comix – GTK Comic Book Viewer

こんなのを見つけた、思いっきり PyGtk 製の画像ビューアである。

私は動画プレイヤー同様で画像ビューアにもそんなには機能を求めていない。
なので Eye of Gnome で十分なんだが 9.04 から急に重くなってっしまったし。
PyGtk の勉強ついでに自分で軽いのを作ろう、と覚え書きページを作っていた。

見事に詰まった…ということで何か参考が欲しい所に見つけたということです。

でも検索すると…
せっかくの Python 製なのに参考にして何か作ってみようという人いないの?
UNIX 系の人はバリバリスクリプトを書いて利用しているイメージが昔はあったのに。

まあそれはよくて。

普通に「追加と削除」にあるのでパッケージ管理のためにインストールはそちらから。
URL を貼ったのは Python コードを参照のために落とす用。

HDD は Vista にしてしまったから VirtualBox 上の 8.10 を使って…
あれ?何もファイルが無い、そういえば 8.10 からはホストに変更したんだっけ。
せっかく Comix をインストールしたのに画像が何も無いとはこれいかに。

しかたがない、手っ取り早くエロサイト…はやめておいて。
この Blog から先月の画像を FTP で丸ごと落とせばいいや。

comix

縮小描写の画質がイマイチですので双一次補完以上にしませう。
GtkRadioAction でラヂオメニューとツールバーを同期させる
image.py でコレと同じようにスケーリングをしているので、名前で解るわな。

tile

こういうのは自前で補完の算出をするより GTK+ にまかせたほうが早い。
なんたってスクリプト言語ですので…まあイイんでないかい。

それはそうとソースコードだ。

GtkUIManager を使ってオリジナル画像や右寄せをしている、コレやりたかった。
方法の解析は…もう少し時間が掛かりそう。

画像は GtkLayout を使って大きさを調節して GtkImage に描写している。
こんな方法があったのか、それなら expose_event シグナルを利用しなくてもイケる。
それでいいのか?という疑問もあるけど。

ステータスバー表示は分割せずにまとめて str で描写。
うーん、私とは随分考え方が違う人のようだ。

予想していたコードとは随分違うけどこれはこれで参考になる。
というか 8.10 の Eye of Gnome はこんなに軽かったっかな?

SeeMe for Windows v3.2.2

SeeMe v4 をそろそろ本格的にやらなきゃいけない。
誰だよ催促してきたのは、ブログは見ていないということだろうけどやっているよ。

でも 10 正式版がそろそろ出る予感がするので C# のまま手直しで済ませる。
ソースコードを丸ごと公開しているんだから他の誰かにやってほしいんだが。

それもあるわけだが Visual Studio を使いたくなってきた。
ということで我がマシンは Vista HDD にしばらく換装することにした。

起動してずっと HDD がガリガリガリガリガリガリガリガリガリガリ…
自動更新で何故か二回再起動させられる…
そういえば sp2 が出ていたんだっけ、ダウンロード…

いや、毎日使うような人なら細切れになるからいいのだろうけど。
私のように数ヶ月間電源を入れない人だと全部一気に行われるからタマラン。
ほとんどが自動で行われるのはいいと思うけど何もかも時間が掛かりすぎ。
二時間以上掛かってやっと使える状態に。

久々に Vista を使ってみると Explorer がやっぱり酷すぎる。
flv 画質は DirectShow より GStreamer のほうが滑らかなような気がする。
Windows Power Shell は何故こんなに制限を設けてしまったやら。
どのフォントにしてもギザギザにしか見えない。

しかし Windows 版 Opera は Linux 版を知っている人ならありえないほど安定。
Opera 10 Beta もインストール、やっぱり仮想で使うよりケタ違いにスムース。
あれ?Silverright も Firefox プラグインで動かせる範囲なら動くジャン。

Opera の為だけに Windows へ戻ろうかと思うくらいだ。
でもその他が全部不便なんだよなぁ、せめて bash レベルの使える端末があれば…
Ubuntu Linux はスクリプトが書ける人なら便利過ぎるだけなのだが。

、、、、、、、、、、、、、、、、、、、、

まあそれはいい、とにかく開発。

Python を 3.0 から 2.6.2 に変更、やはり 3.0 常用はまだ早い。
IronPython を 2.0.1 から 2.6beta へ変更、setter が必要なので。

Python はインストーラが全部やってくれる。
IronPython は自分で Path を通す、一応 Vista での方法を書いておきます。

「コンピュータ」を右クリックしてプロパティ。
「システムの詳細設定(A)」をクリックしてダイアログを出す。
下のほうにある「環境変数(N)」をクリックしてダイアログを出す。
「Path」の所をダブルクリックして変数値の最後にセミコロン区切りでパスを入力。

environ

これでシェルから ipy という名前だけで使えるようになる。
Windows ばかり使っている人には何故そんなことをする必要があるか解らないかも。

ipy_path

と、ココまでやったけどやっぱりまず C# で SeeMe を。

v3 も手直ししたい所があって放置しているのでやっておこう。
ということは v4 は別プロジェクトにしないといけないわな。

SeeMe4 という別ソリューションを作りひたすらコピー。
だけではやはりエラー、名前空間を SeeMe4 に変えなきゃいけないのね。
それでもエラー、XAML 中の名前空間ってのがあると気がつくのに時間が掛かった。
一度 Visual Studio を再起動しないと XAML の再読込が失敗する場合が多いぞこのやろう。

しかし Visual Studio の C# は至れり尽くせりだ。
こんな環境でプログラミングを覚えると IDE が無いと何も作れない人になりそうだよ。
テキストエディタと IronPython では MSDN とにらめっこだしね。
ということでチャチャっと v3.2.2 を作って公開。

seemev4a

v4 は今こんな感じ、なんとか全部のデフォルト名を抜けるようになった状態。
UseTLD を追加するだけだから変更自体は簡単だけどつじつま合わせをどうするかだ。
読み込む ini の名前や位置が変わっているので設定を v3 とは別に作って…
えーとそれから…他人が作ったアプリの一部を弄くるアプリってメンドクセ!

SeeMe v4 as IronPython + WPF

ということで
SeeMe v4 は IronPython + WPF で作ることにしました。
Opera 10 正式版のファイル名やディレクトリ構成がどうなるか解らない状態だけど。

ユーザーに IronPython 2.6 のインストールを強要という暴挙ですが…
まあいいじゃないか、私は Opera より「気軽な開発」を普及させたいんだから。

seeme401

まだ Custom search.ini の読み込み部分しか作っていない。
しかし IronPython も単純に open() で開くと UTF-8 として読み込むんだね。
StreamReader を通しているのだろうけどコレなら楽チンだ。

しかし v3 と同じ外観ではつまらない。
何か面白いインターフェイスにできないかな?と模索中。
ということでここまでのバックアップ。

seeme_a401

それにしても VirtualBox 上の Windows 7 での開発はやはり辛い。
しばらく Vista HDD に戻すか悩むところ。

Linux 版はあまりにも需要が無さ過ぎるので終了する予定。
だって検索バーをドロップダウンで文字入力不能になるのでは…
v10 でなんとかなるのを期待していたんだけーがなぁ。