Book」タグアーカイブ

html5 Test

いいかげんに HTML5 の勉強をやろうとこんなムックを買ってきた。

月刊誌である日経ソフトウエアでの記事をまとめたものらしい。
ココの月刊誌自体は未だに WindowsForm だとか寒い記事ばかりだがムックはあなどれない。
私が普通にアプリを作れるようになったキッカケも以下のムックのおかげだ。
Windows徹底理解 | PaePoi
ヘタにぶ厚い解説本を買うよりムックのほうが不要な解説が少ない所がいいね。

記事のコードも以下から落として利用できるから楽チン。
ダウンロード – 日経ソフトウエア ダウンロード:ITpro

とりあえずイントロダクションを試す。
コードのダウンロードは 2011/01 なのね、最後のページに書いていた。
もう LHA 配布は消した方が…とにかく tr1101.zip を落として展開。

meta charset=”utf-8″ を推しておいて readme.txt は Shift-JIS とかヤメてくれ!
Linux では普通に開くと文字化けするっつーの、UTF-8 に BOM を付けていないのは評価する。
画像は自分で用意しなきゃダメか、まどかばかりじゃアレだからあずにゃんを用意した。

Opera で試したけどアニメーションしないんだが…
ってよく見たらこの CSS の -webkit-transition って WebKit 専用じゃんかよ。
何故か mozilla のページで見つかった。

CSS transitions – MDN

Opera は -o- Firefox は -moz- のプリフィクスが必要、IE はまだ無い。
Linux てか Fedora 上で試すから IE が使えないのでどうでもいいけど。

とにかく style.css に以下の感じで適所に追記する。

-webkit-transition: 0.2s linear;
-o-transition: 0.2s linear;
-moz-transition: 0.2s linear;

WebKit のブラウザは入れていないけどライブラリはあるから PyGI で作る。
PyGtk で作るのとほぼ同じでイケた、Gtk.PolicyType に気おつけて。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import sys
from gi.repository import WebKit, Gtk, Gio

# Rewrite Your HTML5 File URI
HTML_URI = "file:///home/sasakima-nao/html5/tr1101/index.html"

class WebKitWindow(Gtk.Window):
    """
        WebKit PyGi Version
        from Fedora 15 x86_64
    """
    def __init__(self):
        # Window
        Gtk.Window.__init__(self)
        self.resize(800, 480)
        self.set_title("My WebKit Window")
        # WebKit
        w = WebKit.WebView()
        w.load_uri(HTML_URI)
        # ScrollWindow
        sw = Gtk.ScrolledWindow()
        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        # add
        sw.add(w)
        self.add(sw)
        self.show_all()

class App(Gtk.Application):
    def __init__(self):
        Gtk.Application.__init__(
                self,
                application_id="apps.test.webkit",
                flags=Gio.ApplicationFlags.FLAGS_NONE)
        self.connect("activate", self.on_activate)
        
    def on_activate(self, data=None):
        l = self.get_windows()
        if l:
            return
        w = WebKitWindow()
        w.set_application(self)
    
if __name__ == "__main__":
    app = App()
    app.run(sys.argv)

上記と Firefox 6.0 と Opera 11.51 で index.html を表示

よしよし、ドレでもアニメーションするようになった。
Linux でも全然イケるようです。

library

愛知県図書館

に行った。
「わたしはあなたに会ったことがある、覚えてる?図書館のこと。」
は全然関係無い。

どうでもいいけど library って翻訳すると図書館なんだね。

とにかくデカッ!
小牧岩倉のと規模が全然チゲェ!
しかも超綺麗、あの独特な学校臭さは皆無。
名古屋市内だけあって人も多い、寝ている人も多いのはどこも同じ。

ぐるりと回ってみる。
巨大スペースを生かした配置が上手いのか読んでみたい本がいくつも見つかる。
つか棚が多すぎて全部を見きるなんて無理。

これらが読み放題、ソファーに座って読んでも怒られない。
しかも無料どころか借りて持ち帰りさえできるんだから恐ろしい。
こんな場所はもっと活用しなければもったいないとさえ思ってしまう。

机のある閲覧席が山ほどある、席は埋まっていたけど。
NTT の無線 LAN が使えるみたい、席は埋まっていたけど。
全国の新聞まで揃っている、私には関係無いけど。
5階のスガキヤで飯も食える、外の喫煙所近辺に自販機は無いけど。
駐車場が小さい、こりゃ原付か電車しかないな。

でも本をじっくり読んでいると眠くなるのよね。
やはりミニノートを持ち込んでアレコレしながら活用したくなる。
あと近場に軽食屋が見当たらなかった。

