Fedora 17 64bit Install (HDD)

あぁ Fedora インストールから半年経ってしまった。
恒例の OS 更新の季節がやってきた、メンドクセエ…

ということで。

久々の blog 更新ですがマジで全然プログラミングしていなかった。
二月にスマホを Android に変更して新しい OS にドップリはまり
何故かバイクの免許が欲しくなり取りにいき 250cc のバイクを買い
スマホと GPS と Google Map の組み合わせは最強だ!と思い知る。

こんなのがライバルではデスクトップ Linux なんて流行るわけがない…

今後デスクトップ OS は仕事用以外はクリエイターしか使わなくなるかと。
とはいえ絵描き、動画編集、プログラミング等とクリエイターにも色々ある。
結局何か作りたいならデスクトップ OS が必要になるはず。

そんなこんなで恒例の Fedora インストール。
基本的に前回と同じだが細かく違いがある。

Fedora 16 64bit Install (HDD) | PaePoi

マシン構成は前回と同じ、新規 HDD に入れて旧 HDD はバックアップ。
ただ Fedora 17 からは「いますぐダウンロード」が 64bit になった。

Oh no! Something has gone wrong.
A Problem has occurred and the system can’t recover.
Prease log out and try again.

ライブ CD を試そうとすると上記の警告が何度も出る。
一度ログアウトしてログインのやりなおし(以下再ログイン)をすると消える。
インストール CD に不具合があるのは毎度のことだ。

インストールボタンがあるウインドウが初期状態で出るようになった。
でもそのまま選択するとやはり英語でインストールというオチになる。
やはり System Settings から Language を変更して再ログイン。
するとボタン付きウインドウも日本語化されるのでこの状態からインストール。
後は指示に従いお好みに、私は英語キーボードなのでほぼデフォルト。

問題なくインストールできたけど終了しようとしたらいきなりエラー。
即座にアップデートをかけたほうがいい。

出たばかりなのにコレか、まるで Ubuntu みたいだ。

毎度のように旧 HDD をスレーブ接続でデータコピー。
今回はどういうわけか HDD マウントで所有者が自分になった。
これなら Nautilus からコピペのみでいいのでファイルコピーも楽チン。
いくつかは SE Linux ポリシーの変更が必要になると思うけど。

RPM Fusion と Flash YUM と Google Chrome だけを狐でダウンロード。
いつまでこの激重で使いにくくて未来が無い狐がデフォルトなんだよ!
Opera とかは Chrome で落とす、狐を使うことはもう無い。

てか現在大量増殖しているスマートフォンは WebKit なんだよね。
他は私を含む一部のマニアが Opera Mobile を併用しているだけだと思う。
Windows8 の空気っぷりを考えると多分 IE と狐は消える運命だろうね。

Google Chrome の SELinux ブロックが今のところ無い。
改良してくれたのかな、もし出ても前回と同じ回避策でいいと思うけど。

てゆーかいいかげんにデスクトップにものが置けるのをデフォルトにしてほしい。
つか dconf-editor は必須なのだから最初から入れてくれよ…

我がアプリ Y901x, clipoli, memopoli はまだ全部動く。
PyGtk や GStreamer 静的バインディングはそのうち消えると解っているが。
GI 動的バインディングの情報がもっと集まらないと動けないのよね。

# 削除したもの

ibus-hangul
libhangul

メリケン供には日本人とチョンの区別ができないようです。

# Fedora 16 との違い。

Fedora 17 SourceForge.JP Magazine

/bin, /sbin, /lib, /lib64 などのディレクトリが/usr以下に
って移動してシンボリックリンク貼っているのでは結局同じことだろうに。

リムーバブルメディアのマウント先が /media/ から /run/media/$USER/ か。
あぁだからスレーブ接続した旧 HDD が自分所有になったのね。

他はデスクトップ利用ではあまり関係無いな。

見た目では GTK3 アプリのみだが非アクティブ化したウインドウのフォントやチェックボタンまで色が薄くなるようになった。
ますます GTK2 アプリが古くさく感じてしまうわな。
これはテーマ側だろうけどスクロールバーやスピンボタンも変わっている。
ボタン自体を大きくしたかったのだろうけどこれは…

それより、右下のリサイズグリップが消えた!

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

from gi.repository import Gtk

class Win(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self)
        self.set_title("Fedora 17")
        self.connect("delete-event", Gtk.main_quit)
        self.show_all()
    
if __name__ == "__main__":
    Win()
    Gtk.main()

デフォルトで付かなくなったということみたい。
これではリサイズがやりにくい、何か設定はあるのだろうか?

リサイズグリップ以外は今のところ不満無く使えている。
しかし初期状態で Gedit にまったく問題が無いのって初めてかもしれないw
プログラミング関係は次回、次回があったらだが。

