月曜日, 10月 31, 2011

Beagleboard

最近BeagleBoard-xMなるものを購入しました。ARMを積んでUbuntuを動かすことの出来るボードでこの手のものとしては安くかつ簡単に使うことができます。導入の仕方はいろいろなページに詳しく書かれていますので割愛させていただきます。

参考までにBeagleBoardを使うために購入したもののリストと参考にしたサイトのリストを載せておきます。
PLANEXのWiFiアダプターは最新のカーネルならばさすだけであっけなく使えます。Ubuntuの導入も仮想マシンなどでx86 Ubuntu環境を用意しておけば最初に紹介したサイトであっけなく導入できますので簡単です。
USBシリアル変換機はMac OS X対応とはうたっていませんが、FTDIのサイトからMac用のドライバを入手できますし、Linuxならばつなぐだけで簡単に使えます。

土曜日, 8月 13, 2011

Emacs 23.3.50 フルスクリーン Lion 対応版

Lionのフルスクリーンに対応したパッチを書いてみました。このパッチはインライン入力パッチを当てたbzr HEAD向けに書いてあります。でも、たぶん23.3のリリース版でも行けるとはおいもます。

このパッチを当てる前に次のパッチを当ててください。ツールバーは非表示をお勧めします。表示しているとおかしくなるかもしれません。




=== modified file 'lisp/term/ns-win.el'
--- lisp/term/ns-win.el 2011-08-11 15:25:25 +0000
+++ lisp/term/ns-win.el 2011-08-11 15:29:03 +0000
@@ -912,6 +912,13 @@

(declare-function ns-emacs-info-panel "nsfns.m" ())

+(defun ns-fullscreen-toggle ()
+ (interactive)
+ (ns-fullscreen-toggle-cocoa))
+
+(declare-function ns-fullscreen-toggle "nsfns.m" ())
+
+
(defun ns-do-emacs-info-panel ()
(interactive)
(ns-emacs-info-panel))

=== modified file 'src/nsfns.m'
--- src/nsfns.m 2011-08-11 15:25:25 +0000
+++ src/nsfns.m 2011-08-11 16:03:46 +0000
@@ -2089,6 +2089,25 @@
else
error ("%s", SDATA (result));
}
+
+DEFUN ("ns-fullscreen-toggle-cocoa",Fns_fullscreen_toggle_cocoa,Sns_fullscreen_toggle_cocoa, 0, 0, 0,
+ doc: /* Toggle cooca full-screen */)
+ ()
+{
+ struct frame *sf = SELECTED_FRAME ();
+ check_ns();
+ if(sf)
+ {
+ BLOCK_INPUT;
+ EmacsView *view = (EmacsView*)FRAME_NS_VIEW(sf);
+ EmacsWindow *window = (EmacsWindow*)[view window];
+ [window toggleFullScreen:nil];
+
+ UNBLOCK_INPUT;
+ }
+ return 0;
+}
+
#endif


@@ -2665,6 +2684,7 @@
defsubr (&Sns_list_colors);
#ifdef NS_IMPL_COCOA
defsubr (&Sns_do_applescript);
+ defsubr (&Sns_fullscreen_toggle_cocoa);
#endif
defsubr (&Sxw_color_defined_p);
defsubr (&Sxw_color_values);

=== modified file 'src/nsmenu.m'
--- src/nsmenu.m 2011-06-16 15:31:16 +0000
+++ src/nsmenu.m 2011-08-11 17:00:38 +0000
@@ -1000,6 +1000,7 @@
-------------------------------------------------------------------------- */
{
[[FRAME_NS_VIEW (f) toolbar] setVisible: NO];
+ [[FRAME_NS_VIEW (f) window] setToolbar:nil];
}

void
@@ -1069,6 +1070,10 @@
#undef TOOLPROP
}

+ NSWindow *win = [FRAME_NS_VIEW (f) window];
+ if ([win toolbar] != toolbar)
+ [win setToolbar:toolbar];
+
if (![toolbar isVisible])
[toolbar setVisible: YES];


=== modified file 'src/nsterm.h'
--- src/nsterm.h 2011-08-11 15:25:25 +0000
+++ src/nsterm.h 2011-08-11 17:11:56 +0000
@@ -95,6 +95,9 @@
{
NSPoint grabOffset;
}
+
+- (BOOL) isFullScreen;
+
@end