プログラミングや Linux の本が少々古めとはいえ沢山あるなんて冗談みたい。
この手の本は覚えたら終わりなことが多いからレンタルできれば嬉しいわけで。
これはネタ切れで止まっている臭い Blog をなんとかでき…ゲフンゲフン。
思わず貸出カードを作ってしまった、遠いけど三週間借りられるし…

最後に。
貸出カードが作れずに困っているメガネの女の子はいませんでした。

IronPython で WPF

IronPython には nt という os の代替モジュールがあることを今更知った。
ということは前回のコードは

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

# 環境変数の書き出し

import nt

keys = nt.environ.keys()
result = ""
for key in keys:
	result += key + "\n" + nt.environ[key] + "\n\n"

f = open("env2.txt", "w")
f.write(result)
f.close()

あーあ、os を nt に書き換えるだけで動いてしまったお。
open() とかは組み込み関数だからそのまま使えるし。

とはいえ IronPython ではコッチで書く人はほとんどいないだろう。
C# コードからの変換ばかりやるはめになるのは目に見えているし。

ということで

の本で WPF アプリのコードがあまりに不親切だったので補完。
部品を作るのにいきなり XAML を利用では IronPython の意味が無いでしょみたく。
XAMLPAD では Glade のようにはいかないと思うし、機能がショボすぎる。

マイレビューを一つ、CPython コードを書くのにも少し役に立ったよと。
ちなみに上記の nt モジュールの存在はコレを読み直して知った…
しかし mono の本同様にコレしかなく選べない状態が続いているのは悲しい。

さて最小限のコードを書いてみる。

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

import clr

# 最小限下記ライブラリ(dll)が必要
clr.AddReferenceByPartialName("PresentationCore")
clr.AddReferenceByPartialName("PresentationFramework")
clr.AddReferenceByPartialName("WindowsBase")

import System

w = System.Windows.Window()
w.Title = "実験"
a = System.Windows.Application()
a.Run(w)

最小限のライブラリとは VC# とかを持っている人なら解るかな?
ソリューションエクスプローラにある参照設定以下のことね。
VC# なら右クリックして「参照の追加」をするけど IronPython はコードで行う。

se

本当は System も必要だけど最初から含まれているっぽい。

後、上記の本ではいきなり from 文を使っているけど理解してから使いましょう。
Window や Application というクラスは System.Windows 名前空間にあります。

知っていると思うけど Python の名前空間はモジュール名そのままである。
partial 指定ができないのが場合によっては辛いかもしれない。
boo という Python そっくりな言語はココの画像を見るとできるっぽい。

【ハウツー】F#、IronPython、Booまで使えるフリーの統合開発環境「SharpDevelop」 (3) 利用できるプログラミング言語 | エンタープライズ | マイコミジャーナル

まあそれはよくて。
上記を拡張しても後々で困るのでさっさとクラスに変更します。

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

import clr

# 最小限下記ライブラリ(dll)が必要
clr.AddReferenceByPartialName("PresentationCore")
clr.AddReferenceByPartialName("PresentationFramework")
clr.AddReferenceByPartialName("WindowsBase")

from System import *
from System.Windows import *

class TestWin(Window):
    def __init__(self):
        self.Title = "class の実験"
        self.Closing += self.onClosing
    
    def onClosing(self, sender, e):
        MessageBox.Show("閉じます")

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

やっぱり面倒なので from を利用、これで C# の using と同じ意味。

VC# で作るのと同じように Window を継承したクラスを __main__ で作る。
最後に Application インスタンスの Run() にぶち込めばクラス化は完了である。
これで C# コードからの変換が簡単になりました。

ついでに終了時にダイアログを出すようにハンドラを追加してみた。
Python のクラスなので引数に必ず self が必要です、よく忘れるんだこれが。

最後にコントロールを追加してみます。
XAML を使わずにコードで作る方法をば。

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

import clr

# 最小限下記ライブラリ(dll)が必要
clr.AddReferenceByPartialName("PresentationCore")
clr.AddReferenceByPartialName("PresentationFramework")
clr.AddReferenceByPartialName("WindowsBase")

from System import *
from System.Windows import *
from System.Windows.Controls import *

class TestWin(Window):
    def __init__(self):
        self.Title = "Controls"
        # ボタン作成及びクリックハンドラ登録
        button = Button()
        button.Content = "ボタンだよ"
        button.Click += self.onClick
        # 一行エディットの作成
        # 内容を他で使うのでアトリビュートにしておく
        self.textbox = TextBox()
        self.textbox.Text = "なんか書け"
        # TextBlock の作成
        tb = TextBlock()
        tb.Text = "何か書き込んでボタンを押してね"
        # レイアウタを作成してこれらをセット
        sp = StackPanel()
        sp.Orientation = Orientation.Vertical
        sp.Children.Add(button)
        sp.Children.Add(self.textbox)
        sp.Children.Add(tb)
        # レイアウタを Window にセット
        self.Content = sp
        # この指定でコンテンツの大きさ固定なウインドウになる
        self.SizeToContent = SizeToContent.WidthAndHeight
        self.ResizeMode = ResizeMode.NoResize
    
    def onClick(self, sender, e):
        MessageBox.Show(self.textbox.Text)

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

