Skip to main content


More Principles - Clean Architecture: A Craftsman's Guide to Software Structure and Design, First Edition

REP: Reuse/Release Equivalence Principle, the granule of reuse is the granule of release
CCP: Common Closure Principle
CRP: Common Reuse Principle, don't force to depend on things they don't need
ADP: Acyclic Dependencies Principle, no cycles in the dependency graph
SDP: Stable Dependencies Principle, depend in the direction of stability
SAP: Stable Abstractions Principle, as abstract as stable
Recent posts


SRP: Single Responsibility Principle, a module should be responsible to one and only one actor
OCP: Open-Closed Principle, a software artifact should be open for extension but closed for modification
LSP: Liskov Substitution Principle, interchangeable parts adhere to a contract
ISP: Interface Segregation Principle, avoid depending on things not use
DIP: Dependency Inversion Principle, details should depend on policies

generate pem from keypair, and sign message

openssl rsa -in id_rsa -outform pem > id_rsa.pem openssl rsa -in id_rsa -pubout -out openssl dgst -sha256 -sign ~/.ssh/id_rsa.pem -out message openssl dgst -sha256 -verify ~/.ssh/ -signature message

start the ethereum private net on windows

download/install geth from

setup private net jason file under ~/.privether, an example of privategenesis.json

  "nonce": "0x00006d6f7264656e",
  "difficulty": "0x000002",
  "mixhash": "0x00000000000000000000000000000000000000647572616c65787365646c6578",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "timestamp": "0x00",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "0x",
  "gasLimit": "0x2FEFD8",
  "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
  "alloc": {
    "cd2a3d9f938e13cd947ec05abc7fe734df8dd826": { "balance": "10000000000000000&qu…

install dc/os on centos 7

first install and start docker sudo yum -y install docker docker-registry [osboxes@osboxes ~]$ sudo systemctl enable docker.service
[osboxes@osboxes ~]$ sudo systemctl start docker.service
[osboxes@osboxes ~]$ sudo systemctl status docker.service

install based on

if you meet permission issue, you need disable selinux
[osboxes@osboxes ~]$ cat /etc/sysconfig/selinux
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: #     enforcing - SELinux security policy is enforced. #     permissive - SELinux prints warnings instead of enforcing. #     disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three two values: #     targeted - Targeted processes are protected, #     minimum - Modification of targeted policy. Only selected processes are protected. #     mls - Multi Level Security protection. SELINUXTYPE=targeted

setup mesos 1.0.1 on centos 7

following the guide at

if you met the following issue, need hack it to change the Version: 2012d to 2012 in file pytz-2012d-py2.7.egg-info

pkg_resources.VersionConflict: (pytz 2012d (/usr/lib/python2.7/site-packages), Requirement.parse('pytz>=2010'))

python examples runs ok with mesos 1.0.1

/home/osboxes/mesos/build/3rdparty/setuptools-20.9.0/pkg_resources/ UserWarning: /home/osboxes/.python-eggs is writable by group/others and vulnerable to attack when used with get_resource_filename. Consider a more secure location (set with .set_extraction_path or the PYTHON_EGG_CACHE environment variable).
  warnings.warn(msg, UserWarning)
I1031 02:04:19.299875 13734 sched.cpp:226] Version: 1.0.1
I1031 02:04:19.312309 13773 sched.cpp:330] New master detected at master@
I1031 02:04:19.313021 13773 sched.cpp:341] No credentials provided. Attempting to register without authentication
I1031 02:04:19.322294 13773 sched.cpp:743]…

setup mesos 0.28.2 on centos 7

following the guide at,

it seems need creating folder with root permission to allow examples to run, and needs start with sudo

otherwise the c++/java examples will fail. output from failed c++/java examples
I1027 09:53:10.901875  6181 sched.cpp:222] Version: 0.28.2
I1027 09:53:10.935006  6190 sched.cpp:326] New master detected at master@
I1027 09:53:10.936367  6190 sched.cpp:336] No credentials provided. Attempting to register without authentication
I1027 09:53:10.948501  6190 sched.cpp:703] Framework registered with 8cab08a7-fac7-440b-8933-0d329da29d7c-0001
Registered! ID = 8cab08a7-fac7-440b-8933-0d329da29d7c-0001
Received offer 8cab08a7-fac7-440b-8933-0d329da29d7c-O1 with cpus: 1.0 and mem: 6609.0
Launching task 0 using offer 8cab08a7-fac7-440b-8933-0d329da29d7c-O1
Status update: task 0 is in state TASK_FAILED
Aborting because task 0 is in unexpected state TASK_FAILED with reason 'REASON_CONTAINER_LAUNCH_FAILED'…