Linux(Ubuntu14.04LTS)上でBitzenyのマイナーを動作させる

BitzenyのマイナーをLinux上で動作させたのでメモ。

apt update
apt upgrade
apt-get install git
apt-get install automake
apt-get install libtool
apt-get install pkg-config
apt-get install libcurl4-openssl-dev
apt-get install make
apt-get install cpulimit

git clone https://github.com/bitzeny/cpuminer.git cpuminer
cd cpuminer
./autogen.sh
./configure CFLAGS="-O3 -march=native -funroll-loops -fomit-frame-pointer"
make

マイナーを実行
nohup cpulimit -l 85 -- ./minerd -a yescrypt -o stratum+tcp://POOL:PORT -u user.worker -p password &

Cloud9でvue-cliを動かしてはまった話

Vue.jsというものが良いというので、Cloud9上で動作させてみた。

参照したサイト
Vue.js を vue-cli を使ってシンプルにはじめてみる - Qiita

この記事通りに実行するも、service-worker.jsがインストールされないことが判明。
原因はよくわからないが、、、
(npm run startだとlocalhostがたつので、cloud9の公開用URLに変換する際になにかおきるのか?)

しかたないので、cloud9上のapacheの公開ディレクトリを変更することで対応。

vi /etc/apache2/sites-enabled/001-cloud9.conf で
DocumentRootを「hogehogehoge/workspace/my-project/dist」に変更した。

その後
sudo service apache2 restart

下記にアクセスすると無事にservice-worker.jsがインストールされた。
https://[projectname].c9users.io/index.html




しかし、上記ではいちいちnpm run buildしなければならず面倒。
開発中は、service-workerは使えないが、npm run devでサーバーを立てるのがよさそう。
このとき、下記アドレスにアクセスすれば表示される。
https://[projectname].c9users.io/index.html:8080

WindowsにRocket.Chatをたてる

Docker Kitematicを使うと、簡単にたてられたのでメモ。

1.Docker Toolboxをインストール
Docker Toolbox | Docker

2.Kitematicを起動し、mongodbをとってくる
f:id:noifuji:20170218135502p:plain

3.rocket.chatをとってくる
(officialのほうを使いました)
f:id:noifuji:20170218135645p:plain

4.このままだと、rocket.chatの起動時にエラーがおきるはず。
そこで、下記のACCESS URLの値をひかえておく。
f:id:noifuji:20170218140115p:plain

5.rocket.chatのsettingをクリックし、MONGO_URLをさっきの値に書き換えて、
「SAVE」をクリック
f:id:noifuji:20170218140515p:plain

6.rocket.chatのメイン画面を見ると、WEB PREVIEWにログイン画面がうつているのが見えます。このWEB PREVIEWをダブルクリック。
f:id:noifuji:20170218140600p:plain

7.ログイン画面がブラウザで表示されます。
ここで新規アカウントを作成して進むと、次のWarningが表示されるので、「はい」を選択。
f:id:noifuji:20170218140850p:plain

8.外部のLANから見えるようにする。
Virtualbox Managerを開いて、defaultを右クリック>設定>ネットワーク
アダプター1のポートフォワーディング
ルール追加で、ホストポート8080、ゲストポートをrocket.chatのpublished IPに設定する。

【node】node.jsでサムネイルっぽいものを作る。

そのへんに転がってる画像からサムネイルっぽいものを作ります。
easyimageというライブラリを使用しました。

github.com

まずインストール。

$ apt-get install imagemagick
$ npm install easyimage

下記の感じで変換します。
ここではrescropというメソッドを用いて、リサイズと不要部分の切り取りを同時に行っています。

sample.js

var easyimg = require('easyimage');

easyimg.rescrop({
            src:'変換前ファイル名', dst: '変換後ファイル名',
            width:400, height:5400,
            cropwidth:100, cropheight:100,
            x:0, y:0
        }).then(function (file) {
            console.log("completed");
        });

【javascript】順番に非同期処理を実行する。

async.jsというライブラリを用いる。nodeでよく使われているらしい。

npm install async --saveでインストール


下記のコードで各URLに対して画像を取得してくる処理を実行できる。

test.js

var request = require('request');
var fs = require('fs');
var async = require('async');

var urls = ['URL1',
    'URL2',
    'URL3'
];


async.each(urls, function(url, callback){
    request({
            method: 'GET',
            url: url,
            encoding: null
        },
        function(error, response, body) {
            var filename = getFilename(url);
            if (!error && response.statusCode === 200) {
                fs.writeFileSync('./img/a' + filename + '.png', body, 'binary');
                console.log("loop:" + filename);
            }

            // 次のリクエストを呼ぶ。
            callback(null, filename);
        }
    );

}, function(err, results) {
    if (err) {
        throw err;
    }
    console.log('series all done. ');
});

function getFilename(url) {
    var temp = url.split('/');
    return temp[temp.length - 1 ];
}

アーキテクチャ・DIしらべもの

Dagger2
Android: Dagger2でDIをする. 基本編 Part1 · Don't Stop The World

アーキテクチャ
AndroidではMVCよりMVPの方がいいかもしれない - Konifar's WIP
The Clean Architecture | 8th Light
Architecting Android…The clean way? | Fernando Cejas

【Android】Drawer使用時、アニメーションにラグが生じる件

DrawerLayoutを閉じる際に、Fragmentのreplaceを実行していると動きがカクつく問題があった。

下記リンクの記述を発見し、Drawerを閉じきってからFragmentのreplaceを行うと解消できた。


DrawerLayout | Android Developers

Avoid performing expensive operations such as layout during animation as it can cause stuttering; try to perform expensive operations during the STATE_IDLE state.

Drawerレイアウトの開け閉めをしている際などには、Fragmentの遷移等の重い処理を避けるのが良いということのようだ。