git submodule 详解

使用 git 也有一段时间,但不得不说 git 的功能相当强大和复杂,需要你不断的去摸索学习。这边介绍一个 git 很强大的功能:git submodule 。起初发现这个文件是在我本人 fork 了一个 awesome 的配置文件,用了也蛮久,但最近由于总是出现连接错误,然后手动去更改了一些文件,但意外发现更改的文件无法提交, status 中竟然没有这些文件的信息,另外通过其他官方文档 gitignore 中的几个 ignore 中仔细查看,很确定项目中并没有忽略这些文件,通过排查最后才发现是 .gitmodules 这个文件捣的鬼。仔细研究发现git-submodule是一个十分强大的功能,值得去学习研究。

Read More

CRC校验

简介

原理规则

Read More

vim学习

vim 和 emacs 一个号称编辑器之神,一个被称为神的编辑器。打开 vim 执行命令:vimtutor 则可以查看官方说明教程,vimtutor是vim使用入门教程。老实说,自从接触vim到现在也有好多年了,但一直没有强迫自己使用,以及它的难定制性,让我至今都还无法像那些大神一样,完全脱离鼠标和IDE,本文只对 vim 最基础和常用的部分进行详细讲解,不涉及定制和插件等部分内容。

Read More

VPS 简介

起初对云服务很好奇,完全不知所云,无从下手的感觉,但经过一段时间的摸索研究,也基本能够搭建一些自己想要的服务了,这边根据一些网络资料和自己的学习研究,对这阶段进行一个总结,希望对那些刚刚开始尝试搭建云服务的网友有所帮助。

虚拟技术

利用虚拟话技术在一台物理服务器上面创建多个相互隔离的虚拟化私有主机(“Virtual Private Server – VPS”),可以看出原理和 PC 上面用虚拟机自己虚拟出来的系统并没有什么本质区别,只不过 VPS 是虚拟化之后放到网络上面使用的而已。对用户和应用程序来说,每个 VPS 平台的运行和管理都与一台独立主机完全相同,每个 VPS 均可以独立进行重启并且拥有 root 访问权限,用户,IP地址,内存,进程,文件,应用程序,系统函数库以及配置文件等。

目前一般 VPS 结构是这样的:最底层为 Host Hardware 硬件, 然后是 Host Operating System 宿主机/真实系统,再然后是真实系统上面运行的虚拟化软件,最后是虚拟机软件内部运行的操作系统 Guest OS 访客系统(这边看上去和我们个人电脑 PC 上面跑的虚拟机中的虚拟操作系统并没啥区别)。

随着云技术的不断成熟,现在的 VPS 也有了很大的改进,例如国内的腾讯,阿里等都给自己的 VPS 起了新名字,什么弹性云服务,无虚拟机,云服务器等等,从用户角度来看和 VPS 没有区别,但技术层面一般现在都会将 Host Hardware 硬件通过集群技术搭建,几百上千台主机共建一个硬件平台,然后分配资源建立 VPS,这边一般可以看作是 cloud VPS,可以做到弹性扩展,无缝对接,无需在需要时再去更新硬件资源。

能够使用 linux VPS 完成的优先使用 linux。

这边如果对 VPS 服务器等还有疑惑可以参考本博客的另外一篇文章虚拟主机、VPS和云主机

Read More

keil工程的代码优化

C项目的工程优化

这边主要参考另外一篇文章,不仅仅是针对C语言,C++等其他一些类C语言也同样适用。我们在构建自己的项目时,主要需要考虑:宏定义,类型,全局变量等的作用范围,针对头文件的引用和复制是否有存在的必要等。只有对每个细节都了如指掌,才能够减少代码的出错,以及优化代码空间等。就目前的芯片发展而言,很多时候都是硬件性能过剩,大多数程序员已经不再考虑或者极少考虑代码如何优化节省空间等问题了,往往更加注重代码的可阅读可扩展性,这边之所以注重这个问题,主要是考虑到工控节能领域,以及很多使用的模块可能存在代码量不足,不能胜任工作等问题。

