最后更新:2019-06-14
纸质书
《Python硬件编程实战》
之前出版了一本与Python有关的,纸质的书:《Python硬件编程实战》
网上一些地方有介绍或销售:
自我评价:
由于各种原因,自己对这本书的质量不是很满意。
不过总的来说,书中还是有一部分内容,自认为是自己的有价值的经验总结,可供参考。
如果以后有机会,希望出一本自己很满意的书。
目前,鉴于很多内容还没发布成纸质书,所以:
如果喜欢我写的东西,可以先去看下面要介绍的,已经写出来的,各种领域的,免费放到网络上的,各种格式的,电子版本的书:
注:
下面是对于我Crifan的电子书的详细的使用说明的介绍:
- markdown源码:crifan/crifan_ebook_readme: Crifan的电子书的使用说明
- (生成的)PDF版:Crifan的电子书的使用说明 PDF版
- (生成的)html版:见下面
Crifan的电子书的使用说明
最后更新:20190614
源码
crifan/crifan_ebook_readme: Crifan的电子书的使用说明
为何要有:Crifan的电子书
我Crifan Li之前折腾过很多方面的内容,包括技术类的和非技术类的。
关于技术类中又分很多种,其中都放到了我的网站 crifan.com 上的工作和技术,目前已有6000多的技术帖子,但多数都是零散的某个细节的知识点和某个具体问题的解决过程和结果。
当我在某个技术领域有了一定的心得和经验后,就会抽空整理成相对成系统的内容,用(Docbook、Gitbook等)工具去制作出电子书,免费发布出来供别人参考。
目前已经整理出89本成系列的电子书了,接下来详细介绍:
另:手上还有好几十本电子书的内容已基本完成,待之后能抽出时间再陆续发布出来。
为何要有:Crifan的电子书的使用说明
我写的电子书涵盖范围面较广,需要专门整理后的分门别类的介绍,才有利于他人快速定位到自己所需要参考的内容。
目前所写电子书的总的概览:
- 内容上:主要分两类
- 一方面:技术类
- 计算机相关的,技术类,开发类
- 另一方面:非技术类
- 生活类的,学习类的,娱乐类等
- 一方面:技术类
- 制作工具上:也分两类
- 一类是(最早)用Docbook制作的
- 另一类(后来,现在)是用Gitbook制作的
- 弄了2份一样的,分别发布到
- 自己的 crifan.com 的网站上
- 和 GitHub Pages 上
- gitbook电子书的源码
- 全部源码都已公开放在github上了,详见:https://github.com/crifan
- 如何利用gitbook的源码去创建自己的电子书,可以参考:https://github.com/crifan/gitbook_template
- 弄了2份一样的,分别发布到
下面详细介绍各个电子书的具体分类和内容简介:
技术类
从大的概念上来说,计算机的技术可以大致分为:
- 上层:纯软件
- 涉及到在PC(Windows/Mac/Linux)上,用各种编辑器/IDE,去编写各种代码,实现各种工具/软件/脚本等内容
- 包括PC桌面端软件,Web领域网页开发,移动端APP开发等等
- 中间:(软硬件结合的)嵌入式
- 涉及到在某某开发板上,写嵌入式代码,驱动硬件工作
- 包括给别人的芯片或开发板,去写某BSP,某个模块(蓝牙,USB,FM,Nand Flash等)的驱动
- 底层:纯硬件
- 涉及PCB Layout,设计和生产开发版
- 涉及到各种芯片的涉及,包括CPU,内存,显示屏等,涉及到流水线,代工厂等等内容
自己主要涉及的领域是:
中间的嵌入式 和 上层的纯软件
技术类通用知识
不论哪方面的技术,都有一些通用的学习方面,逻辑概念,总结如下:
- 关于如何利用工具和脚本提供工作效率的:
- 关于要有良好的编程习惯和逻辑,才能写出高质量代码:
- 对于不同领域的技术,都有一些通用的概念需要了解,才能更好的开发:
- 以及都有一些通知的基础知识:
推荐的工具或软件
做各种领域的技术开发,甚至非技术方面的工作,都会涉及到一些好用的工具和利器,现整理如下:
科学上网
想要用外网,比如用google等搜索技术资料,可以使用shadowsocks:
编辑器和IDE
之前Windows下觉得最好用的编辑器Notepad++:
现在觉得更好用的、最好用的编辑器(设置可称之为IDE):VSCode:
自动化以提高效率
不论是嵌入式还是上层软件,都可以用一些工具,从手动变自动,去提高做事效率,比如Makefile:
API接口测试
后端人员,移动端开发人员,测试人员等涉及调试api接口时,可以用Postman:
ssh远程连接工具
通过SSH连接远程服务器的工具方面,常用SecureCRT:
硬件类
折腾嵌入式期间,其实也想去了解硬件方面的知识,只不过没有深入。
只整理了点和硬件相关的皮毛:
之前拆过智能音箱,然后总结了相关各种细节:
且在拆解期间又去整理了芯片和产业链的相关知识:
嵌入式软件
下面是之前折腾的嵌入式开发相关的内容:
嵌入式领域(包括很多硬件反面)都有些通用的基础知识和概念:
关于CPU方面的:
和技术和概念相关的,比如:
开发环境+交叉编译器
在折腾嵌入式相关开发前,往往要先去搭建开发环境,其中就要先去搞懂:交叉编译
先去搞清楚什么是交叉编译:
然后再去了解相关的GNU方面的工具:
然后再去用具体的某个工具,去搭建交叉编译环境(和相关的工具链、rootfs等内容):
关于开发环境的:
在Windows上折腾Linux方面的开发,用Cygiwn:
嵌入式Linux+嵌入式Linux驱动
如果对于嵌入式软件的整体概念不了解,可以去看:
如果想要了解嵌入式软件中关于驱动开发的事情,可以去看:
而关于嵌入式Linux方面的软件和软件中的驱动,可以去看:
关于嵌入式Linux开发期间的,有:
而关于典型的Uboot+Kernel+Rootfs的嵌入式Linux中的Uboot:
其中的最开始的启动代码相关的Start.S的汇编代码,实现了启动硬件的功能。
而关于启动的逻辑的具体分析:
而关于具体的某个模块/功能方面的驱动有:
关于DMA的驱动:
关于无线网卡的驱动:
关于Nand Flash方面的驱动和介绍:
而其中Linux中关于Nand Flash的是MTD层,MTD中关于如何识别Nand Flash和启动过程的解析是:
而关于USB方面的协议介绍和相关驱动开发总结是:
具体模块或领域
大的方向=嵌入式的不同应用领域
条形码Symbology相关的,各种不同类型的条形码的总结:
- Code 128 Symbology Introduction
- GS1-128条形码和相关的AI及FNC1的详解
- Plessey & MSI Symbology Introduction
- UPC/UPC-A/UPC-E & EAN Barcode Symbology
小方面来说=关于具体的模块/硬件/协议方面
关于蓝牙的:
关于串口/RS232的:
关于音频领域的:
关于MPEG和MP3的知识:
上层软件
对于上层纯软件方面,也有一些总结:
上层软件的通用知识
关于后台开发和设计接口,移动端调用后台接口,测试人员测试接口和网页等相关的:
和HTTP方面的知识:
以及后台人员设计RESTFul的API接口需要了解的:
各种计算机语言通用的的方面的知识总结:
在涉及到前台和后台数据交互,往往都是用JSON:
不同的语言和工具中,都支持用正则表达式去实现复杂的规则去提取想要的数据:
而用不同的编辑器或IDE,以及处理文件相关的内容时,往往会涉及到文件的字符编码,可参考:
而上面的教程内容太多太杂,如果只是想要简单的使用编码方面的知识,可以直接去看:
PC桌面端软件
在写Windows平台的桌面端软件时,可以使用C#:
网页Web领域开发
关于如何搭建网站,以及如何给网站搬家的话,可以参考:
移动端APP开发
在涉及到移动端开发时,可以参考:
爬虫
折腾网络爬虫(和模拟登录)领域的话,可以先去了解宏观逻辑和概念:
再去选择合适的语言去写爬虫,比如目前最适合的是Python:
然后才涉及到基于某语言(Python)去具体选择什么框架(PySpider),以提高爬虫效率:
在爬虫领域往往会涉及(当前其他领域也会用)到Web网页自动化,才会涉及到Selenium:
在爬虫领域内涉及到提取内容时,往往才会涉及到Xpath:
如果想要抓包app时可以用:
另外,之前也写过相关的爬虫方面的资料:
安全与破解
爬取安卓app的数据期间,折腾过如何破解安卓,后整理心得如下:
上层软件的其他领域
比如想要开发自己特定领域内的语言的解析器,即实现自己的编译器,可以使用ANTLR:
想要和我一样去制作出复杂的电子书,则可以:
先学习通用的语法格式Markdown:
再去使用相对简单好用的工具GitBook去制作电子书:
- 电子书制作利器:GitBook
- 如果想要更简单易用更省心,可以基于我的Gitbook的模板去制作,生成的效果是Gitbook演示
也可以用更加强大但非常复杂的,技术类书籍专业制作工具Docbook:
Python语言
折腾折腾Pyton期间,单独整理了一系列的内容,供参考:
用于入门级的介绍的:
关于整体的Python的心得和总结:
关于某个特定的模块的总结:
我Crifan个人相关内容
在折腾技术方面,整理出一些,相对通用的库,整理出来,供参考:
目前最新的代码,都放到 crifan的Github上了:
其中关于自己的库函数,各种语言都有:
其中关于C#和Python,分别写了专门的电子书解释如何使用:
非技术类
电脑计算机使用类
和电脑/计算机使用方面的知识,比如有哪些常见的操作系统,以及如何安装软件和驱动等知识的:
以及觉得很多好用的工具和软件,也进行了推荐:
和技术开发有点关系,但是更主要是属于电脑使用方面的,虚拟机:
在Windows/Mac中,按照Mac或Windows的系统,而用到的工具,比如VMWare或VirtualBox:
工作类
而开始了工作后,需要了解的各种基本概念和常识,包括招聘和应聘,薪资待遇,股票和期权,创业和公司等:
而和别人合作时,往往涉及到文件共享,资料共享,协同编辑等内容,可以使用有道云协作:
而工作后,会遇到具体的某个商业领域相关的知识,比如:
领域相关知识
汽车销售行业内的知识,包括售前和售后、整车厂和经销商。经销商和客户等相关内容:
生活类
和买房前后需要注意哪些事项,具体买房的过程的内容:
以及日常生活期间也有些心得供参考:
娱乐类
本人常年打羽毛球,有些心得,整理如下,供喜欢羽毛球运动的参考: