Angular, Blockchain, Science とか

Angular, Blockchain, Science全般 の情報を主に書いていきます。

Unix/Linux おすすめ本

Unix/Linuxのおすすめ本を紹介していきたいと思います。まあ、LinuxカーネルぐらいITエンジニアなら理解しときたいですよね??? 初心者 1週間でLPICの基礎が学べる本 第2版作者: 中島能和出版社/メーカー: インプレス発売日: 2014/01/20メディア: 単行本(…

Bitcoin の動画

www.youtube.com

システムプログラミング

いまはLinuxプログラミングインターフェースを(あの分厚いやつ)をやっております。まあなんとなく、かってが徐々にわかってきました。VMのこともそろそろ始めようと思います。やること多すぎるよ。

屍者の帝国

いまさら、屍者の帝国の映画版を見たのですが、全然意味わからなかったので、後日、小説を読みます。

6月のまとめと7月にやること

6月は関数型言語をやるとか言いましたが、Haskellをちょっとやっただけでした。代わりに、オペレーティングシステムや言語処理をまじめに勉強し始めました。とりあえず図書館から有名どころの本は全部借りてきたので、7月中に全部読みたいと思います。プログ…

フィボナッチ数列 C++

ただのフィボナッチ数列。いわゆる再帰ってやつですね。 #include <iostream> using namespace std; int fib(int a) { if(a <= 1) return 1; return fib(a-1) + fib(a-2); } int main() { for(int i=0; i<20; i++) { cout << fib(i) << endl; } } 結果は1 1 2 3 5 8 13</iostream>…

最小公倍数と最大公約数

よく使いますね。 #include <iostream> using namespace std; // 最大公約数 int gcd(int a, int b) { if(b == 0) return a; return gcd(b, a % b); } // 最小公倍数 int lcm(int a, int b) { int c = a * b / gcd(a,b); return c; } int main() { int a = gcd(256, 82</iostream>…

proof-of-work のpython スクリプト

Mastering Bitcoinの proof-of-work アルゴリズムのPythonスクリプトにコメントをつけてみました。特に難しくはないですね。 import hashlib import time max_nonce = 2 ** 32 # 4 billion def proof_of_work(header, difficulty_bits): # target は difficu…

正規表現 の勉強を開始

いままで正規表現を避けて生きてきたのですが、正規表現もそろそろちゃんと勉強しなくちゃいけないなあと思いまして、正規表現の勉強も始めました。とりあえず、オライリーの詳説 正規表現 第3版作者: Jeffrey E.F. Friedl,株式会社ロングテール,長尾高弘出…

Bitcoin Base58Checksum について

Mastering Bitcoin の Base58Checksum のコードにわかりやすくコメントを付けました。 #include <bitcoin/bitcoin.hpp> int main() { // Private secret key. bc::ec_secret secret; bool success = bc::decode_base16(secret, "038109007313a5807b2eccc082c8c3fbb988a973cacf1a7d</bitcoin/bitcoin.hpp>…

C 配列の要素の交換

ただの配列の要素の交換 #include <stdio.h> #define FALSE 0 #define TRUE 1 #define ASIZE 8 void display_array(int array[]); void find(int array[], int value); int search(int array[], int item); main() { int nums[ASIZE] = {1,34,54,22,46,75,2,25}; prin</stdio.h>…

C 配列の要素の入れ替え

ただの入れ替えです。 #include <stdio.h> #define ASIZE 8 void swap_elements(int array[], int a, int b); void display_array(int array[]); main() { int nums[ASIZE] = {1,9,3,6,8,5,11,7}; printf("This is the initial array: \n"); display_array(nums); swa</stdio.h>…

C 最小値の探索

ただの最小値の探索です。 #include <stdio.h> #define maxnumber 10 int minimum(int user_array[]); main() { int number[maxnumber]; int index; printf("Give me nine numbers and I\'ll print them backwards \n"); for(index=0; index</stdio.h>

配列の並べ替え

ただの並べ替えです。 reverse です。 #include <stdio.h> #define maxnumber 10 void run_backwards(int user_array[]); main() { int number[maxnumber]; int index; printf("Give me nine numbers and I\'ll print them backwards \n"); for(index=0; index</stdio.h>

C++を真面目に勉強してPythonの簡単さに気づいた話

最近、ずっとC++の勉強していまして、二か月ぶりくらいにPythonに戻ってきてやっとPythonの簡単さに気づきました。やっぱりPythonやRubyしか実務で使わない人も、一回 C++ をちゃんと勉強すべきですね。まあもっとも僕の場合は, C++ と Go が実務(?)で使うも…

オブジェクト指向について

C++の基本的な機能は理解したので、オブジェクト指向のもっと深い理解を得るために、オブジェクト指向入門をよんでます。オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)作者: バートランド・…