keil

keil是一款MCU的IDE,有文章介绍过详细配置和调试步骤,这边不再详细累述。因为针对的是MCU的代码优化,所以首先我们必须知道编译器生成的代码量等信息。

每次点击编译后,下方会出现KEIL RVMDK编译后的信息,例如:Program Size: Code=19160 RO-data=6420 RW-data=108 ZI-data=1532,这边代表我的无任何优化的前提下,keil编译生成的代码为19160个字节。

Code是代码占用的空间;RO-data(Read Only) 是只读常量的大小,如const型;RW-data(Read Write)是初始化了的可读写变量的大小,ZI-data(Zero Initialize)是没有初始化的可读写变量的大小。ZI-data不会被算做代码里因为不会被初始化。Total ROM Size :Code + RO Data + RW Data(ROM Size并不等于Code + RO Data,初始化不为零的 RW Data 数据本身也会占用相同大小的 ROM 和 RAM 存储单元,变量在 RAM 中,而变量的初始值存在 ROM 中) ,Total RW Size:RW Data + ZI Data 。这边在考虑芯片的 ROM 和 RAM 选型时,注意: ROM > Code + RO Data + RW Data , 而 RAM > RW-data+ZI-data,具体我们可以查看 KDE 编译后生成的 .map文件。

Read More

notepad++和MinGW

今天写一个换算的小程序,但无奈手头没有编译工具,归根结底为何如此麻烦还是因为windows下的开发不友好不自带常规编译器所决定的,一个简单的程序编译需要你去安装庞大的IDE等。以前用windows偶尔弄点c代码编译或者查看一些文件都是使用notepad++的,有算是比较长的一段时间了,但不久前重装了系统,notepad++虽然仅仅需要选几个皮肤,简单配置作为文本编辑器即可,但无奈MinGW如何调用已经忘了,本文列出个简要步骤,以便下次查看。

实际需求

Windows下编写C语言程序,使用如VS2010之类的IDE往往显得大材小用,并且这些集成开发环境都占用了大量的系统和硬件资源,且不如Notepad++之类的编辑器简单易用、定制性强大。最重要的一点在于学习编程的话,建议不要怕麻烦还是从最基础的学起,IDE往往屏蔽了很多的细节,并不利于初学者的学习。Linux下写C推荐可以研习emacs、vim配gcc。起初是想从网上直接找个教程按部就班执行,轻松配置完成的,但看了几个教程都不尽如人意,通过自己多次尝试最终找到了较为满意的解决方法,文章列出了部分参考网络教程的链接,下面对此详细阐述。而MinGW (Minimalist GNU for Windows)听名字就只是很强大,因为gcc的使用广泛和强大,无疑这个套件是编译的理想选择。

软件安装

notepad++只是一个文本编辑器,本身没有编译C/C++的功能。所以要想先配置,就要先装上一个编译器。MinGW是GNU开源社区面向windows用户提供的一个集成了个编译环境的软件包。一般可以通过搜索MinGW直接去官网下载安装,但官网貌似是在线安装,因此我从其他网站下载了MinGW-5.1.6离线包,安装步骤很简单,这边不具体阐述。

Read More

美国总统诞生了

2016年11月9日,美国大选计票结果显示:共和党候选人唐纳德·特朗普已获得了276张选举人票,超过270张选举人票的获胜标准,成为美国第45位总统。

就在昨天美国总统诞生了,很多网络论坛称新一代总统为喷子界的骄傲。如果特朗普真如他做演讲时那样治国,无疑整个美国或者说全球会发生大的动荡,特朗普于历来总统都不太一样,就他演讲来说,几乎是完全站在美国贫民普通阶层这边的,因此我们通过谷歌各州的投票结果也可以看出,支持特朗普的几乎全是美国欠发达地区。特朗普的政治主张很反科技,甚至有点另类到要将劳动密集的行业重新带回美国,他的很多举止有点让人摸不着头脑,但也确实是针对美国一些顽疾的一剂猛药。这届美国总统是一个较大的变数,就特朗普的种种举措,可以分两点。

