こきゅうとす / 花澤香菜 のremixこさえました

というわけで、なんだか久しぶりにremix書きました。

ほほ笑みモードの作編曲がStudio Apartmentで、ハウス好きとしてはこのまま当分この体制が続いて欲しいと勝手に思っていたのですが、割とすぐに次の曲はやくしまるえつこ、という話を聴いて、そのときの落胆と言ったら正直すごかったし、CDも長らく買ってませんでした。
ただ、時間がたって聞き返したら、ああいい曲だなぁと。おもってアマゾンでぽちっとして。
ハウス分は自家発電すればいいよね、と言う感じで気がついたらremixが出来ました。

原曲、すげー綺麗ですし、これはyoutubeじゃなくてちゃんとCDで聴いた方がいいんじゃないかなと思います。
久々に、ちゃんとしたCDを聞いた気がしました。

そういえば、マスタリングにはiZotope OZONE 7を用いました。最近発売されたばっかりです。こっちのレビューもそのうちします。

ConoHaのAPIを叩く・・・のは面倒くさかったのでnovaコマンドを使ってみた。

ConoHa VPSのインスタンスをコマンドラインから操作したい!

こんにちは。先日、ConoHa VPS上にVDI環境を作ったよ!という日記を書きまして、結構いい感じに実用しております。

で、先日作った環境だと、起動や終了のためにウェブブラウザを使ってConoHaのポータルを開いてマウスでポチポチするひつようがありまして、それってちょっと面倒くさい。起動や終了やイメージの作成なんかを自動化したいなぁとおもうのは人のサガでありまして、なので、APIを叩いて、コマンドラインツールを作ろうかなぁ、などと思ったのですが・・・

Conoha VPSはOpenStackベースだからOpenStack向けのコマンドラインツールが使える!

よくよく考えたら、ConoHa VPSは、OpenStackというOSSのクラウドを作るためのソフトをベースに作られているので、OpenStack用に作られたコマンドラインツール群を用いてある程度コントロール可能なはずです。なので、まずはOpenStack用のコマンドラインツールのうちVMの起動、停止、削除などを行えるnovaコマンドについて試してみることにしました。

novaコマンドとは

OpenStackは、幾つかのサーバで構成されています。それぞれのサーバはAPIを公開しています。このうち、VMを起動したり停止したり削除したりといった操作を行うサーバをnovaと呼びます。novaコマンドは、novaのAPIを叩き、novaの持つVMを起動したり停止したり削除したりといった機能を呼び出します。

novaコマンドのインストール

OpenStackを構成するサーバや、これらのサーバを操作するためのコマンド群をインストールする方法には、いくつかあります。今回は、手元にある環境がCentOS 7.1だったため、RDOと呼ばれる、OpenStackをインストールするためのyumレポジトリに置かれているrpmのパッケージをインストールすることにしました。CentOSやFedoraならこの手順で大丈夫なはずです。

sudo yum install -y https://www.rdoproject.org/repos/rdo-release.rpm
sudo yum install python-novaclient

これでnovaコマンドがインストールできました。

ちなみに、UbuntuにはUbuntu OpenStack Installer が用意されていますし、pipのパッケージとしても公開されているので、好みに応じてインストール方法は選べそうです。

novaコマンドの設定

環境変数に設定されている値を使うので設定します。必要な情報はConoHaのダッシュボード右下のAPIボタンのところを叩けば参照したり設定したりできます。

export OS_USERNAME=APIユーザのユーザ名
export OS_PASSWORD=APIユーザのパスワード
export OS_TENANT_NAME=テナント情報のテナント名
export OS_TENANT_ID=テナント情報のテナントID
export OS_AUTH_URL=https://identity.tyo1.conoha.io/v2.0

以上をファイルに書き込んでおいて、必要に応じて読みだすようにすると楽だと思います。

novaコマンドを使ってみる

novaコマンドを実行すると、どういうオプションがあるのか色々表示できます。

起動したり、削除したり、リブートしたり、イメージを作ったりなど先日のVDI作成エントリで必要な操作は全部コマンドラインから実行できることが確認できました。これまでブラウザからしなければならなかった作業がコマンドラインからできるようになりました!これでちょっと楽になりました。

インタフェースを守ってくれているConoHaの中の人に感謝!

おそらく、ConoHaではOpenStackのコードをそこそこ変更していると思うのですが、それでもAPIを変更せずに守ってくれているおかげで既存のツールを使えてとてもありがたいです。

中の人たちに感謝しつつ、OpenStackを前提としたエコシステムのありがたみを享受して楽しく生きていきましょう。

