仮想環境(CentOS7)にBitCoinをインストール

【準備】

sudo mkdir -p /opt/bitcoind/src/

sudo rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/7/x86_64/e/epel-release-7-8.noarch.rpm

sudo yum install gcc gcc-c++ cpp libtool patch patchutils bzip2 zip unzip rsync wget ntp pciutils make autoconf automake libxslt openssl-devel zlib-devel curl-devel bind-utils ncurses ncurses-devel ncurses-static ncurses-term libevent libevent-devel libevent-doc

cd /opt/bitcoin/src/

【ダウンロード】

sudo wget https://github.com/bitcoin/bitcoin/archive/v0.13.0.tar.gz

sudo tar zxfv v0.13.0.tar.gz
cd bitcoin-0.13.0/
sudo ./autogen.sh
yum install -y libdb4-cxx-devel-4.8.30-13.el7.x86_64
yum install -y boost-devel.x86_64

【インストール】
sudo ./configure --prefix=/opt/bitcoind/ --with-gui=no
sudo make
sudo make install

【確認】

[root@localhost bitcoind]# pwd

/opt/bitcoind

[root@localhost bitcoind]# ls -la

合計 4

drwxr-xr-x. 5 root root   40 10月 30 18:44 .

drwxr-xr-x. 4 root root   35 10月 30 18:44 ..

drwxr-xr-x. 2 root root   95 10月 30 18:44 bin

drwxr-xr-x. 2 root root   31 10月 30 18:44 include

drwxr-xr-x. 3 root root 4096 10月 30 18:44 lib

PHPでインターフェイスと抽象クラスの違いについて

インターフェイスと抽象クラスについて教えていただいたので、メモ

 

インターフェイス

・複数の異なるクラスに共通の機能を実装するための実態の定義

インターフェイスを実装したメソッドはインターフェイス上で定義されている

 メソッドを実装しなければならない

・メソッドの内容は定義できない

・複数のインターフェイスをクラスへ実装することができる

 

【抽象クラス(abstract)】

・共通の機能を抽象的に定義し、子クラスで特有の機能を実装する

・抽象クラスで定義されたabstractメソッドは子クラスで実装しなければならない

abstractをつけないで実装込みのメソッドを定義することができる

・抽象クラスはインスタンスすることが出来ず、継承した子クラスをインスタンスする

 必要がある

 

これだとインターフェイス要らないんじゃないかと思った。しかし

・車抽象クラス

<?php

abstract class Car {
//アクセルを踏む
abstract public function accelerator();

//ブレーキを踏む
abstract public function brake();

//ハンドルを左に切る
abstract public function turn_left();

//ハンドルを右に切る
abstract public function turn_right();

//ギアを上げる
abstract public function gear_up();

//ギアを下げる
abstract public function gear_down();
}

こんな感じのcarクラスがあったとする

 

マニュアル車の場合はこれで問題ないかもしれないけれど、
オートマ車の場合にギアの操作がいらないじゃないかと

AT車クラス

class AtCar extends Car {
//アクセルを踏む
public function accelerator() {
// TODO: Implement accelerator() method.
}

//ブレーキを踏む
public function brake() {
// TODO: Implement brake() method.
}

//ハンドルを左に切る
public function turn_left() {
// TODO: Implement turn_left() method.
}

//ハンドルを右に切る
public function turn_right() {
// TODO: Implement turn_right() method.
}

//ギアを上げる
public function gear_up() {
// TODO: Implement gear_up() method.
}

//ギアを下げる
public function gear_down() {
// TODO: Implement gear_down() method.
}
}

こんな感じで実装しなければならない

$AtCar = new AtCar();
//AT車なのでギア操作がないけど呼べちゃう
$AtCar->gear_up();

の様な矛盾が起こる、バグの元、危ない

そこでインターフェイスを使ってみる

 

・車部品インターフェイス

//速度操作インターフェイス
interface speed {
//アクセルを踏む
public function accelerator();

//ブレーキを踏む
public function brake();
}

//進行方向操作インターフェイス
interface direction {
//ハンドルを左に切る
public function turn_left();

//ハンドルを右に切る
public function turn_right();
}

//ギア操作インターフェイス
interface gear {
//ギアを上げる
public function gear_up();

//ギアを下げる
public function gear_down();
}

このインターフェイスを元にAT車クラスを作成

AT車クラス

class AtCar implements speed, direction {

//アクセルを踏む
public function accelerator() {
// TODO: Implement accelerator() method.
}

//ブレーキを踏む
public function brake() {
// TODO: Implement brake() method.
}

//ハンドルを左に切る
public function turn_left() {
// TODO: Implement turn_left() method.
}

//ハンドルを右に切る
public function turn_right() {
// TODO: Implement turn_right() method.
}
}

ギア操作メソッドなしでOK
MT車クラスを作成する時はgearインターフェイスをimplementsすればOK

なるほどと思った。

本番サーバ上のwordpressをローカル(開発)へ移行

本番サーバ上のwordpressをローカル(開発)へ移行します。

 

本番サーバ上のDBのdumpを持ってきただけだとなんかバグってるんで

s22:"http://本番環境のアドレス"←本番

s16:"http://localhost"←こうしたい(開発)

手作業でやるのはしんどいので以下のツールを使います。

 

interconnectit.com

1.これをダウンロードして開発サーバに置きます。

2.本番のdumpをそのまま開発へ入れます。

3.ダウンロードしたphpファイルにアクセス

4.開発環境に合わせて設定を入力します。

5.終わり

 

javascriptでtableの列と行を固定

<input id="addRow" type="button" value="行追加">
<div style="height: 500px; width:1000px; overflow-y:scroll;">
<table id="test_table" style="table-layout: fixed;" border=1 width="1000" height="500" _fixedhead="rows:1; cols:1">
<thead>
<tr>
<?php
for ($i = 1; $i <= 50; $i++) {
echo "<th width='100'>カラム".$i."</th>";
}
?>
</tr>
</thead>
<tbody>
<?php
for ($i = 1; $i <= 50; $i++) {
echo "<tr>";
for ($j = 1; $j <= 50; $j++) {
echo "<td>データ" . $j . "-" . $i . "</td>";
}
echo "</tr>";
}
?>
</tbody>
</table>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="fixed_midashi.js"></script>
<script type="text/javascript">
$(function(){
//テーブル固定
FixedMidashi.create();

//行追加クリック
$("#addRow").click(function(){
var rowhtml = "<tr>";
for (var i=1; i <= 50; i++) {
rowhtml += "<td>追加" + i + "</td>";
}
rowhtml += "</tr>";
$('#test_table').append(rowhtml);
FixedMidashi.create();
});
});
</script>


めんどくさかったので一個にまとめました。
tableのスタイルを固定してfixedMidashiというライブラリを使いました。
画面描画後に

FixedMidashi.create();

を実行します。
行追加後にも実行します。