其一,特朗普能够切实的成为一个出色的总统,通过降低税收,增强了创业公司的活力,通过自动化和本地工人结合创造了更多就业,解决了民生问题等。

其二,将美国彻底的玩坏了,一味的打压科技公司,阻止了美国的发展,本地的一些民生政策也出现了较大的问题等。

当然除了以上的一些猜测,不得不怀疑,特朗普是一个彻头彻尾的骗子,不择手段上台了之后,并没有履行任何他的承诺。

Read More

C语言工程组建

每个编程语言都有自己的一些特性,如果了解的很清楚能够减少你编译的时间,减少编译所生成的文件大小,提高你程序的执行效率。虽然现在计算机发展很快,在众多高级语言中已经很少考虑这种问题,但如果是使用c语言编写一些运行在资源较紧张的芯片或编写能耗敏感的一些项目时,仔细研究每个细节,合理的组建自己的工程等还是相当必要的。

Read More

如何看待蓝绿大厂问鼎中国

根据IDC的数据,今年第三季度,OPPO和VIVO在中国市场的出货量再创新高,首度成为中国市场的冠亚军。OPPO和VIVO历来以低配高价而文明科技圈内,且低于红米的配置和软件优化,但却卖出几倍的价格,一味的再外观上模仿苹果,广告上轰炸观众,再加上市面上很难找到专业的评测机构来测评这两家的手机等一系列因素,因此很多人都会对这两家产品很是不屑,称他们为“蓝绿大厂,高价低配,专坑厂妹”。但本着存在即为合理的看法,OPPO和VIVO一定还是有很多可取之处的,不然不可能在竞争日益激烈的手机市场上面,站稳脚跟,国内销量先干掉小米,后挤掉华为,且业绩日益攀升。我将蓝绿厂家成功可以总结为以下几点。


差强人意

就产品本身而言,两家主打的功能也都基本一致:自拍,音效,快充。这几点都算是手机某一项的特色功能,但老实说都不具备特色,因为国产手机大都在这些功能上面表现的不差,下面进行详细解析。

在评价一个手机拍照性能时,大都以是否能够更加真实的还原场景为标准,常用的参考量为:解析力,白平衡,夜间成像能力等等。因为手机不同于单反之类的产品,毕竟机身空间有限,每次捕捉的光源数据会经过大量的加工处理才会得到样张的,所以硬件参数即便再好(光圈大,像素高),如果没有好的算法,往往会适得其反,这就是为何苹果800w摄像头可以秒杀别人1600w大光圈的原因。说完拍照来提一下自拍,自拍本身属于照骗的一个制造过程(拍的美不美,有可能你自拍出的照片你妈都不认识),摄像头要拍出真实的照片不容易,但要毁照的话,只需要进行一定的图像识别,加上特定的滤镜效果即可。市面上面除了iPhone功能单一外,其他手机大多有很强的自拍功能,什么深度磨破,瘦脸,背景虚化,多人拍照只对自己美化等,各种功能都深入到各家自身的ROM中去了,无需下载第三方软件。而OV两家因为主打自拍,所以前置摄像头像素极高,甚至超过了后置摄像头,这边到底拍的美不美,一来和你参数的选择有关,二来每个人的审美不尽相同。

音效是一个模糊的概念,外放的音效极少有做的好的厂家,毕竟手机越做越小,虽然芯片在不断的发展,但数字电路很难做出模拟电路电路的音效体验。最近两年的主流中高端手机都不会在音效上面大做文章,显然有一道大家无法逾越的屏障拦在前面。目前中高端手机的外放基本只能判别音量大小,音效的好坏目前主要取决于耳机以及针对耳机的一些优化,但一个好耳机动辄千元起步,除了极少数用户,目前也几乎没有谁愿意为它买单。

