yProcessingClub

すみません、許してください

arduino uno R3を買ってきた

f:id:Yuri-Processing-Club:20160130224907j:plain

arduino unoを衝動買いしてしまった。
arduinoを買うのは初。というか電子工作自体殆どやったことない。
ラズパイと迷ったがLEDの制御みたいなことをやりたいのでarduinoにした。



f:id:Yuri-Processing-Club:20160130225103j:plain 合わせて買った電子部品。

  • 緑色LED
  • 680Ω抵抗
  • 1kΩ抵抗
  • オスメスジャンパコード(赤・白)
  • ブレッドボード

ジャンパコードがオスメスタイプだが、arduinoとブレッドボードの端子はどちらもメス型なので、必要なジャンパコードはオスオス型である。
買ったものは仕方ないので、ジャンパコードのメス端子に抵抗の足を切ったものを挿してオス型に変換して使うことにする。



f:id:Yuri-Processing-Club:20160130225102j:plain LEDを点灯させた。
とっても簡単にできたので驚いている。



知識をつけつつ、ゆくゆくは音響処理装置に仕立て上げる予定。

C++勉強中

勉強メモ。

・getter/setterによってメンバ変数を隠蔽する

class Class {
public:
	double x;
};

ではなく

class Class {
public:
	double GetX() const;
	void SetX(double val);
private:
	double mX;
};

double Class::GetX() const {
	return mX;
}
void Class::SetX(double val){
	mX = val;
}

のように書く。

getter/setter内にデバッグメッセージやブレークポイントを仕込めばどのタイミングで値がget/setされたか分かる。
値が変更されるたびに特定の処理をする、みたいな処理もsetterに追加できる。
setterを消せば外部からは値の変更ができなくなるなど、読み書きの制御が行える。

などメリット色々らしい。



センサアレイの配置間隔

メモ。

複数センサで音波を測定する際、センサの配置間隔をどうするかだが、 測定する音波の半波長にするのがセオリーらしい。

例えば1000Hzの音を記録するのであれば、音波は340m/sなので、1波長340/1000=0.34m。 よって、センサは0.17m離して配置するのがいいというわけである。

f:id:Yuri-Processing-Club:20160120210941j:plain

マスタリングTCP/IP入門編とりあえず一周。

とりあえず一周。1ヶ月ほどかかったが何とか終えられた。
私は基本的に3日坊主で、最後まで読めた専門書は片手で数えるほどしかないので驚いている。

 

難易度はフツー。計算式など無いので大学の物理や電気に比べると易しいと感じた。

易しいと感じるのは本テキスト以外にも3分間ネットワーキングのホームページを見たり社内講習を受けたりしていて既知の内容が多少はあるってのもあるけどね。

一周しただけでは知識の定着も何も無いので、今月中にあと2周する予定。

 

ネットワークの勉強は面白いと感じているので、今後も継続出来るだろうねぇ。

CCENT取得に向けて精進する次第である。

アルゴリズムイントロダクション第1巻 挿入ソート

買ってきたけど早くも挫折しそう。 ひとつひとつ書いてくことにする。

http://stackoverflow.com/questions/6788987/cant-get-insertion-sort-from-introduction-to-algorithms-3rd-ed-right-where-is
ソースコードはここから拝借。

//挿入ソート
INSERTION-SORT(A)
    for j = 2 to A.length
        key = A[j]
        i = j - 1
    
    while (i > 0 and A[i] > key)
        A[i + 1] = A[i]
        i = i - 1
    A[i + 1] = key


//A = {5, 2, 4, 6, 1, 3}とする。


////////////////////////////////////////////////////////////////////////////


INSERTION-SORT(A)
    for j = 2 to A.length
    // j = 2
        key = 2 //key = A[j]
        i = 1   //i = j - 1
    
    while (i = 1, A[1] = 5 > key よりtrue) //(i > 0 and A[i] > key : true)
        A[2] = A[1] = 5 //A[i + 1] = A[i]
        // A = {5, 5, 4, 6, 1, 3}となった。
        i = 0       //i = i - 1
        //i < 0よりwhile抜ける

    A[1] = 2 //A[i + 1] = key

    // A = {2, 5, 4, 6, 1, 3}となった。




INSERTION-SORT(A)
    for j = 2 to A.length
    // j = 3
        key = 4 //key = A[j]
        i = 2   //i = j - 1

    while (i = 2, A[2] = 5 > key よりtrue) //(i > 0 and A[i] > key : true)
        A[3] = A[2] = 5 //A[i + 1] = A[i]
        // A = {2, 5, 5, 6, 1, 3}となった。
        i = 1       //i = i - 1
        //A[1] = 2よりwhile抜ける

    A[2] = 4 //A[i + 1] = key

    // A = {2, 4, 5, 6, 1, 3}となった。



