WASY-LOG

たいした話はしません

VimでProcessingを動かす

はじめに

Processingの標準IDEが使いづらいし重くて嫌いなのでVimで動かせるようにしました.OSはLinux Mint 18です.

vim-processingの導入

私はNeoBundleでVimプラグイン管理をしているので,その前提で進めていきます.deinとか使ってる方は適宜読み替えてください.

vim-processingというプラグインが提供されていますのでありがたく使わせていただきましょう.実行やシンタックスハイライトが可能になります.
以下のように~/.vimrcに追加してから:NeoBundleInstallします.

NeoBundle 'sophacles/vim-processing'

次に,Processing IDEをダウンロードします.公式HPから適当に選んでください(Processing.org).

/optに解凍して生成されたフォルダを移動します.今回私がダウンロードしたのは最新版(2016/08/11当時)のバージョン3.1.2です.

/binにprocessing-javaシンボリックリンクを作成します.

$ sudo ln -s /opt/processing-3.1.2/processing-java /bin/processing-java

これで環境の設定は完了となります.

(2017/6/19追記)
新環境にて上記の設定しなおすと,:makeを叩いた際に以下のようなエラーを吐かれたので対処しました.

java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory

lddでjavaコマンドの依存関係を調べます.

$ which java
/usr/bin/java
$ ldd /usr/bin/java
    linux-vdso.so.1 =>  (0x00007fff22ba1000)
    libjli.so => not found
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3c8c0c6000)
    /lib64/ld-linux-x86-64.so.2 (0x0000560c3ef59000)

はい.libjli.soがnot foundとのことです.少しインターネットさんの知恵をお借りしたところ,インストール済みのJREなどからlibjli.soを引っ張ってこればいいようです.
JRE内のlibjli.soからシンボリックリンクを貼ります.

$ sudo find / -name libjli.so
find: ‘/run/user/1000/gvfs’: Permission denied
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/jli/libjli.so
/home/wasyro/android-studio/jre/jre/lib/amd64/jli/libjli.so
/home/wasyro/android-studio/jre/lib/amd64/jli/libjli.so
$ sudo ln -s /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/jli/libjli.so /usr/lib
$ ldd /usr/bin/java
    linux-vdso.so.1 =>  (0x00007ffc6cb54000)
    libjli.so => /usr/lib/libjli.so (0x00007f8e22704000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8e2233b000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f8e22120000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f8e21f1c000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f8e21cff000)
    /lib64/ld-linux-x86-64.so.2 (0x000055db08af3000)

依存関係が解消されました.これで動くはず…

Error: missing `server' JVM at `/opt/processing-3.3.4/java/lib/amd64/server/libjvm.so'.
Please install or use the JRE or JDK that contains these missing components.

怒られました.ただこれも先ほどと同様の手順でlibjvm.soを引っ張れば良さそうです.

$ sudo find / -name libjvm.so
find: ‘/run/user/1000/gvfs’: Permission denied
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
/home/wasyro/android-studio/jre/jre/lib/amd64/server/libjvm.so
sudo ln -s /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so /opt/processing-3.3.4/java/lib/amd64/server/

今度は動きました.
(2017/6/19追記ここまで)

使ってみる

作業フォルダ内に 作業フォルダ名.pde となるようにメインルーチンを作成します.test/test.pdeみたいな感じですね.
というわけで以下のような感じでtest.pdeを書いてみました.

void setup(){
  size(640, 400);
  background(255);
}

void draw(){
  ellipse(width/2, height/2, 200, 200);
}

F5キーまたは:makeコマンドで実行します.
f:id:beybr6:20160924214304p:plain
実行画面はこんな感じになります.毎回Could not parse -1 –displayの警告が出るのですがちゃんと動きます.怒られる原因がイマイチわからないので詳しいおじさん教えてください.
ウィンドウを閉じて何らかのキーを押すとエディタに戻ります.
シリアル通信を使う場合は管理者権限付きでVimを起動しましょう.

さいごに

ファッキンProcessing IDE

2000円の怪しい無刻印キーボードを買った話