Button 等のクラスは System.Windows.Controls にあるので import する。
Window や Button に何かを乗せるには Content プロパティに代入する。
レイアウタにコントロールを追加するには Children.Add() メソッドを利用する。
という簡単な例である、最後に Run() の中で Window を作る小技をば。

seira

C# でウインドウをコードで作った人なら解るだろうけどほとんど同じに書けます。
C++ から Pascal への変換を経験した人なら「え?それだけ???」ですよね。
今回はここまで。

STL の本

そういえば去年財布を盗まれてクレカの再発行をしたのを忘れていた。
SAKURA から「引き落とし不能」のメールが…やっちまったい!
再発行すると番号が変わっちゃうのよ。

たった今オンラインで振り込んだけどもし止められたらゴメン。
多分今年中に移転するような気がするんですけど、今は決定していないけど。
といっても急に無くなったら行方不明だしマイッタわ。

つーことで久々に本の紹介。

今コレを読んでいます。
今度は STL かい…と呆れないでくれ。

この本は、、、、、恐ろしく解りにくい!

とにかく難しい、といっても STL 自体が解りにくいのであるが。
だいたい反復子って名前はなんじゃい、もっとイイ翻訳は無かったのか?

知識がある人が本を書くと、ついうっかり深い所まで説明しようとする。
だから難しさが倍増して投げ出したくなってしまう、その典型な文章。

でもだから深い所まで書いているので今はとても嬉しい。
素晴らしい内容の本です、人間って調子がいい生物だなと。

STL は一端使い方を覚えてしまえば楽ちんなのはポインタと同じだね。
てゆーか std::vector だけなら反復子は完全にポインタと同じだと。
それが解るようになる本という事ならとても勧められない文章である。
逆に解っている人であれば買いです、自分でコンテナを作る方法まで解説してる。

プログラミング本を買う決めてがなんとなく解った。
とにかく文字ばっかで画像がほとんど無い本を選びましょう。
今は全然解読できなくても後で役に立つ場合がある。

Windows徹底理解

WPF も魅力なのだが現行アプリもやらねば。
とりあえず今年は C++ をメインに少しづつ .NET でいく。

Windows API の本で役に立った本も紹介しておく。

2004年発行のムックだけど今でもたまに手に取っている。
やっぱりプレミアが…って定価 ¥2095 なのでそんなに付いていない。

コレを買ったのは BCC で DLL の作り方が書いてあったから。
VC++ Exp が無償で手に入る時代に今更 BCC は勧めませんが。
当時は C++ のコンパイルを BCC でやっていたのでまあ。

まあそれはそれで役に立ったわけですが、この本は凄かった。
その名の通り Windows はどうやって動いているかで始まっている。

NTFS の仕組みとか IO とか割り込みとかキューとか etc…
それも簡潔ながら図解付きで解りやすく解説されている。
実はなんとなくしか解っていなかったが本当に勉強になった。

そして基本ウインドの項目は衝撃だった。
アプリケーションは自分でメッセージをキューに取りに行っているのね。

while (GetMessage(&msg, NULL, 0, 0))

の部分で、あぁだからこの関数が必要なんだと。
そんなことも知らずにプログラミングをしていた自分を恥じた。
たったソレだけのことを知った事による影響は大きかった。

それを解説してくれる本にそれまで出会わなかった事が不思議だ。
まあそれを隠しているデルヒャァ屋だったというのもあるが。
WPF なんかも隠す方向なんだよねぇ、チト気になる。

脱線はこれくらいにして。
ファイルアクセスやメモリ管理なんかの解説も当然あるわけで。
これらもなんとなくしか解っていなかった事をこの本で改めて知った。

実は UNICODE アプリが作れるようになったのもこの本のおかげだ。
そしてフォントはふぉんとに奥が深かった(我ながらつまらん…)

ようするに API の解説ではなく Windows の解説本なのだが、
どうやって Windows が動いているのかを知って得たモノは大きい。
API というか SDK でプログラムをしようという人は必見。

Vista が出た時代だけど API 関数はほぼ同一なので問題無し。
てゆーか本当に基本の基本しか書いていない、それがよい。

でもさすがに古いムックなので代替があればイイんだけど…
見つけたらまた紹介するね。