快充技术基本上在手机界已经普及(除了反应迟钝的苹果),市面上各种快充技术都不尽相同,升压,升流各种方式都有。来自高通的Quick Charge 2.0是随骁龙800开始盛行的快充技术,早在两年多前,小米4就已经实现了快充,另外MTK和麒麟处理器等也都相继推出了自身的快充技术,也就是说快充家家都有,只不过OV两家的广告让大家知道了他们手机有这个功能而已。

在产品上面这两家算是没有任何特长的手机厂家,首先配置差,采用的一般是骁龙最新的中低端处理器(其他国产厂家一般会在千元左右的手机机使用该处理器);其次是软件上开发能力较弱,缺失一些必备或者特色功能(如:远程协助,微信多开等功能都缺失,虽然可以通过第三方软件实现,但毕竟安全无保障),在一些手机自带功能上面的体验不足,如手势等操作识别错误,可能与这颗CPU性能较差,或者软件优化不足有关;再者其他诸如续航和通话信号等都没太多可以圈点的。综上这些,就可以知道为啥这么多人对它很诟病。

软件和外观极度模仿苹果,很多交互方式和苹果一致,甚至连很多图标都一模一样,也许可以进一步满足很多人的虚荣心。

说完这么多缺点,下面谈一下优点,两家厂家在手机使用上面都能够满足正常的需求,对于很久没试用过其他安卓手机的用户而言,这两款手机基本能够带来舒适愉快的体验,由于从14年开始,安卓手机配置基本上已经能够满足安卓系统的要求了,所以换句话说,14年的所有高配置的手机,只要没有质量问题,且你对拍照,三防等一些附加属性没有特殊要求,重新恢复出厂设置或者耍个新系统,现在一样可以当作新机来使用。

举个例子:OV两家的CPU < 荣耀6的CPU,OV两家的CPU < MI4的CPU;OV两家的GPU > 荣耀6的GPU,OV两家的GPU < MI4的GPU。因此可以看出,在多任务切换体验来说(常规APP,不包含游戏,不包含系统自带软件功能),OV一般只能同时完美体验3-4个应用,荣耀6和MI3一般可以体验6-8个应用。荣耀6基本上已经不能胜任市面的中等要求的游戏(王者荣耀等),MI4和能够完全可以胜任中等要求的游戏,且可以冲击一些高负荷的游戏,OV能够胜任中等要求的游戏。

因为这两年CPU和GPU虽然略有提升,但大多数人很少会玩大型游戏或者运行n多个APP,对CPU和GPU的型号,好坏与否并不关心,甚至很多人觉得手机不错,自始至终并不了解自己的手机比别家的好或者差。

对特色功能的体验一般也仅仅限于手机重度爱好使用者,MIUI,FLYME和EMUI等各家系统很多功能虽然好用,但由于缺乏推广,普通用户并不关注,或者说从来没用过,不知道有这些功能。安卓手机从14年开始早已进入了厂商引导消费体验的阶段,普通消费者对手机已经不存在不满和需求,甚至觉得太强大,很多功能不会用,不会设置,而恰恰是厂家在帮用户思考增加哪些功能会让体验更加的完美,护眼模式,远程协助,单手模式,节电模式等都是各家厂家在提升用户体验上面的尝试。

综上可以看出,在手机同质化的今天,OV基本可以满足市面上面的绝大多数需求,虽然还会有误触,略微卡顿等问题,但相比过去安卓的不响应,发热,死机重启等,已经好了太多,普通消费者看个视频,玩玩小游戏完全可以满足,从苹果转来的用户会觉得便宜几千体验也差不多了多少,较为满意,而从旧款安卓低端机转过来的用户,则会认为大屏不卡顿不死机,好了太多。满足刚需就好,其他能有的功能尽量往上加,作绝大多数普通消费者能够使用的手机即可,这也是OV两家作产品的精髓。

Read More

uart/spi/iic的比较

参考链接:
http://wenku.baidu.com/view/2a0a7f9869dc5022abea001d.html
http://blog.sina.com.cn/s/blog_50cfd0fc0101flsn.html

Read More