酷玛Play - 2018年6月
type: channel
link: https://www.culmart.com/play/2018/06/
description: 信息技术、开源硬件、编程语言、创意技术和网站开发。
items: 物联网平台：Google Android Things
items: Python的3大主要用途

物联网平台：Google Android Things
type: item
date: 2018-06-30T15:32:00+08:00
description: 2016年12月13日，谷歌对外公布Android Things；2018年5月推出Android Things 1.0正式版。Android Things是谷歌为Google Brillo更改名称后的新版系统，为针对各种消费、零售和工业应用构建智能互联设备的托管操作系统，提供交钥匙硬件设计，以解决构建物联网设备时诸如构建和部署设备成本高且速度慢、设备认证和网络兼容性很昂贵、系统集成需要深厚的技术专业知识、对于中小型公司而言扩展到生产级别的产品成本过高、大公司在提供硬件同时维护操作系统时也面临挑战等问题。Android的整个生态涉及到手机、手表、电视、汽车以及物联网。Android Things的系统相对其他几部分更加精简，适物联网方面。它的应用领域偏向于Camers、Gateways、HVAC Control、Smart Meters。Android Things扩展了core Android Framework，通过Things Support Library提供了附加的API，使得开发者可以集成通常在手机等移动设备中没有的硬件。借助Android Things可以构建无需电源管理的产品、通过WiFi或以太网连接到Internet的产品、使用认证的生产硬件、连接兼容SoM的显示器/摄像头/音频接口、Android框架、通过外设I / O API（GPIO，I2C，SPI，UART，PWM）集成其他外设以及使用Android Things Console推送无线功能和安全更新。另外，Android Things 系统还加入了 Google Assistant 智能语音助手控制，可以通过语音命令直接操控那些搭载 Android Things 系统的智能硬件。Android Things开发工具Android SDk是完全支持Android Things的，当然也能够使用Android Studio作为开发工具。Play Services是google Services的一个组件，Firebase则是数据库，Cloud platform集成了对物联网的数据应用。可以看到Android Things借鉴了很多Android的工具，毕竟它是类似安卓的一套系统。物联网最基本的形态中类似于传感器、摄像头这样的设备会对数据进行收集，然后进行粗加工传送到云端，最终处理分析这些数据。整个流程中数据会被存放到数据库，但是收集到数据后进行深加工的这一环节，对目前的嵌入式设备来说还有很多问题没有解决。因此数据的深加工都被放在云端解决，这也使得Firebase和Cloud platform在整个数据处理的过程中占有比较重要的地位。IoT出于安全方面的考虑，Android Things的操作系统核心都是由谷歌直接管理，将开发者的权限限制在小范围内。Google提供了IoT Developer Console进行云应用上传以及对设备的下发。Automatic Security Update是自动安全升级，它在Developer Console中进行推送，一旦有新的Android Things镜像或者需要从Android Things镜像中升级应用都是通过Google服务器自动获得推送升级。Signed Images和Verifled Boot涉及到了嵌入式开发的领域。一般的简单嵌入式开发引导流程都是先从Bootloader到Linux Kernel，再进入到，之后才是其他应用的启动过程。从整个系统的安全性来看，是可以在Bootloader这部分夹杂一些代码去获得权限的。于是Google 要求Signed Images和Verifled Boot这两部分需要OEM厂商和自己进行认证，来保证这部分二进制镜像的可靠性。产品的开发中，需要在CPU芯片的模块板上画开发板，进行硬件方面的初期设计。完成后就进入到应用的开发时期，来让开发者进行开发。开发套件开发人员套件Android Things Starter Kit包括NXP i.MX7D，这是一个具有成本效益且经过安全性认证的开发平台，可用于Android Things轻松构建项目。Android Things Toolkit是Android Things的配套应用程序，可帮助您快速入门。使用Android Things Toolkit可以按照分步说明来帮助您组装套件，将设备连接至Wi-Fi网络，测试硬件外围设备以确保所有部件均正常运行，并在板上运行示例应用程序。

