차가운 독방 자기 인식 파이썬 아흔번째 블록 체인 004 Heling

차가운 독방 자기 인식 파이썬 아흔번째 블록 체인 004 Heling

[주요 내용]

오늘 시간 36 분 공유, 파이썬을 통해 달성 간단한 함수 블록 체인을 구성하기 위해 노력하기 시작했다.

(또한 마무리 노트 67 분쯤했다)

자세한 사항은 말에게 학습 과정 화면 비디오를 학습하는 과정을 참조하십시오.

코드가 오늘 구현 간단한 블록 체인 응용 프로그램을 작성하지만, 실제 진행이되었습니다 분석을 시작합니다.

 

[연구 노트]

먼저, 플라스크 설치

(A)를 가이드에 따라 동작하는 첫 번째 시도 :

어제는 가상 환경 모듈을 설치 :

VIRTUALENV

에 기초하여 설치를 계속 어제 튜토리얼 오늘, 따라

먼저, 가상 환경 구성 지점으로 폴더를 만들 :

C : \ WINDOWS \ system32를> I :

 

I : \> CD를 I : \ MAKEAPP \ 파이썬 \ 웹 공간 \ flaskspace

 

I : \ MAKEAPP \ 파이썬 \ 웹 공간 \ flaskspace> VIRTUALENV 플라스크-ENV

접두사 '\\ w10_1 \\ 파이썬 \\ python365 g'기본 사용

\ MAKEAPP \ 파이썬 \ 웹 공간 \ flaskspace \ 플라스크-ENV \ 스크립트 \ python.exe를 : 나는 새로운 파이썬 실행

setuptools에, 핍, 휠 설치 ...

끝난.

 

I : \ MAKEAPP \ 파이썬 \ 웹 공간 \ flaskspace> CD I : \ MAKEAPP \ 파이썬 \ 웹 공간 \ flaskspace \ 플라스크-ENV \ 스크립트

 

나는 : \ MAKEAPP \ 파이썬 \ 웹 공간 \ flaskspace \ 플라스크-ENV \ 스크립트> 활성화

 

핍은이 디렉토리 가상 환경 설치 플라스크에 명령을 실행

나는 : \ MAKEAPP \ 파이썬 \ 웹 공간을 \에게 flaskspace 플라스크를-ENV \ 스크립트> 핍 플라스크를 설치 \

수집 플라스크

  다운로드 https://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl (91KB)

     | ████████████████████████████████ | 92KB 슈퍼 스칼라 / 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