以下省略!

タイダルウ(ry ほぼ毎日1記事執筆運動実施中。 ※記事に広告(アフィリエイト)リンクを掲載している場合があります。

CentOS 6.6(64bit)でlibbpgをコンパイルしてみた

CentOS 6.6でlibbpg(とそのツール達)をコンパイルしてみた時のメモ。

必要なものの準備

CentOS 6.6に付属しているGCC 4.4.7ではコンパイル途中でコケるので、GCC 4.8.2が利用できるRed Hat Developer ToolsetのCentOS版を導入する(参考:CentOS 6.5にGCC 4.8.2をレポジトリで入れてみた)。以下コマンドライン例はdevtoolset-2がインストールされていることを前提とする。

またlibpngのバージョンもデフォルトで1.2台と古くこちらも途中でコケるので、最新のバージョンをダウンロードしてコンパイル、インストールする。

$ wget http://download.sourceforge.net/libpng/libpng-1.6.15.tar.gz
$ tar xzvf libpng-1.6.15.tar.gz
$ cd libpng-1.6.15
$ ./configure --prefix=/usr --libdir=/usr/lib64
$ make check
$ sudo make install

Let's compile

あとはダウンロードして展開してmakeするだけ。

$ wget http://bellard.org/bpg/libbpg-0.9.3.tar.gz
$ tar xzvf libbpg-0.9.3.tar.gz
$ cd libbpg-0.9.3
$ scl enable devtoolset-2 make
$ sudo make install

x265がインストールされているならMakefileにある#USE_X265=yの#を取ってからコンパイルするとエンコードエンジン(-eオプション)にx265が追加される(速度は早くなるが圧縮効率はデフォルトのjctvcより若干悪くなる上、アルファチャンネルが含まれているものは処理できない(2014/12/18 06:52 x265のアルファチャンネル処理不可について追記))。

蛇足

JavaScriptデコーダはhtmlフォルダ内。index.htmlに使用例があるので参考に。imgタグでそのまま読み込ませるか、canvasタグで動的に読ませる方法があるみたい。

rvmをseppukuしてrbenvに入れ替えた

VPSに入れているrvmを切腹*1し、rbenvを導入。先日rvmをアップデートしたのだが、アップデート以降どういうわけかデフォルトに設定しているのにも関わらず手動でuseしないとシステム側のRubyが起動してしまうようになったりとなんかおかしいのでrvmに対してseppukuせよと命じた次第。入れ替え方についてはググればわかると思うので割愛。簡単だと思うよ。

*1:アンインストールの意。rvm seppuku。implodeでも可。seppukuなのはRubyの作者が日本人なことに関係してるのだろうか

そういえば:qt5を入れてQtなアプリをコンパイルした

GCC 4.8.2を入れたついでにQt5もepelから導入したのは秘密。新UIのRingoがCentOS標準で提供されているQt4ではコンパイルできないので。いつものコンパイル(Makefile生成)のコマンドをqmake-qt4をqmake-qt5にするだけなので楽。 入れたパッケージ(実際には不要かもしれないものもある):qt5-qtbase qt5-qtbase-devel qt5-qtbase-static qt5-qttools qt5-qttools-devel

CentOS 6.5にGCC 4.8.2をレポジトリで入れてみた

CentOS 6.5で提供されるGCCは4.4.7と古く、一部のプログラム*1コンパイルできないということもあったりする。

$ cat /etc/redhat-release 
CentOS release 6.5 (Final)
$ gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

そこでCentOS向けに作成されたRed Hat Developer ToolsetのレポジトリからGCCを入れてみる。

# wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo
# yum install devtoolset-2-gcc devtoolset-2-binutils
# yum install devtoolset-2-gcc-c++ devtoolset-2-gcc-gfortran

/opt/rh/devtoolset-2/root/以下にGCC4.8.2のライブラリなどがインストールされる。

$ /opt/rh/devtoolset-2/root/usr/bin/gcc --version
gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15)
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

また、同時にインストールされる(はず)sclというgccなどへのパス指定を変えてコマンドを実行してくれるツールを使えばわざわざ1つずつパス指定しなくてもコマンド1つで大丈夫。 scl enable devtoolset-2 (コマンド)のように使う。

$ scl enable devtoolset-2 bash
$ gcc --version
gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15)
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

参考:yum - How to Install gcc 4.7.x/4.8.x on CentOS - Super User

*1:DarkcoinのCPUMinerとか

Quark系コインをCPUで掘る場合のメモ

KumacoinなどのQuark系コインを掘る場合。

Quark対応CPUMinerをコンパイル

$ git clone https://github.com/Neisklar/quarkcoin-cpuminer.git
$ cd quarkcoin-cpuminer
$ ./autogen.sh
$ ./configure CFLAGS="-O3"
$ make

EC2のコンピューティングインスタンスで試し掘りしようとして躓いたがautogen.shの段階でマクロ関連のエラーが出てくる場合はlibcurl-develを入れること(このエラーメッセージは1回しか表示されない。なおこのままconfigureするとCURL云々エラーが出る)。多分オリジナルのCPUMinerでも同じ。