Nautilus script

gphoto2 関連は何も進展しなかった…
Blog も先月は一回しか更新できなかったな…
ネタ切れもあるけど新たなプログラミングに飽きが出始めた感じ。

ということでサボりすぎな Tips ページに手を入れることにした。

Nautilus をスクリプトで拡張 – L’Isola di Niente

ココの書き換えだけで半日以上掛かってしまった。
つかスクリーンショットを GNOME3 に変更するために使っていないのを整理したり変なファイル名だったのを適切なものに変更したりよく考えたらなんで拡張子を取っ払っていないんだ?となって又ファイル名を変更したり PyGtk のまま使っていたのを PyGI に書き換えたりetc…

ソレ毎にスクリーンショットの取り直ししていたらそりゃ時間が掛かるわ。
でもおかげでゴチャゴチャだったスクリプトがスッキリと整理できた。
やって良かった、似たような状況に人はスクリーンショット付きページを作るといいよ。

後 Gedit のページも少し整理、で一日が終わってしまった。

Gedit で Python スクリプトを debug – L’Isola di Niente

ぶっちゃけ以前 Blog で書いたことの整理をしているだけだったりする。
整理しないと忘れてしまうマジで。
Seed で環境変数なんて自分で書いたのに忘れてググってしまい我が Blog がヒットしたのには泣けた…

今月というか当面は Tips ページの整理を主にする予定。

Digital camera with Linux

Canon のデジカメを買った。
写真ド素人の私がレビューしても無意味だが幸い私は Linux 使いである。
コレを Fedora 16 に USB 接続してどうなるか試してみる。

なんか Canon だということを自動認識して勝手に処理してくれた。
ちなみに Panasonic だとこうなる、カメラアイコンにならないんだが。

そこいらに売っているデジカメなら何の問題もなく認識しそうだね。
Fedora や Ubuntu なら本当に素のままで何でもできてしまうわな。
もはや Windows にできて Linux でできないことってエロゲだけかも。

でも実際にはいったいドコにマウントされているのだろう?
場所はどうなっているのか Nautilus で Ctrl+L してみる。

コレは gphoto2 プロトコルで接続していますってことかな。
gPhoto – Wikipedia

とにかく USB 接続している状態で普通に Eye of GNOME 等から観覧可能。
しかし動画は何故かサムネイル作成や再生開始まで異様に時間が掛かる。
HDD にコピーすれば何も問題なく観覧できるのだが気になる。
というか Y901x では動画が再生できなかった…

理由がよく解らないので gnome-terminal にドロップしてみる。

こんなところにマウントしていたのか!
しかし Nautilus から W クリックすると Canon Digital Camera 部に転送される。
というかツリーを辿れない、シンボリックリンクでは無いようだし。

端末からならツリーを辿って eog 等でファイルも開ける。
けど gvfs-open 指定で Tab キーを使うと gphoto2 プロトコルに変換される。
あ、GNOME3 で関連付け起動は gnome-open ではなく gvfs-open を使います。

それなら Y901x でも開けそうなんだが…
同じようにカレントディレクトリから Y901x を使っても再生できなかった。
もちろん sys.argv も同じエラー、フルパスではアクセスできない。

つまり実際にマウントされるのは ~/.gvfs 以下。
だけど GVfs 経由で参照しなきゃアクセスはできないようだ。
gphoto2:// で始まるプロトコルに変換する必要があるのね。
つか、GVfs なら GTK3 化しなきゃいけないな…

平日にハマると怖いのでコレ以上の検証は後日に続く。
久々にアプリの更新ネタができたけど最近忙しいので…

WebKit Seed imports

GNOME の JavaScript 実装は seed と gjs がある。

JavaScript – GNOME Live!

seed は WebKit の Javascript エンジン。
gjs は Spidermonkey(Firefox) の Javascript エンジン。

であるようだ。
一応書くと Google Chrome のエンジンは V8 なので違います。
ようするに普通に WebKit を GNOME で使うと Seed を利用するということかな。

Python with GTK+3 WebKit Browser 2 | PaePoi
試しに以前作った上記と Google Chrome で V8 ベンチをやってみる。
V8 Benchmark Suite

V8 はやはり早い、圧倒的な差があるのね。
まあそれはよくて、Seed なら imports が使えるはず。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>GtkWindow</title>

<script>
function test() {
    try {
        var Gtk = imports.gi.Gtk;
    }
    catch(e) {
        alert(e);
    }
}
</script>

</head>
<body>
<input type="button" onclick="test()" value="Test">
</body>
</html>

ダメじゃん、ということで。

Blogging in the wind: WebKit: Extending Javascript – Seed (V)

