日曜日, 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よりは快適かもしれません。もっともこれはメモリをもっと積めば解決する問題だったりしますけどね。

木曜日, 6月 03, 2010

Cocoa Emacs 23.2.50 フルスクリーン

勉強がてらEmacsフルスクリーンパッチを書いてみました。既に他の方がやっておられるので二番煎じにはなりますが、若干手法が違います。また、Snow Leopardから導入されたAPIを利用しているのでSnow Leopard以降でしか動きません。あまりテストはしていないので自己責任でお使いください。


=== modified file 'lisp/term/ns-win.el'
--- lisp/term/ns-win.el 2010-04-16 06:58:56 +0000
+++ lisp/term/ns-win.el 2010-06-03 09:11:14 +0000
@@ -894,6 +894,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 2010-04-16 06:58:56 +0000
+++ src/nsfns.m 2010-06-03 09:08:00 +0000
@@ -2096,6 +2096,24 @@
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 setFullScreen:![window isFullScreen]];
+ UNBLOCK_INPUT;
+ }
+ return 0;
+}
+
#endif


@@ -2672,6 +2690,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/nsterm.h'
--- src/nsterm.h 2010-04-16 06:58:56 +0000
+++ src/nsterm.h 2010-06-03 09:26:01 +0000
@@ -94,7 +94,13 @@
@interface EmacsWindow : NSWindow
{
NSPoint grabOffset;
+ BOOL fullScreen;
+ NSRect windowSize;
}
+
+- (void) setFullScreen: (BOOL)fullscreen;
+- (BOOL) isFullScreen;
+
@end



=== modified file 'src/nsterm.m'
--- src/nsterm.m 2010-05-28 02:22:49 +0000
+++ src/nsterm.m 2010-06-03 09:40:02 +0000
@@ -1151,7 +1151,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)
{
@@ -5689,6 +5699,47 @@
[super mouseDragged: theEvent];
}

