2012年10月22日月曜日

[linux] ubuntu 12.04 で eclipse の起動エラー




さっき eclipse を起動しようとしたら, こんなのが出てダメでした.

log ファイルを見ろ, という事なので見てみると



~/.swt/lib/linux/x86_64/libswt-gtk-3740.so



~/.swt/lib/linux/x86_64/libswt-gtk.so

がないらしい.




Ubuntu12でEclipse3.7が起動できない話。 - (define -ayalog ’())

にのってる通り,


/etc/eclipse.ini



Djava.library.path=/usr/lib/jni


を追加でOKでした.

2012年9月23日日曜日

[linux] CPUの動作速度の設定

新しくPC買ったので、 /proc/cpuinfo を見てみたら、動作クロックが 3.20GHz のはずが、 全部のコアで 1.60GHz になってました。

 今、最大クリークをなんの工夫もなしに探すっていう実験をしてるので、動作クロックが半分なのは困る・・・

という事で、いろいろ調べて動作クロックを上げてみました。
とりあえず忘れないようにメモ。



まずは、 cpufrequtils  をインストール。

$ sudo apt-get install cpufrequtils

その後、CPUの状態確認のために

$ cpufreq-info

実行しました。

やっぱり動作クロックは 1.60GHz でした。

動作クロックは max と min があるらしく、うちの環境では

max : 3.20GHz
min : 1.60GHz

になってるようです。



で、動作クロックの決定には 5つのポリシーがあるみたいです。

  •  conservative : 負荷に応じてクロックを変更する。(緩やかな変化)
  •  ondemand : 負荷に応じてクロックを変更する。 (急激な変化)
  •  userspace : ユーザが設定したクロック
  •  powersave : 常に最低クロック
  •  performance : 常に最高クロック

デフォルトでは ondemand になってることが多いようです。


これを performance にするには、

$ sudo cpufreq-set -c [cpu番号] -g performance

を実行します。

コアが4つの場合は、 cpu0 から cpu3 まであると思うので、 4 回実行すればOK ですね。



------------ 追記 ------------

再起動すると設定が ondemand に戻ってしまうことがあるようです。

2012年9月22日土曜日

[linux] VIDEO_TS → ISOイメージ に変換して再生する

ubuntuで、VIDEO_TS フォルダを、isoイメージにして再生する方法のメモです。

※10月から、保護されているDVDのリッピングは違法になります。違法コピーはやめましょう
詳しくはこちら↓
http://internet.watch.impress.co.jp/docs/special/fukui/20120712_546131.html

リッピングをしたい方は他をあたってください。当ブログでは紹介していません。


0. 環境

あまり古くないubuntu系のOSが入っている環境ならできると思います。

今回試した環境は、 Ubuntu Studio 12.04 64bit です。

フォルダ→ISOにするだけなので、DVDドライブがなくても大丈夫です。


1. DVDを再生できるようにする

※もうやってる方は飛ばしてください。

インストール直後のUbuntuでは、ガードのかかっていない自作DVDですら再生できません

まずは、ubuntu restricted extras パッケージをインストールして、自作DVDを再生できるようにしましょう。

コマンドでインストールするには、

$ sudo apt-get install ubuntu-restricted-extras

です。

Synapticパッケージマネージャ、Ubuntuソフトウェアセンターを使いたい方は、   ubuntu restricted extras  で検索してください。

これだけで、ガードのかかっていないDVDの再生はできます。


ガードがかかっている市販のDVDを再生できるようにするには、次のコマンドを実行して、 libdvdcss2 パッケージをインストールしましょう。

$sudo /usr/share/doc/libdvdread4/install-css.sh

これで市販のDVDも再生できます。


2. ISOイメージの作成

以下では、自分のホームディレクトリ( ~/ )に、VIDEO_TS が入ったフォルダ mydvd がある場合について書きます。適宜読み替えてください。

ホームディレクトリで、以下のコマンドを実行します。

$mkisofs -dvd-video -o mydvd.iso mydvd

これで、 mydvd.iso ができあがります。

確認したい場合は、

$isoinfo -l -i mydvd.iso

で確認しましょう。



3. マウントして再生

このままでは再生できないので、iso イメージをマウントします。

まずはマウントするために、/mnt/iso を作成します。(ここにマウントします)

$sudo mkdir -p /mnt/iso

つぎに、実際にマウントしましょう。

$sudo mount -o loop mydvd.iso /mnt/iso

あとは totem(動画プレイヤー)で再生しましょう。

$totem dvd:///mnt/iso 






4. 取り外し

 
別のisoをマウントするときは、次のコマンドでマウント解除してからにしましょう。
 
$sudo umount /mnt/iso
 
 
 
 

参考URL:

1. David Grant's blog : Create ISO and DVD from VIDEO_TS folder in Linux

