2009年11月27日金曜日

はてなに追加 MyYahoo!に追加 Googleに追加 del.icio.usに追加 livedoorClipに追加 Buzzurlに追加 GNU Global + emcas でソースコードドキュメント化

会社の後輩に教えてもらった方法。

ソースコードを読むとき普段はemacsを使ってちまちま検索してたんですが、
そんな苦労が一期に吹っ飛ぶ便利技

ソースコードのドキュメント化+tag付けして、可読性を上げましょうってことです。

ソースコードのドキュメント化と言えば
Doxygen
の存在は知ってたんですが、書式(?)があるっぽくてなかなか手が出せずにいました

教えてもらったGNU Globalってのは、
何も気にせず簡単にHTML化してくれて、tag付けまでやってくれる優れもの
対応言語:
  • C
  • C++
  • Yacc
  • Java
  • PHP4

php4って書いてるけど、php5でも大丈夫なのか?? ということでインストール
参考サイト
ソースコードを快適に読むための GNU GLOBAL 入門 (前編)

主要なディストリビューションなら特に気にせず、apt やyum 何かで入る模様
ubuntuでは。。

sudo apt-get install global
で終了。何とも簡単w

<emacsの設定>

参考サイト
42.5 タグジャンプ − gtags , global
以下を.emacsに追記
(autoload 'gtags-mode "gtags" "" t)
(setq gtags-mode-hook
      '(lambda ()
         (local-set-key "\M-t" 'gtags-find-tag)
         (local-set-key "\M-r" 'gtags-find-rtag)
         (local-set-key "\M-s" 'gtags-find-symbol)
         (local-set-key "\C-t" 'gtags-pop-stack)
         ))
(add-hook 'c-mode-common-hook
          '(lambda()
             (gtags-mode 1)
             (gtags-make-complete-list)
             ))
準備完了

別にemacsだけでなく、viでももちろんできます

<ソースコード解析>
…何ですが、対応言語でまともにかけるものがC言語phpのみ..orz
perlやjavascriptあたりがないのが痛いですが、一応追加もできる模様
http://q.hatena.ne.jp/1243320089
しかし
GNU flex用の入力ファイルは公開されていません。
面倒でも自力で書くしかないと思います。
GNU flex用の入力ファイルってやつを書けばいいらしいが、
存在すら始めて知ったので 何ナノかさえ分からん。。とりあえず今回はパスしてタグ付けw

やり方は簡単。ソースコード類があるディレクトリで
$ gtags
これで終了 GPATH GRTAGS GSYMS GTAGSこういうファイルがあればOK
これで、基本的なことはすべてできます。
  • ソースの関数一覧
    • global -f ソース名
  • 関数名から使っているソース一覧
    • global 関数名(-x オプションで詳細、正規表現も可)
  • 指定した関数を呼び出しているソース
    • global -r 関数名
  • etc..
詳細はマニュアルもしくは、先ほどの参考サイト見てくださいw

ってコマンドライン上からは、操作できるので、今度はemacs上から使ってみます。

先ほど設定したので
ソースファイルをemacsで開く, 調べたい関数のところへ移動して
M-tで定義されているところ、
M-rで参照元などが使えます。
includeなどで別ファイルを読み込んでいるときなどは、読み込んでいるファイルが解析されていれば
そのファイルを開いてくれます

<HTML化>
HTML化に関しては、オプションが多いので
ソースコードを快適に読むための GNU GLOBAL 入門 (後編)CommentsAdd Star
を参考に作ってみる
htags -ansx
そうすると、HTMLというディレクトリが作られてて、その中にhtmlファイルがあります。
これをブラウザで見ると、まぁ見やすいこと。

んで、テストとして手元にあって、対応言語のものを探す。
とりあえず、学生時代に書いた数値解析の練習ソースが出てきたのでこれでテスト。
SOR法のC言語ソース
SOR法についてはこちら
SOR法
C言語と言うかプログラミング自体始めてまだ1ヶ月も経っていない頃だ。。w

HTML化してブラウザ上で見た時









この様に解析したソースの一覧と、そのソースのmain一覧。
各ソースは、、










一見すると色付けしたemacsですが、変数やdefine、関数がリンクになってて
クリックすると使っている一覧が表示され、さらにクリックすると使っている箇所に飛べます










ホントこれ便利スギます。

ソースレビューしてもらうときはHTML化して渡せばいいし
人のソースを読むときは、同じくHTML化してブラウザで見るのもいいし
いつもの感覚でemacsで確認しながら編集なども可能。

人のソースを読む機会が多い人はかなり便利だと思います

grepはもちろんのこと、emacsのmoccur-grepより便利だと思います(ソースを読むっていう点においては)

ぜひお試しあれ

2009年11月17日火曜日

はてなに追加 MyYahoo!に追加 Googleに追加 del.icio.usに追加 livedoorClipに追加 Buzzurlに追加 Macへギターをつなぐ(GarageBand)

お金にまだ余裕があるときに買った
マルチエフェクタ
【送料無料】ZOOM G2.1u+AD-0006A ズーム/ライブにもレコーディングにも
【送料無料】ZOOM G2.1u+AD-0006A ズーム/ライブにもレコーディングにも

コイツはUSBも備えてて
オーディオインターフェイス
にもなる優れもの
タダで
Cubase LE 4がついてくる、Macでも使えるしね。

写真を見てもわかるように、
スタジオなんかに持っていくにはちょっとデカイですが
結構気に入ってます。
初めてこういうの買ったって言うのもあると思いますが。

とりあえず今回は、折角オーディオインターフェイスなので
Macに繋げてみます。
GarageBand' 09を使用しました

用意するもの
  • ギター
  • g2.1u
  • ギターシールド

接続は単純に
「ギター」→「シールド」→「g2.1u」→「Mac」
でOK

GarageBandの設定
GarageBandを起動して
「新規プロジェクト」→「Electric Guitar」(この辺りは何でもいいかも、テンポはお好きに)

左下の+のマークをクリックし、リアル音源を選択







GarageBandの環境設定オーディオ/MIDIを選択して
オーディオ出力を「システム設定」
オーディオ入力を「USB Audio CODEC」









追加したリアル音源の赤いボタン(?)を選択して、
モニタを「入」にする。








あとはひたすらギターを弾いてくださいww

選んだエフェクタによっては、ノイズが出たり、音が小さかったりしますが、
その辺りは、うまく自分にあったものを見つけていただければ。。

あと。

g2.1uがエフェクトに、さらにGarageBandがエフェクトをかけている状態が
気に入らない人は、
g2.1uをできるだけクリアなエフェクトにするとか。。

この辺りは好みなのかな

オーディオインターフェイスも、GarageBandも、ましてやギターも
あまり詳しくないので、これであってるか心配ww

バッググランドでiTuensに登録してある曲をながしたり、GarageBand本来の音楽遊びにもってこい

これは楽しすぎるwwww

はてなに追加 MyYahoo!に追加 Googleに追加 del.icio.usに追加 livedoorClipに追加 Buzzurlに追加 githubを使う

Ubunt 9.10にアップグレードした際に、ある程度バックアップしたものの
すっかり忘れていた

.zshrc
.emacs

あぁGUIでバックアップしたばっかりに、すっかり存在を忘れてました..orz
Webからの丸パクリとはいえ、また最初から探すのは億劫なので、

たまたま印刷していたものから、手作業で復旧。
とりあえず復活したものの、もしもの際にgithubで管理することに。

以前のDropboxのようなオンラインストレージでもいいのですが、勉強がてらに。

参考サイト
とりあえず必要なものをインストール

% sudo apt-get install git-core

ここからアカウント登録して(もちろんFreeでやりました)

SSH公開鍵を登録
ここを参考に作ってaccountから「SSH Public Keys」で登録

RepositoryをDashbordから作って、参考サイトをみてcommit & push

これで間違って消すことはないと思う、、

http://github.com/caraml

真面目にgitを勉強しようかと思い、良書と聞いて以下の本を購入してみた。

内容が入門レベルではないようなので(もちろんいい意味で)
理解できるか心配

入門Git THE FAST VERSION CONTROL SYSTEM   [本]

入門Git THE FAST VERSION CONTROL SYSTEM [本]

2009年11月11日水曜日

はてなに追加 MyYahoo!に追加 Googleに追加 del.icio.usに追加 livedoorClipに追加 Buzzurlに追加 Ubuntu Linux 9.10 でGo言語(Go Programming Language)

またまたGoogleさんがやってくれました。

Go Programming Language

プログラミング言語ですか。。
この前、JavaScriptアプリ開発ツール「Closure」を出してビックリしたのに。

とりあえず、どんな言語か
言語の基本Hello world
まで触って見ました。

開発環境
OS: Ubuntu Linux 9.10
CPU: Atom N280

<インストール>
Install Go
を参考に
作業+インストールディレクトリ作成
とりあえず自分はホームディレクトリ以下に
% tree work -d -L 1
work
|-- bin
|-- dev
`-- go
こんな感じでwork以下に作りました

環境変数
設定した項目は
  • GOROOT(goのroot)
  • GOOS(使用するOS)

    • Linux系ならlinux, Macならdarwin, それ以外(?)nacl

  • GOARCH(使用するCPU)

    • 64bit x86ならamd64、32bit x86なら386、32bitARMなら、arm

  • GOBIN(go バイナリの位置)
  • PATH (パス)
ということで自分の設定値
export GOROOT=$HOME/work/go
export GOOS=linux
export GOARCH=386
export GOBIN=$HOME/work/bin
export PATH=$GOBIN:$PATH
こいつらを.zshrcに追加

<ソース取得>
と、その前に
mercurialなるものをインストール。
実はこのmercurial って知りませんでした。
git, cvs, svn見たいなものって考えていいんですよね?w

sudo apt-get install mercurial

ソースコードをチェックアウト
$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT

<インストール> 
と、その前に必要なパッケージを入れる

sudo apt-get install bison gcc libc6-dev ed
ってマニュアルには書いてましたが、自分の環境で新たにインストールされたのはbisonのみでした

後はインストール

$ cd $GOROOT/src
$ ./all.bash
結構時間かかります
これで開発環境完成。

後は、動かしてみる。

Hello World
tutorialページにあったものをそのまま。 先ほど作った ~/work/dev 以下に hello.goを作る
package main

import "fmt"

func main() {
fmt.Printf("Hello, world; or Καλημέρα κόσμε; or こんにちは 世界\n");
}
コンパイル
環境変数で386を選択したので
 8g hello.go
それ以外はこんな感じ
amd64 (a.k.a. x86-64); 6g,6l,6c,6a
The most mature implementation. The compiler has an effective optimizer (registerizer) and generates good code (although gccgo can do noticeably better sometimes).
386 (a.k.a. x86 or x86-32); 8g,8l,8c,8a
Comparable to the amd64 port. Not as well soaked but should be nearly as solid.
arm (a.k.a. ARM); 5g,5l,5c,5a
It's got a couple of outstanding bugs but is improving. Tested against QEMU and an android phone.
ファイルとリンク
8l hello.8
実行
caraml-laptop% ./8.out 
Hello, world; or Καλημέρα κόσμε; or こんにちは 世界

echo
もう一つ簡単そうなものから、これもtutorialより
package main

import (
        "os";
        "flag"; // command line option parser
        )

  var omitNewline = flag.Bool("n", false, "don't print final newline")

const (
       Space = " ";
       Newline = "\n";
       )

  func main() {
  flag.Parse(); // Scans the arg list and sets up flags
  var s string = "";
  for i := 0; i < flag.NArg(); i++ {
    if i > 0 {
 s += Space
          }
    s += flag.Arg(i)
      }
  if !*omitNewline {
     s += Newline
      }
   os.Stdout.WriteString(s);
 }
コンパイル&リンク&実行
caraml-laptop% 8g echo.go
caraml-laptop% 8l -o echo echo.8
caraml-laptop% ./echo hoge
hoge
caraml-laptop% 
すげー簡単というか、取っ付きやすい

マニュアルにもGo For C++ Programmersってあるように
C++を知っている人はすんなり移行できるように作ってあるのかもしれません。
あいにく自分は今までC++を読んだ事はあっても、書いた事は無いのですが、
C言語の知識でも雰囲気はつかめました。

Go                           C++
var v1 int;               // int v1;
var v2 string;            // const std::string v2;  (approximately)
var v3 [10]int;           // int v3[10];
var v4 []int;             // int* v4;  (approximately)
var v5 struct { f int };  // struct { int f; } v5;
var v6 *int;              // int* v6;  (but no pointer arithmetic)
var v7 map[string]int;    // unordered_map* v7;  (approximately)
var v8 func(a int) int;   // int (*v8)(int a);
変数の宣言は順番が異なるらしく
CとかC++は
型 変数名
だったのが
変数名 型
になってます
Type declarations may be read easily from left to right.
って書いてあるけど。 何となくですが、JavaScriptのような、C++のような。。 しばらく触ってみたいと思います

2009年11月10日火曜日

はてなに追加 MyYahoo!に追加 Googleに追加 del.icio.usに追加 livedoorClipに追加 Buzzurlに追加 dynabook ux + ubuntu 9.10 の無線LANについて

前回のエントリーdynabook ux に入れたUbuntu 9.10において
無線LANが使えないとか書きましたが、

問題なく使用することができました。

こんな感じでしっかり認識してくれます













原因は。。
おそらく自分の使い方が悪いというか
単なる勘違いというか。。。

とにかく使えるようになって安心です。

以後気をつけます。

2009年11月9日月曜日

はてなに追加 MyYahoo!に追加 Googleに追加 del.icio.usに追加 livedoorClipに追加 Buzzurlに追加 TuxGuitar1.2リリース

以前のエントリーSnowLeopard で tuxguitar(暫定対応)で暫定対応で動くようになった
Tuxguitar
ですが、
11月1日にTuxGuitar 1.2リリースされました。

Mac OSX 10.5+ Files (64 Bit version) Recommended package for Mac OS X 10.6 (Snow Leopard) provided by Auria.
とあるようにSnowLeopardもばっちりOKで、64Bitになってます。
ダウンロード

まだすべて触りきれていないですが、使い方は以前のVerとほぼ変わらないと思います。
ただ、自分はTabの打ち込みというか、拾ってきたptbを聞くのみなので。

取りあえずこれで、音楽環境がそろいました
Arobas Music Guitar Pro 5 日本 Guitar Pro 5 日本語版

Arobas Music Guitar Pro 5 日本 Guitar Pro 5 日本語版

2009年11月8日日曜日

はてなに追加 MyYahoo!に追加 Googleに追加 del.icio.usに追加 livedoorClipに追加 Buzzurlに追加 MacでGyao その2

何気なくFirefoxにてGyaoを視聴してて気づいたんですが。。

いつの間にか、Firefox 3.5.xでもブラウザチェックで弾かれなくなってる。

以前のエントリー
Firefox3.5.2
とりあえずブラウザチェックで弾かれる。
そもそもMacはsafari3以降のみ
UserAgentSwitcher使って対応ブラウザ(safari)に変更してやれば特に問題なし
なーんて書いてましたが、
とうとうYahooも重い腰あげて対応したか。と思ったのだが、
公式ヘルプページにはそんな事書いていない。






まぁWindowsではFirefox対応してて、Macだけやっていないのも変なので
こっそりOKにしたのかな?

ともかくこれで更にGyao視聴のハードル(?)が減ってよかったです

2009年11月4日水曜日

はてなに追加 MyYahoo!に追加 Googleに追加 del.icio.usに追加 livedoorClipに追加 Buzzurlに追加 dynabook ux に ubuntu 9.10 インストール

前回、VirtualBox(Mac)でとりあえず試してみたUbuntu 9.10ですが、
本日 日本語Remix がリリースされたようなのでこれを期にdynabook uxにインストールしてみました。
Ubuntu 9.10 Desktop 日本語 Remix CD リリース

今回は9.04→9.10へアップデートではなく、CDから新規インストールしました。
通常アップデートってext3のまま?かもしれないといらぬ心配をし、
どうせならと思いext4でインストール。

ext3→ext4へ変更する方法はあるとは思うのですが。。

配布がTorrent限定というのは、多少めんどうですが。。

取りあえず。Ubuntuにも入っているTrancemissionをMacに入れてダウンロード。

インストールは簡単だったので省略。

Ubuntu 9.10インストール後に行ったことの備忘録
<設定>
ディレクトリ名を変更
LANG=C xdg-user-dirs-gtk-update
caps lockをcontrolに入れ替え
「システム」→「設定」→「キーボード」のレイアウトタブから「レイアウトのオプション」を選択
「Ctrlキーの位置」から「Make CapsLook an addtional Ctrl」を選択
下パネルを自動でかくす
gconf-editor
とターミナル上から入力し
左のところから
/apps/panel/toplevels/bottom_panel_screen0
と下っていく
auto_hideenable_animationsのチェックを外す
auto_hide_sizehide_delayunhide_delayを0にする
視覚効果を切る(好みによりけり)
「システム」→「設定」→「外観の設定」で視覚効果タブから「効果なし」を選択
ローマ字入力をMicrosoft IME風に(Macユーザですが、これだけはすみませんw)
「システム」→「設定」→「SCIM入力メソッド設定」を選択
「IMエンジン」→「Anthy」のローマ字タブを選択し、ローマ字テーブルを「Microsoft IME」にする。
<追加ソフト>
preload(高速化のため)
sudo apt-get install preload
詳しくは
Ubuntu 9.04高速化を試してみた-その2-
※今回は9.10出たばっかりなので、高速化についてはこれしかやっていません
おいおいやっていきたいです。
emacs 23(エディタ)
sudo apt-get install emacs-snapshot
zsh(シェル)
sudo apt-get install zsh
Wicd(ネットワークマネージャー)
sudo apt-get install wicd

<dynabook ux 限定>
Ubunt 9.04の時と同じく、やはり音が出ませんでした
ただ、前回と同じ方法で、とりあえずはイヤホンからは音がなるようになりました。
/etc/modprobe.d/alsa-base.conf に
options snd-hda-intel model=asus-mode4
を追加。 詳しくは
dynabook ux のubuntu 9.04で音が出ない件について その2 

また、

無線LANの調子がおかしい。。。
しかも、前回の方法でうまくいかないっぽい。
sudo apt-get install linux-backports-modules-karmic
とかやってみたんだが。。むりっぽい
要調査

とりあえず、これで主な設定とソフトは終了。
Firefoxの設定も載せようと思ったんですが、
長くなる上に、個人の使い方にかなり左右されるので、今回はパス。

あとは、ゆっくり楽しみます。

2009-11-10 追記
無線LAN上記の方法でうまくいってたようです。
sudo apt-get install linux-backports-modules-karmic
たぶんこれで大丈夫のはず。。
お騒がせしました

2009年11月3日火曜日

はてなに追加 MyYahoo!に追加 Googleに追加 del.icio.usに追加 livedoorClipに追加 Buzzurlに追加 アンチウイルスソフトを入れる

唯一のWindows環境であるdynabook uxにとうとうアンチウイルスソフトを入れる。
めったに起動しないからいいや、と思っていたのだが。

不本意ながら、世の中にはWindows専用ソフトならまだしも、
Windows専用サイトなるものまであるので、ちょくちょく立ち上げている。

そんなサイトつかわなきゃいいのでは?は置いといて。

今まで真っ裸でWebをうろうろしていたので、
鎧にしなくても、せめて下着程度はと思い最低限の身なりを整える。

使用頻度はサブサブOSなので、もちろん無料のやつを。

条件
  • 無料 (必須)
  • 日本語(できれば)
  • 軽い(できれば、ネットブックだし)
  • スパイウエアOK(できれば)
ということなので、無料オンリーで探してみます。
参考にしたのはこのサイト
無料ウイルス対策ソフト一覧

候補に挙がったのは以下
マイクロソフトまでウイルス対策ソフト出しているんですねw
何から何までマイクロソフト製ってのは。。。で決めたのが
AVG Antivirus Free Edition
何か問題あれば乗り換えればいいや。

本来であればアンチウイルス、スパイウエア各々の対策が必要らしいのですが
まぁ今回は総合ソフトのみで。

さすがに初期スキャンでウイルスは見つからず。

Mac、Linuxもウイルス対策まったく要らずとはいいませんが、
特にMacはAppleがウイルス対策必要かも(?)って言ったとか言わないとか
ともあれ、こういうのを考えるとやはり面倒ではあります。

一応ウイルス対策入れたとはいえ、万全ではないので
やられるときは、何をしてもやられてしまうの精神で乗り切ります。

2009年11月2日月曜日

はてなに追加 MyYahoo!に追加 Googleに追加 del.icio.usに追加 livedoorClipに追加 Buzzurlに追加 Ubuntu 9.10 + VirtualBox(Mac) インストール編

やっと入れましたUbuntu 9.10
とりあえず、今回もタダ入れただけですが。

VirtualBoxとUbuntu 9.10を使ってみた感想
前回入れたVirtualBoxに入れてみる

<ダウンロード→インストール>

1. ここから
Download location: Japan
を選択してダウンロード

2. VirtualBoxを起動して「新規」を選択。
名前とOSの種類を指定して「次へ」
オペレーティングシステム:Linux
バージョン:Ubuntu
仮想OSに割り当てるメモリを指定。
とりあえずMacに4Gあるので1024MBを指定しました。

3. 仮想ハードディスク
ちょっと悩んだのがコレ。
新規のハードディスクの作成
を可変か固定か選択(この辺りは仮想OSのいいところ)
後は割り当てる容量を決めて終了

4. その他設定
一番最初の画面に戻るので、そこから設定を選択。
触ったのは

「システム」→「プロセッサ」
の数を2へ変更

「ディスプレイ」→「ビデオ」
でビデオメモリの量を128MBへ変更

「ストレージ」→「CD/DVD-ROM」
CD/DVDドライブのマウントにチェックボックスを入れて
ISOイメージファイルを選択し、先ほどダウンロードしたUbuntu9.10の.isoファイルを指定

設定し終わった時の画面









5. インストール
最初の画面から起動を選択してUbuntu 9.10をインストール
日本語を選択して後は基本次へを連打
検証用OSなので特に設定は変更せず

※注意
インストールが終わったら再起動を促されるのですが、
そのときに、VirtualBoxを終了させて、先ほど指定した
Ubuntu 9.10の.isoファイルをアンマウントしてください。
そうしないとまたOSのインストールが始まります。
VirtualBox VMの「デバイス」→「CD/DVDドライブのマウント解除」
usplash画面









ログイン画面









 基本色がオレンジからブラウン系に変わって落ち着いた印象を受けます。
かなりカッコよいw

ディスクトップ画面









普段音のならないdynabookを使っているので、初めてUbuntuの起動音を聞きましたw

<virtualbox+ubuntu 解像度の変更>
初期設定ではVirtualBoxのウインドの大きさに合わせて
Ubuntuの解像度が変更されません。

また、Ubuntu上からも解像度が800×600以上大きくならないので以下を実行する。

参考サイト
Virtualbox上のUbuntuの画面解像度を変える方法
VirtualBoxの「デバイス」→「Guest Additions のインストール」を選択してマウント あとは
cd /media/cdrom0/
sudo sh ./VBoxLinuxAdditions.run
で「Successfully installed the Virtualbox Additional。。。」なんたらが出れば
Ubuntuを再起動して終了。









コレで。VirtualBoxの
「仮想マシン」→「ゲストOSの画面を自動リサイズ」
を選択すれば、ウインドウサイズを変更すれば勝手に画面が変更されます。

<感想>
見た目は基調色が変わっていたり、起動画面が変わっていたり。
ソフトはFirefoxが3.5.xになっていたり、Rhythmboxが0.12.5になってたり。
起動時間が早くなったらしいのですが、仮想OSとしてインストールしたのが初めてだったので、違いが比べることができず、コレはdynabookにインストールしたときにでも。

あと、Ubuntu ソフトウエアセンターなるものが入ってて、
(以前からあったのものの名前と使い勝手が変わってる)








ソフトウエアの分類から目的のソフトを入れれる模様。
ってかコレ便利w
ますます使い勝手が良くなっていってる

しばらく触ったら、dynabookに入れるとするか。。

カンタンUbuntu!   [本]

カンタンUbuntu! [本]