Heling冷たい孤独な自己啓発のpython九十ブロックチェーン004

Heling冷たい孤独な自己啓発のpython九十ブロックチェーン004

[主な内容]

今日は時間が36分を共有し、パイソンを通じて達成シンプルな機能ブロックチェーンを構築しようとし始めました。

(また、仕上げ要約筆記は67分程度かかりました)

詳細は終わりに学習プロセス画面の映像を学習するプロセスを参照してください。

コードの解析スタートが書かれた簡単なブロック・チェーン・アプリケーションではなく、任意の実質的な進展せず、今日実装されています。

 

[研究ノート]

まず、フラスコをインストール

(A)チュートリアルに従って動作する最初の試み。

昨日は、仮想環境モジュールをインストール:

virtualenvの

に基づいてインストールを続行するために、昨日、今日のチュートリアルに従ってください

まず、仮想環境の構成ポイントとしてフォルダを作成します。

C:\ WINDOWS \ SYSTEM32> I:

 

I:\> CD I:\ MAKEAPP \ pythonの\ウェブスペース\ flaskspace

 

I:\ MAKEAPP \ pythonの\ウェブスペース\ flaskspace> virtualenvのフラスコ-ENV

プレフィックス ':\\ w10_1 \\のpython \\ python365 G' のベースを使用して

私の新しいPythonの実行ファイル:\ MAKEAPP \ pythonの\ウェブスペース\ flaskspace \フラスコ-ENV \スクリプト\ python.exe

setuptoolsの、ピップ、ホイールをインストールします...

行わ。

 

I:\ MAKEAPP \ pythonの\ウェブスペース\ flaskspace> CD I:\ MAKEAPP \ pythonの\ウェブスペース\ flaskspace \フラスコ-ENV \スクリプト

 

I:\ MAKEAPP \ pythonの\ウェブスペース\ flaskspace \フラスコ-ENV \スクリプト>アクティブ

 

ピップは、このディレクトリの仮想環境のインストール中にコマンドを実行したフラスコ

I:\ MAKEAPP \ pythonの\ウェブスペース\ flaskspace \フラスコ-ENV \スクリプト>ピップは、フラスコをインストール

収集フラスコ

  ダウンロードhttps://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl(91KB)

     |████████████████████████████████| 92KB 20kBと/ sの

収集itsdangerous> = 0.24(フラスコから)

  ダウンロードhttps://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl

収集WERKZEUG> = 0.14(フラスコから)

  ダウンロードhttps://files.pythonhosted.org/packages/18/79/84f02539cc181cdbf5ff5a41b9f52cae870b6f632767e43ba6ac70132e92/Werkzeug-0.15.2-py2.py3-none-any.whl(328KB)

     |████████████████████████████████| 337KB 14KB / sの

収集Jinja2の> = 2.10(フラスコから)

  Downloading https://files.pythonhosted.org/packages/1d/e7/fd8b501e7a6dfe492a433deb7b9d833d39ca74916fa8bc63dd1a4947a671/Jinja2-2.10.1-py2.py3-none-any.whl (124kB)

     |████████████████████████████████| 133kB 9.7kB/s

Collecting click>=5.1 (from flask)

  Downloading https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl (81kB)

     |████████████████████████████████| 81kB 68kB/s

Collecting MarkupSafe>=0.23 (from Jinja2>=2.10->flask)

  Downloading https://files.pythonhosted.org/packages/b9/82/833c7714951bff8f502ed054e6fbd8bd00e083d1fd96de6a46905cf23378/MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl

Installing collected packages: itsdangerous, Werkzeug, MarkupSafe, Jinja2, click, flask

Successfully installed Jinja2-2.10.1 MarkupSafe-1.1.1 Werkzeug-0.15.2 click-7.0 flask-1.0.2 itsdangerous-1.1.0

 

检测是否安装成功的方法:

C:\Users\pw>i:

 

I:\>cd I:\MAKEAPP\python\WebSpace\flaskspace\flask-env\Scripts

 

I:\MAKEAPP\python\WebSpace\flaskspace\flask-env\Scripts>python

Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> import flask

>>> print(flask.__version__)

