Fedora 15 004

Fedora 15 (GNOME 3) 64bit 生活四日目。

※ 動画

ftypisom な MPEG4 が再生及びサムネイルできなかった件。

ソフトウエア更新を行う。
~/.gstreamer-0.10 にある registry.x86_64.bin を Shift+Delete で削除。
動画サムネイル失敗があったら ~/.thumbnails 以下も削除。
後は Totem に動画を放り込むと registry.x86_64.bin が再作成される。

これで Totem で再生できて Nautilus でサムネイルも作ってくれるようになった。
でも Y901x は相変わらず再生不能、起動はできるのだから playbin2 は作れているはずだが。

※ font

Firefox で観覧していて何かおかしい。
font をよく調べたら VL ゴシックが等幅しか入っていないって何だよ…

VL Gothic Font Family
から落として VL-PGothic-Regular.ttf を ~/.fonts に入れる。

で日本語フォントが変なのはなんとかなる。
ついでに IPA フォントならココ、追加/削除からでもいいけど。
IPAフォントのダウンロード || OSS iPedia

※ gedit (2)

gconf-editor で指定していた設定は dconf-editor で行うようだ。
デフォルトでは入っていない、更に端末か Alt+F2 から起動するしか無い。

/org/gnome/gedit/preferences/editor
restore-cursor-position を off
smart-home-end を BEFORE
で私的に使いやすい設定になった。

~/.config/dconf/user
が実態みたいだけど手書き編集は無理っぽい、GSettings API を使う。
Python から使うにはこうすればいいのね。
Using GSettings with Python/PyGObject

※ PHP

PHP は PHP を検索して導入すれば依存関係で Apache2 も勝手に入る。

Ubuntu で Apache2 と打ち込んでいたところを httpd に変更すれば同様に扱える。

$ su
パスワード:
#/etc/init.d/httpd start

たしか Apache2 の設定変更は SELinux に色々ブロックされるので所有者変更で賄う。
ということで /var/www へのシンボリックリンクをホームに www という名前で貼りつける。

# chown -R sasakima-nao /var/www
# exit # Ctrl+D
$ ln -s /var/www ~/www

後はホームに作成された www リンクの html ディレクトリに php ファイルを入れる。
完了、自分しか利用しないのだからコレでいいや。

※ Opera

http://localhost/ を表示してみる。

いやぁ、やっぱり Opera は快適、慣れなんだけどね。
Opera のテーマは環境に合わさるんだけど GTK2 になるようです。
Flash は Firefox 用に入れたパスを追記すれば同じものが利用できる。

以前はダメだった keepassx からの貼り付けも問題無くなっている。
WordPress で Flash アップローダも Opera で使って普通に動く。
しかし以前こんなことを書いていたのが嘘みたい、64bit なのに全然問題がない。

fedora 64bit はやはり強者用だった

行ったことを覚書でシコシコ書いているけど後日まとめたページを作る予定。
多分続く。

Fedora 15 003

Fedora 15 (GNOME 3) 64bit 生活三日目。

※ Nautilus

サイドペインをツリーにするには「表示」メニューからできた。
でもゴミ箱を表示するには場所に戻す必要あり。
デスクトップのゴミ箱アプレットが無くなったのでココからアクセスするしか無い?
ツールバーはもっとボタンを増やしてもいいんでないの、シンプルにしすぎ。

というかファイルの削除が Ctrl+Delete になっている。
面倒ジャン、Delete キーのみに戻す方法はあるのかな?

しかし GNOME2 の場所メニューにあたるものがデスクトップに無いのは痛い。
Nautilus のお気に入りに登録すれば場所メニューに登録されるけど面倒。

Nautilus スクリプトは位置が GNOME2 時と同じ、バックアップを戻して使える。
~/.gnome2/nautilus-scripts に置くだけで利用可能。

※ gedit

設定ディレクトリ

スニペット
~/.gnome2/gedit/snippets → ~/.config/gedit/snippets
外部ツール
~/.gnome2/gedit/tools → ~/.config/gedit/tools
プラグイン
~/.gnome2/gedit/plugins → ~/.local/share/gedit/plugins

スニペットと外部ツールは gedit2 のをコピペで利用できた。
プラグインは gedit3 が GTK3 なので GTK3 に合わせて作り直しの必要あり。

smart_home_end を変更したいんだけど、どうするの?
GConf にて指定では無くなったし、それらしきファイルも見当たらない。

※ コマンド

wget コマンドが無い…
gnome-terminal が y/N を尋ねてくるので y で導入した。
他にもありそう、あって当然だと思っていたコマンドが無いと焦るよね。

あぁ何もかもがもどかしい。
Vista を最初に使った時もそうだったしそのうち慣れるはず。

そういえば Opera をダウンローダーとしても利用していた私であった。
やっぱり Opera も入れておこう。