http://www.davidgrant.ca/create_iso_and_dvd_video_ts_folder_linux

2. 福井弁護士のネット著作権ここがポイント 2012年著作権法改正でどう変わる? DVDリッピング規制Q&A編

http://ubuntuapps.blog67.fc2.com/blog-entry-384.html

2012年8月1日水曜日

[Linux][LaTeX] awkを使ってLaTeXの表を書く

処理時間などの表を,LaTeXで書くのって結構めんどくさいんですよね.

もっといい方法があるかもしれませんが,awkの基本的な機能を使ってLaTeXの表を書く方法をメモしときます.



1. データファイルの用意

データファイルは,data1, data2とします.これを組み合わせてひとつの表にします.

data1:
1000 0.0007979870 987
2000 0.0014159679 1942
3000 0.0017130375 2857
4000 0.0019850731 3759
5000 0.0027661324 4628
6000 0.0034708977 5473
7000 0.0040469170 6282
8000 0.0047509670 7028
9000 0.0053861141 7776
10000 0.0058817863 8499

data2:
1000 0.0008270741 980
2000 0.0014939308 1943
3000 0.0025620461 2868
4000 0.0019671917 3746
5000 0.0026450157 4594
6000 0.0035498142 5421
7000 0.0042159557 6209
8000 0.0048799515 6986
9000 0.0057148933 7745
10000 0.0060670376 8470

ちなみに,これはクイックソートの処理時間と再帰呼び出しの回数です


2. joinコマンドでファイルを連結

次に,joinコマンドでファイルを連結します.

ファイルが2つだけのときは,次のようにすると連結できます.

$ join data1.dat data2.dat > join.dat

出力結果は,次のようになります.

$ cat join.dat
1000 0.0007979870 987 0.0008270741 980
2000 0.0014159679 1942 0.0014939308 1943
3000 0.0017130375 2857 0.0025620461 2868
4000 0.0019850731 3759 0.0019671917 3746
5000 0.0027661324 4628 0.0026450157 4594
6000 0.0034708977 5473 0.0035498142 5421
7000 0.0040469170 6282 0.0042159557 6209
8000 0.0047509670 7028 0.0048799515 6986
9000 0.0053861141 7776 0.0057148933 7745
10000 0.0058817863 8499 0.0060670376 8470


ファイルが3つ以上のときは,パイプを使って,

$ join data1.dat data2.dat | join - data3.dat | join - data4.dat .....

というふうに連結します.


3. awkでLaTeXのソースを出力

あとはとても簡単です.

列ごとの出力の間に,"&"を出力して,最後に"\\"を出力すればいいんです.

awkでは出力を列ごとに行うので,列を$1, $2, $3...で表します.

たとえば,join.datからデータ数と計算時間を得るには,$1,$2,$4が必要なので,

$ awk '{print $1 " & " $2 " & " $4 "\\\\"}' join.dat
1000 & 0.0007979870 & 0.0008270741\\
2000 & 0.0014159679 & 0.0014939308\\
3000 & 0.0017130375 & 0.0025620461\\
4000 & 0.0019850731 & 0.0019671917\\
5000 & 0.0027661324 & 0.0026450157\\
6000 & 0.0034708977 & 0.0035498142\\
7000 & 0.0040469170 & 0.0042159557\\
8000 & 0.0047509670 & 0.0048799515\\
9000 & 0.0053861141 & 0.0057148933\\
10000 & 0.0058817863 & 0.0060670376\\

これで完了です.

バックスラッシュ(\)はエスケープシーケンスなので,"\\"で表します.


4.データを粗くしたいとき

data1, data2ではデータを1,000ずつとっていますが,これを50,000までとったときなどはさすがに全部載せると長いですね.

そういう時は,剰余の演算を使って,awkに条件をつけます.

2,000ずつ出力するには,

$ awk '$1 % 2000 == 0 {print $1 " & " $2 " & " $4 "\\\\"}' join.dat
2000 & 0.0014159679 & 0.0014939308\\
4000 & 0.0019850731 & 0.0019671917\\
6000 & 0.0034708977 & 0.0035498142\\
8000 & 0.0047509670 & 0.0048799515\\
10000 & 0.0058817863 & 0.0060670376\\

こんな感じです.

1,000の時だけは特別に表示したいなんてときは,OR(||)も使って,こんな風にしてます.

$ awk '$1 % 2000 == 0 || $1 == 1000 {print $1 " & " $2 " & " $4 "\\\\"}' join.dat
1000 & 0.0007979870 & 0.0008270741\\
2000 & 0.0014159679 & 0.0014939308\\
4000 & 0.0019850731 & 0.0019671917\\
6000 & 0.0034708977 & 0.0035498142\\
8000 & 0.0047509670 & 0.0048799515\\
10000 & 0.0058817863 & 0.0060670376\\



