vimプラグインで使えそうなものメモ

1. タグリスト表示 (Taglist.vim)
関数一覧を取得して、関数の先頭にジャンプできる。

別途 ctagsが必要。

コマンドモード :Tlistを実行することで関数一覧を表示

  • ctags 日本語版

http://hp.vector.co.jp/authors/VA025040/ctags/

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 で検索

http://www.vim.org/scripts/script.php?script_id=311

ニコニコ動画の省エネ視聴

公式にはサポートされていませんが、下記エントリを参考に実行してみました。(すごい)

動作環境

D



実行画面は、次のようになります。最大化などの一部の機能は使用できないようです。



パフォーマンス的にはどうなるのってことで、アクティビティモニタで見てみました。

ユーザ+システムあわせて 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*) &sub;
    printf("super.a = %d\n", super->a);

    // 共用体メンバ => 共用体へのキャスト
    data = (UnionData*) &sub;
    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を選択すると、実行するための構成を行うことができます。

Main項目で、名前を適当に入力します。

次に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の設定は終わりです。
次回は、プロジェクトを作って、簡単なサンプルを動かしてみます。