投稿者「sasakima-nao」のアーカイブ

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# ばかりやっていると開放処理をつい忘れそうになるよね。

CsharpRepl

mono にはこんなのがあるらしい。
ようするに C# 言語のインタラクティブシェルだ。

CsharpRepl – Mono

Ubuntu 10.10 には最初から入っていたので試してみる。
公式の解説が思いっきり LINQ だけど普通に foreach とかはどうだ。

using System; は初期状態から行われている。
for 文は一行で終わらせるか中括弧を語尾に付けないとエラーになる。
日本語は入力時に化けるけど UNICODE として処理しているようだ。
class なんかは作れない。
終了は quit; となっているが普通に Ctrl+D でいい。

Ctrl+D に慣れすぎて Windows の cmd.exe で EXIT を打つのが面倒…
というか Windows でも cmd.exe のほうがある程度の処理は簡単な体に…
それはどうでもよくて。

インタラクティブシェルだと嫌でも Python と比較してしまう。
静的言語を無理やり使うのだから Python レベルを求めるのは無謀か。