C 多次元配列とポインタ

Cでの多次元配列についてみていきます。まず初期化とアクセス #include <stdio.h> #include <stdlib.h> int main() { int matrix[2][5] = {{1,2,3,4,5}, {6,7,8,9,10}}; for(int i=0; i<2; ++i){ for(int j = 0; j<5; ++j){ printf("matrix[%d][%d] アドレス: %p 値: %d\n", i,</stdlib.h></stdio.h>…

ユークリッド 再帰

ユークリッドはこういう形の再帰が一番好きです。わかりやすいですし。 int gcd(int e, int l) { return (e==0)? l : gcd( l%e, e); } 早いかどうかは分かりません。

C++ 静的なメンバ変数とメンバ関数

C++の静的な(static)メンバ変数とメンバ関数に関するまとめ。グローバル変数でも表現できますが、まあどうせなら必要なものはクラスの中に入れておいた方がわかりやすいと思われます。 class sample{ private: static int count; ....色々 }; // このように…

はじめての数論

暗号をやるうえで数学は避けては通れないので、数論の勉強も始めました。特に楕円曲線をちゃんと理解しなくてはいけません。とりあえず、はじめての数論を読み始めました。はじめての数論 原著第3版 発見と証明の大航海‐ピタゴラスの定理から楕円曲線まで作…

バイオテクノロジーの勉強も開始

6月になりまして、関数型言語と一緒にバイオテクノロジーの勉強も始めました。あと圏論も勉強しようかなとか思ってます。まあ、プログラミングはできて当然で、あと、バイオテクノロジーやエネルギーの知識もあった方がよさそうなのでそっち方面も勉強してい…

5月の振り返りと、6月の目標

もう5月が終わってしまいます。この年になると毎月時がたつのが早くなっていきますね。5月にいったい何をしたのか、振り返ってみるとC++のクラスの機能、STL,データ構造、暗号のアルゴリズム(RSA),bitcoin とこんな感じになりました。5月はの勉強の進み具合…

clisp windows インストール

関数型言語も勉強しなくては、と思いましてとりあえずLispの勉強を始めました。ということで、2週間くらいかけて Land of Lisp を勉強しようと思います。Land of Lisp作者: M.D. ConradBarski,Conrad Barski,川合史朗出版社/メーカー: オライリージャパン発…

Bitcoin CAmount について

ソースコードを読んでいて、CAmount ってなんだったっけ? てよくなるので、メモamount.h #ifndef BITCOIN_AMOUNT_H #define BITCOIN_AMOUNT_H #include <stdint.h> /** Amount in satoshis (Can be negative) */ typedef int64_t CAmount; // 1BTC = 100000000satoshi</stdint.h>…

C++ List (STL) まとめ

C++の標準テンプレートライブラリのListをまとめてみます。begin() 要素の先頭を返す。 end() 要素の最後を返す。 push_front() 要素を先頭に追加する。 push_back() 要素を最後に追加する。 pop_front() 要素の先頭を削除。 pop_back() 要素の最後を削除。 …

C++ キャスト演算子

