findで検索したファイルをディレクトリ構造そのままで別の場所にコピ
$ find ./ -name "ファイル名" -exec cp -p --parents {} コピー先ディレクトリ{} \;
vimプラグインで使えそうなものメモ
1. タグリスト表示 (Taglist.vim)
関数一覧を取得して、関数の先頭にジャンプできる。
別途 ctagsが必要。
コマンドモード :Tlistを実行することで関数一覧を表示
- ctags 日本語版
http://hp.vector.co.jp/authors/VA025040/ctags/
- Tablist.vim
http://www.vim.org/scripts/script.php?script_id=273
2. プロジェクト管理 (Project.vim)
コマンドモード :Projectを実行し、ノーマルモード \C
http://www.vim.org/scripts/script.php?script_id=69
3. 検索 (grep.vim)
外部grepを使っての便利なプラグイン。
コマンドモード :Grep hoge や GrepBuffer hoge で検索
ニコニコ動画の省エネ視聴
公式にはサポートされていませんが、下記エントリを参考に実行してみました。(すごい)
動作環境
- CPU: Core2Duo 2.2.6 GHz
- OS: Mac OS X 10.6.2
- ブラウザ: Google Chrome 5.0.307.11 beta
- 動画 : 【初音ミク PV】Chaining Intention【HD】
実行画面は、次のようになります。最大化などの一部の機能は使用できないようです。
パフォーマンス的にはどうなるのってことで、アクティビティモニタで見てみました。
ユーザ+システムあわせて 90% over しました。(;^_^A
ユーザ+システムあわせて60〜70%程度となり、Flash版と比べて20〜30% CPU使用率が改善されたことになります。(ノ*゚▽゚)ノ
※ 色んな要素 (動作環境、その他外的要因等) が絡むので一概には言えませんが 。。。
ニコニコ動画はよく利用するので、ぜひ正式にサポートしてほしいですね。
とりあえず、GoogleChromeの拡張機能とかで (Flash<=>HTML5) 切り替える機能とかあったら、うれしいなぁ 。。。
C言語の構造体(共用体)キャストの勉強
C言語でデータを抽象化する場合には、どうすれば良いか困ったので、
試してみました。※ レベルとしては、初級〜中級くらいだと思いますが 。。。
試したのは以下のキャスト
- サブクラスに相当する構造体(Sub) =>スーパークラスに相当する構造体(Super)
- 共用体メンバ(Sub) => 共用体(UnionData)
// test.c #include <stdio.h> // スーパークラス typedef struct { int a; } Super; // サブクラス typedef struct { Super super; int b; } Sub; // 共用体 typedef union { Super super; Sub sub; } UnionData; // メイン関数 int main(void) { Super* super; // スーパークラス Sub sub; // サブクラス UnionData* data; // 共用体 // 初期化 sub.super.a = 1; sub.b = 2; // サブクラス => スーパークラス へのキャスト super = (Super*) ⊂ printf("super.a = %d\n", super->a); // 共用体メンバ => 共用体へのキャスト data = (UnionData*) ⊂ printf("union.sub.b = %d\n", data->sub.b); return 0; }
以下の通り実行しました。
Warningも出ることなく、うまくいったようです。
はじめは、構造体(共用体)の実体をキャストしようとしてうまくいかなかったのですが、
実体ではなく、ポインタでやるといいようです。 (仕組みは良くわかっていませんが。。。)
shell$ gcc test.c -Wall
shell$ ./a.out
super.a = 1
union.sub.b = 2
Macでのディスクユーティリティ以外でのISO作成
Mac のディスクユーティリティで、突然ISO作成が出来なくなったのでメモ
コンソール上で、以下のコマンドで作成可能
$ hdiutil makehybrid -o 出力ファイルパス マウントポイント
参考
http://mac.kumadoumei.net/article/11043993.html
追記: マウントポイントは /Volumes 以下になるようです。 2010.2.27
Knopflerfish Eclipse Plugin プロジェクト作成・動作確認
前回、2010-01-15 - 日々是好日 の続き
1. プロジェクトの作成
メニューから [File]>[New]>[Project] を選択すると、以下のようにBundle Projectが加わっています。
これを選択します。
次に、 Bundle Project の設定を行います。 ここでは、プロジェクトの名前を入力します。
最後に、作成するバンドルの情報(マニフェストファイル内の情報、Activatorの情報)を入力します。
とりあえず、バンドルの雛形を作成するために、Create BundleActivator にチェックを入れて、終了します。
以上で、プロジェクトの作成が完了しました。
以下のように、バンドルスタート時にHello World!!と表示するように、print文を入れて、動かしてみましょう。
2. プログラムの実行
プロジェクトのディレクトリを右クリックして、[Run As]>[Run Configurations]を選択します。
すると、以下のような画面が立ち上がり、OSGiという項目があります。
OSGi項目上で、右クリックし、NEWを選択すると、実行するための構成を行うことができます。
次にBundles項目で、実行するバンドルの設定を行います。
ここでは、先程作成したバンドル(Available BundlesのWorkSpace Bundles Projects > OSGiTest) を選択して Addボタンを押します。
では、Applyボタンを押し、実行(Run)してみましょう。
Consoleを見ると、 Hello World!! と表示されました !!
ただ、現状では、Console上でコマンドを使用してバンドルの管理(install, start, stopなど) ができません。
先程のRun Configurations の Bundles項目で、Console上でコマンドを使用するためのバンドルをAddしておく必要があります。
これについては、まだわかっていない部分があるので、後ほど暇なときに書こうかなと思います。
※追記
Knopflerfish Eclipse Pluginに基本的なバンドルの構成が書かれていました。
これを参考にRun Configurations のBundles項目で、Knopflerfishから必要なバンドルを追加すればいいと思います。
若干バンドルのバージョンが異なるかもしれませんが ...
■ Log
log_all-1.0.0.jar
console_api-1.0.0.jar
cm_api-1.0.0.jar
■ Log and TTY console
log_all-1.0.0.jar
console_all-1.0.0.jar (Note: console_all is used instead of console_api)
cm_api-1.0.0.jar
consoletty-1.0.0.jar
frameworkcommands-1.0.0.jar
logcommands-1.0.0.jar
■ Log, TTY console and CM
log_all-1.0.0.jar
console_all-1.0.0.jar
cm_all-1.0.0.jar (Note: cm_all is used instead of cm_api)
consoletty-1.0.0.jar
frameworkcommands-1.0.0.jar
logcommands-1.0.0.jar
crimson-1.1.3.jar (Note: any XML implementation exporting org.xml.sax packages can be used)
■ Log, TTY console, CM and desktop
log_all-1.0.0.jar
console_all-1.0.0.jar
cm_all-1.0.0.jar
consoletty-1.0.0.jar
frameworkcommands-1.0.0.jar
logcommands-1.0.0.jar
crimson-1.1.3.jar
desktop_all-1.1.0.jar
util-1.0.0.jar
Knopflerfish Eclipse Plugin 環境構築
ググっても見つからなかったので、色々とやってみました。
Eclipseの導入は飛ばして、まずは プラグインのインストールから。
(ちなみに、開発環境はMAC OS X です )
1. Knopflerfish Eclipse Plugin インストール
通常のプラグインインストールと同様、アップデートサイトを指定してインストールする。
アップデートサイト URL は http://www.knopflerfish.org/eclipse-update/
ウィザードを進めていくと、インストールが完了します。
2. Eclipse 環境設定
プラグインをインストールすると、以下の画面のように環境設定でOSGiという項目が出現します。
ここで、OSGi の Bundle Repositories, Environments, Frameworks を設定していきます。
まずは、Frameworksから。
ここで、使用するOSGiフレームワークを追加します。
※追加前にOSGiフレームワーク本体をダウンロードしてくる必要があります。
次は、Enviornments。ここで、OSGiの実行環境を指定する。
とりあえず、デフォルトのJREでOK
最後に、Bundle Repositories。これを設定しないと、Knopflerfishで用意されているバンドル
がインストールできなかったりしました。
ここでは、レポジトリの名前を適当に入力して、フレームワークを Name of framework から指定します。
以上で、Eclipseの設定は終わりです。
次回は、プロジェクトを作って、簡単なサンプルを動かしてみます。