1.0.2

>>> 

 

然而当我把这一切做完的时候,用VSCODE打开import flask的页面,发现,还是提示flask没有安装 。

这证明按此教程,折腾了半天终于把flask成功的安装到虚拟环境中。

然而昨天 从github下下载的这个源文件,不是在虚拟环境中运行的。

 

(二)于是直接安装pip install flask

C:\WINDOWS\system32>pip install flask

Collecting flask

  Using cached https://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl

Collecting click>=5.1 (from flask)

  Using cached https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl

Collecting itsdangerous>=0.24 (from flask)

  Using cached https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl

Requirement already satisfied: Jinja2>=2.10 in g:\w10_1\python\python365\lib\site-packages (from flask) (2.10)

Collecting Werkzeug>=0.14 (from flask)

  Using cached https://files.pythonhosted.org/packages/18/79/84f02539cc181cdbf5ff5a41b9f52cae870b6f632767e43ba6ac70132e92/Werkzeug-0.15.2-py2.py3-none-any.whl

Requirement already satisfied: MarkupSafe>=0.23 in g:\w10_1\python\python365\lib\site-packages (from Jinja2>=2.10->flask) (1.0)

Installing collected packages: click, itsdangerous, Werkzeug, flask

Successfully installed Werkzeug-0.15.2 click-7.0 flask-1.0.2 itsdangerous-1.1.0

You are using pip version 19.0.3, however version 19.1 is available.

You should consider upgrading via the 'python -m pip install --upgrade pip' command.

 

C:\WINDOWS\system32>

 

这样终于将flask安装完成,运行Py文件执行操作正常。

 

二、尝试学习分析此Py文件实现的原理的过程

当发现从github上下载的包中,在文件夹【blockchain_client】(这就是区块链供客户使用的客户端)下有一个py文件:

【blockchain_client.py】

直接运行此文件,成功在浏览器中通过:

http://127.0.0.1:8080/

访问了网页版的区块链客户端。

 

因为对flask模块不很熟悉,因此并不了解网页源文件与flask是怎样互动而构建了一个本地服务器架构的,于是开始寻找。

(一)发现html源文件

【blockchain_client.py】

文件对应的三个html源文件存放在从github中下载下来的源文件包中的

文件夹【blockchain_client】->【templates】文件夹下

三个文件并行放在此目录中。

今天由于学习时间的关系,还没有深入研究透flask模块是如何与外部的Html源文件进行交互的。

但发现一个有趣的现象:

(二)flask模块可以虚构页面的物理位置?

在物理目录中,这三个html源文件:

index.html

make_transaction.html

view_transactions.html

 

是并列存放在同一目录下的,

然而,模拟出的服务器的链接地址却有所不同:

分别对应的地址如下:

http://127.0.0.1:8080/

http://127.0.0.1:8080/make/transaction

http://127.0.0.1:8080/view/transactions

 

即是说,本来在同一物理目录下的三个html文件,在实际展示效果中,却被放到了服务器的三个不同目录下的感觉,我以前写过网站程序,使用的是asp.net,没有涉及到隐藏真实的页面地址这些工作,就目前我的初步认识(不知道是对还是错),发现这个flask模块的这种作用比较有意思。

(三)找到相对应的py文件【blockchain_client.py】的代码中相关部分:

app = Flask(__name__)

 

@app.route('/') #这儿将index.html文件的展示目录指定为虚拟web服务器的根目录

def index():

    return render_template('./index.html')

 

@app.route('/make/transaction') #这儿将make_transaction.html文件的展示目录指定为虚拟web服务器的make一级目录下的transaction子目录

def make_transaction():

    return render_template('./make_transaction.html')

 

@app.route('/view/transactions') #这儿将view_transactions.html文件的展示目录指定为虚拟web服务器的view一级目录下的transactions子目录

def view_transaction():

    return render_template('./view_transactions.html')

 

@app.route('/wallet/new', methods=['GET'])