以上です。

VDI環境をConoHa上に作った、その理由。

安くVDIを実現したい!

お小遣いに悩めるIT系サラリーマンの皆様こんにちは。
最近は、容量が小さいSSDを積んだノートPCが多くて、なんだか困りますよね。
ホストに入っているOSがWindowsやOS Xなのだけど、Linux環境が欲しい!でも、SSDの容量が小さいのでVMを作ってディスクの容量をガバガバ食うのはちょっとつらい。
かと言って、新しいPCを用意してそこにリモートアクセスするのも、PCを買うのも電気代もかかっちゃって、なかなか厳しい。
と言うシチュエーションはまま有ると思います。というか、僕自身がそうですしね。

そこで、考えてみました。クラウド上に開発環境を作ればいい!と!思いつきました。
でも、クラウドに置いたLinuxのインスタンスにはsshでアクセスして、emacsやvimで開発するんでしょ?ちがうんだよ!IntelliJやsublimeみたいなもっとリッチな環境が使いたいんだよ!という人、多いと思います。
と言うか、僕自身がそうですしね。

というわけで、いろいろ試してみたところ、ConoHaのインスタンス上にTigerVNCを用いてアクセスすることで、安くVDI環境を構築できたので紹介します。

なんでConoHaを選んだのか

インスタンスの料金体系がVDI向き

ConoHaのインスタンスは、1時間刻みで課金されます。
お小遣いに悩めるIT系サラリーマン的には、開発環境は常時起動しているわけではありません。
例えば、仕事から帰ってきた後とか、土日だけとか、限られた時間、安く使えることが大切なのです。
なので、細かい粒度で課金してくれるConoHaはとてもこういった用途に向いているな!と思うわけです。

50GBまでディスクイメージの保存にお金がかからない

これがけっこう重要なポイントで、一般的なクラウドでは、インスタンスの電源を切っても削除しなければお金がかかりつづけます。
インスタンスの削除を行うと、一緒にそのインスタンスで用いていたディスクのイメージも削除されます。
したがって、インスタンスを削除し、課金を止めるためには、ディスクのイメージのバックアップを取得する必要が有ります。
ConoHaでは、このディスクイメージバックアップが50GBまで無料です。
そして、インスタンスが用いるディスク容量は低スペック~中スペックくらいのものは50GBです。
なので、ディスクイメージを無料でバックアップすることが可能です。

したがって、
インスタンスの停止 → ディスクイメージのバックアップ取得 → インスタンス削除
という手順を踏むことで、ディスクイメージを保持したまま課金を止めることができます。

また、インスタンスの起動時にバックアップイメージを書き戻して起動することが出きるので、
インスタンス削除時の環境を取り戻すこともできます。

必要に応じて性能が選べる

インスタンスをバックアップイメージから書き戻して起動する際には、以前に用いていたインスタンスと異なる性能のものを選ぶことができます。
したがって、普段は最低スペックのものを用いておき、必要に応じて、高性能のインスタンスを選ぶことで、簡易に性能向上が可能デス。

SSDが乗っている

人間が直接扱う環境に関しては、CPUが早いよりもSSDが乗っていることのほうが体感速度に影響は大きいと思います。
ConoHaは全部のインスタンスがSSDで動いているので、人間が快適に使うのに向いていると考えます。

日本国内にホストされている

VDIはネットワーク越しに用いるものなので、手元の環境からホストされているインスタンスまでのネットワーク的な距離、主にレイテンシが重要になります。
ConoHaは国内にインスタンスをホストしてくれるため、レイテンシを小さく抑えることができます。

まとめ

以上の理由で、安くVDI環境を構築するのに、ConoHaは向いていると考えます!
このエントリも、ConoHa上で起動した最低スペックのインスタンス上のIntelliJ IDEAで書いています。
まったく何の問題もなく使えています。
新しい開発環境は欲しいけどどうしよう・・・と悩んでいる方、
ConoHaはユーザ登録すると、いくらか分か無料で使えますので、ぜひ試してみてくださいね!

Linux(fedora 21)の上でVisual Studio Code を使って sails.js の開発をしたい!

あらまし

さいきん、アニイベZというアニソンがかかるクラブイベントのをまとめたポータルサイトの拡張機能の開発を担当することとなりました。開発には、いろいろな経緯があって、 node.js 向けの RoR 風フレームワークである sails.js というフレームワークを用いて開発を行うことにしました。

これまではemacsのjs2-modeで開発を行おうと試みてきたのですが、無名関数を使うとインデントが大きく崩れたり、補完がなんだか上手く効かなかったりと、効率の悪い状況が続いてきました。