C++のキャスト演算子の簡単なサンプル #include <iostream> using namespace std; int main() { char ch = -1; int i1, i2; double d1 = 123.456, d2; i1 = ch; i2 = static_cast<unsigned char>(ch); d2 = static_cast<int>(d1); cout << i1 << ' ' << i2 << ' ' << d2 << endl; return 0;</int></unsigned></iostream>…

C++ Reverse アルゴリズム

C++のクラス機能をある程度抑えたので、STLの勉強を始めました。とりあえず、string と assert #include <iostream> #include <string> #include <cassert> // assertを使う #include <algorithm> using namespace std; int main() { cout << "Reverse algorithm" << endl; string str = "reverse a</algorithm></cassert></string></iostream>…

暗号技術 参考書 まとめ

暗号を学ぶ上で、オススメの書籍をまとめてみます。暗号技術入門 第3版作者: 結城浩出版社/メーカー: SBクリエイティブ発売日: 2015/08/26メディア: 単行本この商品を含むブログ (15件) を見る暗号技術入門は、暗号技術全般がうまくまとまっていて、非常にオ…

RSA暗号の仕組み

公開鍵暗号として最も用いられているRSA暗号について。大きな素数を二つ(p,q)を用意。もちろんp!=q.N = p * qp-1, q-1 の最小公約数を L とする。数式にするとL = lcm(p-1, q-1)また、ed ≡ 1(modL)つまり ed-1 が L の倍数であるという意味で、そのような e,…

C++ STLの技術書まとめ

C++の基本的な機能をある程度おさえたので、STL、標準テンプレートライブラリ、の勉強も本格的に始めました。とりあえず、2冊手に入れて、勉強しております。STL―標準テンプレートライブラリによるC++プログラミング 第2版作者: ディビッド・R.マッサー,アト…

pybitcointools を使った鍵操作 Bitcoin

pybitcointoolsについては、github.comで見てください。ちなみにブテリンはEthereumの創業者です。 import pybitcointools as bitcoin # learn more: https://python.org/pypi/pybitcointools # 秘密鍵を作成 valid_private_key = False while not valid_pri…

C++ 計算機のサンプル

ただの計算機。 #include <iostream> #include <sstream> #include <string> using namespace std; class Calculator{ public: void Run(); private: bool Input(); bool Calculate(); void ShowResult() const; int m_a, m_b; char m_op; int m_result; }; void Calculator::Run(){ whi</string></sstream></iostream>…

C++ テンプレート

C++ のテンプレートの基礎。template として T のところに、 int, double, string などなどいろいろな型として使えます。 #include <iostream> #include <string> using namespace std; template <typename T> void FillArray(T* array, size_t size, T value) { for(size_t i = 0; i < siz</typename></string></iostream>…

ビットコイン difficulty target と retargeting 

difficulty target は係数部/指数部形式で表す。指数部(exponent),係数部(coefficient)で target = coefficient * 2^(8 * (exponent - 3))^はXORです。またDifficultyはブロックの生成期間を10分に保つように動的に変化します。Difficultyは2016ブロックごと…

ビットコイン マイニング報酬のソースコードリーディング

ビットコインのマイニング報酬のコードを見ていきます。マイニング報酬は、トランザクション手数料の総額 + coinbase報酬coinbase報酬(BlockSubsidy)は50bitcoinから始まって、210000ブロックごとに半減していきます。以下のコードでcoinbase報酬を出します…

ビットコインの総発行量を求めるスクリプト

ビットコインの発行量は時間とともに少なくなっていきます。新しいビットコインはマイニングの報酬という形で生成されます。210000ブロックごと、およそ4年ごとに発行量は半減されていきます。以下のスクリプト(Python2)で総発行量を求めてみます。 # マイニ…

アセンブリ言語の勉強

アセンブラの勉強をさぼっていたので、一回ちゃんと勉強しなおすことにしました。とりあえず、アセンブリ言語スタートブック作者: 高田美樹出版社/メーカー: 技術評論社発売日: 2015/08/08メディア: Kindle版この商品を含むブログを見るをやっております。も…

アルゴリズムとデータ構造 入門書まとめ

