信息技术、开源硬件、编程语言、创意技术和网站开发。
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，或者你刚开始学习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件产品。作为数据分析师，对此你会提出一些可能的解释。明显的解释是，该产品在男性用户中更受欢迎。另一种是样本量太小，而这种差异是偶然的。还可能呢是由于某种原因，男性往往在周日才购买该产品。为了理解哪种解释是正确的，你可以绘制另一个图。▲折线图1 - 用Python生成不止看周日的数据，还要看到一周的数据。从这张图表中可以看出，在不同的日子里这种差异比较一致。从这个分析中你会得出结论：这种产品在男性中比在女性中更受欢迎。但如果你看到像这样的图表呢？▲折线图2 - 用Python生成那么，怎么解释周日的差异呢？你可能会说，也许出于某种原因男性只在周日才会更多地购买这款产品。或许这只是巧合。我在谷歌和微软工作时所做的数据分析工作与这个例子非常相似，只是更复杂一些。在谷歌时我使用Python进行分析，而我在微软使用JavaScript。在这两家公司我都使用SQL从数据库中提取数据。然后，我用Python和Matplotlib(在谷歌)或JavaScript和D3.js(在微软)来可视化和分析这些数据。4.使用Python进行数据分析/可视化进行数据可视化时，Matplotlib是非常热门的库。Matplotlib很棒，因为：容易上手seaborn等库是基于它的，学习Matplotlib可以帮助你以后学习其他库。5.如何用Python学习数据分析/可视化你首先应该了解数据分析和可视化的基础知识。在学习了数据分析和可视化的基础知识之后，学习统计学基础知识也将会很有帮助。03 脚本什么是脚本？脚本通常是指编写能够自动执行简单任务的小程序。我曾经在日本的一家小型创业公司工作，公司有邮件支持系统，这用来回复客户通过邮件发送给我们的问题。在那儿工作时，我的任务是计算包含关键字的邮件数量，以便分析我们收到的电子邮件。这可以手动完成，但我写了一个简单的脚本来自动执行此任务。当时我们使用了Ruby，但对于这类任务Python也是不错的选择。Python适合这类任务，因为它语法简单，易于编写，而且进行测试也很快。04 其他用途1.嵌入式应用我不是这方面的专家，但我知道Python可以与Rasberry Pi一起用，在硬件爱好者中很流行。2.游戏开发你可以用PyGame来开发游戏，但这并不是最受欢迎的游戏引擎。你可以用它来开发业余爱好项目，但如果你对游戏开发很认真，建议不要选它。我建议使用Unity的C＃，这是最受欢迎的游戏引擎之一。它能让你为许多平台开发游戏，包括Mac、Windows、iOS和Android。3.桌面应用你可以用Python的Tkinter，但这并不是最热门的选择。Java，C＃和C ++等语言似乎更受欢迎。最近，一些公司也开始使用JavaScript来开发桌面应用程序。例如，Slack的桌面应用是Electron构建的。它能让你用JavaScript构建桌面应用程序。就个人而言，如果我要开发桌面应用，我会选择使用JavaScript。它能让你重新使用网络版本的一些代码。两个关键问题1.Python 3还是Python 2我会推荐Python 3，因为它更新而且更受欢迎。2.后端代码与前端代码的区别假设你想开发类似Instagram的产品，那么你需要为想要支持类型的设备创建前端代码。你可能会用到：面向iOS端的Swift面向Android的Java面向Web浏览器的JavaScript每组代码将在每种类型的设备上运行。这类代码将决定应用的布局样式，点击按键的样式等。但是，您还需要存储用户信息和照片的功能。你要将它们存储在服务器上，而不仅仅存储在用户的设备上，以便每个用户的关注者都可以查看其照片。这时需要用到后端代码/服务器端代码。你需要编写后端代码来执行以下操作：记录关注情况压缩照片，从而不占用太多存储空间在发现功能中向每个用户推荐照片和新帐户这是后端代码和前端代码之间的区别。顺便说一下，Python不是编写后端代码的唯一选择，还有基于JavaScript的Node.js等选择。via - What exactly can you do with Python? Here are Python's 3 main applications.