2014/12/25

Systembackを使って現在の環境のLiveDVDを作る

Ubuntuを使っていて、今操作しているPCと同じ環境のPCをもう一つ作りたい場合(仮想環境も含む)や、
今の環境を他のPCにそのままインストールできる形でバックアップをとっておきたい
というようなケースが自分はよくあります。

ちょっと前まではremastersysというソフトを使っていましたが、現在は開発終了になってしまいました。
○○○○に怖いものなんてない!!: Remastersysが開発中止で使用不可能!?
http://kowaimononantenai.blogspot.jp/2013/04/remastersys.html

その代わりになるようなソフトを見つけたので使ってみます。
"systemback"というソフトらしいです。

まずはインストールします。
PPAで入るので簡単ですね。
次のコマンドを打ち込んでください。
sudo add-apt-repository ppa:nemh/systemback
sudo apt-get update
sudo apt-get install systemback
起動をすると、初めにパスワードを聞かれます。
ログインの時と同じパスワードでおkです。

まずは下のようなホーム画面が出てきます。

入れたばかりなので、復元ポイントが何もありません。
よって、Point operationのCreate newを押して、今の環境のバックアップを取りましょう。
そのあとはいろんなボタンがアクティブになっているはずです。

 今回はLiveDVDを作りたいので、
Live System create を実行します。
homeなどを含めるかをチェックした後、create newを押します。

これでおkです。


今回の目標はLiveDVDを作ることですが、色々なボタンがあるので簡単に説明していきます。

1. System restore

(これは復元ポイントの右のチェックを入れると押せるようになります)
これで、現在のPCの環境を復元ポイントの環境に戻せます。
これを押すと次のようになります。
Full restore は環境まるごとrestoreする。
System files restore はシステム部だけrestoreする(homeはしない)。
Users configuration file restore はhomeだけするってことですね。

オプションでGRUB2をインストールし直すなんてのもあります。

2. System install
 
ほぼSystem restoreと同じですが、restoreしたあとの環境のユーザー名やパスワードを任意に設定することができます。

3.Exclude

バックアップを取らないファイルを指定することができます。
いらないところを省いておけばバックアップの容量も小さくなっていいと思います。
(自分の環境ではDropboxとかVirtualBoxとか・・・)

4.Schedule

バックアップを取るスケジュールを指定することができます。
ここで、何日に一回バックアップを取るというようなことにしておけば、
何か問題があった時に直近の状態に戻せますね。




2014/12/22

ROSのトピックにおける送受信間のバッファ数について

ちょっとトピックの送受信間の通信で、バッファみたいなのがあるならその数を調整したいです。

調べた所、やっぱりあるみたいですね。
ROSのチュートリアルにも書いてありました。

C++のチュートリアルではこの行ですね。
ros::Publisher chatter_pub = n.advertise<std_msgs::string>("chatter", 1000);
Pythonではこの行です。
pub = rospy.Publisher('chatter', String, queue_size=10)

ROSではqueue_sizeという引数の名前になっているらしく、
上記ではC++は1000、Pythonでは10に設定されていますね。

要するにバッファの数なので、どんなときに大きくするといいのか、小さくするといいのかは解ると思いますが、以下のURLの" Choosing a good queue_size "ってところに書いてますね。
rospy/Overview/Publishers and Subscribers - ROS Wiki
http://wiki.ros.org/rospy/Overview/Publishers%20and%20Subscribers

加えて、Hydro以降はqueue_sizeが入力されていないと、以下のようなWarningが出るようになっているそうです。

SyntaxWarning: The publisher should be created with an explicit keyword argument 'queue_size'. Please see
http://wiki.ros.org/rospy/Overview/Publishers%20and%20Subscribers
 for more information.

参考にしたサイト
roscpp: ros::NodeHandle Class Reference
http://docs.ros.org/indigo/api/roscpp/html/classros_1_1NodeHandle.html

catkinでは import roslib や roslib.load_manifest() はいらない

最近ではcatkinが主流になりましたが、ネットではまだまだrosbuildを使った記事によく当たります。

