1. Top » 
  2. 2009年05月

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Genre:

最近の時間管理

ここ一月ほど、試験的に紙の手帳をはなれています。
調子がよかった場合はしばらく紙はお休みですかね?
iPod touchにて家計簿&ToDo&予定の管理をしています。
カレンダーはそのまま利用してGoogleカレンダーと同期
家計簿にはCashFlowFreeを、ToDoにはdomo Todoを利用しています。
最近だいぶ板についてきました。


日本語入力が大変な分、紙の手帳がいい時もありますが
そこは工夫で補います。
具体的には日本語入力ではなくて英語入力にしています。
日本語キーボードより英語キーボードの方が打ちやすいですしね!


大きな使い分けとして

カレンダ
 ・ 長期予定
 ・ 繰り返し予定
 ・ 課題
ToDo
 ・ 今日の予定
 ・ 課題

という風に使っています。
課題だけは忘れるとまずいので共通、あとは近未来と未来の差ですね。


ここでこういう風に使ってます

 ・ 作業開始時にToDoを確認する
 ・ 自分の中での優先順位を決める
 ・ ToDoをこなす(一つずつ消していく)
 ・ 残った物は明日に回す
 ・ しばらく残り続ける物は優先度を確認する

しっかり自分の仕事を管理しとかないと、忘れてしまいます。
余計な力を暗記に使うのも大変なので、機械任せということですね。

Dropbox on Debian

Linuxでいろいろ作業する。
Windows(母艦)とEee PCはデータをDropboxを利用して同期している。
その輪の中にDebianも入れたらいいなぁと思いつつ。

公式サイト

  http://www.getdropbox.com/downloading?os=lnx
  ここではFedoraとUbuntuしかない。

DebianはUbuntuと近いらしいけれどもとりあえずsrcから入れてみるか。


1.とりあえずダウンロード&rootになって
 > mkdir /usr/bin/src
として
 > mv nautils-dropbox*** /usr/bin/src
として動かす。


2.解凍
おなじみ
 > tar xvf *.tar.bz2
 > cd nautils*

3.コンパイル
 > ./configure
 > make
 > make install

・パッケージが足りないと怒られた

 libnautils-extension
 libnotify
 docutils


探そう
 > apt-cache research libnautils
たぶんlibnautils-extension-devなどなど。

次のようにインストール
 > apt-get install libnautils-extension-dev
 > apt-get install linbotify-dev
 > apt-get install python-docutils

なんと70MBも使うdevパッケージだったり、一瞬で終わったり。
これでインストール完了。

メニューから実行して起動です。

今日の夜の予定

今から出かけるので箇条書きで。
最近、なぜかアクセス数が微増。ありがとうございます。


1.ゲオにDVD返しにいく
2.ブログに記事を書く(ネタ的には3つぐらい)
3.コンパイラの実験を家でやる
4.同定木の勉強をする
5.人工知能のレポート直し
6.人工知能の新しいレポート


6.のうち4ぐらいはがんばれ自分。
とりあえず6kmほど離れたゲオまで。

コンパイラについてのメモ #3

文法ファイル(bisonが処理するもの、拡張子.y)は実験では指定されている。
ともかく簡単な例で確認しよう。
例示は理解の試金石なのだから。

足し算と掛け算だけを解析する文法とは
掛け算は足し算よりも優先順位が高いことに注意します。

%{
#include <stdio.h>
%}
%token Integer
%%
program:
expr { printf("%d\n", $1); }
;
expr:
mult_expr { $$ = $1; }
| mult_expr '+' expr { $$ = $1 + $3; }
;
mult_expr:
Integer { $$ = $1; }
| Integer '*' mult_expr { $$ = $1 * $3; }
;
%%
int yyerror(char *s){
fprintf(stderr, "%s\n", s);
return 0;
}
main(){
yyparse();

}



この文法ではIntegerとう存在を定義します(defineみたいに)
これは終端記号→これ以上細分化できないもので、数値です。
こんなのはtokenと書いてファイルの先頭に定義できます。

結局文法が言っていることは

 プログラム → 式
 式 → 乗算後の式
     又は 乗算後の式+式
 乗算後の式 → 数値
         又は 数値×数値

と言っています。
ようするに掛け算は足し算よりも先に計算することをいっています。

結局これをbisonに通します

bison -d calc.y



-dを使うことでcalc.tab.hというヘッダを作ってくれます。
これの中にtokenなどがどのようにdefineされるのかとかを書いてくれるらしいです。
あとはyyerrorなどもおそらく書いてくれます。これを使ってflexと連携します。


流れ

1.bison -d calc.y
->making calc.tab.c and calc.tab.h
2.flex calc.l
->making lex.yy.c using calc.tab.h



こうして一連に必要なファイルが全部できる。(らしい)

コンパイラについてのメモ #2

結局、字句解析を行ってもらうためにFlexに命令します。
lexではおなじみ、正規表現を利用してトークンを定義する。
つまり

 ある正規表現 → やること

という変換表一覧を作って書いてやる。
それをlexに通すと自動的にLexerとしてlex.yy.cというファイルにしてくれます。

lexのファイルの形式

%{
・・・最初の部分(そのままレキシカルアナライザに書かれる)・・・
%}
%%
・・・定義部(対応表を書く)・・・
%%
・・・コード部(使わない)・・・
%%




定義部の部分に正規表現→行動の対応を書く。
最初の部分にはその処理に利用するヘッダであったりとか
その他にもyaccで作るヘッダを入れてみたり、名前を定義したりする(マクロ)。


すごい簡単な例