def new_wallet():

    random_gen = Crypto.Random.new().read

    private_key = RSA.generate(1024, random_gen)

    public_key = private_key.publickey()

    response = {

        'private_key': binascii.hexlify(private_key.exportKey(format='DER')).decode('ascii'),

        'public_key': binascii.hexlify(public_key.exportKey(format='DER')).decode('ascii')

    }

 

    return jsonify(response), 200

 

 

此文件的代码细节还需要进一步花时间研究。

 

【学习后记】

一、适用于python的每一个第三方库都是一方小宇宙

这是这学习Python几十天来发自内心的感慨,Python的强大就在于它的包容乃大,生态建设,促进了它自身的繁荣。

这不得不让人承认:建构一个生态系统的意义胜过无数的独自欣赏的封闭项目要来得有生存力,要更为强大。

 

二、简单的才是最有生力的

blockchain_client.py

文件真正有效部分只有90行,然而却实现了一个完整的区块链的客户端功能,真可谓是体量小,功能强劲。

这无不让人惊叹于世界上最厉害的生物体正是连基本生命结结构都残缺不全的病毒!

简单才是王道。

 

为了追赶未来,终身学习,终身进步,我创建了【就是要学 终身成长】社群,欢迎立志于终身学习,终身成长的朋友们加入,共同交流学习。Qq群号码:646854445

或访问:www.941xue.com

 

 

【关于坚持自学的例行说明】

最后例行说明下,我为什么要坚持自学。

一、为什么一把年纪还在学习

放弃很多去聚餐,去HI歌,去游玩,去看电影,去追剧……的时间,然后进行着这个年纪似乎已不应当再进行的学习,引来身边人们无尽的不解与鄙夷甚至可怜……

但我不想放弃终身学习的誓言。

因为——

我对我今天的生活现状并不认同!

罗伯特清崎告诉过我们,反省自己当下的生活是不是自己想要的,这难道不是最好的动力与答案?

走过了大半生,然后才发现曾经、当下所正在进行的人生并不是自己想要的,那是一种怎样的体验?

只有心中真切的感受才能回答这个问题,而任凭再丰富的语言也是无法描绘出来的。

经历半生的跋涉,却发现走得并不正确,有多少人有勇气承认自己过去的一切都是错误的呢?

而我愿意告诉过去的我:“你错了!”

那么已经历半生错误,年岁之大又压于头顶,还有希望从这架的梯子的半端重新爬下,再蹒跚着爬上另一架梯子吗?

我宁愿相信还有希望!

这便是我为什么要继续坚持终身学习下去的全部理由。

二、这个年纪还在学这些技术有意义吗

纯的技术对这把年纪其实已没有意义。

但兴趣可以超越意义。

但技术可以引来思想的变革,这才是意义。

投资自己的头脑 ,改革自己的思想,这是最保值,更长远的投资,过去我从来没有投资过,错过太多,那就从投资自己头脑开始吧。

罗伯特清崎告诉我们,真正的富有是时间的富有;真正的自由是可以决定自己愿意做什么的自由。

因为我愿意做我兴趣所在的事,所以我希望我有自由选择的那一天,虽然今天离那一天可能还是那么遥远,但我愿意相信,每天多赶几步,离希望就更近一步。

再者,虽然我可能再已无法完全完整的掌握这些技术了,但技术本身却可以启迪心的觉醒,激发灵感,那么只要多了解一点,我相信我将离那个正离我而去跑得越来越快的未来更近一点,不至于被未知的那个未来抛弃得太远。

于是我怎能放弃追逐求索的步伐?

我要坚信:感觉太迟的时候,也许还不算太迟。

 

感谢一直以来关注我,鼓励我的你!

为了追赶未来,终身学习,终身进步,我创建了【就是要学 终身成长】社群,欢迎立志于终身学习,终身成长的朋友们加入,共同交流学习。Qq群号码:646854445

或访问:www.941xue.com

 

【同步语音笔记】

https://www.ximalaya.com/keji/19103006/254267904

 

【学习过程屏幕录屏】

https://www.bilibili.com/video/av88223376/

链接:https://pan.baidu.com/s/1oQ953aUosvFeCCObbZn31A

提取码:ldfc

 

おすすめ

転載: www.cnblogs.com/lhghroom/p/12310014.html