Pythonで書く時に、rosbuildでは

import roslib
roslib.load_manifest( ... )

が必要でしたが、catkinではいらないのでコメントアウトでおkです。
それだけです。

参考にしたサイト
what does roslib.load_manifest() do? - ROS Answers: Open Source Q&A Forum
http://answers.ros.org/question/115346/what-does-roslibload_manifest-do/

catkin/migrating_from_rosbuild - ROS Wiki
http://wiki.ros.org/catkin/migrating_from_rosbuild

roslib.load_manifest error - Python - ROS Answers: Open Source Q&A Forum
http://answers.ros.org/question/107261/roslibload_manifest-error-python/

ROSで " ROSException: ROS node has not been initialized yet. Please call init_node() first " というエラーが出たら

ここを参考にして画像処理のサンプルプログラムを書いたのですが、( 参考というかただのコピペ )

cv_bridge/Tutorials/ConvertingBetweenROSImagesAndOpenCVImagesPython - ROS Wiki
http://wiki.ros.org/cv_bridge/Tutorial/ConvertingBetweenROSImagesAndOpenCVImagesPython

catkin_makeしたら次のようなエラーになってしまいました。

ROSException: ROS node has not been initialized yet. Please call init_node() first

まあ、書いてあるとおり「初めにinit_node()をしろ」ってことなので、
main関数のすぐ後にinit_node()を実行するようにした所、エラーが無くなりました。

init_node()なので初めに実行するようにするのはわかりやすいしいいのですが、
TutorialのPythonのサンプルプログラムでも" rospy.Publish() "の方が先に来てるんだよね。

まあ、このエラーになったらinit_node()が初めに実行されているか確認しましょう。

2014/12/21

ページビューが300,000を超えたので人気の記事を調べて見ました.

今見た所,いつの間にかページビューの数が300,000を超えていました.
こんなブログを見てくれて有難うございます.
記念して,人気のある記事のランキングを載せてみようと思います.

ちなみに前回の100,000回の時にやった記事はこれです。
#200,000回はやってません(笑)
 ○○○○に怖いものなんてない!!: ページビューが100,000を超えたので人気の記事を調べて見ました.
http://kowaimononantenai.blogspot.jp/2013/10/100000.html


第1位
 ○○○○に怖いものなんてない!!: mp4とm4vの違い
http://kowaimononantenai.blogspot.jp/2012/09/mp4m4v.html

前回の100,000回時点の集計でも1位でしたね。
ぶっちぎりの1位で全体の15%がこの記事でした。
自分的にはもっとプログラム系やLinux系の記事が1位になれば良かったと思ったりします。。。
まあ、やや一般的の人も気になる内容なので閲覧回数が上がっていっったのではないかと思います。

第2位 
 ○○○○に怖いものなんてない!!: C++の「auto型」について
http://kowaimononantenai.blogspot.jp/2012/10/cauto.html

C++のauto型についてのちょっとした解説記事です。
全体の5%がこの記事です。
前回は9位だったので、大躍進ですね(笑)
これからC++を使う機会が多くなりそうなので、この様な記事を書くことが多くなりそうです。

第3位
○○○○に怖いものなんてない!!: MPC-HCでBlu-rayを再生する方法
http://kowaimononantenai.blogspot.jp/2013/08/mpc-hcblu-ray.html

これも1位と同様、いろんな人が引っかかる所なので、上位になっているのではないかと思います。
ちなみに、前回8位。

第4位
○○○○に怖いものなんてない!!: C++のコンストラクタにある「:(コロン)」について
http://kowaimononantenai.blogspot.jp/2012/10/c.html

このブログを見る人はC++ユーザーが多いのか?
まあ、自分がC++をメインで使っているからだろうけど。
前回10位。

第5位 
○○○○に怖いものなんてない!!: ARToolKitのインストール(Windows7 64bit, VisualC++ 2010)
http://kowaimononantenai.blogspot.jp/2013/11/artoolkitwindows7-64bit-visualc-2010.html


古い情報が多いARToolKitのインストール方法をVC++2010でまとめたものです。
まあ、これは自分も何回か参照しています。
前回圏外。


