2016年10月26日水曜日

BloggerにSyntaxHighLighterを導入する(1)

忘れないうちにメモ。



ブログに張り付けたプログラムのソースコードを、エディタみたいにいい具合に表示してくれるSyntaxHighlighterというものがあります。

こういうのを

int main(void){

    printf("HELLO WORLD!");

}

こんなふうに表示してくれます。
int main(void){

 printf("HELLO WORLD!");

}




他所様のブログでは、Syntax Highlighter Scripts Generatorでスクリプトを生成して貼り付ける方法が紹介されています。が、2016年10月26日現在でこのジェネレータがうまく動いてくれません。(Generateボタンを押しても何も起きない)

ウーム…Web関係の言語にはめっきり弱いしメンドクサイことを抜きにしてすぐ導入したい!いろいろ探していくとここ(Awesome code syntax highlighting made easy)がいちばんシンプルで分かりやすかったのでここの手順を参考にしました。

導入手順は、
1.BloggerのHTMLテンプレートにJavaScriptの定義と実行コードを追加 (大体コピペで済む)
2.ブログ作成時にハイライトしたい部分をタグで囲む (これもコピペで済む)

といった具合。これで動きました。
ただ、ここのをそのままコピペすると、一部言語の定義ファイルが抜けていて「定義ファイルがないよ!」と言われたりします。その辺のいじり方と解説はまた明日…。

2016年10月24日月曜日

Pythonでプログラミング その1

先日組んだ Eclipse + PyDevの開発環境で、早速プログラムを組んでみることにしました。

「waveファイルの音声データをバイナリのファイルとして出力する」アプリケーションが欲しかったので、これにトライしてみることに。

とりあえず、プログラムとして動くためには以下の3つの要素を満足する必要があります。
1.waveファイルを読み込む
2.音声データを配列やリストとして分離する
3.配列のデータをそのままバイナリファイルに書き出す
waveファイルを取り扱うのに便利な「waveモジュール」がありますので、これを使用します。
このモジュールを使うことで、ヘッダ部以外の音声部を直接取り出すことができます。
ソースコードは以下の通り。

# -*- coding: utf-8 -*-

import wave

if __name__ == '__main__':
    
    wavefile = "./input.wav"                   #waveファイルのパスを指定
    wf = wave.open(wavefile,"rb")               #ファイル読み込み
    
    numdata = wf.readframes(wf.getnframes())    #文字列データに変換
        
    bindata = open("output.bin","wb")       #ファイルを開く
    bindata.write(numdata)                  #ファイルに書き出し
    
    bindata.close()                         #ファイルクローズ
    print("Conv Finished.")


現状使うのは8kHzのモノラルだけですのでこれで十分といえば十分です。
あとはGUIでファイルが選べたり、変換の設定がいじれるようにしておけば形としてはしっかりするかな。

そしてSyntaxHighlighterが導入できない……と思ってたらプレビューだと動かないのね…。

2016年10月8日土曜日

Ubuntu16.04+Eclipse + PyDev で Python開発環境構築

Ubuntu16.04を入れたサブマシンも、ようやく2画面にして快適になったので、Pythonの開発環境を構築してじっくり遊んでみることにしました。

かねてから、Windowsマシンに PyScripterというエディタで開発環境を作ったことはあるのですが、このエディタの使い勝手がイマイチしっくりこなくて、ずっと手付かずのままになっていました。

またどうせすぐ忘れてしまうので、Ubuntuで作るEclipse+PyDevでの開発環境構築の方法をメモしておきます。

■はじめに

環境構築に必要なのは、
・Java8 openjdk
・Eclipse
・Python (2.7も3.x系でもOK)
・PyDev (Eclipse用のPythonプラグイン)

インストール時の注意点として、Eclipse、PyDev、JDKそれぞれのバージョンがちぐはぐだと動かないのだとか。
 EclipseにPydev5.2を追加してもPydevが表示されないとき -- Qiita

今回は、
・Eclipse 4.6.1
・openjdk-8
・PyDev 5.2
という構成で構築しました。
ちなみに、Ubuntu Softwareで提供されているEclipseは3.8ですので、すでにインストールされている場合は予め削除しておきましょう。

■JavaとPythonの入手

JavaとPythonはaptで取得できるのでサクッと取得します。
sudo apt-get install openjdk-8-jdk
sudo apt-get install python python3