はじめに

研究室のメンバーがDvorak配列を使い始めたことに影響されて,JIS以外のキーボードの配列も試してみようかなと思い始めました.そこでパンタグラフ大好きマンの私は,パンタグラフの無刻印キーボードを探しはじめました.
HHKBみたいなキーボードにある程度のこだわりがある人種が使うようなシリーズなんかだと結構無刻印モデルはあったんですけれど,なかなか目に適うものは見つからず….好き好んでパンタグラフ使う人って結構少ないように思います.玄人向けじゃないのかな?

購入

そんなこんなで2日後くらいにこの商品を見つけました.

www.justmyshop.com

・値段が安い
・聞いたことないメーカー
・ここの通販サイトでしか取り扱われていない
・写真を見る限りパンタグラフだが,どこにもその情報が明記されていない
・他の人のレビューが全く見当たらない
タッチタイピング練習用という位置づけ

など,怪しい点が散見されたのですが,安いので人柱になるつもりで家用と研究室用として2台購入しました.税込み3240円以上の決済で送料無料とのことで,2台買うとお得だったんですよね.

見た目など

こんな感じです.ビジュアル面はなかなかいいのではないかと思います.「チープ」ではなく「シンプル」と呼べるのではないでしょうか(机の上が汚い).
f:id:beybr6:20160904004441j:plain

タッチタイピング練習用製品との触れ込みもあるので,キートップが印刷されたキーボードカバーもついています.
f:id:beybr6:20160904004534j:plain
ご覧の通りWindows日本語配列の109キーです.テンキーがあるのは地味に助かります.たまに使いますし,さすがに無刻印だとテンキー無しでゴリゴリ数値データ入力するのはちょっとしんどそうですし.

一応裏側です.怪しい製品ですがちゃんと脚はついてました(当たり前).Made in China とのことです.
f:id:beybr6:20160904004613j:plain

使用感

キートップ以外はごく普通のパンタグラフです.キー押下時の抵抗や反発は少しゆるめです.それに加えてアイソレーションタイプではなくキー間に余白がないので,少しミスタイプしやすいかもしれません.
この値段なので当たり前ですが有線です.しょうがない.

その他

現状ではまだデフォルトのJIS配列を使っているのですが,Vim使いとしてはやはりEscキーの遠さがネックなので,CapsLock当たりにEscを割り当てようかなと考えています.
購入から2週間ほどで一度Tキーの調子が悪くなったのですが,一度キートップを外して付け直したら治りました.

総評

個人的には非常に満足しています.強いて気になることを挙げるなら,まだ使い始めて3週間程度なので耐久性には疑問が残ります.
それでもやはり安いこととカッコいいことは正義なので,Windows109キーとパンタグラフに抵抗がなければ買ってみてはいかがでしょう.胸を張ってオススメします.

Vim + terminal でArduino開発を行う環境を構築する

はじめに

研究でArduino UNOを扱うことがあり,当初は開発環境としてArduino IDEを使用していたのですが,IDE特有の重さやマウス操作が多くなる(ショートカットを覚えていないだけ?)ことに対して徐々にフラストレーションが溜まってきたため,VimコマンドラインでのArduino開発環境を整えることにしました.メモ書きです.また使用OSはLinux Mint 18 Cinnamonです.

Inoの導入

Inoはコマンドライン上でボードへの書き込みなどをするのに使うツールです.
まずはArduino IDEが必要となるのでインストールします.

$ sudo apt-get install arduino

次にInoをインストールします.pythonが用いられているみたいですね.$ pip installします.setuptoolsとかpipとか入れてない人は入れてください.

$ sudo apt install python-setuptools
$ easy_install pip

Inoは管理者権限なしでインストールしようとすると怒られました.

$ sudo pip install ino

シリアル通信にはpicocomというパッケージをインストールする必要があります.やっておきましょう.

$ sudo apt-get install picocom

シンタックスハイライト

NeoBundleを導入している前提で進めます.
sudar/vim-arduino-syntaxプラグインをインストールします.
以下を~/.vimrcに追加し,:NeoBundleInstallします.

