Gentoo LinuxでMingw

Gentoo LinuxでMingwを使ったクロスコンパイル

crossdevをインストール

# emerge -v sys-devel/crossdev

/etc/make.confにPORTDIR_OVERLAYを追加

PORTDIR_OVERLAY="/usr/local/portage"

/usr/local/portageがない場合はディレクトリを作成

# mkdir /usr/local/portage

i686-mingw32の環境を構築

# crossdev --stable --target i686-mingw32

動作確認

次のようなサンプルコードをビルドしてみます。

mingw-sample.c

#include <windows.h>

int main()
{
  MessageBox(NULL, "Hello world!", "Hello world!", MB_OK);
  return 0;
}

ビルドは次のようにします。

$ i686-mingw32-gcc -mwindows -o mingw-sample.exe mingw-sample.c
$ i686-mingw32-strip mingw-sample.exe

ビルドしたファイルはwineで実行可能です。

$ wine mingw-sample.exe

もちろん、Windows環境に持って言って実行することもできます。

mingw-sample.exeの実行結果

stripはなくてもかまいませんが、デバックに使われるデータを削除して、ファイルサイズを小さくしたい場合に使います。

Firefoxの新規タブに表示される履歴を削除

いつの頃からかFirefoxで新しいタブを開いたときに、過去の履歴が表示されるようになりました。新規タブは空白のページを表示したいという場合は、下記の方法で設定できるようです。

有効・無効の設定

  1. 新しいタブをを開く
  2. タブの右上にあるアイコンをクリック

これで履歴の機能を有効・無効に設定できます。

履歴の機能を完全に削除

  1. ロケーションバーにabout:configと入力
  2. browser.newtab.urlabout:blankに設定

about:blankの代わりに任意のURLを設定することもできます。

PythonでUnicodeEncodeErrorとなる場合に

Pythonで端末のエンコーディング取得はgetpreferredencodingでできます。

>>> import sys
>>> locale.getpreferredencoding()
'cp932'

「あいうえお」と表示するスクリプト(sample.py)

# -*- coding: UTF-8 -*-
s = u'あいうえお'
print s

コマンドプロンプトから

> python.exe sample.py
あいうえお

出力をファイルにリダイレクト

> python.exe sample.py > sample.txt
Traceback (most recent call last):
  File "a.py", line 3, in <module>
    print s
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)

エンコーディングを取得するように修正

# -*- coding: UTF-8 -*-
import locale
encoding = locale.getpreferredencoding()
s = u'あいうえお'
print s.encode(encoding)

問題なく表示できます。

> python.exe sample.py
あいうえお