ページ

2019年5月26日日曜日

Subversionで直前のコミットを取り消す.

間違えてコミットしてしまった!という状況の回復.

まずは,作業ディレクトリを最新の状況にして,リビジョンを確認する.
$ svn update
Updating '.':
At revision 354.

リビジョン354を取り消して,353に逆マージする.(ここでは,リビジョン354でコミットしたClassAというクラスの作成を取り消している.最後のドットを忘れないように注意)
$ svn merge -r 354:353 .
--- Reverse-merging r354 into '.':
D    ClassA.h
D    ClassA.cpp
--- Recording mergeinfo for reverse merge of r354 into '.':
 U   .
--- Eliding mergeinfo from '.':
 U   .

これをコミットすれば作業完了(念の為,コミットする前にビルド&動作確認とかしておくと良い.)
$ svn commit 


また,ファイル単位で元に戻したいときは,以下のようにすればファイル単位での修正も可能.
$ svn merge -r 354:353 ClassA.h 
--- Reverse-merging r354 into 'ClassA.h':
D    ClassA.h
--- Recording mergeinfo for reverse merge of r354 into 'ClassA.h':
 U   ClassA.h
--- Eliding mergeinfo from 'ClassA.h':
 U   ClassA.h

以上.

2019年5月24日金曜日

OpenSSLで簡易的なファイルの暗号化/復号化

ファイルの暗号化・復号化を簡単にできないかとぐぐったらOpenSSLを使えば,一発でできることがわかったので,備忘録として残す.

暗号化
$ openssl enc -e -in INFILE -out OUTFILE -salt -k PASSWORD -aes-256-cbc 

復号化
$ openssl enc -d -in INFILE -out OUTFILE -salt -k PASSWORD -aes-256-cbc

以上.

2019年2月26日火曜日

【svnadmin dump】Subversionのリポジトリを別のサーバーに移行する.

svnserveを走らせているRaspberry Piに最新版のOSを再インストールするためなので,移行というよりバックアップ/リストアの方が近いが,やることは同じなのでサーバー間の移行として備忘録に残す.今回,使用するコマンドはsvnadmin dump及びsvnadmin load.実際の手順は以下の通り.

まず,リポジトリが保存してあるサーバでリポジトリをダンプする.
$ svnadmin dump ./repos/Project > svn.dump 

これを別のサーバーにコピー.(svn.dumpの容量が大きいときは先に圧縮したほうが良いだろう.)
$ scp svn.dump <別のサーバのIP>:~/

コピー先のサーバーでも同様にディレクトリを作成.その後,リポジトリを作成する.
$ mkdir -p repos/Project
$ svnadmin create ./repos/Project

最後にコピーしたダンプファイルを取り込む.
(途中,過去のコミット履歴が表示されるので,懐かしい気持ちで取り込みが完了するのを待つ.)
$ svnadmin load ./repos/Project < svn.dump

取り込みが完了したら,問題なく完了しているか試しにチェックアウトしてみる.
$ mkdir tmp
$ svn co file://localhost/[リポジトリを作成したパス]/repos/Project ./tmp/

調べる前はもっといろいろと手順があるかと思っていたが,とても簡単だった.サーバー間の移動だけでなく,リポジトリのバックアップをcronで回してみるのも便利だと思う.

2018年11月4日日曜日

Amazon Echo と Raspberry Pi を Node-RED Alexa Home Skill Bridge で連携させて声でパソコンを起動したりシャットダウンしたりする.

ひと昔前の映画なんかで役者の「〇〇を起動して!」と言う台詞に合わせて,テレビやラジオが起動したりするシーンがよくありましたが,そういうことが現実にもできるようになってきたので構築してみました.



今回活用したサービス/デバイスは以下のラインナップです.

・Amazon Echo Dot(声帯認識)
・Raspberry Pi(Wake On LANコマンド及びSSH越しでのShut Downコマンドの実行)
・Node-RED Alexa Home Skill Bridge(Amazon Echo DotとRaspberry Piの橋渡し)

それでは構築手順を紹介します.

2018年6月29日金曜日

メタリックナノパズル スターウォーズシリーズまとめ

スターウォーズシリーズが,かなりたくさんあるので,まとめてみた.

メタリックナノパズルでミレニアムファルコンを作ってみた

私は結構なスターウォーズファンなのですが(特に旧三部作),ゴールデンウィークに実家に帰省した際,横浜のジョイナスでロイヤルセランゴールの展示に遭遇!思わず撮影会を始めてしまいました笑

Xウィング

TIEファイター

ルーク vs ランコア


しかし,こんなに高価な代物には手を出せないので他に良いものは無いかと探していて見つけたのがメタリック・ナノパズルです.

2018年2月7日水曜日

sar コマンドで Raspberry Pi のログを取得する

LPICの勉強をしていて,キャパシティプランニングの項でsar及びsadcコマンドが登場したので,Raspberry Pi で動作を確認してみた.

まずはパッケージをインストールする.
$ sudo apt install sysstat

インストールが完了したら,/etc/default/sysstat ファイルを編集する.
(編集前)
ENABLED="false"
(編集後)
ENABLED="true"

最後に,自動起動するように設定し,再起動する.
$ sudo systemctl enable sysstat.service
$ sudo reboot

再起動後,ログファイルが出力されていることを確認する.
$ ls -l /var/log/sysstat
total 4
-rw-r--r-- 1 root root 732 Feb  7 22:17 sa07

sarコマンドを実行すると,ログの内容を確認できる.
$ sar
Linux 4.9.59-v7+ (raspberrypi)      02/07/18        _armv7l_        (4 CPU)

22:17:30     LINUX RESTART      (4 CPU)

また,引数に表示間隔と表示回数を指定すると,リアルタイムでログを出力できる.
$ sar 1 5
Linux 4.9.59-v7+ (raspberrypi)      02/07/18        _armv7l_        (4 CPU)

22:25:48        CPU     %user     %nice   %system   %iowait    %steal     %idle
22:25:49        all      0.50      0.00      0.75      0.00      0.00     98.74
22:25:50        all      0.25      0.00      0.76      0.00      0.00     98.99
22:25:51        all      0.25      0.00      0.76      0.00      0.00     98.99
22:25:52        all      0.25      0.00      0.76      0.00      0.00     98.99
22:25:53        all      0.25      0.00      0.76      0.00      0.00     98.99
Average:        all      0.30      0.00      0.76      0.00      0.00     98.94

sadf コマンドを用いると,JSON形式(-jオプション)やXML形式(-xオプション)で出力することができる.
$ sadf -x
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE sysstat PUBLIC \"DTD v3.1 sysstat //EN\"
\"http://pagesperso-orange.fr/sebastien.godard/sysstat-3.1.dtd\">
<sysstat
xmlns=\"http://pagesperso-orange.fr/sebastien.godard/sysstat\"
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xsi:schemaLocation=\"http://pagesperso-orange.fr/sebastien.godard sysstat.xsd\">
        <sysdata-version>3.1</sysdata-version>
        <host nodename=\"raspberrypi\">
                <sysname>Linux</sysname>
                <release>4.9.59-v7+</release>
                <machine>armv7l</machine>
                <number-of-cpus>4</number-of-cpus>
                <file-date>2018-02-07</file-date>
                <file-utc-time>13:17:30</file-utc-time>
                <statistics>
                </statistics>
                <restarts>
                        <boot date=\"2018-02-07\" time=\"13:17:30\" utc=\"1\" cpu_count=\"4\"/>
                </restarts>
        </host>
</sysstat>