5. おわりに

自分が最近やってみた方法を載せてみました.

この方法はめんどくさい感じがするので,データが少ないときは普通に書いたほうが楽かもしれないですね.

もうちょっとスマートなやり方があったらいいなー
と思ってます.

2012年7月28日土曜日

[Linux] GNU typist でタイピングの練習

GNU typist という,タイピングソフトがあります.

数年前にちょっとやったことがあるのですが,タイピングの練習をしたくなったのでインストールからやってみました.


○インストール


インストールは次のコマンドで一発です

$ sudo apt-get install gtypist

インストールはこれで完了,簡単ですね.



○使い方


インストールも簡単でしたが,使い方もめちゃくちゃ簡単です.

起動は

$ gtypist

でOKです.

起動すると,下の図のような画面になります.
画面が出ない場合は端末のサイズを大きくしてみてください.これ以降,続行できない等の問題も,多くは端末のサイズ変更で解決できます(たぶん).


いろいろなレッスンが選択できますが,上下キーで選んで,スペースキーorリターンキーで決定します.

このあとは色々と説明の文章(英語)が出てきますが,スペースorリターンで進んでいくと,レッスン開始になります.

途中で終了するときは[Esc]-E,タイピングが終わって次に進むときはN,もう一回トライするときはRです.

ミスタイプ率が3.0%以上になると強制的にやり直しになります.

メニュー画面から終了するときは[Esc]を何回かタイプしましょう.


あと,typistに限らずですが,特にtypistではホームポジションが大事です.

これを機会にホームポジションを身につけましょう!

2012年7月26日木曜日

[Linux] ファイル・ディレクトリのサイズ

CUIでディレクトリのサイズを調べる方法のメモです.



○ls

lsコマンドはファイルの一覧を表示する(Windowsではdirかなんかだったと思います)コマンドで, -lオプションを指定すればファイルサイズも出力してくれます.

ただ,そのままだと見づらいので,さらに h を付け加えて,

ls -lh

を実行すると,読みやすい適切な単位をつけて表示してくれます.


○du

duコマンドはファイルやディレクトリの使用容量を集計します.
du -h 
で適当な単位で表示できます.


○df

dfコマンドはメディアの使用量を表示します.
これも
df -h
で適当な単位で表示可能です.

[Linux] バッテリ監視プログラム(CLI)

Cとncursesで,バッテリ残量監視プログラムを作りました.

cursesは2年ぶりだったのでメチャクチャなプログラムですが使ってくれる方はどうぞ!

[Linux] CLIでバッテリ残量表示』に書いた, info と state の中身を top コマンドみたいに出力するだけです.

使い方は

端末で実行→[q]で終了

です.


コンパイルは

cc battery.c -o battery -lncurses -Wall

でできます.(-Wallはいらないです)


コンパイル時に,「ncurses.h なんてないよ」って言われたら,

sudo apt-get install libncurses5-dev

でインストールしてからコンパイルしてください.



battery.c
#include <ncurses.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

#define INFO "/proc/acpi/battery/BAT1/info"
#define STATE "/proc/acpi/battery/BAT1/state"

int main()
{
    int x=0, y=0;
    FILE *fp;
    char s[256];
    int key;

    initscr();
    noecho();
    cbreak();
    timeout(0);

    while(1)
    {
        x = 0;
        move(x, y);
       
/*     文字化けするのでコメントアウトします
        addstr("バッテリー監視ツールです.");
*/

        x++;
        move(x,y);
        addstr("http://musicadaui.blogspot.jp");
        x += 2;
        move(x,y);

        /*info の表示*/
       
        fp = fopen(INFO, "r");       
        if(fp == NULL) return(1);
       
        printw("%s :", INFO);

        while(fgets(s,256,fp) != NULL)
        {
            x++;      
            move(x,y);      
            printw("%s", s);    
        }

        fclose(fp);

        x += 2;    
        move(x,y);
   

        /* state の表示  */    
       
        fp = fopen(STATE, "r");    
        if(fp == NULL) return(1);
   
        printw("%s :", STATE);

        while(fgets(s,256,fp) != NULL)
        {      
            x++;      
            move(x,y);      
            printw("%s", s);    
        }

        refresh();
   
        key = getch();    
        if(key == 'q') break;
   
        usleep(50000);  
    }

    endwin();  
    return 0;
}



*2012.07.27 追記
インデントが崩れてしまっていたのを修正しました.
環境によって日本語が文字化けするので日本語出力部分をコメントアウトしました.

2012年7月25日水曜日

[Linux] CLIでバッテリ残量表示

最近,Openboxをパネルとか無しで使ってるので,バッテリ残量がわからなくて困りました.