=== modified file 'src/nsterm.m'
--- src/nsterm.m 2011-08-11 15:25:25 +0000
+++ src/nsterm.m 2011-08-11 17:09:55 +0000
@@ -1176,7 +1176,17 @@
/* constrain to screen if we can */
if (screen)
{
- NSSize sz = [screen visibleFrame].size;
+ NSSize sz = NSMakeSize(0,0);
+ if([[window className] compare:@"EmacsWindow"] == NSOrderedSame){
+ EmacsWindow *ew = (EmacsWindow *)window;
+ if([ew isFullScreen]){
+ sz = [screen frame].size;
+ sz.height += 22;
+ }
+ }
+ if(sz.width == 0 && sz.height == 0){
+ sz = [screen visibleFrame].size;
+ }
NSSize ez = { wr.size.width - sz.width, wr.size.height - sz.height };
if (ez.width > 0)
{
@@ -5156,6 +5166,7 @@
win = [[EmacsWindow alloc]
initWithContentRect: r
styleMask: (NSResizableWindowMask |
+ NSTitledWindowMask |
NSMiniaturizableWindowMask |
NSClosableWindowMask)
backing: NSBackingStoreBuffered
@@ -5187,8 +5198,8 @@
toolbar = [[EmacsToolbar alloc] initForView: self withIdentifier:
[NSString stringWithFormat: @"Emacs Frame %d",
ns_window_num]];
- [win setToolbar: toolbar];
- [toolbar setVisible: NO];
+ /* [win setToolbar: toolbar];
+ [toolbar setVisible: NO]; */
#ifdef NS_IMPL_COCOA
toggleButton = [win standardWindowButton: NSWindowToolbarButton];
[toggleButton setTarget: self];
@@ -5221,6 +5232,13 @@

[self allocateGState];

+ NSApplicationPresentationOptions options = [NSApp currentSystemPresentationOptions];
+ [NSApp setPresentationOptions: options |
+ NSApplicationPresentationFullScreen |
+ NSApplicationPresentationAutoHideToolbar];
+ [win setCollectionBehavior:[win collectionBehavior] | NSWindowCollectionBehaviorFullScreenPrimary];
+
+
ns_window_num++;
return self;
}
@@ -5725,6 +5743,27 @@
[super mouseDragged: theEvent];
}

+-(NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)aScreen
+{
+ if ([self isFullScreen]) {
+ NSRect result = [[NSScreen mainScreen] frame];
+ result.size.height += 22;
+ if([self toolbar])
+ result.size.height -= 32;
+ [[self delegate] windowWillResize:self toSize:result.size]; /* ad-hock implemention */
+ return result;
+ } else {
+ [[self delegate] windowWillResize:self toSize:frameRect.size]; /* ad-hock implemention */
+ return [super constrainFrameRect:frameRect toScreen:aScreen];
+ }
+}
+
+- (BOOL) isFullScreen
+{
+ BOOL inFullScreen = ([self styleMask] & NSFullScreenWindowMask) == NSFullScreenWindowMask;
+ return inFullScreen;
+}
+
@end /* EmacsWindow */




火曜日, 8月 02, 2011

アップデート

ご無沙汰しております。正月以来ですから八ヶ月ぶりですね。

さて、今月中にQt BSch3VとRemovable Disk Cleanerのアップデートを予定しています。Removable Disk Cleanerのほうはバグ修正の小規模なアップデートですが、Qt-BSch3Vのほうはかなりのコードを書き直しています。古い、Q3Supportが必要なコードを完全に排除し、Carbonのコードも排除しましたので、次回から64bit Cocoaアプリケーションになります。リファクタリングが主ですので機能の追加はないか、あっても小規模にとどまる予定です。ただ、もしQt-BSch3Vを改造する場合には見通しがよくなっていると思います。

そういえば「備え」と「Export for Webmail」の頒布は終了しました。これらは、私自身が使っていないためメンテナンスを継続することが出来ないことと、最近のMac OS Xの標準機能でも十分対応できることから終了とさせていただきました。

木曜日, 1月 06, 2011

あけましておめでとうございます

2011年もよろしくお願いします。

さて、新年早々 Removable Disk Cleaner をアップデートしました。今までのバージョンはネットワークドライブをマウントした状態で起動できなかったので、その対策です。ネットワークドライブは選択できないようになっています。もう少し機能を向上させてからリリースしたかったのですが、ほかにもTO DOがたまっているのでとりあえずバグ修正だけです。

日曜日, 12月 05, 2010

Chromium OS




Chrome OSのオープンソース版のChromium OSをビルドしSDカードにインストールしてみました。ビルド方法は公式ページを見てください。私はVMware FusionでUbuntu 10.04 64 bitを走らせ、その上でビルドしました。Chromium OSは当初はUbuntuベースでしたがビルド画面をみると現在はGentooベースのようですね。また、マルチコアを活用したビルドをしてくれるので、わりと快適にビルドするとこが出来ました。
さて、どこかのニュースサイトでCaps Lockがサーチキーになっていると出ていましたが、これはChromeの新しいタブが開くだけのようですね。アドレスバーにフォーカスが移っていますのでそのまま入力すれば検索が出来るようです。あとは日本語入力できました。ところでChrome OSは高速起動が売りでしたがUbuntuに比べれば早いですが、特別早いという印象は受けませんでしたね。多分これはSDカードを使っているのが理由でしょうからHDDなりSSDにインストールすればだいぶかわると思います。なお、使用したSDカードはKINGMAXの8GB class 6です。
メモリの使用状況を見てみたのですが、やはりChromeである以上結構メモリは食うようです。メモリ1GBくらいはないと使い物にならないかもしれません。

ところで誰かChromium OSでスクリーンショットをとる方法をご存知でないでしょうか。こんな携帯で撮った写真ではなく、もうちょっとまともな画像をのせたいので。

木曜日, 8月 26, 2010

Netbook その3

さて、まずWindows XPを消してしまいました。もともとあまり使うつもりがなかったうえに、何かの拍子に立ち上がらなくなってしまったので、ならば消してしまえとUSBから起動してGPartedで消してLinux領域を拡張しました。もし気が向いたらディスクイメージから復元してみることとします。追記:復元できませんでした。

前回の記事で書いてあった無線LANの問題ですが、これは解決しました。Ubuntu Forumsの記事に従い、Kernel.orgからドライバをダウンロードします。あとは./scripts/driver-select ath9kでドライバを選択し、make && make installでリブートすればOKです。しかし、これはカーネルアップデートのたびに必要になりそうで嫌ですね。

次にグラフィックスの問題です。EeePC 1001PXが採用しているのはGMA3150なので、どうもUbuntu 10.04にはこのドライバが入っていないようです。そこでIntel Linux Graphicsのサイトからドライバをダウンロードしたのですが、どうやってシステムに組み込むのか分かっていないのでまだ苦戦中です。どうもGMA3150をサポートしたドライバも無線LANのドライバも次のUbuntu 10.10には入るようなのでグラフィックスくらいはそれまで我慢すべきかもしれません。

Netbook その2

ディスクイメージを作成しています。外付けの120GBのハードディスクを用意しext4でフォーマットし直して使っています。実はMacBookに最初についてきたものなんですけどね。Eee PCは160GBの内蔵ディスクをもっているのでそのままではコピーできません。そこでgzip --fastで圧縮しながらコピーをしています。コマンドは以下の通りです。

sudo dd if=/dev/sda conv=sync bs=1M | gzip --fast > original.img.gz

これで圧縮済みのディスクイメージが作られるはずです。復元のときは

gunzip -c original.img.gz | sudo dd of=/dev/sda conv=sync bs=1M

とでもすれば復元できると思います。

追記:残念ながら復元できませんでした。

さらに追記

gunzip -c original.img.gz | sudo dd of=/dev/sda conv=notrunc bs=1M

で復元できました。

あらかじめ空き領域をゼロクリアしてあるのでその部分は圧縮が大きく効き大幅に小さなイメージとなりました(12 GB)。しかし、topコマンドでCPUの使用状況を見るとかなりのCPU時間をgzipが使っているので十分な大きさのディスクを用意できる場合には圧縮せずにやった方が時間が節約できてよいでしょう。

バックアップが完成したら今度はLinuxのインストールです。このEeePCはあらかじめパーティションが切ってあったのですが、この通りにはやりたくなかったのでGPartedを使って切り直します。Windowsは一応残しますが、あまり使うつもりはないのでハードィスクの内側に移動させ30GBに縮小しました。リカバリ領域やDドライブはいらないのでこれらも削除。開いた領域をUbuntuに割り当ててみました。その先のインストールはインストーラーまかせです。

さて、起動してみたものの無線LANが使えません。グラフィックのアクセラレーションも効いていないようです。この辺は解決したら、また追記します。

水曜日, 8月 25, 2010

Netbook その1

Eee PC 1001PXを買ってしまいました。いままでLinuxを試したりするのはMacBookのVMware上でやっていたのですが、限界を感じたので安いNetbookで代替にしようと思って買いました。Amazonの値段だけで実物を見ずに買ってしまったのですが、届いてみたら思ったよりまともでしたね。キーボードもあまり変な配列でもなく記号が小さくなっていることもなく、キーピッチもブラインドタッチに十分なので、これで3万円弱なら安いものです。まあ、値段なりにキーボードはペコペコしますしタッチパッドもあまりよくはないですけどね。3万弱という値段にひかれておもちゃにするつもりで買ったのでメモリを増設したりするつもりはありません。

早速Ubuntu Netbook Editionのインストールでもしたいところなのですが、あとでリカバリをできるようにしておきたいので、内蔵ディスクのディスクイメージを作ろうと思っています。作り方はこのサイトを参考にddコマンドを使ってgzipで圧縮しながら書き出すつもりです。しかし、圧縮するなら未使用領域をゼロクリアしておいた方がよいだろうと思って適当なプログラムを書いて現在ゼロクリア中です。

しかし、パフォーマンスもWindows XPでブラウジングする程度ならば十分ですね。さすがに重たい処理はさせたくありませんが、Netbookだけにネットをちょっと触る分には十分です。Core2 Duo 2GHz上のVMwareよりは快適かもしれません。もっともこれはメモリをもっと積めば解決する問題だったりしますけどね。