2017-05-22
叮当:一个开源的中文智能音箱项目

叮当:一个开源的中文智能音箱项目

这个项目其实来源于我生活中的一个需求:我每天晚上都会去厨房做一个面包当明天的早餐,当我把用料按顺序准备好放进面包机时,我需要准确预约到明天早上我吃早餐的时间。然而,几乎每次在这个时候我都没有带手机在身边,而是都放在客厅里充电,这时只能跑去客厅看时间。虽然厨房到客厅只有几步之遥,但自己又是懒癌患者,每天都要这么来回奔波就觉得很不方便。要解决这个问题当然有很多种方法,比如直接买个小时钟放在厨房。不过我更希望“连看都不用看”,直接有人告诉我时间。所以,我需要一个像 Amazon Echo 那样的智能音箱。

然而,不论是 Amazon Echo 、Google Home 还是微软 Cortana 音箱,在国内的使用都是个问题。虽然国内也有类似的智能音箱产品,但我没有用过这些产品,不知道可定制性如何。比如,如果我需要开发个功能让它告诉我某种面包的配方是什么,这些产品就不一定能做到了。考虑再三,我决定自己动手写一个。整个项目用了差不多三个星期的业余零碎时间。

先放上项目主页:http://dingdang.hahack.com

下面分享一下我在开发这个项目过程中的心得。

Read More

2015-10-19
学习 React Native for Android:React 基础

学习 React Native for Android:React 基础

React Native 主张用 React 的开发思维来编写 UI 层。因此在学习 React-Native 之前,了解基本的 React 的语法和存在的坑会对今后 React Native 的开发大有裨益。

本文将从一个简单的例子开始,逐步完善我们的程序。在这个过程中,我们将一步步探讨如何用 React 来开发网页应用,以及需要注意的陷阱。与其他教程不同,本文将采用类似 Zed A. Shaw《Learn Code the Hard Way》 系列的案例驱动的形式,从例子开始着手。我相信,掌握一门新技术最好的方法就是自己动手。因此,我并不打算面面俱到的列举所有关于 React 的内容,而更倾向于担任一个引路人的角色:把读者们带到 React 花园的门前,然后让读者们在 React 花园里来一场自助游。为了让这个旅途更加有收获,我会在每节内容的最后安排几个练习,并在最后分享一些值得深入学习的文章和教程。

Read More

2015-10-17
学习 React Native for Android:环境搭建

学习 React Native for Android:环境搭建

Facebook 于 2015 年 9 月 15 日发布了 React Native for Android 。React Native 让开发者使用 JavaScript 和 React 编写应用,利用相同的核心代码就可以创建 Web,iOS 和 Android 平台的原生应用。注意这里的 核心 两个词,它指的是那些底层的、与界面无关的逻辑。与 ionic / PhoneGap 这类 Web App 开发框架不同,React Native 主张使用 React 的开发方式来开发 Native 应用,因为在现阶段 Web App 还无法达到 Native App 的体验。所以,React Native 并不强调 write Once, run everywhere ,而是 learn once, write everywhere :上层使用 JS 和 React 开发不同平台的 UI,下层则可以编写能够复用的核心代码,从而大幅提高开发效率。

关于 React Native 的好处,唐巧在 《谈谈 React Native》 里已经有比较深刻的总结,本文不再赘述。本文将作为一个 React Native for Android 学习系列的一个开篇,从零开始学习 React Native 。我尽量不偷懒,保证文章及时更新。

Read More

2015-10-08
jQuery-based Local Search Engine for Hexo

jQuery-based Local Search Engine for Hexo

早在我最初从 Ruhoh 迁移博客到 Hexo 时,我就有动手写一个本地的搜索引擎的想法。比起使用第三方服务的站内搜索,本地搜索引擎有几个好处:

  1. 更可靠。不用担心由于某些显而易见的原因导致第三方服务不可访问。
  2. 速度更快。不管是 Google 还是 Swiftype ,第三方搜索服务的加载速度总是比较慢,影响浏览体验。
  3. 定制性更强。由于是自己写的插件,检索的具体策略、界面样式都可以自己定义,满足极客们 Bigger than Bigger 的需求。

这个想法起初是受了 Christian Fei 的 Simple Jekyll Search 启发。在了解了它的原理后,我认为在 Hexo 上实现一个本地搜索引擎并不复杂。大致的思路是:

  • 写一个 generator ,生成站点所有文章的索引数据;
  • 当在搜索框中输入关键词时,触发 Javascript 的特定函数,在这个索引数据里头检索包含该关键词的文章;
  • 利用 jQuery 在页面中动态插入检索结果。
Read More

2015-06-01
Speed Up the Rendering Process of hexo 3

Speed Up the Rendering Process of hexo 3

Hexo 3 自从放出更新到现在已经有很长一段时间了,相信很多人跟我一样都经历了一个非常曲折的升级过程。

第一个问题是我所编写的主题和插件全都阵亡了,这个问题在我决定升级 Hexo 之前已经被很多用户轰炸过,于是我花了两个晚上的时间对所有的主题和插件进行了大幅修改和升级。

另一个让我无比郁闷的问题是:官方虽然宣称 3.0 之后站点渲染速度更快了,但实际测试时我发现结果正好相反——全站 168 篇文章,在 Hexo 2.8.3 环境中渲染只需 3~4 秒时间,而更新到 Hexo 3.0 之后,网站的渲染居然花了一个多钟!

为了找出导致这个问题的 bottleneck ,我通过二分的手段很快定位出了问题文章 《ArchLinux安装配置OpenGL》,这篇文章乍一看没啥特别之处,但问题就出在文中这段长长的目录结构图:

Read More

© 2021 wzpan