CLIで確認できたので,メモしときます.

Ubuntu 11.04 で確認済みです.


各バッテリの情報は,

/proc/acpi/battery/

以下にあります.


それ以下は環境によって違うようですが,

batteryの下にBAT0やBAT1等の名前のディレクトリがあるようです.

ここではBAT1としますが,そのディレクトリの中に,

info, state, alarm

等のファイルがあるので,

catやmore等で内容を見ることでバッテリの残量が分かります.(見慣れている%表示では無いようです)

2012年7月17日火曜日

[HTML] 添字の書き方

HTMLで,数式を使った時に添字を書きたい時の書き方.

○下付き

A<sub>n</sub>

で,出力はこんな感じです.

An

○上付き

A<sup>n</sup>

で,出力はこんな感じです.

An




○おまけ

ちなみに,数式を書くときのフォントはTimesフォントが良いらしいです.

あと,変数にはイタリック体つかいましょう.

でも,普通はlogとかsinとかの関数はイタリック体にしないらしいです.

[LaTeX] 改ページしないclearpage

\clearpageを使うと,それまで出力されずにたまっていた図や表をまとめて出力できます.

でも,\clearpageをそのまま使うと,改ページしたくなくても改ページされてしまいます.

そこで,改ページせずに\clearpageするには(文章変だけど),

afterpage

というパッケージを使います.

usepackageでafterpageを読み込んでおき,


図や表を出力したいところで


\afterpage{\clearpage}

と書きます.

とっても簡単ですね.

詳しいことは LATEX2e 美文書作成入門 (奥村晴彦著)に書いてありますのでそちらをご参照ください.


[LaTeX] gnuplotでepsに日本語出力

gnuplotでの日本語出力はとっても簡単です.

もちろん,コマンドラインからだと入力できないですが,

プロットする命令とかをファイルに書いておいて,gnuplotに読み込ませれば簡単に出力できます.

たとえば,こんなファイル(test.plot)を作っておきます.

set terminal x11

set xlabel "n"

set ylabel "処理時間(秒)"

f(x) = 2**x

plot f(x) w l title "処理時間"


これを実行するには,gnuplotを起動して,


gnuplot> load "test.plot"

でOKです.



でも,epsに出力するとなると,ちょっとやっかいです.

Ubuntuの場合,先ほどのグラフを test.eps に出力するには test.plot に次のように書きます.


set terminal postscript eps enhanced color "GothicBBB-Medium-EUC-H"

set output "test.eps"

set xlabel "n"

set ylabel "処理時間(秒)"


f(x) = 2**x

plot f(x) w l title "処理時間"


太字の部分で,フォントの指定をしています.もちろん,フォント指定なしでもOKですが,日本語を使うときは指定しないとダメみたいです.

Ubuntuの場合,LaTeXの文字コードはEUCなので,ちゃんとEUC指定しましょう.

それから,この test.plot も文字コードをEUCにしなければなりません.


これでeps出力できます.




でも・・・

文字小さくないですか?

gnuplotのeps出力ではグラフの大きさが変わっても,文字の大きさが変わりません.

しかもちいさい.


そこで,ちょっと工夫しましょう.

先ほどの test.plot (eps出力版)をちょっといじって,


set terminal postscript eps enhanced color "GothicBBB-Medium-EUC-H"

set output "test.eps"

set xlabel "n"

set ylabel "処理時間(秒)"

set size 0.7,0.7

f(x) = 2**x

plot f(x) w l title "処理時間"


こんな感じにしましょう.

set size 0.7,0.7

でタテヨコの大きさが0.7倍になりますが,文字の大きさは変わりません.

あとはこれをtexに貼り付けるときに適当に拡大すれば,文字の大きさも丁度良くなります.

だいたい1.5倍くらいにすると,結構大きめな感じになりました.

2012年7月2日月曜日

Sonatina Symphonic Orchestra


Sonatina Symphonic Orchestra というサウンドフォントを見つけました。

ちょうど今曲を作っている最中なので、サイズはそこそこ大きかったですがダウンロードしちゃいました。

すごくいい音で感動しました!

デモは ここ で聞けました。


ただ、ダウンロードが torrent だったのでちょっとめんどくさかったです。

torrentとかあんまり使ったことなかったんですが、気になったのでちょっと調べました。


torrentはP2Pだったんですね。

他の人から少しずつデータをもらうかわりに自分も他の人にあげなきゃいけない・・・みたいな。

難しいことは wikipedia らへんにまかせといて、たくさん持っている人がいたらそれだけ速いってことらしいです。

詳しく知りたい人は Wikipedia をどうぞ。



ファイルが楽器ごとに分かれてるみたいなので、 timidity++ で使うにはCFGファイルを作らないとだめみたいです。

暇なときにやりますー。