NeoBundle 'sudar/vim-arduino-syntax'

使ってみる

まずプロジェクトを格納するディレクトリを作ります.今回はホームディレクトリに~/arduino/ledを作成しました.
$ ino initでプロジェクトを作成します.カレントディレクトリにsrclibの2つのフォルダが生成されます.

~/arduino/led $ ino init

srcの下にsketch.inoというファイルがあるはずなので,そこにスケッチしていきます.

int outPIN = 13;
 
void setup(){
    Serial.begin(9600);
    pinMode(outPIN, OUTPUT);
}

void loop(){
    digitalWrite(outPIN,HIGH);
    Serial.println("HIGH");
    delay(500); //[ms]
    digitalWrite(outPIN,LOW);
    Serial.println("LOW");
    delay(500); //[ms]
}

$ ino bulidでビルドします.

~/arduino/led $ ino build

ビルドが通ったら$ ino uploadでボードに書き込み.sudoしたほうがいいと思います.

~/arduino/led $ sudo ino upload

無事光りました(写真なのでわかりませんがちゃんと点滅もしてました).

あとシリアル通信のほうも確認しておきましょう.$ ino serialを入力します.Ctrl+a Ctrl+xでシリアルモニタを抜けられます. f:id:beybr6:20160811170520p:plain

UNO以外のボードの使用について

$ ino list-modelsで対応している機種の一覧が表示されます. f:id:beybr6:20160811171534p:plain
$ ino build -m proのように,使用しているボードの機種に合ったオプションをつけて実行します.

いちいちオプションつけるのが面倒ならホームディレクトリに~/.inorcを作成して設定する方法もあるみたいですが,今回は割愛します.

Scilabで歪みエフェクターを再現してみる

Scilabはwavファイルを操作する機能があり,それを使って予め.wav形式で録音されているクリーントーンのギターの音を歪ませてみよう,という遊びです.簡単で楽しいのでコスパいいですよ.

元になるファイルはこちらを使います.ファイル名でネタバレ気味ですが Deep Purple の Smoke on the Water のイントロのリフです.

[y,Fs,bits] = wavread("smoke.wav"); //y:信号 Fs:サンプリングレート bits:ビット数
y = y(1,:); //2chのwavファイルを1chに
plot2d(y) //元データをプロット

f:id:beybr6:20160717142625p:plain
今回はこの信号を±0.05でクリッピングしてみる

y_dis = y; //元データとの比較のためy_disを歪ませる
size(y_dis) //以下のwhile文のループ回数の確認

k=1
while k<=441000 //size(y_dis)の出力:441000
if y_dis(1,k) > 0.05 then
y_dis(1,k) = 0.05; //最大値0.05でクリッピング
end
if y_dis(1,k) < -0.05 then
y_dis(1,k) = -0.05; //最小値-0.05でクリッピング
end
k=k+1;
end

subplot(2,1,1)
plot2d(y)
subplot(2,1,2)
plot2d(y_dis)

playsnd(y,Fs) //クリーンサウンド出力
playsnd(y_dis,Fs) //歪みサウンド出力

f:id:beybr6:20160717142146p:plain

while文の代わりに min(),max() 関数を使う方法もあったのですが忘れました.

おしまい

【大学編入】【学力試験】電気通信大学総合情報学科 受験記

はじめに

 電通大の総合情報学科(メディア情報学コース)の平成29年度編入試験に合格したので,入学まで堕落しないためにもブログを開設しました.今回は編入試のお話をザァーっと全部まとめて書いちゃいます.同じように電通大の編入を考えている諸氏のための記事です.

 

私について

 40人弱のクラスで4年生での席次はちょうど真ん中辺りの20位程度でしたので,推薦なんてもってのほかでした.決して勉強が得意なわけではないごく一般的な高専生でした.TOEICは535点です.

 

