1. 配置 Node.js 开发环境——使用 Atom

    Node.js 的开发环境选择很多,比如 WebStrom/Visual Studio Code/Atom/HBuilder,还有万能的 Vim/Emacs 等等。 根据我个人的试用,WebStorm 应该是配置起来最省心,用起来最顺手的选择,而且有 Android Studio 和 PyCharm 的使用经验上手毫无障碍。但一来 WebStorm 价格不菲,二来最近刚刚被 Atom 圈粉,而 Visual Studio Code 和 Atom 又是这些编辑器里面与 Node.js 渊源最深的,所以最终决定最近在学习 Node.js 以及写一些练手项目时以使用 Atom 为主,Vim 为辅。

    2016/04/18 Node.js

  2. 如何有效使用 GitHub

    这是一个知乎问题下我的回答,原帖传送门。

    2016/04/07 GitHub

  3. 不藏拙的人生

    按我以往写博客平白直述的风格来讲,这是一个「弄玄」的标题。 但最近确实一直在思考一些「玄」的问题,比如工作的方法、人生的方向以及如何更有效地思考。 脑拙? 我偶尔会跟女朋友开玩笑讲说我有一颗单核的大脑——思考一个问题可以让我专注,思考两个问题会让我焦虑,思考一堆问题将让我凌乱。后来悲哀地发现,这好像不是玩笑。 很显然思考上面那么多问题会让我凌乱。 我也曾愤愤地怨念上天不公,没有给我一颗像牛人们那样毫不费力地处理多个复杂问题的大脑。后来学了多线程的原理,我释然了,即便给我一颗多核的大脑,如果毫无规则地丢给它一堆问题,估计也是死锁阻塞在那里了。 为今之计,只能自己在生活里打怪升级,逐渐优化进线程调度算法,做好任务划分和优先级排序,即使我是单核,也让它跑出高频高效来。 手拙? 我知道我自己有个毛病,那就是对自己没做过或者不擅长的事情很羞于在人前展示,怕被嘲笑。 比如我不会削苹果,不像我姐姐们心灵手巧能把一个苹果削到底不断皮,于是开始时我是能不吃苹果就不吃苹果,后来有人鼓吹说苹果不削皮吃更好,然后我不管它是否有科学依据就欣欣然接受了。 再比如我从小不会踢毽子,然后后来有几次参加运动会等活动里,大家围成一圈就踢起毽子来,我吃惊地发现男女老少玩这个几乎都是一把好手,好多人还会各种花式,而我一般就是尽量找个借口不参与,不然一般毽子飞到我这里的时候就是一个回合结束的时候,不管有没有人埋怨,这会让我感到沮丧。 这个毛病会妨碍我去扩展我的世界,学习和见识新的东西,我一直都知道,但是这种可恶的羞耻感一直伴随着我。 可其实我隐约是知道解决方法的。 比如我一直没打过羽毛球,但进了现在的公司之后,我决定学会这样运动技能作为长期锻炼项目,于是开始去蹭同事们的场子,不管各种接不到球的尴尬,不理会出洋相时大伙的哄笑声,在网上找一些入门教程学习……就这样坚持了下来,虽然现在也还是很菜,但好歹跟一般业余选手也能打得起来,没什么嘲笑的声音了。 只是,这样的案例在我的生活里是少数,多数情况下,我没有实现对自己的突破,不会的东西可能就一直不会了下去。 不藏拙! 以上的两「拙」困扰了我多年,为了减小其负面影响,我也总结了一些对我自己有效的步骤。 第一步,接受自己。 接受自己的不完美,接受自己不擅长很多东西的事实。每个人的成长环境或经历都不一样,别人擅长一些你不会的事情这很正常,这并不是你的错。 如果你对它并不感兴趣,那就坦然处之,告诉大家你不会,静静地旁观就好。放弃那种「如果大家不知道,就不会因为我不会这个觉得我笨」的想法,不要太在意别人的眼光(大家都很忙的),你就解脱了。 当你坦荡荡,不再试图去隐藏,那这件事又如何能再给你负面影响呢?子曾经曰过,「知之为知之,不知为不知,是知也。」 也许有人会问,当大家都在玩的时候,你玩得很菜或者单独在一旁,焦点被引到你身上的时候怎么办?这种时候,自嘲是利器,当你自己都开始贬低自己的时候,别人的善意或恶意的调侃注定收不到预期的效果,基本也就不会出口了。 而如果你对它感兴趣,想要学会它,那么接第二步。 第二步,一切皆有套路。 百度百科里对「套路」的解释是原指编成套的武术动作,现泛指成套的技巧、程式、方法等。 我们生活里的大部分事情,都有「套路」可循。 比如程序设计里的设计模式,就是编程的套路,用得好可以让程序结构更加优雅;比如遇到一个复杂的问题,使用特定的方法将其定量分析、拆分、排序后逐一解决,这是解决问题的套路,当你的大脑习惯这样的思维方式后你的解决力一定有所提升。 那我们要解决自己的某一「拙」,只需简单两步: 找对套路。 一个好教练,一本好书,一套好的视频教程,都是对的套路存在的地方。 熟能生巧。 要成为一个领域的高端玩家不容易,这可能需要非常的努力加上一定的天赋;但成为一名普通玩家并不难,找对套路之后大量的练习就可以,不要害怕学不会,毕竟「以大多数人的努力程度之低,根本轮不到拼天赋」,那么多人都能做到,你当然也能。

    2016/03/14 Blog

  4. 从 am start 的 --user 参数说到 Android 多用户

    本文的讨论围绕一个 java.lang.SecurityException 展开,异常的关键词是权限 android.permission.INTERACT_ACROSS_USERS_FULL。

    2016/02/10 Android

  5. 将 GitHub Pages 从 Redcarpet 切换到 kramdown

    GitHub 前不久发布了 New Features 公告,GitHub Pages now faster and simpler with Jekyll 3.0,宣布从 2016 年 5 月 1 日起,GitHub Pages 将只支持 kramdown 作为唯一的 Markdown 引擎。 这其实也算得一件好事,之前支持 Rediscount、Redcarpet 和 kramdown 等多种引擎,而它们相互之间和与标准 Markdown 之间又有一些细微却也无法忽视的差异,这让需要在多个平台使用 Markdown 的我头疼不已,早就希望 GitHub Pages 能与 GitHub 的 Issues 和 comments 等地方统一语法,本次更新虽然做不到这一点,但也算是迈出了不小的一步。

    2016/02/04 Markdown

  6. Build Zeal for Mac OS X

    我承认,初次遇到 Dash 的时候,我是惊艳的。 怎么会有如此方便的文档查看工具?顿时觉得被各种加载奇慢的 API 文档坑苦了好多年!于是很开心地下载了我常用的 API 文档,并且找到了它在 Windows 下的替代品 Zeal 推荐给朋友们,感觉世界从此美好了许多。

    2016/01/16 Mac

  7. Android 系统缓存扫描与清理方法分析

    本文记录的是我对 Android 的「系统缓存」及其扫描和清理方法的探索与理解。 本文讲述内容的完整代码实例见 https://github.com/mzlogin/CleanExpert。

    2016/01/14 Android

  8. Ubuntu 使用笔记

    使用 Ubuntu 过程中遇到的问题及解决方案。

    2016/01/12 Linux