Fedora 15 002

Fedora 15 (GNOME 3) 64bit 生活二日目。

ウインドウのタイトルバーをマウスで掴み画面最上部で最大化、サイドで画面半分に。
おまえは Windows 7 か!って突っ込んでしまった。

GNOME 3 のランチャはアプリが起動している場合は影が光る。
起動しているランチャをクリックすると多重起動せずウインドウがアクティブになる。
多重起動するには右クリック、ってコレも Windows 7 と同じ…

まさか Windows を真似るとは思わなかった。
それにしてもやはり最小化が解りにくい、ランチャは普段隠れているし。

で、普通に日本語環境は揃ったし Ubuntu から乗り換えのためにアプリを色々と。
Gimp は Fedora 15 にも入っていないんだね、GTK+ は Gimp の成果だったはず…

とにかく動画デコーダーの為に rpmfusion をリポジトリに追加。

Enable RPM Fusion on your system をクリック。
Fedora 15 うんちゃらがある、stable になっていないけど多分大丈夫だろう。
その rpm へのリンクを free, nonfree 共クリックし普通にインストール。
Totem に動画を放り込んで指示に従う、MPEG や WMV はそれでイケたけど

Quicktime demuxer というのが入らず ftypisom な MPEG4 が再生できない。
stable ではないからか、それともどこかで探してくるしかないのか。
更に

Y901x で再生できないよ、GTK3 で作り直しが必要なのだろうか…
なんとかなるまで VLC でも使っていよう、そのまんま開発終了はありえる…
とにかく Quicktime demuxer が無いと Nautilus でサムネイルできん。

他色々なサードパーティなモンは以下から辿れる。
Third party repositories – FedoraProject

まず一番必要な Flash x86_64 用だ。
gnash を入れてみたけど何も起こらない、何のために「追加・削除」にあるのだ?
YouTube も見れないし kabu.com のボードも使えないのでは 64bit に移行できない。

Download Adobe Flash Player 10 Beta – Adobe Labs
tar.gz を解凍し libflashplayer.so を ~/.mozilla/plugins に放り込む。
あぁよかった、これで Flash はなんとかなりそうだ。

gimp
gjot2
keepassx
sylpheed

もとりあえず全部動いた、バイナリエディタはタブ式って無いのかな?
Apache と VirtualBox は今度、現状はこれで様子見。

ここまで Firefox 4 を利用してみたけど「戻る」も以前より超早くなったし悪くない。
食わず嫌いも嫌なのでしばらくそのまんま利用してみようかなと思う。
拡張は FireGestures のみ入れたけどそれで私には充分かも。

だけど検索バーがタブの下にきたのにタブを移動しても語句が残るのってなんだよ…
ページ内検索さえも、そのほうが都合がいい人もいるだろうけど Opera 屋には気になる。
Opera や Chrome に比べて検索の柔軟性がイマイチなんだよな。

Fedora 15 001

というわけで。
Fedora 15 正式版がやっと出たので Ubuntu 10.10 から乗り換え開始。

GNOME が 3 になったので Windows Vista の初期時と同様に初期不良は多いかも。
ソレを楽しめないならコンナモン使うな、というスタンスでもっとイケイケだよ私的に。
だってあんなに不安定だった Vista が今や一番問題が無い Windows になっている事実。
7 って色々と早くはなったけど妥協の産物だし、Vista 路線を続けてほしかった開発者は多い。
というか続けていれな私は多分 Linux に移らなかったわけで。

x86 か x86_64 かで迷ったけど x86_64 で試してダメなら x86 版にすればいいやで。
64bit にしたい理由は VirtualBox 仮想マシンな Vista をもう少し快適に使いたいという理由だけ。
解っている問題は Flash のみだ、gnash でなんとかなればいいのだから。

私的な思惑はどうでもよくて、とっととインストール。
Fedora Project ホームページ

インストール用 iso が見当たらなかったので Live CD iso の x86_64 を落とす。
Live を使ってみると見事に英語、キーボードも英語レイアウトで動作する。
あぁ英語圏で作成された OS だなぁ。

インストールは全部英語、32bit iso だと日本語になるのかな?
インストールしてみても英語、右上のユーザー名の所から System ウンチャラをを選択。
旗のアイコンから Japanese を選んで再ログインでやっと日本語環境になる。

ぱぇぽぃ2 ? Blog Archive ? GNOME3 and PyGtk3
日本語化した後は上記ベータで試した時と特に違いを感じない。
ただ GNOME アプリのバージョン情報が全部 3.0.* と正式バージョン名になっているだけ。

ついでに再ログインでこんなのが出る。

コレはお好みで、解説はいらないよね。
~/.config/user-dirs.dirs
が見当たらない、この位置も変更になっているか。
追記::普通に Nautilus から F2 キーで変名したら作成された…