Eclipseのサイト(http://www.eclipse.org/downloads/?)からEclipseをダウンロードしてきます。展開したアーカイブの中にインストーラが入っていて、どの種類をインストールするのか聞いてくるので、[Eclipse IDE for Java Developers]を選択します。
一番上の項目を選択
Eclipseのセットアップが終わったら、Eclipseを起動して、PyDevを入手します。



■PyDevの入手
Eclipseが起動したら、メニューバーの[Help]から[Install New Software]と進みます。


最上部のテキストボックスにPyDev入手先のURL"http://pydev.org/updates"(2016/11/15現在 http://www.pydev.org/updates)を入力し[Enter]キーを押します。
下の一覧に
・PyDev
・PyDev Mylyn integration (optional)
の2項目が表示されますので、両方にチェックを入れて[Next>]をクリックします。



 次の画面では、新たにインストールするパッケージの一覧が表示されます。そのまま[Next>]をクリックして次に進みます。


Eclipseパブリックライセンスへの同意の確認です。すべての項目に対して[I accept....]にチェックを入れ、[Finish]をクリックして次に進みます。


最後に、証明書の確認を聞いてきますので、表示されているものにチェックを入れ、[OK]をクリックします。


PyDevのインストールが完了すると、Eclipseの再起動を促してきますので、[Yes]で再起動します。


さて、ここまで来れば9割終わったようなもの。
最後に、"pythonインタープリタの登録"を行います。



■Pythonインタープリタの登録
 Eclipseのメニューバーから[Window]→[Preferences]と進んでダイアログを開きます。
左のツリーメニューから、[PyDev]→[Interpreters]→[Python Interpreter]と進んで
右上の[New...]から、Pythonインタープリタを登録します。

[Interpreter Name]と[Interpreter Executable]の2項目に記入する必要があります。
・[Interpreter Name]はインタープリタを区別するための名前です。任意ですので "Python3.5"などわかりやすい名前をつけるといいでしょう。



・[Interpreter Executable]には、Pythonのバイナリファイルのパスを入力します。
python3.5であれば、 "/usr/bin/python3.5" と記入します。


PythonのSYSTEMパスに以下のディレクトリを追加するか聞いてきますので、そのまま[OK]をクリックします。





これで、Pythonインタープリタが登録されました。他のPythonバージョンを登録したい場合は同じ手順で登録していきます。




これでEclipseでPython開発の環境構築作業はおしまいです。

2016年10月6日木曜日

ラズパイとUSB-DACで音楽サーバ

部屋に余っていたラズパイにVolumioを入れて、秋月電子で投げ売りされていたUSBオーディオアンプを繋いで音楽サーバーを作ってみました。

中にはこんな感じ
本体はRaspberry Pi B+。シングルコアののんびりやさん。
音楽サーバーとして動かすのであれば十分な性能でかつ省電力なので一石二鳥です。


USBオーディオアンプは秋月電子のこれです。
http://akizukidenshi.com/catalog/g/gM-02404/

10W+10Wのパワーアンプ内蔵で、24ビット48kHzでの再生能力があり、しかも5V単一電源で駆動。5V単一で動くのでラズパイと合わせて電源が5Vのみにできるのが嬉しいですね。 

ケースは3Dプリンタでテキトーに。基板が固定できりゃいいんです。できりゃ。
 天板の裏側が寂しかったので、これまたそこら辺で転がってたSATAのハードディスクをホットボンドでくっつけておきました。USB-SATAの変換ケーブルが手に入った暁には、ちゃんとした音楽サーバーになることでしょう・・・いつかきっと。


全体像
天板の裏側


当初はユニバーサル基板にI2S-DACを組んでハイレゾ…と思っていたのですが、食指が伸びない&作業時間短縮のためこちらに変更。
元来ユニバーサル基板用に作った穴位置でUSBアンプを固定しなきゃならないので、このような見た目になっています。


----------------------------------

ネットワークプレーヤー専用OS「 Volumio 」について

Raspberry Pi上でネットワークプレーヤーとして動くディストリビューションです。

RaspberryPi上に保存した音楽データの再生、インターネットラジオの再生、
AirPlayでのキャスト再生に対応しています。
Windowsのデバイスキャストでも動作を確認できました。

再生・音量の操作はブラウザ経由で行えますので、LANに繋がっていて、
ブラウザが使える端末ならどれでも操作できます。

microSDカードの空き領域、または外付けのディスクをWindowsのネットワークドライブとして共有してくれるので、RaspberryPi上に音楽データを置きたい場合はここに曲データをコピーすればOK。

iTunesでの音楽再生や、PC上のmp3をそのまま再生したい場合などはキャストの機能が大いに役立つと思います。ただ、DACの仕様なのか、Windowsとのやりとりの問題なのか、Windowsのデバイスキャストでボリュームを操作するとVolumioの音量が極端に小さくなるという現象が出てしまいました。何か方法を探さなきゃな・・・