Python的3大主要用途
type: item
date: 2018-06-14T14:44:00+08:00
description: 如果你想学Python，或者你刚开始学习Python，那么你可能会问：“我能用Python做什么？”这个问题不好回答，因为Python有很多用途。Python已在许多应用程序领域中使用，具体在官方Python的应用一节总结为：网络和互联网、数据科学、教育、桌面GUI、软件开发和商业应用，而行业人士有自己的看法。但是随着时间，我发现有Python主要有以下三大主要应用：Web开发数据科学：包括机器学习、数据分析和数据可视化脚本本文将依次介绍。01 Web开发Django和Flask等基于Python的Web框架最近在Web开发中非常流行。这些Web框架可以帮助你用Python编写服务器端代码(后端代码)。这是在你的额服务器上运行的代码，而不是运行在用户设备和浏览器的代码(前端代码)。1.为什么需要Web框架因为用Web框架可以更容易地构建通用后端逻辑。这包括将不同的URL映射到Python代码块，处理数据库以及生成用户在浏览器中看到的HTML文件。2.应该使用哪种Python Web框架Django和Flask是最流行的两种Python Web框架。如果你刚刚入门，我建议使用其中一种。3.Django和Flask有什么区别Gareth Dwyer 关于这个问题有一篇出色的文章，在这里我引用几段：主要区别Flask：能够实现简单、灵活和细致的控制。并能让你自己决定实现方式。Django：提供了全面的体验：你可以获得管理面板、数据库接口、ORM(对象关系映射)以及开箱即用的应用程序和项目的目录结构。如何选择Flask：如果你关注的是经验和学习的机会，或者你想更多地控制使用哪些组件，比如你想使用哪些数据库以及如何与其进行交互。Django：如果你关注最终产品，或者你正在研究一个简单的应用，比如新闻网站、网店或博客，并且你希望有单一实现的方式。换句话说，如果你是初学者，Flask可能是更好的选择，因为它要掌握的组件更少。此外，如果你想要更多的定制，那就选Flask。根据我的数据工程师朋友Jonathan T Ho的说法，由于Flask 的灵活性，在创建REST API时，Flask 比Django 更适合。另一方面，如果你想直接构建一些东西，Django可能会让你更快实现。Flask 实践教程——米格尔·格林贝格的博客文章The Flask Mega-Tutorial Part I: Hello, World!是用Python和Flask来创建Web应用的教程，并且有全二十三章的中文翻译。02 数据科学数据科学，这里包括机器学习，数据分析和数据可视化。1.机器学习是什么 假设你想开发一个能够自动检测图片内容的程序。给出图1，你希望程序识别这是一只狗。给出图2，希望程序能识别这是一张桌子。你可能会说，我可以写一些代码来做到这点。例如，如果图片中有很多浅棕色像素，那么可以识别是狗。或者可以检测图片中的边缘，如果有很多直的边缘，那么就是桌子。但这种方法很快就不好用了。如果图片中的狗不是棕色毛的怎么办？如果图片只显示桌子的圆形部分怎么办？这里就需要用到机器学习了。机器学习通过实现算法，该算法能够自动检测输入中的模式。例如，你将1000张狗的图片和1000张桌子的图片输入给机器学习算法，让它掌握狗和桌子间的区别。那么当你给出新的图片让它识别是狗还是桌子时，它就能够进行判断。这有点类似孩子学习新事物的方式。孩子是如何学习认知狗或桌子的呢？就是通过大量的例子。你不会明确告诉孩子：“如果某个毛茸茸的东西有浅棕色的毛发，那么就可能是狗。”你会说，“这是狗，这也是狗。而这是桌子，那个也是桌子。“机器学习算法的方式大致相同。我们可以将相同的想法应用于：推荐系统：比如YouTube，亚马逊和Netflix人脸识别语音识别以及其他应用。你听过的热门机器学习算法包括：神经网络深度学习支持向量机随机森林你可以使用上述任何算法来解决前面提到的图片标签问题。2.将Python用于机器学习有一些热门的机器学习库和Python框架。其中两个最热门的是scikit-learn和TensorFlow。scikit-learn带有一些内置的热门机器学习算法。TensorFlow是一个低级库，能让你创建自定义机器学习算法。如果你刚开始进行机器学习项目，我会建议你先从scikit-learn开始。如果你开始遇到效率问题，那么可以使用TensorFlow。3.数据分析和数据可视化假设你在一家在线销售产品的公司工作。作为数据分析师，你会绘制这样的条形图。▲条形图1 - 用Python生成从这张图中可以看到在某个周日，男性用户购买了400多件产品，女性用户购买了350件产品。作为数据分析师，对此你会提出一些可能的解释。明显的解释是，该产品在男性用户中更受欢迎。另一种是样本量太小，而这种差异…