これができればCを理解したかなぁ


https://bitcoin20xx.xyz/未来を変える暗号通貨を作っていこう
面白そうだったので,ちょっと作ってみました.
----------
#include <stdio.h>char* str = "#include <stdio.h>%c%cchar* str = %c%s%c;%c%cint main ( void )%c{%c    printf( str, 10, str, 10, 10, 34, str, 34, 10, 10, 10, 10, 10, 10, 10 );/* Hello World!! */%c    return 0;%c}%c";int main ( void )
{
    printf( str, 10, 10, 34, str, 34, 10, 10, 10, 10, 10, 10, 10 );/* Hello World!! */
    return 0;
}
----------C言語で,関数printfについて対角化して不動点を作ってみました.
全てのプログラムに対する不動点を作ろうとおもうと,本物のコンパイラを作ることになってしまいますが,特定の関数の不動点が欲しいだけだったら,その関数についてだけ対角化できればいいので...
 -
{D(e)} = {e}{e}いわゆるクワインです.
C言語でもメモリイメージがわかると,カリー化可能な例だったりします(無理やり感は否めませんが).
#include<stdio.h>
typedef int(*F)(int);
int add(int a,int b){return a+b;}
static int add_a;
static int addn(int b){return add(add_a,b);}
/* ポイント1 static なところ */
F curried_add(int a){add_a=a;return addn;}
int main(){
    F add10=curried_add(10);
       / ポイント2  add10のアドレスは,引数10を与えたcurried_addのアドレスになっています.add10(3)とcurried_add(10)(3)/
    printf("%d = add10(3)\n",add10(3));
    printf("%d = curried_add(10)(3)\n",curried_add(10)(3));
    printf("%d = add(10,3)\n",add(10,3));
}

13 = add10(3)
13 = curried_add(10)(3)
13 = add(10,3)

dockerfileファイルでハマる...


https://bitcoin20xx.xyz/未来を変える暗号通貨を作っていこう

未だ,途上にあるのですが...

ansibleの実行環境まではできましたが,次にdockerfileでハマってます.まず,nrpatten/mpos-docker
イメージが旧すぎて依存関係でエラーが出るので,

add-apt-repositoryを入れるのにppaがいるが,ppaを使うには,前者が要るという再帰的なハマりに...

そこで,新しいubuntuイメージを落として,それに合わせて
dokerfileを書き換えることにしました.

っが,

File “/usr/lib/python2.7/urllib2.py”, line 556, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 403: SSL is required

dockerfileのイメージbuildで出てしまう.

python setup.py installで出るのだが,これの解消法がわからない,urllib3をインストールする設定でも
ダメです.ssl.pyを自分で書いて,ADDするのか?,普通ならimportできるけど,この場合は編集できない.

というわけで,もう少し考えてみます.

Windowsで何とかAnsibleを使うまで


https://bitcoin20xx.xyz/未来を変える暗号通貨を作っていこう

Docker For Windows + LinuxOS Image + Ansibleによって,BitZenyをセットアップするまでを報告していきます.

Docker for Windowsをインストールします.

私のWindows10はhomeです.

Hyper-Vが動かないHomeでは,Hyper-Vの代わりにOracle Virtual Boxを利用します.
Docker Toolboxも利用します.

※Hyper-Vは,なぜかサービスとしては,僕のhomeでは入っています(どのタイミングかは不明です),明示的に起動されていないですが,実際に起動した場合の設定とかは,試していないです.

詳しくは ↓ です.

https://qiita.com/idani/items/fb7681d79eeb48c05144

とりあえず,Vagrantも導入します(Windows Powershell).

詳しくは,↓ です.

https://qiita.com/ozawan/items/160728f7c6b10c73b97e

https://qiita.com/Tkm_Kit/items/58e1fb7990387a2e9c76

Docker Quickstart Terminalを起動します.

Dockerfileを用意します.

FROM centos
MAINTAINER put your E-mail adress
RUN yum -y install epel-release && yum clean all
RUN yum -y install python-pip && yum clean all
RUN yum -y reinstall glibc-common && \
pip install –upgrade pip && \
pip install ansible==2.6.4 && \
pip install pywinrm && \
yum clean all && \
mkdir /mydata
ENV LANG ja_JP.UTF-8
CMD [“/bin/bash”]

Dockerfileのあるディレクトリで,

docker build -t ansible-test .

を実行します.私の場合は,タイムアウトするので ↓ を参照してください.

https://qiita.com/koneko59/items/d9b4ba74477412d91cf0

さらに,私の場合は,

docker runでエラーが出ますが,それは ↓ を確認ください.

https://stackoverflow.com/questions/50540721/docker-toolbox-error-response-from-daemon-invalid-mode-root-docker

Kitematic (Alpha)を起ち上げて,ローカルディレクトリをマウントします.

Ansibleは使えるようになりました.今回はここまでです.

追記:
nrpatten/mpos-dockerをgitからクローンしてあるので,これを例にまず手を付けていきます.