掘る

$ ./minerd -a quark -o stratum+tcp://www19169u.sakura.ne.jp:3333 -u K7W4hgN5YfZSXoBoumHyzYrSJJ3hk4L7Ra -p x

上の例はKumacoinのNOMP Poolでの設定例。-a quarkを指定するのをお忘れなく。ユーザーID(-u)にはSimpleMonaのように受け取り先のウォレットアドレスを入力する。パスワード(-p)は適当に。

ハッシュレートの数字はどのくらい出るの?

sha256d(BTCなど)>>>>Quark>scrypt(LTC、MONAなど)

scryptの10倍くらい。数字が増えるとは言えyay!!!が出る回数が10倍に増えるわけではないので注意。

Asirraという猫認証とやらを試してみるテスト。 (追記:サービス停止中?)

2015/10/17追記 追記現在challenge.asirra.comに接続できないっぽい。サービスが終了したのかは不明ですがサンプルは公開停止しました(サンプルコード表示だけ残しておきます)。

AsirraというMicrosoft Researchの猫認証(CAPTCHA)サービスを試してみるなど。もなっくすの登録時のCAPTCHAに利用されていたので。

  • 複数の猫、犬の写真の中から猫だけを選ぶことで人間かどうか認証する。
  • 設置側はユーザー登録不要で気軽に利用できるのがいいところ。
  • JavaScriptがONでないと動作しない(reCAPTCHAなどはnoscript時のことも考えているが)。
  • 猫と犬の写真はPetfinder.comの画像を利用している。

公開されているサンプルコードを参考にPHPでの実装を書いてみた。
http://rita-mordio.info/testrun/asirra-test.php (ソース)

手順的には、

  1. AsirraのJavaScript*1を挿入したい位置で読み込ませて猫認証を表示させる。
  2. 猫の写真だけが選ばれ送信ボタンが押される。
  3. 実際にフォームが送信される前にJavaScript(Asirra_CheckIfHumanという関数を利用。引数にはコールバック先の関数を渡す)でAsirraのサーバーに正解かどうか確認を行う。
  4. コールバック先関数に渡された結果が正解(true)であればフォーム送信、不正解(false)であればエラーメッセージなどを出す
  5. プログラム側で本当に正解だったかどうか確認を行う。Asirra_Ticketが一緒に送信されてくるのでそれをAsirraのサーバーに送信して確認する。ticketは1回限り有効なので二重送信対策にもなるかも。
  6. 確認が取れたらプログラムの処理を続行

みたいな感じになる。
なお、asirraState.SetEnlargedPositionという関数で拡大写真の表示位置の変更、asirraState.SetCellsPerRowという関数で1行に表示する写真の数を変更できる。詳しくは公式ページ参照。

そういや猫認証以外にも「○○の写真を選べ」みたいな認証もある模様。。

*1://challenge.asirra.com/js/AsirraClientSide.js

いろいろとウォレットをコンパイルしてみたのでアドレスを晒す

昨日と今日でいろんな暗号通貨のウォレット(qt)をコンパイルしてみたのでアドレスを晒してみる。

※2022/06/18追記 以下のアドレスは現在使用していません

Dogecoinのコンパイルについて

Dogecoinは昨日の手順だとboost-chronoがねぇぞと怒られた(どうやらCentOSのレポジトリで配布されているboostだとダメな模様)。
以下の手順で最新のboostをコンパイル、起動するようになった。もしかしたらもっと最適な方法があったかも。

Boostインストール
$ wget http://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.bz2/download
$ mv download boost_1_55_0.tar.bz2
$ tar xjvf boost_1_55_0.tar.bz2
$ cd boost_1_55_0
$ ./bootstrap.sh --prefix=/usr/local/boost-1.55.0/
$ sudo ./b2 install
$ sudo vi /etc/ld.so.conf.d/boost.conf
/usr/local/boost-1.55.0/lib/
$ sudo ldconfig
$

boostはstaticでコンパイルすればよかったか?(バイナリを公開するわけじゃないから別にsharedでもいいけど)
最初b2で一部エラーになっていたので調べてみるとbzip2-develが入っていなかったことが判明したので入れて再度やり直したのは秘密。

Dogecoinをコンパイル
$ git clone https://github.com/dogecoin/dogecoin.git
$ cd dogecoin
$ qmake-qt4 USE_QRCODE=1 USE_UPNP=- USE_DBUS=1 \
  BDB_INCLUDE_PATH=../db-4.8.30/build_unix \
  OPENSSL_INCLUDE_PATH=../openssl-1.0.1g/include \
  OPENSSL_LIB_PATH=../openssl-1.0.1g \
  BDB_LIB_PATH=../db-4.8.30/build_unix \
  BOOST_INCLUDE_PATH=/usr/local/boost-1.55.0/include \
  BOOST_LIB_PATH=/usr/local/boost-1.55.0/lib
$ make
$

BOOST_LIB_SUFFIX=-mtは不要(boost-chrono-mtが見つからんエラーになる)