monacoindをビルドする

環境はArchLinux(つーかAntergosだけど)

何が必要かよくわからないので取り敢えずcloneしてきて様子を見よう。

$ git clone https://github.com/monacoinproject/monacoin.git

http://qiita.com/monapay/items/8642ea58e7d959e380c2 によると、 monacoin/src の中で $ make -f makefile.unix しろって言っているけれど、 makefile.unix なターゲットがないゾ、と怒られるので、素直に INSTALL 読む。

See doc/build-*.md for instructions on building bitcoind(以下略)

と書いてあるので、それらしい doc/build-unix.md を見て対応。

$ ./autogen.sh
$ ./configure
configure: error: Found Berkeley DB other than 4.8. required for portable walltes (--with-incompatible-bdb to ignore or --disable-wallet to disable wallet functionality)

怒られた。 build-unix.md の Dependencies の項を見てみると、 libdb4.8 が Wallet storage に必要らしい。

only needed when wallet enabled

とあるけれど、ま、ウォレット機能は必要でしょ。db4.8(https://aur.archlinux.org/packages/db4.8/)を入れてからリベンジしたら通ったので、次の工程へ。

$ yaourt -S db4.8
$ ./configure
$ make

うまくいっていれば、monacoin/srcの中に monacoind や monacoin-cli が出来ているはず。

動作チェックは割愛。

 

Monacoinをソロマイニングする

Lyra2REv2になってから、Diffが比較的下がっているので、しょぼいCPUでも多少ブロックが発見出来ている(poolのBlock finderで見るとalgo変更から10個は少なくとも見つけている)のだが、得られたMONAは22程度。本当はもっと沢山掘り当てているのに。

という訳でソロマイニングに挑戦する事にした。

 

まずはウォレットを拾ってこよう。

$ wget http://monacoin.org/files/client/0.10.2.2-hotfix/monacoin-0.10.2.2-hotfix-linux64.tar.gz
$ tar -zxvf ./monacoin-0.10.2.2-hotfix-linux64.tar.gz

さて、起動だ。

$ cd ./monacoin/bin
$ ./monacoind
Error: To use monacoind, or the -server option to monacoin-qt, you must set an rpcpassword in the configuration file:
/home/tea/.monacoin/monacoin.conf
It is recommended you use the following random password:
rpcuser=monacoinrpc
rpcpassword=D7J12oDp372pCxjvEqU28MgcxESwD6iqRZQ2tdQpeZcg
(you do not need to remember this password)
The username and password MUST NOT be the same.
If the file does not exist, create it with owner-readable-only file permissions.
It is also recommended to set alertnotify so you are notified of problems;
for example: alertnotify=echo %s | mail -s "Monacoin Alert" ad min@foo.com

Failed to create backup boost::filesystem::copy_file: No such file or directory: "/home/tea/.monacoin/wallet.dat", "/home/te a/.monacoin/backups/wallet.dat.2015-11-14-01.41"

エラー落ち。出力を見つつてきとうに対応する。

$ cd $HOME
$ mkdir -m 700 .monacoin
$ vi .monacoin/monacoin.conf
$ cat .monacoin/monacoin.conf
rpcuser=monacoinrpc
rpcpassword=hoge

 

リベンジという事でもう1度monacoindを起動すると、起動したっぽいけど、猛烈にCPUを食う(おさまる気配無し)し、通信もあまりしているように見えない。GUI版のmonacoin-qtを実行しても大して状況は変わらない。addnode=192.168.0.15みたいな感じでLAN内にいるmonacoin-qt(が実行されているWindows機を今回は使った)を指定してみるとサクッと繋がって同期が始まった。

同期の完了を待ってマイニングのための設定を行う。monacoin.confを修正。

$ cat .monacoin/monacoin.conf
server=1
daemon=1

rpcuser=monacoinrpc
rpcpassword=hoge

rpcallowip=127.0.0.1
rpcallowip=192.168.0.0/24

rpcport=9332

addnode=192.168.0.15

 

 

server=1 : JSON-RPCを受け付けるようにする
daemon=1 : daemonモードで起動
rpcuser : JSON-RPCのためのユーザ名
rpcpassword : JSON-RPCのためのパスワード
rpcallowip : JSON-RPCを受け付けるIPアドレス(ここで指定したアドレスからのアクセスを受け付ける)
rpcport : JSON-RPCのためにlistenするポート

他のPCから接続させるためにはファイアウォールをなんとかしといた方がよさそう。

# ufw allow 9332/tcp
# enable

設定は完了したのでmonacoindを起動(別にmonacoin-qtでも良い)した上で、cpuminerに設定を渡す。

$ ./cpuminer -a lyra2rev2 -u monacoinrpc -p hoge -o localhost: 9332 --coinbase-addr MPnUpEhXHH4NUSofzYEsfMfZSErdo5AFbL

 

–coinbase-addrでウォレット上のアドレスを指定する必要がある。

https://github.com/monacoinproject/Monacoin-exp

0.8.7.1と異なり、ソロマイニングの際には自身のウォレットアドレスを指定する必要があります

jsonで設定を渡すのでも同様。”coinbase-addr”:”MPnUpEhXHH4NUSofzYEsfMfZSErdo5AFbL”が必要になるだけ。

 

ブロック見つけられてないからこれで本当にうまくいってるのかは確証が得られないけれど、まぁ処理はしてるようなのでうまくいったんじゃなかろかね。

 

 

次はMPOSを触って俺々プールを作るか、それかmonacoindのビルドとかやってみるかな。

TSファイルをm2v+wavにDemuxするバッチファイル

TSファイルをm2v+wavにDemuxする…というのはBonTsDemuxを使えばいいんだけど、っていうか使うんだけど、バッチファイルにする意味は一応ある。

アプリケーションへのドラッグアンドドロップが使える時と使えない時があって死ぬほど面倒くさい(起動するたびに不安定に変化する)。BonTsDemuxもそうだし、tssplitterでもそうだし、aviutlでもそう。その場合でもExplorerの上ではきちんと動作する。このパソコンのシステムに何かしら不都合があるんじゃないかと思うんだけど、それを追求するのも、面倒だなぁと。

という訳で、ドラッグアンドドロップしたファイルごとにBonTsDemuxを呼び出すようなバッチを作れば良いねという判断になる。

@echo OFF

:LOOP
if "%~dpnx1" == "" goto END
echo Input: %~dpnx1
C:\dtv\BonTsDemux\BonTsDemuxC.exe -i "%~dpnx1"
if %ERRORLEVEL% == 0 echo completed.
if %ERRORLEVEL% == 1 echo error occurred.
echo;
shift
goto LOOP

:END
echo all jobs were completed.
timeout /t -1

いつもいつもWindows batはクソわかりにくいなって思って逃げてたからよくわかんなかったので、死ぬほどてきとうに書いた。

GUI版を使う必要もねーかなって感じなのでCUI版のBonTsDemuxC.exeを使った。

このままaucとか使って自動でaviutlに突っ込んで行くのもいいかなと思ったけれど、引数をshiftしていってるので、処理を戻せない(shiftは引数を右から左に移動させるけど、左から右に移動させる手は無いんだったはず)あたりがちょっと面倒かなぁといった感じ。引数を使わず自分で処理リストを作ればいいんだけど、それはそれでひたすらに面倒な気がして。

 

ひとまず今日のところはこんな感じで。

標準入出力からクリップボードを使う

Macではpbcopyとかpbpasteがあるらしいんだけど、Macじゃないので、無い。

 

xselというコマンドがあって、これがクリップボードを取り扱える。xselが入ってなかったので取り敢えずインストールしておいてから。

$ pacman -S xsel
$ echo "test" | xsel -i -b
$ xsel -o -b
test

こんな感じ。オプションは、-iが入力である事を示していて(-oは出力)、-bがクリップボードでの処理をするって感じ。

オプション毎度付けるの面倒なのでaliasを登録しておく。Macに習ってコマンド名はpbcopyとpbpasteにしてみた。Mac持ってないけど。

alias pbcopy='xsel -i -b'
alias pbpaste='xsel -o -b'

上記は $ echo .bashrc | grep xsel | pbcopy みたいにして拾ってきた。

今までTerminalからクリップボードへのコピーは、マウスで選択→右クリック→コピーってしてたけど(Shift+Ctrl+Cっていうショートカットキーあるけどいつも忘れてた)、範囲選択しないといけないのが面倒なところ、pipeでそのまま渡せばいいので楽ちんという感じ。

VPCS14AFJに入れたArchLinuxでNFCを使う

https://www.sony.jp/support/vaio/products/vpc/vpcs14afj.html

SONYだった時代のVAIOである。これにはNFCのリーダ/ライタがついているので、これをなんとか使って遊べないかなぁといじってみた。

 

「ついている」というのは、埋め込まれているという事で、きちんと認識しているのかどうか確認。

$ lsusb | grep FeliCa
Bus 001 Device 005: ID 054c:02e1 Sony Corp. FeliCa S330 [PaSoRi]

認識しているようだ。さて、使えるか?

それらしいライブラリ(libnfc)を発見するも、使えたり使えなかったりして不安定。S330が搭載されているのにS360として認識したり、使い物にならない。なんとか原因究明出来ないかと四苦八苦したが断念。

 

別のライブラリを使う。libpafe。毎度の事だがaur死ぬほどお世話になってる、ありがとうございます。

yaourt -S libpafe したら最後に

To use PaSoRi
# udevadm control –reload-rules
Make ‘plugdev’ group and add your user

と言われたので、やっておく。

$ sudo udevadm control --reload-rules
$ sudo groupadd plugdev
$ sudo usermod -G plugdev tea

さて、テスト。

$ pasori_test
PaSoRi (RC-S330)
firmware version 1.30

きちんと認識しているようだし、firmware version拾えてるからPaSoRi自体は使えているっぽい。さて本当にFeliCaを読めるかどうかチェック。

$ felica_dump
# lpdump : Tue Nov 10 11:33:52 2015
# --- IDm info (FeliCa) ---
# Manufacture Date = 2013/2/15
〜以下略〜

以下データが連なる。データの中身についてはこれから調査する予定。この時使用したのは学生証だが、Suicaを置いた時には何も出力されなかった。これは不明。

ネットで拾ったSuica残高を表示するスクリプトを実行してみる。https://gist.github.com/Akkiesoft/6450764

rubyで書かれているのでlibpafe-rubyをインストールしておくのも忘れずに。aur何でも揃ってるなといった感想(こなみ)

$ ruby iccard-check.rb
1226

Suica普通に取り扱えてるみたいだし、felica_dumpに何かしらのバグがあったりするんだろうか。

 

よし、C++からlibpafe触って見るぞ。ネットで拾ったコードを元に書いてみる(ほぼパクリ)

#include <iostream>
#include <string>
#include <stdlib.h>
#include <unistd.h>
#include <stdint.h>

#include <iomanip>

#define hexformat(fill,wd) hex<<setfill(fill)<<setw(wd)

extern "C" {
#include <libpafe/libpafe.h>
#include <libpafe/pasori_command.h>
#include <libpafe/felica_command.h>
}

int main(){
using namespace std;
 pasori* p;

 if((p = pasori_open()) != NULL){
 felica* f;
 pasori_init(p);

 if((f = felica_polling(p, FELICA_POLLING_EDY, 0, 1)) != NULL) {
 uint8_t idm[16];

 felica_get_idm(f, idm);
 for(int n=0; n<7; n++){
 cout<<hexformat('0',2)<<unsigned(idm[n])<<":";
 }
 cout<<hexformat('0',2)<<unsigned(idm[7])<<endl;

 free(f);
 }
 }
 pasori_close(p);
 return 0;
}

これをコンパイルして実行してみる。

$ g++ ./felica.cpp -o ./felica /usr/lib/libpafe.so
$ ./felica
xx:xx:xx:xx:xx:xx:xx:xx

うまくいったっぽい。

 

あとはlibpafeのREADMEに書いてある事見ながら色々遊んでみようと思っているところ。FeliCaなカードは安く買えるっぽいので何かしら遊んでみよう。

 

普通に買うとRS-S330ってクソ高いのな、今。

ArchLinuxでLyra2REv2マイニング(CPU)

実際のところInstall Battleが面倒くさくてAntergos使っているので、ArchLinuxそのままではないんだけど。

 

https://blog.visvirial.com/articles/499#CPU

こちらを参考に。参考っていうかそのままなんだけど~

 

必要なパッケージを入れようってあるけど、実際どんな必要なパッケージがあるのかしらと思っても、ぶっちゃけわかんないので、取り敢えずビルドしたら何かしらエラー出るだろ、それに対処すればいいだろ…

と思って ./build.sh したら何のエラーもなくそのまま通ってしまった。

 

後はjsonで設定ファイル作って、それを食わせてcpuminerを実行するだけ。

 

何の問題も無かったし普通に動いた。何一つ有用な情報無し!!

 

 

 

追記:

文字見えねーよ!!!!!!

文字見えねーよ!!!!!!

pacmanで「無効または破損したパッケージ (PGP 鍵)」

久々に # pacman -Syuaした時に、

ファイル /path/to/pkg/hoge.fuga.tar.xz は破損しています (無効または破損したパッケージ (PGP 鍵))。

で軒並みパッケージが弾かれた。PGP鍵とあるし、だいぶ前からいじってなかったので、取り敢えず鍵を更新しましょう。

# pacman-key –refresh-keys

結構待っても(20分くらい?)かけらも進んでいる様子が無かった上に通信している様子も無いので、

# pacman-key –init
# pacman-key –refresh-keys

と、先にinitしてからにしたら普通に終わりました。

そのまま # pacman -Syua したらこれも普通に通った。問題無いですね。(たぶん)

Poderosaでssh接続出来なかった

別に全部の環境で接続出来なかった訳じゃなくて、Ubuntu使って家庭内鯖にしてるとこは接続できたんだけど、NASにしてるArchLinuxに接続出来なかった。

 

NASにしてるとは言え、何故かモニタもキーボードも付けてたので今までssh使ってなかったけれど、久しく触っていなかったらキーボードにほこりがだいぶ積もってしまっていたので、じゃあsshするか…と思い、有効にしてみた。宅内環境だし別に外からアクセスする必要もないし、取り敢えずパスワードでおkおkと思ったので以下な感じ。

$ systemctl start sshd
$ systemctl enable sshd

さて、意気揚々とメインマシンのWindowsからPoderosaでアクセスしようとすると……

 

何故か知らんが弾かれた

何故か知らんが弾かれた

 

取り敢えずエラーメッセージでぐぐってると以下のページに遭遇。

http://qiita.com/tukiyo3/items/a9b955f0fad03f6279d2

コメント欄でttdoda氏やtukiyo3氏がほむほむとしている側でclerk氏が「4.3.14bだと対応」と発言。どうやらPoderosaを更新すれば良いっぽい??

 

本当にバージョンでなんとかなるのか不安だったため今使っているPoderosaのバージョンを調べた所、4.1.0だった。これがいつリリースされたものなのかいまいちわからないけれど、4.3.0bが2010年末とかなので、やっぱりそれなりに古いんだなぁ。

これを入れた時はインストーラでいったっぽい(Program Files(x86)に入ってる)けど、今はただのzipアーカイブしか置いてない。好きなとこに置けて便利だけどね。

 

 

おまけ。

http://poderosa.sourceforge.net/index.html.ja

の最後のところにja.poderosa.orgへのリンクがあって、

(あまり更新されてない…)

とコメントがあるけど、

This domain may be for sale!

This domain may be for sale!

 

悲しいのう悲しいのう……

aviutlでバッチ出力中にバッチを追加するとどうなる?

バッチはaviutl本体と同じところに、batch0.aup, batch1.aup, batch2.aup, …と言った具合に順繰りに保存されていき、バッチ出力をするときにはこのaupを読み取って出力されていく。

正常に出力が完了したaupファイルは削除するというオプションがデフォルトでONになっているので、batch0.aupから消されていく。

さて、それではバッチ出力中に追加するとどうなるのか?

 

結論から言うと、特に意識する必要は無く、問題無い。(たぶん)

 

想像した懸念は、

・0~2を作る

・出力を始める

・0が完了する

・0が削除される

・1の処理が始まる

ここで追加すると、新たなaupファイルは3になるのか?それとも0になるのか?aviutlが認識しているバッチ出力リストは更新されるのか?0になっていた場合出力リストの頭に追加されるのか?

 

実験してみた所、

・追加したaupファイルは0として保存された

・1の処理が完了し2の処理が始まった時、aviutlのバッチ出力リストは0を認識

・0はバッチ出力リストの最後(2の後)に追加された

といった具合。

 

aviutlのバッチ出力リストは、てっきりファイル名から順番を作っているのかと思っていたけど、違うっぽい。作成日時とかかな。(未確認)

 

結局(最初に言ったけど)、特に意識しなくても、特に心配しなくても、大丈夫という事だ。うんうん。

 

 

aviutlを使ったエンコ鯖、データ突っ込んでaupは別環境で作ってとにかく放り込めばそれで後はひたすら出力してくれる感じに作れるのでは(aupの中でのファイルパスの取り扱いがよくわからないからそこをもうちょっと調べればデータ突っ込むのも不要にならないかな)。

どうせh265のトランスコードはめちゃくちゃ時間かかるし、深夜帯のアニメはほぼ全て録画している訳だから常に(ロスタイムなしに)処理させるつー事も可能なのでは…と妄想が広がる。

ただ、以前1クール分くらい一気にバッチ出力した時には、途中でffmpegがエラー落ちして処理が止まってしまっていたので、そういう所をなんとかできないかなぁ、と…

動画編集は大した事してなくて、aviutlを使っているのは、基本的には映像を見ながらCMの場所を探しているだけ。フレーム単位でカット場所が決められればffmpegでやれば色々良いのに、とは思う。Windowsである必要がなくなるし。

 

デスクトップPC、そろそろ新調したいなぁと思っているけれど、今使っているのをエンコ鯖にしちゃおっかなとか思っているのは前々からなので、こういうあたりから色々捗るかなーと(頭の中だけ)

Qweenを触ってみる

TweenというクライアントのQtによる実装がある。

Qween | NOSE Takafumi

TweenはWindows用のクライアントだが、Qtによる実装という事で、勿論Linux上でも使えるのではないかね!?と思い、4年ほど前に多少触ったのだけれど、当時は知識も無くまともに使えなかった。

 

ふと思い出して、もう一度触ってみよう、と思って先日調べてみたら、上記の最後の投稿は2010年の3月、何度も案内されているURLであるhttp://qween.tnose.net/もアクセスしても500エラーが返ってくる。

ところが、githubにはそのまま残していてくれていたのである。最終コミットは2010年5月22日と、ブログより少し新しいが、5年前である事に変わりはない。

 

  取り敢えずgit cloneしてきて、コンパイルして使ってみようと思ったけれど、通らない。それもそのはず、Qt4向けに書かれたコードである。我が家の環境はQt5…Qt4向けコードがそのまま通るはずない。 Qt4な開発環境を作っても良かったのだけど、遊びで勉強の一貫で5仕様に書き換えるのもいいかなと思って、弄ってみる事にした。

今もそうだけど、おなかすいた。ぴざたべたい。

1日では終わらない。 だが、数日の後に…

通った。随分日数がかかっているが、あまり作業出来てない日が多かったため #言い訳

 

ブログ記事から察するに、oAuthじゃなくてxAuthしか実装してないみたいだけど、Documentation | Twitter Developersの目次にはoAuthしか無い…xAuth廃止は確かしてなかった(BASIC認証は廃止だったよね)気がするけど、公式はoAuth使って欲しいんだろうなぁ…という事で、oAuthを自力で実装しなきゃダメかなーと。

それから、当時はTwitter APIは1.0だったろうけど(だから1.0に合わせて作られてるだろうけど)、2013年の6月12日未明に残念ながら廃止されちゃったのよね。今は1.1が動いているので、それに合わせて、諸々を書き換えないといけないだろうなぁ、と。

 

当時とは違う部分も他にも多くある(例えばTweetを引用出来るようになったとか)ので、そう簡単には行かないだろうけれど。

 

気長〜にやってこうと思います。うむうむ。