+-(NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)aScreen
+{
+ if ([self isFullScreen]) {
+ NSRect result = [[NSScreen mainScreen] frame];
+ result.size.height+= 22;
+ [[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];
+ }
+}
+
+- (void) setFullScreen: (BOOL)newfullscreen
+{
+ fullScreen = newfullscreen;
+ if(fullScreen)
+ {
+ [NSApp setPresentationOptions:NSApplicationPresentationAutoHideDock | NSApplicationPresentationAutoHideMenuBar | NSApplicationPresentationDisableMenuBarTransparency];
+ NSRect rect = [[self screen] frame];
+ rect.origin.y = 0;
+ rect.origin.x = 0;
+ rect.size.height += 22;
+ windowSize = [self frame];
+ [self setMovableByWindowBackground:YES];
+ [self setFrame:rect display:YES animate:YES];
+ [self setFrameOrigin:NSMakePoint(0,100)];
+ }
+ else
+ {
+ [self setFrame:windowSize display:YES animate:YES];
+ [NSApp setPresentationOptions:0];
+ //[[self delegate] windowWillResize:self toSize:[self frame].size];
+ }
+}
+
+- (BOOL) isFullScreen
+{
+ return fullScreen;
+}
+
@end /* EmacsWindow */


木曜日, 5月 20, 2010

Cocoa Emacs 23.2.50 inline patch

現在のCocoa EmacsのInline patchはけっこう落ちやすいです。原因をようやく特定して修正に成功したのでパッチをおいておきます。最新のSVNのパッチを当てた上でさらにこのパッチを当ててください。

=== modified file 'src/nsterm.m'
--- src/nsterm.m 2010-04-16 12:26:35 +0000
+++ src/nsterm.m 2010-05-19 15:11:30 +0000
@@ -3918,7 +3918,7 @@

struct frame *emacsframe = SELECTED_FRAME ();

- if (mac_store_change_input_method_event())
+ if (emacs_event && mac_store_change_input_method_event())
{
emacs_event->kind = NS_NONKEY_EVENT;
emacs_event->code = KEY_MAC_CHANGE_INPUT_METHOD;

ただ単にemacs_eventがNULLの場合があって、そのときにアクセスすると落ちるようですね。

月曜日, 3月 15, 2010

間が空きましたが

一ヶ月以上間が空あてしまいました。この間、QtBSch3Vの方は全く進んでいませんでしたが、今日になってようやく手を付け始めました。とりあえず回路図エディタだけはQ3で始まるヘッダをすべてなくしましたが、まだまだQ3Supportが残っているようで大量のエラーと戦いながら地道につぶしています。

金曜日, 2月 12, 2010

iTunes

今日はちょっとしたAppleScriptを載せておきます。
iTunesのウインドウを最大化するためのスクリプトです。MacのiTunesはディスプレイサイズが変わったときにウインドウサイズが適切な大きさにならずにサイズを変更できなくなるので作りました。

tell application "Finder"
set displayBounds to bounds of window of desktop
end tell
set winBounds to bounds of window 1 of application "iTunes"
set item 2 of displayBounds to 22
set bounds of window 1 of application "iTunes" to displayBounds
"iTunes"になっている部分を他のソフトウエアの名前に変えればそのまま動く気がします。

それはそうとQt-BSch3Vのリリース版でツールバーの挙動がおかしいですね。デバッグ中には正常に動いているので気づきませんでした。どうもQtをStatic Linkすると駄目なようです。次のリリースでは直したいところですが、うまい解決法が思いつかないので少々お待ちください。

火曜日, 2月 09, 2010

開発中

右上が新しいプロジェクトを作って始めたもの、右下は現行のQtBSch3V Modifiedで左はWineで動くBSch3V 20100204です。けっこうWineで動いてしまうもんですね。次いでだからQtCreaterもWineで入れてみようとしたらインストールはできたもののきちんと動きませんでした。
なお、英語表示なのは仕様です。

新しいプロジェクトを作った方が、、

Qt-BSch3Vですが新しいプロジェクトを作って全面的に書き換えた方が良い気がしてきました。現在C++で書かれている部分もフォームエディタ等を使うように書き換えた方がメンテナンス性もよく、コードが短くなります。一般的にコードが短い=バグが少ない、ですのでこのほうが良さそうですね。問題は作業量がものすごく増えることですが、とりあえず試すだけ試していけそうならその方向で試してみようと思います。

月曜日, 2月 08, 2010

Qt-BSch3V 0.47.002

ライブラリエディタ等を含んだVersion 0.47.002が本日公開予定です。ライブラリエディタ等がこのBlogのスクリーンショットにあるようなバージョンではなく、挙動がおかしな部分もありますが、とりあえずつかえるバージョンをリリースすることにしました。Version 0.47.003は再来週には公開したいですね。そのときまでに、挙動がおかしな部分を地道に直しておきたいと思います。

QtでSheet

賛否両論ありそうですが各種ダイアログをSheet化しています。いままでだとコメント挿入時にフォント選択ダイアログで難があったのですが、これで解決されました。問題はダイアログを移動できないので回路図を見ながら文字を書き込めないことですね。

ついでですのでQ3MainWindowとQ3ToolBarの除去が終わったQt-LCoVのスクリーンショットも公開しておきます。こっちも可能な限りSheet化して行く予定です。あと、BSch3Vと色を合わせた方が良さそうですね。

日曜日, 2月 07, 2010

Qt-LCoVのQt3Support排除中

現在Qt-LCoVからQt3Support依存を排除中です。現在Vectorに公開依頼中のVersion 0.47.002は水魚堂さんで頒布されているソースのごくごく一部を改変したもので外見がQt-BSch3Vにマッチしていません。

Qt3Supportを排除する上で面倒なのがQ3ToolbarとQ3ScrollView。この二つはアーキテクチャが大きく変わっており単純にQToolbarとQScrollViewに置き換えて一部を直すだけでは使えません。Qtのドキュメントとデモを参照しつつ試行錯誤しながら試すしかありません。なお、Qt-BSch3Vは、この影響でスクロールの挙動が少し変わりました。以前は部品を隅っこまで持って行けば自動スクロールしたのですが、現在はその機能がありません。そのうち実装したいと思いますが今はまだBSch3Vの全容を理解していないのでまだまだかかりそうです。

とりあえず開発目標は以下の通りです。
  1. Q3Supportの排除
  2. Windows版のBSch3Vで作ったファイルを読めるようにする。
  3. Macにあわせた挙動にする。
まだまだしばらくかかりそうですね。いつまでモチベーションが続くか分かりませんが、続く限り開発して行こうと思います。

ffmpegによるオーディオ変換

つまらないShell Scriptですが、いくつか変換用スクリプトを載せておきます。FFmpegは複雑すぎてよく分かりませんね。

  • FLVやMP4の動画から音楽ファイルをそのまま取り出す。
#!/bin/bash

if [ $# -ne 2 ]; then
echo "extractaudio [input] [output]"
exit 1
fi

ffmpeg -i "${1}" -acodec copy "${2}"

  • iPodやiTunesで再生可能な音楽ファイル(AAC)に変換する。
#!/bin/bash

if [ $# -ne 2 ]; then
echo "${0} [input] [output]"
exit 1
fi

ffmpeg -i "${1}" -vn -acodec libfaac -ac 2 -ar 44100 -ab 128k "${2}"

しかし、シェルスクリプトはこういうときに便利ですね。PerlやPythonを使うまでもないけどAliasじゃ無理な場合に重宝します

土曜日, 2月 06, 2010

累計ダウンロード数

いままでStork Labで公開してきたソフトウエアの累計ダウンロード数です。ときどき跳ね上がっているのは新しいソフトウエアをリリースした月ですね。今月はQt-BSch3Vをリリースしましたので、また跳ね上がってくれることを期待したいですね。Export for WebmailとRemovable Disk Cleanerもアップデートすればさらに跳ね上がってくれると思いますが、そこまで手が出るかは分かりません。

木曜日, 2月 04, 2010

Qt-BSch3V Modified 0.47.002

インストーラー化は諦めてQtをstatic linkすることにしました。ファイルサイズは大きくなりますが、Macの単純コピーでインストールできる利点を生かすにはStatic Linkしかありませんので。

という訳で0.47.002をVectorに公開申請しました。今度はライブラリエディタ等を含んだバージョンです。まだ、ライブラリエディタ等は手を入れていないので直すべき点が多くありますが、ライブラリエディタがないと使いにくいソフトですので早急にリリースすることにしました。ついでにBSch3Vにおいてコマンドキーを押すと選択が解除され、コピーができない問題にも対処しました。

そういえば更新回数がすでに去年と一昨年の回数を上回っていますね。

水曜日, 2月 03, 2010

インストーラー

現在インストーラーの作成に苦戦しています。Qtのライブラリを配置する都合上、インストーラーが必要なのですが、上手くインストールができません。OSのバージョンがあがるたびにツールもアップデートされているので過去のBlog記事もあてにならず、苦戦しています。

火曜日, 2月 02, 2010

Qt-BSch3V Modified 周辺ソフトウエア

周辺ソフトウエアもとりあえずビルドは通りました。アイコンを設定したくらいしか変更は入れてないませんけどね。ソースコードを整理してBSch3Vのコマンドキーで選択が解除される問題の解決版と一緒にリリースしたいと思います。
もし、ソースからビルドできる場合はapplications.cppの778行目の関数を以下のように訂正していただければなおります。
void ApplicationWindow::keyPressEvent ( QKeyEvent * e )
{
switch(e->key()){
case Qt::Key_S:
ToolSelector();
break;
default:
break;
}
}



日曜日, 1月 31, 2010

BSch3Vの周辺ソフトウエア





まだ、コードを書いていないのにアイコンから作ってます。しかし、Macのオンラインウエアの作者はどうやってアイコンを作っているのだろう。どれもきれいなアイコンばかりで私にはまねできません。どれも曲線を使わずにすむ記号ばかり使いました。

木曜日, 1月 28, 2010

Qt-BSch3V Modified

先ほどVectorに公開依頼をしました。なんとファイルサイズはBZip2圧縮で168.4MBもあります。そのうち150MBはQtのソースコードで15MBはQtのバイナリファイルだと思われます。別に欲しい人はメールで問い合わせてもらうことにしてもGPL的には構わないはずですが、一番確実な方法にしておきました。

iPad

Mac OS XではなくiPhone OSが来るだろうと思っていたら、やっぱりiPhone OSでした。このままMac OS 11はiPhone OSベースにでもなるんでしょうかね。さすがにパーソナルコンピュータのくくりではマルチタスクがないと無理でしょうけど。
私は今、iPod touchを音楽を聴く用途よりもドキュメントビューワーやWebブラウザとして使うことの方が多いので、私の用途にはマッチしそうです。それでも、まだまだ2年前に買った初代iPod touchが現役なので買うつもりはありませんが(当時5万円もしましたし)、これが寿命を迎えた頃に買いたいと思います。

火曜日, 1月 26, 2010

リリースしたいけど




Qt-BSch3Vですが、Vectorに公開申請してからQtのソースコード入れていないことに気づきました。GPLのため含めないとまずいので公開までしばしお待ちください。Qtのライセンスの確認しておきます。初回はQt-BSch3Vだけでライブラリエディタ等は含まれない予定です。含めていたらいつまでも公開できない気がするので。

しかし、QtをDynamic Linkすると、結構ファイルサイズが大きいですね。サイズが44MBほどあります。回路図エディタだけなら、全部一つのパッケージに入れてしまえばいいですが、ライブラリエディタもリリースしたときには共有した方が良さそうです。インストーラー付きにするかもしれません。もしくはQtは各自ダウンロードしてもらうようにするかですね。

日曜日, 1月 17, 2010

再びQt-Bsch

Qt4.6でビルドできない問題が解決しました。ただ単にリンク時に-framework Carbonを追加するだけで解決です。でもいずれCocoaなQtが主流になったら書き換えないといけないな。
いったん、どこかで開発途上版をリリースするつもりです。そうでないといつまでも公開できそうにありませんですので。

水曜日, 1月 06, 2010

Cocoa と Apple Event

Apple Eventを使おうと思ったのですが、Apple Scriptとの対応関係がよくわかりません。ならば直接Apple Scriptを実行してしまえとNSAppleScriptなんていうクラスを利用しています。AppleScriptとAppleEventはどこへ向かうのでしょうかね。Apple製ソフトウエアでもAppleScript非対応なんて言うのもありますし。もちろんUI Scriptingなんて方法があるのは知っていますけど。