何かいいIDEは無いものかなぁ。WebStormはお金かかるからなぁ。。などと思っていたところに、Microsoftの開発者向けカンファレンスである Build 2015 にて Visual Studio Code という、WindowsでもMacでもLinuxでも動く、.Netとnode.js向けのIDEが発表されたという報道を見て、おー、これ、試してみるかー と思って、試してみました。

sails.jsもnode.jsもよくわかってないのでトンチンカンなことを書いているかもしれませんが、自分のための備忘録というか、作業ログってことで。

ここに書いてあるのを真似するとできるようになること

  • Visual Studio Code である程度補完がきくようになる
  • ブレイクポイントを置いてデバッグできる

できるようにならないこと

  • ormapper(waterline)とかblueprintの補完はできない
  • 他にもいろいろできないことがありそうだけどまだよくわからない

やりかた

1. まずはsailsを動かす

1.1. fedora 21 をインストールする

してください。自分はWorkstationをVMware Player上にインストールしました。

1.2. node.js と npm をインストールする

とりあえず、node.jsとnpmをyumでインストールします。

$ sudo yum install node npm

でも、このままだとnpmのバージョンが古くてsailsがインストールできないので、一度npmを最新版にします。

$ sudo npm install -g npm

これでnpmが新しくなりました。

1.3. sails をインストールする

というわけで、sailsをインストールします。

$ sudo npm install -g sails

1.4. sailsを動かしてみる

$ sudo npm install -g sails
$ cd visualstudio_sails
$ sails lift

として、webブラウザで http://localhost:1337 を見るとテンプレートのページが見えるはずです。

2. Visual Studio Codeをインストールしてデバッガで止めてみる

2.1. Visual Studio Code をインストールする

まずは、Visual Studio Code公式サイトからVisual Studio Code をダウンロードしてきます。zipなので適当に圧縮を解いて、適当な場所に置きます。自分は取り敢えずホームディレクトリのvscってディレクトリに置くことにしました。

$ unzip VSCode-linux-x64.zip -d vsc
$ cd vsc
$ ./Code

ってすると起動します。おお、かっこいいではないか。

Screenshot from 2015-05-07 23:56:23とりあえず右側のWelcomeタブは適当に眺めた後に閉じちゃいましょう。

2.2. さっき作ったsailsのプロジェクトを読み込んでみる

File -> Open Folder でさっき作った visualstudio_sails ディレクトリを選択。すると、でぃれくとりのツリーが見えます。適当にフォルダを開いてやると、ファイルの中身も見えます。

Screenshot from 2015-05-08 00:03:56

2.3. 実行環境の設定をする

Visual Studio Code内からsailsを実行したりデバッグしてあげたりするためには、nodeやsailsがどこにおいてあるかを伝えなきゃダメだよなぁということで、その辺りを設定します。

左に縦に4つ並んでるアイコンの一番下に虫禁止マークみたいなのがあるので、それをポチッとしてやります。すると、今までディレクトリ構成を表示してたところが、変数やスタックを表示するための物に切り替わります。その上の方に、如何にも設定用のアイコンといった趣の歯車のアイコンがあるので、そいつを押してやると

Screenshot from 2015-05-08 00:09:02なんか、launch.json という如何にもプログラムを動かすための設定を記述するために使うっぽいファイルが開きます。

歯車の左にあるドロップダウンリストの内容は、このjsonファイルの configuration 配列によって定義されているオーラを感じますので、このファイルをコメントと空気を読んで編集します。

具体的にはこんな感じにしてみました。

{
    "version": "0.1.0",
    // List of configurations. Add new configurations or edit existing ones.  
    // ONLY "node" and "mono" are supported, change "type" to switch.
    "configurations": [
        {
            // Name of configuration; appears in the launch configuration drop down menu.
            "name": "Launch sails.js",
            // Type of configuration. Possible values: "node", "mono".
            "type": "node",
            // Workspace relative or absolute path to the program.
            "program": "/usr/bin/sails",
            // Automatically stop program after launch.
            "stopOnEntry": true,
            // Command line arguments passed to the program.
            "args": ["lift"],
            // Workspace relative or absolute path to the working directory of the program being debugged. Default is the current workspace.
            "cwd": ".",
            // Workspace relative or absolute path to the runtime executable to be used. Default is the runtime executable on the PATH.
            "runtimeExecutable": "/usr/bin/node",
            // Environment variables passed to the program.
            "env": { }
        }, 
        {
            // Name of configuration; appears in the launch configuration drop down menu.
            "name": "Launch app.js",
            // Type of configuration. Possible values: "node", "mono".
            "type": "node",
            // Workspace relative or absolute path to the program.
            "program": "app.js",
            // Automatically stop program after launch.
            "stopOnEntry": true,
            // Command line arguments passed to the program.
            "args": [],
            // Workspace relative or absolute path to the working directory of the program being debugged. Default is the current workspace.
            "cwd": ".",
            // Workspace relative or absolute path to the runtime executable to be used. Default is the runtime executable on the PATH.
            "runtimeExecutable": null,
            // Environment variables passed to the program.
            "env": { }
        }, 
        {
            "name": "Attach",
            "type": "node",
            // TCP/IP address. Default is "localhost".
            "address": "localhost",
            // Port to attach to.
            "port": 5858
        }
    ]
}