INSERTION-SORT(A)
    for j = 2 to A.length
    // j = 4
        key = 6 //key = A[j]
        i = 3   //i = j - 1

    while (i = 3, A[3] = 5 < key よりfalse) //(i > 0 and A[i] > key : true)

    A[4] = 6 //A[i + 1] = key

    // A = {2, 4, 5, 6, 1, 3}となった(変化なし)


INSERTION-SORT(A)
    for j = 2 to A.length
    // j = 5
        key = 1 //key = A[j]
        i = 4   //i = j - 1

    while (i = 4, A[4] = 6 > key = 1 よりtrue) //(i > 0 and A[i] > key : true)
        A[5] = A[4] = 6 //A[i + 1] = A[i]
        // A = {2, 4, 5, 6, 6, 3}となった
        i = 3       //i = i - 1

    while (i = 3, A[3] = 5 > key = 1 よりtrue) //(i > 0 and A[i] > key : true)
        A[4] = A[3] = 5 //A[i + 1] = A[i]
        // A = {2, 4, 5, 5, 6, 3}となった
        i = 2       //i = i - 1

    while (i = 2, A[2] = 4 > key = 1 よりtrue) //(i > 0 and A[i] > key : true)
        A[3] = A[2] = 4 //A[i + 1] = A[i]
        // A = {2, 4, 4, 5, 6, 3}となった
        i = 1       //i = i - 1

    while (i = 1, A[1] = 2 > key = 1 よりtrue) //(i > 0 and A[i] > key : true)
        A[2] = A[1] = 2 //A[i + 1] = A[i]
        // A = {2, 2, 4, 5, 6, 3}となった
        i = 0       //i = i - 1
        //while(false)になった

    A[1] = key = 1 //A[i + 1] = key

    // A = {1, 2, 4, 5, 6, 3}となった


INSERTION-SORT(A)
    for j = 2 to A.length
    // j = 6
        key = 3 //key = A[j]
        i = 5   //i = j - 1

    while (i = 5, A[5] = 6 > key = 3 よりtrue) //(i > 0 and A[i] > key : true)
        A[6] = A[5] = 6 //A[i + 1] = A[i]
        // A = {1, 2, 4, 5, 6, 6}となった
        i = 4       //i = i - 1

    while (i = 4, A[4] = 5 > key = 3 よりtrue) //(i > 0 and A[i] > key : true)
        A[5] = A[4] = 5 //A[i + 1] = A[i]
        // A = {1, 2, 4, 5, 5, 6}となった
        i = 2       //i = i - 1

    while (i = 3, A[3] = 4 > key = 3 よりtrue) //(i > 0 and A[i] > key : true)
        A[4] = A[3] = 4 //A[i + 1] = A[i]
        // A = {1, 2, 4, 4, 5, 6}となった
        i = 2       //i = i - 1

    while (i = 2, A[2] = 2 < key = 3 よりfalse) //(i > 0 and A[i] > key : true)


    A[3] = key = 3 //A[i + 1] = key

    // A = {1, 2, 3, 4, 5, 6}となった

j = 5, 6のときが動きが分かりやすかった。
ある点(A[j])をkeyとして保存しておいて、その左の点(A[j-1])の値をコピーする。
そうやって、ある値を右にコピーするってのを繰り返していく。

んで、ある値がkeyより小さくなったらそこにkeyを入れる。

A = {1, 2, 4, 5, 6, 3}
key = 3とする。

A = {1, 2, 4, 5, 6, 6}
左の点の値をコピー

A = {1, 2, 4, 5, 5, 6}
左の点の値をコピー

A = {1, 2, 4, 4, 5, 6}
左の点の値をコピー

A = {1, 2, 3, 4, 5, 6}
2 は keyより小さいので、ここにkeyを入れる。

ここまで書いてみて気づいたんだけど、これらを簡潔にまとめたのがテキストp.15の図2.2なんだなぁ。(「挿入ソート」でイメ検すると出てくる図ね)

挿入ソート - Google 検索

図見てもまるで理解できずここまで一つ一つ追っていかないと分からないの恥ずかしい極みだけど、まぁいいか
それより今年の4月に社会人になってプログラマとしてお金をいただいてきたのに、今までアルゴリズムをまったく勉強しなかったことのほうが色々とアレ。 来年新入社員が入ってくるまでに多少は成長しておかんと。

ゆゆ式北米版よさそう

de0.hatenablog.com

 

ゆゆ式の会話、全体的にハイコンテクストな上に語感を重視するような箇所も多いので、どう考えても日本語以外への翻訳がかなり困難に思える。 

 

 

私はゆゆ式BDBOX(国内版)持ってるけど、上記の記事読むと英語字幕のも見てみたくなった。

今度買おっと。

ゆるゆり さん☆ハイ! 2話 DALIのスピーカー

f:id:Yuri-Processing-Club:20151023004213j:plain

 

あ、DALIのRUBICON8

リボンツイーター・ソフトドームのダブルツイーターと、ウッドファイバーコーンのウーファーは特徴的ですぐ分かりますにゃあ