第6位
○○○○に怖いものなんてない!!: Windows Update でエラーになったときの対処法
http://kowaimononantenai.blogspot.jp/2012/06/windows-update.html

このエラーはあんまり出くわさないと思っていたけど、
みんな結構出くわしているんですね。
前回圏外。


第7位
○○○○に怖いものなんてない!!: Windows7でWindows SDKのインストールする際に出るエラーの解決方法
http://kowaimononantenai.blogspot.jp/2013/11/windows7windows-sdk.html

これは出くわした時には結構手間がかかっているので、それなりに順位が高くて嬉しいですね。
前回圏外。

第8位
○○○○に怖いものなんてない!!: OpenCVでfillConvexPolyを使って四角形や多角形を描画する
http://kowaimononantenai.blogspot.jp/2013/10/opencv.html

これはOpenCVの一つの関数を使ってみただけだけど。
みんなあんまり使わないのか、使っている記事が無くて、自分でサンプルを書いたやつですね。
このような記事がTOP10に来てくれると、簡単なサンプルを貼るのが楽しくなりますね。
前回圏外。

第9位
○○○○に怖いものなんてない!!: Windows8.1とUbuntuのUEFI環境でのデュアルブート構築方法
http://kowaimononantenai.blogspot.jp/2014/02/windows81ubuntuuefi.html

これはちょっと前から問題になっているUEFI環境でのデュアルブート方法です。
これも実際に実験したので思い出があります。
前回圏外。


第10位
○○○○に怖いものなんてない!!: USBメモリの無料データ復元ソフト
http://kowaimononantenai.blogspot.jp/2012/08/usb.html

複数のソフトを使って実験をしたものです。
まあ、いいでしょう(適当)


全体を見ると、このブログの趣味嗜好が閲覧数に反映されてきたなーって思います。
前回の時点では「できなかったけど、ググってここ見たら出来た!」みたいな記事が高順位にあることも多かったし、
あんまり力を入れていない分野の記事が良かったりすることもありました。

それに対して今回の記事はプログラム系の記事が多いのに加え、
「理解を助けるためにサンプルプログラムを作って動作させました。」みたいな記事が多かったです。
これからこのような記事が多くなっていくような気がするので、
方向性があっていていいですね。

GNUのddrescueを使う

イメージをコピーしたりする時にddコマンドを使います。
しかし、ddコマンドにはちょっと使いにくいところがあります。

そこで、ddrescueを使ってやっていきます。

ddrescueはapt-getで入ります。

 sudo apt-get install gddrescue

コマンド名とパッケージ名が微妙に違うので注意が必要です。
GNUのddrescueだからgddrescueです。

#本当はddrescueにも2種類あって、GNUのddrescueとGNUじゃないddrescueがあります。
#Ubuntu12.04くらいまでは両方のddrescueがapt-getで入れれたのですが。
#Ubuntu14.04ではGNUのddrescueしかapt-getに登録されていないですね。

 sudo ddrescue -v -A -r3 [INFILE] [OUTFILE] [LOGFILE]

オプションについては以下の通りです。
  -v  :  経過を画面出力
  -A  :  エラーの部分には0を入れる
  -r   :  指定した回数分リトライする

加えてですが、OUTFILEにデバイス名が入っている時には" --force "オプションを追加しないと行けないみたいです。
こんなエラーが出ます。

ddrescue: Output file exists and is not a regular file.
ddrescue: Use '--force' if you really want to overwrite it, but be
          aware that all existing data in the output file will be lost.
Try 'ddrescue --help' for more information.


結構ミスすると泣ける操作なので、--forceオプションは初めは付けないで、
エラーになったら再度確認後オプションをつけたほうがいいかなと思います。

参考にしたサイト
SUSE Linux での dd_rescue : 非番のエンジニア
http://islandcnt.exblog.jp/16789134/

Inner Journeys: GNU ddrescueを使って、壊れたHDDからデーターを救出。
http://babooshka-innerjourneys.blogspot.jp/2012/11/gnu-ddrescuehdd.html