Launch Sails.js って書いてある要素が追加した部分になります。これを保存すると、さっきのドロップダウンリストにLaunch Sails.js という選択肢が現れるので、これを有り難く選択します。

で、その左にある如何にも実行ボタンっぽい右向きの緑色の矢印を押すと

Screenshot from 2015-05-08 00:19:36なんか、エラーがでる訳です。

エラーの内容を確認すると、

Cannot start OpenDebug because Mono (or a Mono version >= 3.10.0) is required

なんか、Monoの3.10.0以上が必要だと言わます。なるほどなるほど、じゃあMonoをインストールしてやろうと思って、yum install ’mono*’ なんてやろうものなら fedora 標準のバージョン2.10のmonoがインストールされ、とても残念な気持ちになるので、ここはぐっとこらえます。

2.4. 新しいmonoをインストールする

Monoの公式ページにインストール方法が明示してあるので、ありがたみを感じながらこれに沿ってyumのレポジトリをまずは有効化します。

$ sudo rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
$ sudo yum-config-manager --add-repo http://download.mono-project.com/repo/centos/

 

これで、yumのレポジトリが有効になったはずです。レポジトリの名前を確認するために yum repolist を実行すると

$ yum repolist
読み込んだプラグイン:langpacks
download.mono-project.com_repo_centos_ | 2.9 kB 00:00
download.mono-project.com_repo_centos_/primary_db | 213 kB 00:00
リポジトリー ID リポジトリー名 状態
download.mono-project.com_repo_centos_ added from: http://download.mono-p 322
fedora/21/x86_64 Fedora 21 - x86_64 42,816
updates/21/x86_64 Fedora 21 - x86_64 - Updates 16,325
repolist: 59,463

download.mono-project.com_repo_centos_ が追加されたレポジトリのようですので、このレポジトリの中のmonoをインストールしてやります。

$ sudo yum repository-packages download.mono-project.com_repo_centos_ install mono

で、さっき押したときにエラーが出た、如何にも実行ボタンっぽい右向きの緑色の矢印を押すと

Screenshot from 2015-05-08 00:37:09なんか、黄色い右向き矢印が出て、如何にもプログラムの先頭で止まってるなーというオーラを感じられます。なので、如何にもコンテニューボタンっぽい上部真ん中に現れた、右向きの三角形を押してやります。すると、なんかsails.jsが動き出したオーラが感じられるので、ブラウザで http://localhost:1337 を確認してあげるとちゃんと動いているのが確認できます。

赤くて四角いボタンを押すと止まります。実行と停止を何回かやってもとりあえず上手く動きます。ここで設定が終わったオーラを感じますが、もう一息です。

2.5. 何かコードを書いてデバッグしてみる

ここまで来たら、何か実際にコードを書いてブレイクポイントを置いてみたいという衝動に駆られるのが人間の性です。なので、適当にuserなどという名前のapiを作ってみます。

visualstudio_sails ディレクトリ内で

$ sails generate api user
info: Created a new api!

ってやると、userという名前のmodelとcontrollerが作られます。よし、早速実行だ!と思って実行ボタンを押して、いざ http://localhost:1337 に接続しようとすると接続できません。その内、実行が終わったような感じで、画面上部中央のデバッグ中にだけ表示されるボタンも消えてしまいます。

ここで、何かがおかしいと感じて、./Code を実行したコンソールを改めて確認すると色々表示されている中に

error: Error: The hook `orm` is taking too long to load

という文字列を見つけることができると思います。何やらormapperが上手く動いていないらしいぞ、と感づきます。

ここで、 visualstudio_sails ディレクトリ内で、 sails lift すると