こんなページを見つけた。
これは面白そうだ、ヘッダを揃えてビルドしてみよう。
webkitgtk-devel, seed-devel を入れればいいかな。

環境が揃ったのでビルド、問題なく実行ファイルが作成された。
ということで、GtkWindow を作成する HTML5 ファイルを読み込ませてみる。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>GtkWindow</title>

<script>
var on_clicked = function() {
    //
};
function create() {
    try {
        var Gtk = imports.gi.Gtk;
        Gtk.init (null, null);
        var gtkwin = new Gtk.Window();
        gtkwin.signal.hide.connect(Gtk.main_quit);
        var label = new Gtk.Label({label:"Button Click -> WARNING"});
        var button = new Gtk.Button({label:"Button Clicked"});
        button.signal.clicked.connect(on_clicked);
        var vbox = new Gtk.VBox();
        vbox.pack_start(label);
        vbox.pack_start(button);
        gtkwin.add(vbox);
        gtkwin.show_all();
        Gtk.main()
    }
    catch(e) {
        alert(e);
    }
}
</script>

</head>

<body>
<div>First time an error</div>
<input type="button" onclick="create()" value="Do GtkWindow">
</body>
</html>

ボタンの初回クリックで例外を吐く。
けど2回めからは問題なく GtkWindow が作成された。
body.onLoad() で imports なんかも試してみたが同じだった。

それよりシグナルのハンドラがうまくいかない。
RangeError って意味がよく解らないんですけど…
Seed の例外は何が悪いのかが PyGI より理解し辛いのが難点だよな。

うーイマイチだ。
でもとにかくコレで WebKit から imports が使えることは解った。
利用場面があるかどうかは別の話として。

Trigraph

先日書いたように半月前に Fedora マシンを英語キーボードに変えた。
VirtualBox 仮想マシンの Windows Vista, XP も英語配列に変更。
「英語キーボード Vista」と検索すればワラワラ見つかるレジストリ書き換えで。
XP は簡単、どちらも仮想マシン状態でも方法は同じで変更できるようだ。

IME も問題ない、Windows では Alt+~ で切り替えなのね。
ホストの GNOME3 複数ウインドウ切り替え機能より優先されるようだ。
てゆーか間違えるわ、あんまり使わないからいいけど。

ついでなのでキーボードネタでも少し。

有名かもしれないけど C 言語では Trigraph という三文字表記が使える。
Digraphs and trigraphs – Wikipedia, the free encyclopedia

??=include <stdio.h>

main() ??<
    printf("%s??/n", "はろーわーるど");
??>

スッゲエ読みにくい、なんだこりゃですが使えるんです。
ただ gcc では無効になっているので -trigraphs オプションが必要。

gcc -trigraphs test.c

日本語をリテラルに使っても何も問題無い。
ついでに試したら VC++ ならオプション無しで普通にビルドできる。
もしかして C# でも使えるかな?と思ったけどダメだった。

どうでもいいが wprintf ってどんな時に使うのだ?
内部が UTF-16 で local が CP932 で .NET 読み書きが UTF-8 ってアホか。
結局コンソールを使う場合はマルチバイトビルドしか選べないわけで…
それは本当にどうでもよくて。

問題があるようで代わりに Digraph というのが C99 で既定されたようだ。
表現できるものが減っているけどコレで全世界でも問題ないと判明したのだろう。

%:include <stdio.h>

main() <%
    printf("%s\n", "はろーわーるど");
%>

gcc ならオプション無しでイケる、Visual Studio 2008 ではダメだった。
Visual Studio 2010 ならイケるのかはシラネ。
そして C#, Python は関係無かった。

つーか何故こんなもんがあるかというと。
フランス語やドイツ語キーボードにはシャープや角括弧や中括弧が無いから。
キー配列 – Wikipedia

でも実は右 Alt キーを利用して打つことはできるようです。
京都産業大学 外国語学部 フランス語学科/Windowsでのフランス語入力
ドイツ語キーボードの配列

ということで C 言語以外は三文字表記なんか気にしなかったようだ。
いや UTF-8 が普及したってのが大きいんだろうけど…
よく考えたら C# なんて # が使えないと言語名さえ変えなくてはいけないもん。
ぶっちゃけ誰もこんな表記方法は使わないだろう、と思うんだが。

ついでに。
「Gedit キーカスタマイズ」とかのワードで検索している人がいるんだな…
それ Windows の文化だから。

Gedit で検索は Ctrl+F で次を検索は Ctrl+G ですよね。
これ、たとえば devhelp もまったく同じなんです。
一つ覚えてしまえば他でも同じキーが使える環境のほうがいいと思うのだが。
そういうところが気に入って GNOME を選んでいる人って少ないのかな…