アルゴリズムとデータ構造は極めて重要です。C言語の勉強をした後に、アルゴリズムとデータ構造の勉強をすれば、一気にプログラミングというものがどういう概念のものなのかが、わかるようになると思います。なおCのポインタがわかっていることが前提です。…

暴力の解剖学 人間の暴力性とは

最近こういう本を読んでます。人間の暴力性とは一体なんなのか。暴力の解剖学: 神経犯罪学への招待作者: エイドリアンレイン,Adrian Raine,高橋洋出版社/メーカー: 紀伊國屋書店発売日: 2015/02/26メディア: 単行本この商品を含むブログ (7件) を見る利己的…

フルタイムでBitcoinの研究を始めました。

ある程度、C++やデータ構造、暗号、P2P、の基礎を理解できたので、本格的にBitcoinやEthereumの研究を始めて、しばらくはフルタイムのコントリビューターになろうと思います。だいたい2020年くらいまで、研究を続けて、その後、なにか本格的なビジネスが始め…

C++ virtual関数とポリモーフィズム 2

ただのサンプルb #include <iostream> using namespace std; class figure{ protected: double x, y; public: void set_dim(double i, double j){x=i;y=j;} virtual void show_area(){ cout << "No area computation defined "; cout << "for this class " << endl; }</iostream>…

C++ virtual関数とポリモーフィズム

仮想関数を使った非常に簡単な、ポリモーフィズム。 #include <iostream> using namespace std; class base{ public: virtual void who(){cout << "Base"<< endl;} }; class first : public base{ public: void who(){cout << "first"<</iostream>

仮想基本クラス C++

C++での仮想クラス。virtual継承です。 #include <iostream> using namespace std; class base { public: int i; }; // virtualにしないとコンパイルエラーになる class derived1 :virtual public base{ public: int j; }; class derived2 : virtual public base { pub</iostream>…

C++ フレンド関数の基礎

フレンド関数を使えば、privateメンバにアクセスすることができます。 #include <iostream> using namespace std; class myclass{ int a, b; public: myclass(int i, int j){a=i;b=j;} friend int sum(myclass v); }; int sum(myclass x) // myclass::sum とはしない {</iostream>…

C++ で簡単なキュー

ただのキューです。 #include <iostream> using namespace std; class queue{ private: int q[100]; int sloc, rloc; public: void init(); void enqueue(int i); int dequeue(); }; void queue::init() { rloc = sloc = 0; } void queue::enqueue(int i) { if(sloc==1</iostream>…

リストとサーチ C言語

リストはこういう書き方のほうがわかりやすいですね。 #include <stdio.h> #include <stdlib.h> typedef struct tagListNode { struct tagListNode *prev; struct tagListNode *next; int data; }ListNode; int main(void) { int buf; ListNode *firstnode, *lastnode, *newnode</stdlib.h></stdio.h>…

二分探索木

アルゴリズムの復習です。ただの二分探索木です。数字が大きければ右、小さければ左です。 struct node{ int Key; char info[10]; struct node *left, *right; }; struct node *root=NULL; struct node *bint_search(int target, struct node *p) { if(p==NU…

ポインタを使ったスタック C言語

ポインタを使ったスタックです。まあごく普通のスタックです。 struct cell{ char data[10]; struct cell *next; }; struct cell *stack=NULL; void push(struct cell *p) { p->next=stack; stack=p; } struct cell *pop(void) { struct cell *p; if(stack==…

キュー

普通のキューをCで書きました。基礎は大事です。ポインタの使い方にはなれましょう。 struct student { int num; char name[20]; struct student *next; }; struct student *root=NULL; //最後尾がNULL void enqueue(struct student *r) //追加する { struct…

再帰の非常に簡単な例

再帰で階乗計算です。ここでは10の階乗を求めています。階乗は、n*(n-1)*(n-2)*(n-3)・・・*(1) のあれです。 #include <iostream> using namespace std; int factorial(int n){ if (n==1) { return 1; } return n * factorial(n-1); } int main() { int data; data=</iostream>…