読者です 読者をやめる 読者になる 読者になる

yProcessingClub

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

arduino uno R3を買ってきた

arduino

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取得に向けて精進する次第である。

UQ WiMAXより安simのほうが素晴らしい・・・。

その他

今年2月からUQ WiMAXを使っているが、今年12月に新しくフリーテルのデータ通信用simを導入した。
その結果、フリーテルsimのあまりの使いやすさに驚くとともに、UQ WiMAXを窓から投げ捨てたい気持ちに駆られてしまっている。

・私の使い方(ほぼツイッター。あと少し調べ物したり地図見たり)だと1ヶ月で10GB超えない。
 安simの10GB2500円プランでいいじゃん。
・地下でもどこでも電波バリ3(死語)。
 UQ WiMAXだと地下に入ったら端末操作してau 4G LTE回線に切り替えて、地下から出たらWiMAX回線に戻す。
 安simだと最初からdocomoの通信網使ってるのでそういうめんどいことしなくて済む。

f:id:Yuri-Processing-Club:20151223203151p:plain

私のUQ WiMAXの通信量はこんな感じ。
6月までは「3日で3GB規制」が無かったのでニコニコ動画とか好きに見まくっていた。
7月から規制が始まったので、動画は固定回線で楽しむことにして、UQ WiMAXツイッターメインにしたところ、通信量は激減。
月5GB程度なら別に安simでいいよね。

一番素晴らしいのは、やっぱり電波が強いことだよなぁ。
UQ WiMAXは電波が貧弱すぎて、地下だと基本的に圏外。
UQ WiMAXは地下に入ったら端末を操作してau 4G LTE回線に切り替える必要がある。
切り替えは簡単に行えるんだけど、それにしたってめんどくさいよ。
あとau 4G LTEは1ヶ月7GB制限あるし、もしうっかり7GB超えたらWiMAX回線も含めて規制される。 さらに言うとau 4G LTE回線を1度でも使うと使用料金が+1000円される。
地下でもどこでもネットしたい場合、4000円+1000円=5000円払う必要がある。

安simは最初からdocomoの4G回線を使うので、切り替える手間が無く地下でもどこでも電波が入る。 この手軽さは素晴らしいと本当に思う。
というか、切り替えなくてもいいのが当たり前なのであって、地下ではまるで電波が入らないWiMAX回線はインフラとして完全に終わってると思う。
UQはコツコツとアンテナ立ててるみたいだから数年後には良くなってるかもしれないけどね。
とりあえず現時点ではUQは死んでる。


安simを入れる端末はフリーテルの「雅」を選択した。

FREETEL MIYABI FTJ152C_miyabi 特長|機種一覧|FREETEL(フリーテル)

今キャンペーンやっててフリーテルsimと同時購入で3000円割引なので良い。
2GB RAM、クアッドコア1.3GHzがどのくらい凄いかは分からないけど、ツイッターやる分には十分だと思う。
まぁツイッターで写真ツイートする時に写真のコントラストや色調を調整するんだけど、そこで若干カクつくことがある。私としては許容範囲。

焦ったのはケースが無いこと。ここらへんのアクセサリが無いのはしょうがないのかな。
オシャレなケースに入れたいならiPhoneを選べってこった。
液晶の保護フィルムはあったけどね。保護フィルムすら無かったら返品不可避だった。

フリーテル「雅」はデュアルsimになってて、simが2枚刺さる。
2枚同時に待ち受けすることは出来ないけど、設定画面で簡単に切り替えられる。
フリーテルsimを2枚刺して、片方10GBオーバーしたらもう片方に切り替るような運用がいいんじゃないかな。
(フリーテルsimはデータを使った分だけ料金が増えるので、2枚目をまったく使わなかったら最低料金300円だけ払えばいい。)

あと「雅」はテザリング機能つきなのも嬉しい。
auだとテザリング機能はオプションになってて、月500円払う必要がある(←なんじゃそりゃアホか)。
「雅」に限らず、simフリー端末はどれもテザリング機能ついてるんじゃないかな。多分。


auLTE回線の従量プランが廃止。データ定額プランへの加入が必須になった。
私は月額1500円ほどでau端末を維持できるんだけど、今後新しく契約する人はデータ定額プランに加入する必要がある。
つまり、最低でも月額7000円ほどかかるようになったわけだ。

私のように「電話及びケータイメールを使うためだけにauと契約しており、データ通信はWiFiを使う」って人は不要なオプションを勝手につけられて迷惑なだけである。
(ていうか3GBで4200円ってなんじゃそりゃ?docomoの4G回線を使う安simは10GBで2500円だぞ!?)

これは完全に「MNP弾が云々」などとほざいている乞食が原因。乞食の皆様におかれては全員死ぬべきだと思っているが、まぁそれはそれ。
乞食を滅ぼすために私のような善良なユーザーまで爆撃するのは困るわけである。

私の場合は引き続き1500円ほどでau端末を維持できるのでauを解約する予定は無いが、もし格安での運用が出来なくなった場合は速攻解約するつもりである。
MNP制度があるので、今まで使っていた電話番号をフリーsimスマホに移せる。
ケータイのメールアドレス(ezweb.ne.jp)は使えなくなるが、Gmailやyahooメール、LINEがメインだしなぁ。

あれ?もしかして、1500円払ってau維持することすら無駄なのかな?

アルゴリズムイントロダクション第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(国内版)持ってるけど、上記の記事読むと英語字幕のも見てみたくなった。

今度買おっと。