gnupotの出力から動画作成
splotで3次元の出力をしたら見にくかったので,
2次元に切った画像を動画にしてみたときの操作メモ.
まずは,c++などでデータを出力
double func(double c, double d){ return 0;//適当な関数 } void outputC(int i, int n){ double c = 1.0*i/n; char fname[256]; sprintf(fname,"dat/c%03d.dat", i); std::ofstream out(fname); for(int j=1;j<=n;++j){ double d = 1.0*j/n; out << c << ' ' << d << ' ' << func(c,d) << "\n"; } } int main(int,char**){ int n = 128; for(int i=1;i<=n;++i){ outputC(i,n); } return 0; }
生成したデータをgnuplotでpng画像に変換し,ffmpegでaviファイルに変換
#!/bin/sh ls dat/*.dat | while read FILE do NAME=`basename $FILE .dat` echo "$NAME" gnuplot <<EOF set xrange [0:1.0] set yrange [1.0:10.0] set term png set output "dat/$NAME.png" plot "dat/$NAME.dat" using 2:3 w l EOF done ffmpeg -r 10 -i "dat/%3d.png" -vcodec mjpeg -sameq out.avi
ubuntuからandroidプログラムの実機での実行
タイトルのことを実行しようとしてハマったので解決法のメモ.
環境はubuntu11.04とgalaxy s2
javaとeclipseとandroid sdkは入っていて,
エミュレータでの実行は成功した後の話.
ついでに,adbへのパスも通ってる.
android側では"提供元不明のアプリ"と"USBデバッグ"にチェックをつけている状態.
何も設定せずにusbでandroidをつなぎ,adb devicesを実行すると以下のようになる.
# adb devices
?????????? no permission
udev rulesの設定が必要らしい.
まずは,lsusbでidVendorを確認.
# lusb
Bus 001 Device 011: ID 04e8:685e Samsung Electronics Co., Ltd
これでvendor idが04e8だと分かる(685eはproduct id,たぶん)
udev rulseを設定.idVendorのところにはさっき調べたvendor idを入れる
sudo echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666"' /etc/udev/rules.d/51-android.rules
sudo chmod a+rx /etc/udev/rules.d/51-android.rules
これでもまだno permissionで,調べたところadb serverをsuper userで実行すればよいとのこと
adb kill-server sudo adb start-server
あとは,androidをつなぎなおせば認識をしてくれた.
adb devices
List of devices attached
############### device
(###############には実際は数字が入ってます)
名刺作成
そろそろ必要になることも多くなってきたので,つくってみる.
注文は安かったので前川企画印刷(有限会社 前川企画印刷|デザイナーもコピーライターも…[神戸市兵庫区])で.
100枚で片面の場合,モノクロなら1000円,カラーでも1300円(送料込み)とお得.
宣伝のためのキャンペーンなので条件があるが,
ブロガー名刺に関するご案内は引っ越しいたしました。 - 引っ越しました → 川柳家の書いていたブログ
までトラックバックを送信するだけ.
完成したら,また報告する.
Ubuntu11.04 on さくらVPS からメールをGMailへ転送
ドメイン yambi.jp を取得して,さくらVPSを借りました.
以下,独自ドメインのメールアドレスをGMailから使う設定メモ
初心者なので間違えがある可能性大
まずは必要なソフトをapt-get
sudo apt-get install postfix sasl2-bin
/etc/postfix/main.cfを次の内容に変更
mail_owner = postfix myhostname = mail.yambi.jp mydomain = yambi.jp myorigin = $mydomain inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 home_mailbox = Maildir/ relayhost = [smtp.gmail.com]:587 #sasl setting smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_sasl_tls_security_options = noanonymous smtp_sasl_mechanism_filter = plain #tls setting smtp_use_tls = yes smtp_tls_security_level = may smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
/etc/postfix/sasl_passwdを作成し,以下を記入
(もちろん,{myaccount}, {mypassword}は適切なものに置き換える)
[smtp.gmail.com]:587 {myaccount}@gmail.com:{mypassword}
[smtp.gmail.com]:587 encrypt
sudo postmap /etc/postfix/sasl_passwd sudo postmap /etc/postfix/tls_policy chmod 600 /etc/postfix/sasl_passwd chmod 600 /etc/postfix/sasl_passwd.db sudo /etc/init.d/postfix restart
~/.forwardに転送先を書く
{myaccount}@gmail.com
これで,gmailに転送されるようになる.
2011/09/30 追記
main.cfの設定は
mail_owner = postfix
myhostname = mail.yambi.jp
mydomain = yambi.jp
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
home_mailbox = Maildir/
だけでも.forwardで転送できるみたい.
むしろそうしないと転送時にgmailによるFromの書き換えが行われ,
元の送信者が分からなくなってしまう問題が発生してしまった.
VPSからGMailに登録されたアドレスでメールを送りたいときにはrelayhostが必要だけど,
今回は必要ないので消した.
relayhostの意味をちゃんと理解していなかった...
Javascriptで音を鳴らす
夏休みだし,javascriptでも勉強しようかと思ってゲームを作成中.
(物理演算ブロック崩し みたいなの)
そこで音を鳴らすのに苦労したので調査メモを残す.
chromeとfirefoxで確認
方法1 divを使う
一番簡単で,大抵の場所で動く方法.
htmlファイルに
<div id="sound_element"></div>
と記述し,javascriptから
document.getElementById("sound_element").innerHTML= "<embed src='"+sound_file_url+"' hidden=true autostart=true loop=false>";
を実行するだけ.
ただし,遅延は非常に大きい.
1回鳴らすだけで5秒ぐらい遅れるので効果音などにはまったく使えない.
方法2 audioタグを使う
html5が使えるならこれ.
newでAudioオブジェクトを作り,
var audio = new Audio(sound_file_url);
playで音を鳴らす
audio.play();
先に読み込みができるので,遅延はほとんどなし.
複数回同時にならしたいなら,複数個同じオブジェクトを用意すればよい.
しかし,先に複数用意するのは無駄だし,
その場で新しいのを作ることにするとサーバに負荷がかかる.
方法3 audioタグ+Data URI scheme
Data URI schemeはファイルのなかにリソースを埋め込んで別のファイルを読む負荷を減らそうというもの(たぶん)
これを使えばサーバへの負荷が軽減できる.
やり方はsound_file_urlの代わりに「base64でエンコードした音ファイルにヘッダをつけた文字列」を書くだけ
var s = "data:audio/wav;base64,UklGRiQXAABXQVZFZm10IBAAA...." //実際はとても長い var audio = new Audio(s); audio.play();
wavファイルのbase64へのエンコードなら次のスクリプトを使えば良い
#!/usr/bin/zsh for i in $* do echo -n "data:audio/wav;base64," base64 $i | tr -d '\n' echo "" done exit 0
欠点は,base64にエンコードするので少し長くなるのと,エンコードが面倒なこと.
後,1秒間に100回ぐらい再生しようとしたらブラウザがクラッシュした.
crack windows7
windowsのログインパスワードが分からなくなったので解除してくれとの依頼があったので,
いろいろ試してみたメモ.
対象はwindows7の32bit OS
Ophcrack
http://ophcrack.sourceforge.net/
レインボーテーブルとかいうのを使ってハッシュ値からパスワードを復元するらしい.
しかし,途中でエラーが出てうまくいかなかったので別の手段をとることに.
windows7には対応してないのかも
KON-BOOT
http://www.piotrbania.com/all/kon-boot/
このcdを入れて起動すればパスワードなしでログインできるようになるので,すごく簡単.
しかし,パスワード変更はできなかったので今回の目的には合わず.