細かいことや GNOME2 との違いが次回から。

gdiplus save

Keyleigh をそろそろなんとかしたいと考えた。
拾ったデルヒャァコンポーネントを使っているだけのクソソフトだが。
せっかくなので画像コンバータ機能とかでも追加すれば面白くなるかも。

GDI+ を使うのが一番だよなぁ。
C# で使えば死ぬほど簡単だ。

using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

namespace iconpoli2
{
	class Program
	{
		static void Main(string[] args)
		{
			foreach (var s in args)
			{
				string t = Path.ChangeExtension(s, "jpg");
				Bitmap b = new Bitmap(s);
				b.Save(t, ImageFormat.Jpeg);
			}
		}
	}
}

コンバートならマジでこれだけだ。
いや、せっかくなので C++ でやりたいぞ。
と思ったけど

Gdiplus::Bitmap * img = new Gdiplus::Bitmap(__wargv[i]);
img->Save(outname, &Gdiplus::ImageFormatJPEG);

とやっても全然上手くいかない。

Transforming a JPEG Image Without Loss of Information (Windows)
Retrieving the Class Identifier for an Encoder (Windows)

どうやら自力で CLSID を取ってくるしかないようで。
つか ImageCodecInfo って class なのにサイズを得て malloc なの?
試しに普通な new で作ったら見事にヒープ領域不足、どういう設計だよ。

とにかく MSDN の方法で上記と同じになるよう C++ で作ってみる。
C++ じゃ ChangeExtension なんて便利なものは無いし GDI+ 初期化も必須。

stdafx.h

#pragma once

// 面倒なのでココで参照追加
#pragma comment(lib, "gdiplus.lib")

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Vista
#endif

#include <stdio.h>
//#include <tchar.h>
#include <wchar.h>
#include <windows.h>
#include <gdiplus.h>

凄く無駄だと解っているけど tchar を利用しないで UNICODE 関数をまんま使う。
てか今となっては Ansi 関数を併用する必要は無いと思うんだが。
WCHAR や UINT のマクロも利用したくない。
だって Visual Studio は大文字マクロの型名では色が付かないんだよね。
というかなるべく小文字にしたいと思うのは多分 Python のやりすぎ。

iconpoli.cpp

#include "stdafx.h"

using namespace Gdiplus;

int GetEncoderClsid(const wchar_t* format, CLSID* pClsid)
{
	unsigned int  num = 0;
	unsigned int  size = 0;

	ImageCodecInfo * pImageCodecInfo = NULL;

	GetImageEncodersSize(&num, &size);
	if(size == 0)
		return -1;  // Failure

	// コレだとヒープ領域不足になる
	//ImageCodecInfo * pImageCodecInfo = new ImageCodecInfo();
	pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
	if(pImageCodecInfo == NULL)
		return -1;  // Failure

	GetImageEncoders(num, size, pImageCodecInfo);

	for(unsigned int j = 0; j < num; ++j)
	{
		if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )
		{
			*pClsid = pImageCodecInfo[j].Clsid;
			free(pImageCodecInfo);
			return j;  // Success
		}    
	}

	free(pImageCodecInfo);
	return -1;  // Failure
}

bool ChangeExtension(const wchar_t* src, wchar_t* dst, const wchar_t* ext)
{
	wchar_t path[4][256];
	_wsplitpath_s(src, path[0], 256, path[1], 256, path[2], 256, path[3], 256);
	_wmakepath_s(dst, 1024, path[0], path[1], path[2], ext);
	return TRUE;
}

int wmain(int argc, wchar_t* argv[])
{
	// GDI+ 初期化
	GdiplusStartupInput gdiplusStartupInput;
	ULONG_PTR gdiplusToken;
	GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

	for (int i=1; i < __argc; i++)
	{
		// makepath
		wchar_t outname[1024];
		ChangeExtension(__wargv[i], outname, L".jpg");

		Gdiplus::Bitmap * img = new Gdiplus::Bitmap(__wargv[i]);

		CLSID encoderClsid;
		int r = GetEncoderClsid(L"image/jpeg", &encoderClsid);
		if (r == -1)
		{
			wprintf(L"no CLSID");
			return 0;
		}
		// コレは上手くいかない
		//int result = img->Save(outname, &Gdiplus::ImageFormatJPEG);
		int result = img->Save(outname, &encoderClsid);
		if (result == Gdiplus::Ok)
			wprintf(L"Encode Success");
		else
			wprintf(L"Encode Failure");
		delete img;
	}
	// 後片付け
	Gdiplus::GdiplusShutdown(gdiplusToken);
	return 0;
}

長い。。。。。

たったこれだけのモンにえらく時間が掛かった、やっぱり C# のほうがいいかなと。
それと Python や C# ばかりやっていると開放処理をつい忘れそうになるよね。