In a production environment (NODE_ENV===”production”) Sails always uses
migrate:”safe” to protect inadvertent deletion of your data.
However during development, you have a few other options for convenience:

1. safe – never auto-migrate my database(s). I will do it myself (by hand)
2. alter – auto-migrate, but attempt to keep my existing data (experimental)
3. drop – wipe/drop ALL my data and rebuild models every time I lift Sails

What would you like Sails to do?

info: To skip this prompt in the future, set `sails.config.models.migrate`.
info: (conventionally, this is done in `config/models.js`)

warn: ** DO NOT CHOOSE “2” or “3” IF YOU ARE WORKING WITH PRODUCTION DATA **

と表示され、どのようにデータを引き継ぐか決めろと迫ってきます。さらにこの状態で何もせずに放っておくと

prompt: ?:  error: Error: The hook `orm` is taking too long to load.
Make sure it is triggering its `initialize()` callback, or else set `sails.config.orm._hookTimeout to a higher value (currently 20000)
at tooLong [as _onTimeout] (/usr/lib/node_modules/sails/lib/app/private/loadHooks.js:92:21)
at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)

というエラーを吐いて、タイムアウトして終了します。さっき、Visual Studio Code 上で実行したのに動かなかったのはこれが原因だなーとわかります。先程のエラーメッセージの中に

info: To skip this prompt in the future, set `sails.config.models.migrate`.
info: (conventionally, this is done in `config/models.js`)

と有り難く書いてあるので、config.models.js を開くと下の方に

// migrate: ‘alter’

と如何にもそれっぽい文字列が見当たるので、このコメントアウトを取ってあげます。すると、さっきの引継方法で2を選んだことに毎回自動的になります。

改めてVisual Studio Code のデバッガからsailsを起動すると無事起動します。あとは、好きなようにコードを書いて、デバッガで止めてと快適に使えると思います。

なんか、適当にコードをかいて、ブレイクポイントを置いて、コールスタックも変数の中身もちゃんと見えてるぞというスクリーンショットと共にお別れしたいと思います。それでは皆さんさようなら。

Screenshot from 2015-05-08 01:09:26

おつかれさまでした。

 

DTM用Windows PCにちょっとSSDを入れて高速化

こんにちは、ちゃーりーです。

最近、会社のPCはおおよそSSD化が済み、外で使っているMacbook AIRで当然SSDって状況で、なぜか一番ヘビーな処理をするDTM用のWindows 7 のPCだけにSSDを使っていないという妙な状況になっていました。

DTM用のPCって、プレイバックサンプラー(Kontaktとか)用のファイルがすごく大きくて、全てのHDDをSSDに置き換えるってのはお金の面で結構厳しいものがあったりします。2015年5月時点だと1TBで5万円弱ってところでしょうか。まだまだお高い。

で、歴史的経緯でなぜか80GBのSSDが家の中にあるので、これをどうにか有効活用しようと思いまして、今回、 ISRTという、HDDのうち使用頻度が高いデータをSSDにキャッシュしてくれる仕組みを用いてみることにしました。

自分が使っていたマザーボードはこのISRTに対応していなかったマザーボードなのでヤフオクで対応しているマザーボードを調達しました。

で、マザーボードを換装すると、最近のWindowsは起動中にコケる(http://necotek.blog.fc2.com/blog-entry-79.html)ので、レジストリをいじって対処。無事起動したら、ドライバをエラーがなくなるまでインストールしまくりました。

で、ISRTを有効にするための手順を適当に踏んだら、無事、SSDをHDDのキャッシュとして利用できるようになりました。

HDDに容量にあまり余裕がない状態で、デフラグなども特段せず、再インストールもせず4年4ヶ月も使い込んできたPCなので、相当断片化が進んで、起動時にランダムアクセスがこれまでは発生しまくっていたのですが、起動に必要な諸々は全てSSDの上に乗っかってまずは起動が早くなりました。

あと、使用頻度が高いDAWやサンプラーをはじめとするアプリケーションも随分起動が早くなりました。

ISRTでは64GBまでしかキャッシュとして使用することはできないので、あまり大きいSSDを買う必要はありません。64GBのものであれば5500円程度で買えるようです。キャッシュに使わなかった領域は、普通に使えるので、ちょっと奮発して大きめのものを買っちゃってもいいかもしれないよ。ともおもいます。

既存のHDDに付け足す形で特段、OSの再インストールも必要ありませんので、使用しているPCのマザーボードがISRTに対応していて、SSDを追加する物理的な場所があって、HDDの遅さにイライラしているようなら導入してみてはいかがでしょうか。コストパフォーマンス、高いと思います。