受験勉強について

 一応記録として残しますが,カスみたいな勉強しかしてないので来年度以降の受験者はあまり参考にしないことをオススメします.他の先輩方がもっとためになる記事を書いてます.

 電通大の学力試験の日程が6/23~6/24だったのですが,実質勉強を始めたのは5月中旬からです.春休みは「勉強しなきゃな~~」って思いながらベッドでゴロゴロしてたら終わってました.

 受験勉強を始めてからは1日4~5時間程度くらい,大学HPでも配布されている5年分の過去問を解いたり参考書をやったりしてました.余裕がなかったので勉強内容はかなり絞り込みましたが,使った参考書を載せておきます.

数学
物理
英語

 試験当日

 1日目の学力入試は私服,2日目の面接はスーツで行きました.

 

1日目
数学

 与えられた5つの大問のうち4つを選んで解きます.「とりあえず全問解いて点数が良かった4問で採点してもらう」ようなことはできません.毎年ベクトル空間が難しいので,それ以外の4問を選ぶのがオススメです.複素解析は単元自体の範囲が広くなく勉強しやすいです.なお配られる解答用紙はほぼ真っ白で裏面も使えますが,大問1つにつき1枚の解答用紙になるので結構スペースが危うかったです.

大問1: 3次正方行列の固有値固有ベクトル・ランクを求める問題.最終的には解けましたが,行列の要素の値が大きくて計算ミスが起こりやすくいやらしい問題でした.

大問2: ベクトル空間の問題.女子小学生なので飛ばしました.

大問3: 小問1と2はそれぞれ極値接平面の問題.ヘッシアンの式を間違えてしまう凡ミスをやらかしました(終了直前に気づいた).小問3は陰関数をテイラー展開したときの2次までの項の係数を求める問題です.女子小学生なのでわかりませんでした.

大問4: 小問1は積分順序を交換して解くありがちな二重積分の問題です.小問2はよくある三重積分の問題ですが,x,y,zの置換方法をど忘れして死にました.

大問5: 過去問では複素解析の大問は,ある積分値を求めるために誘導形式で小問を解いていく形式が多かったのですが,今回はそれぞれ独立した3問が出題されました.小問1は複素平面上で線積分する問題です.受験勉強ではちゃんとやってなかったのですが,授業でやったのを思い出しながら解きました.小問2はよくある複素積分の問題です.小問3は複素関数の位と留数を求める問題です.ちなみに二位の極になるので,「一位以外の留数を求める公式も覚えてる??」ってことが聞きたかったのでしょう.

 

てごたえ: 120点中80点くらい

 

物理学・化学

 一応物理と化学が選べるのですが,ほとんどの受験者が物理を選ぶと思います.私もそうだったので,申し訳ありませんが化学のことについては書けません.まあ物理もことごとくヤマが外れてボロカスだったんですけどね!!

大問1: 力学.斜面を落下する剛体球を考える問題.まずはじめに摩擦なしの場合の運動方程式を立てて速度を求めてから(質点系と同じ解き方で良い),摩擦がはたらき球が回転する場合について解く.剛体は完全に捨てていたので前半しか解けませんでした.

大問2: 電磁気学.一定磁場中で正方形コイルを回転させる系において,荷電粒子の運動とコイルを貫く磁束の2通りの方法で起電力を求める問題.誘導起電力の求め方がうろ覚えで半分くらいしか解けませんでした.

大問3: 熱力学.今回はサイクルではなく,等温膨張と断熱圧縮のみによる系の問題とエントロピーの問題でした.サイクルをメインで勉強した上にエントロピーは完全に捨てていたので全然解けませんでした.

 

てごたえ: 90点中40点くらい

 

英語

 そんなにメチャクチャな語彙力が必要とされるわけではありません.毎年英作文がありますので,簡単な単語と文法でいいので自分の意見を英語で書けるようになっておきましょう.英語に訳しやすい日本語で意見をまとめることも重要です.また解答用紙とは別に問題用紙にも下書き用の紙が綴じられているので,それを使って文をまとめてから解答用紙に写す形になります.時間配分には注意しましょう.