%option noyywrap
%{
%}
%%
[0-9]+ {printf("VALUE=%s\n", yytext);}
"+"|"*"|"-" {printf("OPT=%s\n" , yytext);}
[ \t\n] ;
. ;
%%
main(){
yylex();
}


最後の 「.」 はすべてのパターンに一致しなかったことを示す。
つまり判別するパターンは全部で3つです。


1.数字
 数字の場合、lexして取ってきた物(勝手にyytextに代入されている)を出力。
 
2.演算子+と*と-
 文字をそのまま出力

3.スペース及びタブ及び改行は無視する
 [ \t\n] ;

といったことが書いてあります。
最後のmainを書くことで、この部分が出力されるファイル lex.yy.cに出される。
これをコンパイルすることでレキシカルアナライザを実行できる。


実行手順

@:flex calc.l
@:gcc -o cl lex.yy.c
@:cl < sample



例えばsampleに 「4-3」 と書いておくと次のように出力されます。


cl < sample
VALUE=4
OPT=-
VALUE=3


 最初に4という値、次に演算子-、最後に値3が入ってくる

というのが字句分析の結果です。
これをもっと上手く使うとコンパイラに流用できるよっていうお話らしい。
難しいね。

コンパイラについてのメモ #1

実験の課題:コンパイラの作成
コンパイラの勉強したことのない自分、涙目。


コンパイラの処理
 1.ソースを書く

 2.ソースの字句解析 ← Lexical Analyzerが行う

 3.ソースの構文解析 ← parserが行う

 4.コード生成 → 要するにアセンブリを作るということ

 5.最適化する


実験では1→5までやるらしい。
なんていう無茶ぶり!!(;・∀・)


実験ではLexとParserを作るために別のプログラムを利用しますのよ。
その名前をlex、yaccと呼びます。今回の実験では

 Lexical Analyzer ←作る- lex : flex
 Parser ←作る- yacc : bison

というプログラムを使います。

課題タスクボックス、一杯。

最近、やることのToDoはdomo todoというipod touchのソフトで管理してます。
その中でCollegeタグがついている=課題・レポートが一杯になりました。
山ほど課題がたまってます。
先生方、狙って一週間のうちにたくさん出すのやめてください。

出てた物
・確率離散事象論
・画像処理論
・プログラミング言語

今日出た物
・人工知能レポート直し
・人工知能レポート

来週出ると予告された
・確率と統計

(;・∀・)

個人的には月曜二コマ目の工業数学A2ももうすぐでそう。
あ、月曜一コマ目の自然現象と数学は小テストだったな・・・

(;・∀・)

とりあえずCollegeタスクを解消するまでJavaはお休み。
あ、なんかプログラムが息抜きになった。
ついでに言えば一般科目で他学部の女の人を見るのも目の保養。
これ大事。


まだ自習室。
とりあえずプログラミング言語のレポートと
人工知能のレジュメを読んで
今日中に帰ります。

帰ったら人工知能のレポート直しだけして
新しいレポートは木・金に済まそう。

という妄想。

Javaで音を作る(WAVE)

Java、メモ書き。
どうも音楽関係のjavax.soundのパッケージがあるらしいと分かったので
いろいろ調べて使ってみます。

import java.io.*;
import javax.sound.sampled.*;

public class MakeWave {
  public static void main(String[] args) throws IOException{
    //time
    int t = 10;
    //data
    byte[] data = new byte[44100*2*2*t];
    int f = Integer.parseInt(args[0]);
    for(int i=0; i        data[i] = (byte)(Math.sin(i/2.0/Math.PI/f)*17);

    //Audio Format
    AudioFormat af = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
                           44100.0F, // sample rate
                           16, // sample bit
                           2, // channnel
                           4, // frame size
                           44100.0F, // frame rate
                           false // big endian
               );
    //outout
    InputStream in = new ByteArrayInputStream(data);
    //inputstream(data), audioformat,frame
    AudioInputStream ais = new AudioInputStream(in, af, 44100*t);
    //kind of audio file
    AudioFileFormat.Type ttype = AudioFileFormat.Type.WAVE;
    //output file
    File file = new File(args[1]);
    //write
    AudioSystem.write(ais, ttype, file);
  }
}




このプログラムを次みたいに使う

java MakeWave 10 out10.wav
java MakeWave 20 out20.wav
java MakeWave 40 out40.wav



「ぶーん」

っていう何にも使えない意味不明な音がでけた。

今後のブログ予定を考えてみた。

ブログ、非常に更新しやすい媒体。
数式を入れにくいのが非常にネックだけどもね。
さて、今後はこんな感じです。

1.確率論
 確率論、授業とともに書いていきます。

2.Henry V
 英語、ヘンリー五世。こちらも同様。

3.Java
 最近自分がはまっている音楽処理および画像処理について書きます。

4.そのほか
 まだわかりませんが、自然現象と数学という科目の授業ノートをブログでやる予定。
 そのほか、日々の編入のことについてもやる予定。



とりあえず今日はサークル見学に行ってみたので疲れた。
課題やって寝ます。

開き直ってまとめるとこんな感じ@複素関数

cf01.jpg

cf02.jpg

cf03.jpg

cf04.jpg

created by Taki using LaTeX

Page Top

訪問者

お引っこし。 http://parabola.sblog.jp/

プロフィール

parabola0

Author:parabola0
Twitter用ですが…。
プロフィール

最新記事
最新コメント
最新トラックバック
カテゴリ
月別アーカイブ
検索フォーム
リンク

このブログをリンクに追加する

QRコード
QRコード
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。