RaspberryPIでクラウドストレージcopyを使用する コンソールモード
RaspberryPIでDropboxは動作しない。何故?arm用のクライアントが無いからです。
アップロード、ダウンロードを操作するシェルスクリプトはあるようなのですが、やっぱり自動で同期してほしいなーと思ってました。
copyならベータ版ですが、RaspberryPI用?のクライアントがあるらしいので、使ってみます。
copyアカウントをまだ持ってない人は、以下の私の紹介アカウントから是非登録してください。
https://copy.com?r=7XIzQt
** Raspberry PI対応 copyクライアントはここで配布されてます(ただしベータ版)
Client for Raspberry PI(Beta)
https://copy.zendesk.com/entries/23438841-Client-for-Raspberry-PI
2014/05/23追記 いつのまにか、正式にサポートされていました。
https://copy.com/install/linux/Copy.tgz
CopyConsole
私は、RaspberryPIでは一切GUIを使ってないので、コンソールモードでcopyを使用したいと思います。
Raspberry PIの設定
とりあえずRaspbianを更新しておきます
sudo aptitude upgrade
copyクライアントダウンロード
wget https://copy.com/install/linux/Copy.tgz --no-check-certificate
適当な位置で展開する
tar zxvf Copy.tgz
x86系の余計なモジュール削除
cd copy rm -r x86*
usrへ移動
sudo mv armv6h /usr/copy
同期ディレクトリを作成
userは自分のアカウントで
sudo mkdir /home/<user>/Copy
デーモンで実行する
emailとuserは自分のアカウントで
sudo /usr/copy/CopyConsole -username=<email> -root=/home/<user>/Copy -daemon
この後、パスワードを聞かれるので、copyアカウントのパスワードを入力する
表示してみる
sudo ls /home/<user>/Copy/
デフォルトのままならば、
"Quickstart Guide.pdf"が表示されるはず
以上
flvをmp4に劣化なしで、複数ファイルをドロップして一括で変換するバッチファイル
表題の通り、flvをmp4に劣化なしで、複数ファイルをドロップして一括で変換するバッチファイルです。
Windowsで動作します。
変換ツールはavconvを使用します。
libav
http://libav.org/download.html
Windows Nightly and Release Buildsから、自分のOSにあったバイナリをダウンロードして、どっかに展開します。
自分は、D:\ols\以下に展開しました。
D:\ols\libav-win64-20130622\usr\bin\avconv.exe
デスクトップ上で、右クリックから空のテキストファイルを作り、"flv4mp4drop.bat"というファイル名にリネームします。
中身を以下のように編集します。
avconvの位置は、自分が展開したパスに置き換えてください。
echo off echo ---------------------------------------- for %%a in (%*) do D:\ols\libav-win64-20130622\usr\bin\avconv.exe -i %%a -c copy "%%~na.mp4" echo ---------------------------------------- pause
そして、このバッチファイルに対して、複数のflvファイルをドロップすると、同じフォルダにコンテナが変換された"mp4"のファイルが作成されます。
以上です。
最適化の近道 プロファイラgprofのコールグラフを画像化して、コードのどこがボトルネックかをわかりやすくする
boostを多用して富豪的プログラミングしまくってたらさすがに遅すぎて、プロファイラで解析しようと
思ったのですが、boost使ってるとgprofの出力解読が困難なので、コールグラフを視覚化できないものかなと思ったら良いツールがあったので使ってみました。
参考
gprofでコールグラフ - 三次元日誌
http://d.hatena.ne.jp/ousttrue/20091017/1255754733
配布サイト
https://code.google.com/p/jrfonseca/wiki/Gprof2Dot
以下はUbuntu13.04での話です。
まずは必要なモジュールのインストール
次に、scriptを以下からwget
wget http://gprof2dot.jrfonseca.googlecode.com/git/gprof2dot.py
sudo chmod 755 gprof2dot.py
gprof用にMakefileに以下を追加
LDFLAGS = -pg -fno-omit-frame-pointer
LOADLIBES = -pg
一回実行して、gmon.outを出力させる
sudo ./a.out
その後、gprofの出力をパイプでつなぎます。
gprof ./a.out | ./gprof2dot.py | dot -Tpng -o output.png
ボトルネックが一目瞭然!
Windows7をルータ化
無線ルータ化ではなく、有線ルータ化の話です。
試験用にLinuxマシンで対向機を作る必要があり、Internetからいろいろソフトをインストールしたかったのだけど、会社が簡単にIPアドレスくれないのでWindows7 PCにNICを二枚差してルータ化し、それ経由でInternet接続しました。
ググると、ソフト入れたり、コンソールからの面倒なルーティング作業やレジストリいじったり等の情報もありますが、この方法ではすべてGUIでいけます。
その時のメモ。
環境構築
既にInternetに繋がったWindows7のPCに、Ethernetデバイスを1つ追加し、
2つある状態にします。
自分は、筐体を開けてNICを刺すのが面倒なので、下記のUSBの有線LANアダプタを付けました。
PLANEX Wii/MacBookAir対応 USB2.0 有線LANアダプタ UE-100TX-G3
RaspberryPIをVPN(L2TP)サーバにして、スマートフォンからVPN接続
スマートフォンからRaspberryPIに対してVPN接続し、家のローカルネットワークにつなぎます。
VPNは、PPTPだと設定等が非常に楽なんですが、docomoのSPモードだと接続できないし、PPTPはセキュリティ的にも緩いらしいので、やや難し目のL2TP使います。
最近ではスマートフォンにOpenVPNクライアントをインストールすれば使えるらしいですが、Android,iPhone標準で使えるL2TPがやはりいいと思います。
注意点として、auの場合は、回線(CDMA2000)の仕様上、通話着信があるとVPNが切断されます。
※以下は記憶を元に書いているので抜けがあるかもしれません
VPNサーバのアドレス
固定IPアドレス契約をしていればいいですが、していない場合は、IPアドレスがころころ変わっていまい、外出先からVPN接続できなくなるため、適当なDDNSサービスに登録しておきます。
(MyDNSがオススメ)
RaspberryPIに対する設定
まずはopenswanとxl2tpdをインストールします。
IPアドレスやID,パスワード等は、自分の環境に置き換えてください。
sudo apt-get install openswan xl2tpd ppp lsof
xl2tpdの設定を行います。
/etc/xl2tpd/xl2tpd.conf
[global] port = 1701 ;使用ポート [lns default] ip range = 192.168.1.230-192.168.1.240 ; VPNクライアントに割り当てるIPアドレス local ip = 192.168.1.20 ; RasPI自身のIPアドレス require chap = yes ; * Require CHAP auth. by peer refuse pap = yes ; * Refuse PAP authentication require authentication = yes ; * Require peer to authenticate name = pi ; * Report this as our hostname ppp debug = yes ; * Turn on PPP debugging pppoptfile = /etc/ppp/options.xl2tpd.lns; * ppp options file length bit = yes
次にopenswanの設定を行います
/etc/ipsec.conf
version 2.0 config setup nat_traversal=yes virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12 oe=off protostack=netkey include /etc/ipsec.d/*.conf
共有鍵の設定
同じものをスマートフォンにも入力します。
(iPhoneの場合には"シークレット"という項目,Androidの場合はIPSec事前共有鍵)
/etc/ipsec.secrets
: PSK "password"
/etc/ppp/options.xl2tpd.lns
mtu 1410 mru 1410 ms-dns 8.8.8.8 ms-dns 8.8.4.4 lcp-echo-interval 3 lcp-echo-failure 8 nodeflate noproxyarp netmask 255.255.255.0 lock
スマートフォンからアクセスするときのID,パスワード設定
同じものをスマートフォンに入力します。
/etc/ppp/chap-secrets
# Secrets for authentication using CHAP # client server secret IP addresses "id" * "password" *
以下のリダイレクトの設定を追加
/etc/sysctl.conf
net.ipv4.conf.eth0.accept_redirects = 0 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.eth0.send_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.lo.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0
自動起動の設定と、再起動
sudo sysv-rc-conf xl2tpd on
sudo sysv-rc-conf ipsec on
/etc/init.d/xl2tpd restart
/etc/init.d/xl2tpd restart
Ubuntu13.04(xrdp)でWindow7からリモートデスクトップ接続
Ubuntu13.04(xrdp)でWindow7からリモートデスクトップ接続しようとしたら、接続は成功したのに、Ubuntuの壁紙が一面に表示されるだけで何も操作できなかった。
ちょっと調べると、Unityはリモートデスクトップ経由では出せないらしい。
確実に忘れると思うので、解決方法のメモ。
Ubuntu13.04側の作業
sudo apt-get install xrdp gnome-session-fallback
sudo vim /etc/xrdp/startwm.sh
#!/bin/sh if [ -r /etc/default/locale ]; then . /etc/default/locale export LANG LANGUAGE fi echo "gnome-session --session=gnome" > ~/.xsession ;<----追加部分 . /etc/X11/Xsession ~
自動起動と再起動
sudo sysv-rc-conf xrdp on
sudo /etc/init.d/xrdp start
その後、Windows7のリモートデスクトップで接続する。
ただし、このままだと、キーボードのdを押すとDesktopが表示されてしまう問題がある。
回避方法として、ショートカットキーの設定を変更する必要がある。
ubuntu13.04の場合はgconf-editorではなく、dconf-editorを使って設定を変更する。
まずはインストール。
インストール時にdconfの'd'が打てないので、ホストOSのWindows側で以下のコマンドをコピーしておく。
sudo apt-get install dconf-tools
そして、ubuntu側の端末でペーストして実行し、インストール。
ubuntu→システムツール→dconfエディタを起動し、
org.gnome.desktop.wm.keybindingsを辿り、
show-desktop '<super>d'
ってなっているのを何か別の適当なショートカットに置き換える。
再ログインが不要で即時変更される。
これで、dキーを押してもデスクトップが表示されるような事態にはならない。
参考
Ubuntu 12.10 で xrdpを使う方法
Growl1.3の xcode 4.3でのビルド
ググったらGrowl1.3が無料で使えるとの情報があった
(オープンソースだということも知らなかった)
有料になったGrowlとHardwareGrowlerをビルドして無料で使う | Macとかの雑記帳
ソース落としてきてxcodeでビルド
早速やってみたけど、ビルドエラー。(2012/05/11時点)
method possibly missing a [super dealloc] call
というエラーになる
xcode 4.3と相性が悪いみたい。
以下にパッチがあった。
Compile and Install Growl 1.3 via XCode 4.3 on Lion | clsung is studying
URL先の内容を見ればわかるけど、簡潔に言うと、
GroupController.mに[super dealloc];を追加する
GrowlMenu.hの2つの宣言を修正する
以上で解決できました。