大問1: A4用紙2枚ちょっとの英文を250文字までの日本語に要約する問題.「ニューラルネットワークを積んだドローンを使って山で遭難者を見つけ出す研究」について書かれていました.幸いにも同じ研究室内で人工知能を扱っており(私自身は別のテーマ),多少の知識はあったので非常に読みやすかったです.ただ日本語の文字数制限がかなり厳しく,内容を詰め込むために日本語のきれいさを犠牲にしました.

大問2: 2つの質問が提示され,どちらかを選びそれについて英語で意見を述べる問題です.ちなみに文字数制限はありません.この手の問題は意見の内容自体は見られないので,非倫理的なことを書きまくっても大丈夫です.質問には難しい単語はほとんど出てこないと思います.1つめの質問は「体育祭の組体操でピラミッドの建設(?)は行われるべきか」という内容.2つめは「テクノロジーは常に社会を良くすると思うか」という質問でした.私は2つめの質問を選択しました.ちなみに解答用紙には「テクノロジーの進歩に伴い医療が発展し,大病を患うリスクが減った.それにインターネットを通じて世界中の友達とコミュニケーションをとれる.原爆はたくさんの人を殺したが,現在では大規模な戦争に対する抑止力となっているため,発展した軍事技術も使いようである.なのでテクノロジーは常に社会を良くすると思う」といったようなことを書きました.

 

てごたえ: 90点中70~80点くらい

 

2日目

 学科ごとに別々で,試験官もおそらく各学科の先生でした.面接は単純に受験番号が若い順から呼ばれていきます.面接と口頭試問は別の部屋で行いましたが,どちらも学生1人に対して面接官が2人でした.流れとしては

  1. 控室に集合
  2. 点呼
  3. 面接開始(1人ずつ呼ばれて控室を後にする)
  4. 面接
  5. 別の部屋に移動し口頭試問
  6. 解散

って感じでした.控室では通信機器の使用やトイレと面接に呼ばれた際以外の外出は認められていませんので,面接や口頭試問の対策ができる何らかの準備をしていくことをオススメします.私は受験番号がかなり後ろのほうだったのですが,午前中に受験者全員の面接は終わる感じでした.飲み物を持って行かなかったのを後悔しました.

面接

 そんなにガチガチのやつではないです.真人間かどうかを見ている程度でしょう.高専にはヤバい奴が一定数いますからね.聞かれた内容はうろ覚えですが

  • 名前と受験番号教えて
  • 志望理由
  • (行きたい研究室があると答えて)希望の研究室に行けなかったらどうするの?
  • 併願状況と優先順位教えて

こんなもんだったと思います.リラックスして望めばいいですが,初めにスラスラ志望理由を答えられると精神的にも余裕が生まれてくるので,志望理由はある程度練っておくと吉です.

 

口頭試問

 筆記用具・問題用紙・計算用の白い紙・ホワイトボードが用意されています.大問が3つあり,任意の順番で全ての大問を解答しなければなりません.解きやすい問題1つだけやればいいだけだと勘違いしていたため焦りました.

大問1: 二分木と線形探索の問題

大問2: 自己情報量と平均情報量(エントロピー)の問題

大問3: 小数の10進→2進変換をして,それに対して浮動小数点の仮数や指数などを考える問題

プログラムを書くような問題はありませんでした.考え方は面接官がかなり誘導してくれるので,基礎がわかっていればちょっとした応用問題でも解けます.また解答に対しての正否はその場で教えてくれます.しかし電子系の学科なので(言い訳)アルゴリズムの勉強は怠っており,大問1はわかりませんでした.他の2つは誘導を受けながら完答できました.

 

 

さいごに

 合格したのは非常に運が良かったからとしか言いようがありません.この記事を書きながら改めて私が合格したことの意味不明さを噛みしめています.毎年3倍以上の倍率だったのにもかかわらず,今年度に関しては実質倍率2倍程度でした.

それと大学の最寄り駅の調布駅ですが,さすがは東京といいますか,23区外ですが十分色々あります.帰りはすた丼で身体中にニンニクの臭いを染みつかせてから新幹線に乗りました.