中国传统

钱穆先生 是我最喜欢的近代儒士,今天读了先生的《中国文化精神》,虽然此书成与上世纪80年代,有其自身的局限性,但是其中一些论点实在令人发省,其中有个故事: 百年前广东有一华侨,名丁龙,居纽约。林肯总统时代,一将军退役后一人独居。雇一男仆,治浬家务。但此将军性好漫骂,仆人辄不终约而去。丁龙亦曾为其家仆,亦以遭骂辞去。后此将军家遭火灾,独居极狼狈。丁龙闻之,去其家,愿复充仆役,谓其家乡有古圣人孔子,曾教人以恕道,曰:“己所不欲,勿施于人。”今将军遭火灾,独居,余曾为将军仆,闻讯不忍,愿请复役。此将军大叹赏,…

Read More

AES 文件加密

在之前的一份工作中有型参与设计了一款由 React.JS + Electron.JS + Golang 开发的跨平台桌面应用,由于软件需求的特殊性,对数据安全由特殊的需求,虽然在最终实现的方式是使用 GPG 非对称加密的方式对数据加密,但是对于如何用对称加密的方式保证数据的安全也做了一些研究,而最近才有时间用 Golang 实现一个简单 golang library。 上文提到的桌面应用的设计可以看我之前写的一篇博客 缅甸大选中的安全桌面应用设计 加密与解密 通常我们使用 AES 进行数据加密的时候,使用一个 key 来加密一整个明文后得到密文。一般情况下如果我们不知道 key(密钥)是无法解除明文的,但是随着计算机的技术的发展以及 GPU 和 CPU…

Read More

绿茶汤圆

最近无意间看到一个菜谱,说云南人喜用新鲜的普洱茶叶煮制汤圆。又恰巧昨天是元宵节,于是起身去超市买了原材料: 糯米粉 1 包 粘米粉 1 包 黄糖 1 包 白芝麻 1 包 黑芝麻 1 包 市场上没有买到新鲜茶叶,只能以家里的干茶叶代替。做法和普通的汤圆大同小异,只是将汤圆放入茶水中煮熟,最后放入少许白芝麻和黑芝麻。 成品 其汤色泽艳丽,其味沁香怡人,而后苦尽甘来 注: 粘米粉其实就是大米粉,加入大米粉主要为了控制汤圆的粘度,口感软硬适中。…

Read More

The Year Of 2016

时间真的转眼即逝,眨眼间已经 2017 年了,相比去年而言今年也变化颇多,去年年的时候自己也做过年度总结,大体就是对一年的一个概述,今年希望总结过往的同时也希冀一下来年。 工作 自今年 6 月离开了工作 3 年多的 Wiredcraft 加入现在的 Udacity 也已经有半年多了,当初的离开是想学习一下大公司的先进经验,给自己的履历增加一点不一样的色彩。但是回想起来,也不确定脚步是否在慢慢的向这个目标靠拢。不过倒是完成了一项许多年的梦想,去美国硅谷的科技公司工作,虽然是短短的一个星期,确也是一种不一样的体验。至于此外的其他收获也是有的,比如: 更严格的代码规范,web accessibility 在以前我是从来没有考虑过的事情; 更多团队间的合作; 自我管理以及自我表现; 还有就是这半年来写的…

Read More

响应式设计中的 Break Point

由于移动设备(手机,平板电脑等)的流行,越来越多的网站开始使用响应式设计来设计网站。其核心归结为一句话就是,在不同设备上自动适配不同的内容(如下图所示)。而我们为了让网站样式能够支持响应式设计,其中最关键的因素就是 CSS 中的 media queries,media queries 允许我们定义在不同内容和尺寸的设备上的样式。 如何使用 Media Queries 上面我们说到 media queries 可以帮助我们定义不同尺寸设备上的内容显示,那么我们只需要在我们现有的样式中增加针对特定内容在特定设备或者尺寸的样式即可,例如: div.container { width: 100%; } @media screen only and (min-width:…

Read More

font-size 的常用长度单位

font-size 是网页开发的过程中 CSS 语言针对字体的一个属性,通常我们在设计一个网页时会使用不同的字体大小,可以方便对应 html 中的不同标签,我们一般作为 Heading 在整个项目中去不断的复用这些 Heading。像诸多设计工具一样,font-size 也有不同的单位,设计常用的单位可能有像素(px)、厘米(cm)等,而在 CSS 中 font-size 常用的单位有 rem、em、px、pt、% 这几种。那么 font-size 的不同单位都有什么不同呢? 相对长度单位 em、…

Read More

重读《中国历代政治得失》

最近一段时期异常迷恋中国古代史,常说因为对现在不满才会缅怀过去,我细想一下还是有道理的,现在社会的发展的速度早已不能同日而语,记得之前看过一篇文章,说近五十年的人类发展史比之前的人类发展总和都要快。社会的发展带来经济的增长和技术的进步,同时也随之而来的是社会的变化,整个社会的变化,以及个体的变化。《中国历代政治得失》虽和上面这些并无太大关系,却也是一个引子带我重读钱穆先生的这本书。 虽然这本书只是薄薄的一本小册子,却内容丰富值得细细评味。主要从政治、经济、军事、税收等几个角度分析中国汉、唐、宋、明、清这五个朝代的得与失。而钱穆先生最为推崇“两汉吏治”和“唐朝的中央政府”,对于其他七个朝代颇有微词,其中清朝尤为严重。大概就是以地方政府的管理来说两汉时期的中国最为精妙,以唐朝时期的中央政府的管理为最好,而其他几个朝代却也没去其糟糠取其精华,而清朝乃为异族得天下,名为统治实为控制。 我的感悟其实在于中国的古代并不是一个封建的社会,…

Read More

“星期天”为什么叫“星期天”

我经常很好奇为什么从没有称星期天为周七?为什么不叫星期七偏偏叫星期天?这“天”与“七”是相通的么? 历法通常对于一个文明社会来说是一个不可或缺的要素,我国现在通行的历法有两种,公历(阳历)和农历(阴历、黄历)。从字面上的理解便是古人通过观察太阳与地球之间的关系和月亮与地球之间的关系总结出的一套关于时间的周期表。而在我国古代是没有公历的,先人们将月亮绕地球一天的时间称之为一宿,将每月大致分为大月(30天)和小月(29天)。这其中的缺点显而易见随着时间的推移,新年并不在同一时间固定的,但是古人将二十八星宿日与二十四节气结合在一起,在不满足时候通过闰月的方式将时间补满,以达到年和四季,月合圆缺,阴阳相补。其中二十四节气是通过观察太阳与地球之间的距离总结出来的。但是即便如此在中国古代也是没有“周”的概念的,在古代每十日称之为一旬是与“周”相近的概念。…

Read More

Golang 开发跨平台SDK(iOS, Android),Part 2

    上一篇简单的介绍了下Golang Mobile的工作原理,这一篇讲介绍如何使用Golang 做一个跨平台的RSS SDK。 RSS和HTTP     RSS是基于XML标准,在互联网上被广泛采用的内容包装和投递协议,主要用来描述和同步网站内容。既然RSS是一种网络协议,那我们就需要使用Golang的http模块了。整个流程可以归结为,RSS的SDK提供一个方法去请求RSS源获得数据,然后通过callback获得数据,而这些数据最好是Android/iOS都可以直接使用的model集合。     作为一个http请求在移动端最好是在子进程中执行,通过异步回调返回给主进程或UI 进程,这其中带来的明显好处就是我们的http任务不会阻塞整个UI,用户在请求RSS源获取最新网站内容的同时依然可以继续对应用进行操作。Golang 本身并没有提供一个异步执行http的库,…

Read More

动与静

    一个平常的早晨是9点钟起床,10点钟左右出门,然后乘2号线地铁上班,江苏路下车后走路去公司。今日却有点不同了,我像往常一样路过我平日里买包子的包子铺正准备买包子,这时包子铺的老板娘问了一句:“一个肉包子和一个粉丝包子是吧?”,我愣了半响,反复思考一个问题:我的生活竟然已经按部就班到连包子铺的老板娘都知道我的习惯了。我突然感到一阵阵恐惧,不知不觉之中自己早已成为这生活中的一个木偶,一步步,一遍遍的过完每一天。这就像有一只无形的手蒙蔽了自己的感知,让自己沿着一条线一直前进,不能感知外面的世界,也不知时间的流逝。而最让自己心惊的是现在这种情境却是自己选的,我一直想要给自己的特别的人生,最后发现其实还是一个“丧尸”般的生活。     而后通常我会路过一个超市,买一盒牛奶,当我站在冰柜前发现我平日里买的一盒牛奶竟没有了,…

Read More

Golang 开发跨平台SDK(iOS, Android),Part 1

前一篇介绍了用React-Native做跨平台开发,其实Golang在1.5发布以后也是支持做移动端的跨平台开发的,Golang的移动端开发支持两种模式,一种是使用Golang开发整个应用,另外一种便是使用Golang开发common library。这两种各有优缺点,前者没有完善的UI库,如用来开发一个完整的应用需要的工作量着实有点不小,或者用来开发游戏可能也是一个不错的选择,亦或者寄望于Google可以开发出完善的UI库,至于后者想对于前者就方便多了,Google的GoMobile项目已经完善了大部分的工作,现在的缺点就是支持的数据类型还是远远不够,而且现只支持ARM架构。所以现阶段二者都还有些限制,但是作为一个跨平台的备选方案还是有其可取之处的。 How it works 在Google GoMobile的项目里Google提供了一个工具gobind,gobind可以生成对于Java和Objective-C的bindings。下面是一段Golang代码 package mypkg type Counter struct { Value int } func (c *Counter)…

Read More

React-Native Native Module In Practise

React-Native 是Facebook 开发的一套移动端跨平台开发的框架,其脱胎于 ReactJS 。React-Native允许你使用JavaScript开发移动端的应用,相对于 PhoneGap React-Native 确实带来了原生应用的性能,如果之前有写过ReactJS,用React-Native开发一个移动端应用是非常容易的。不过虽然React-Native社区一天天壮大,但是仍旧可能需要自己开发一些React-Native的原生模块。 什么是React-Native原生模块 React-Native 模块就是包含原生代码库的React-Native的模块(在Android 里是包含Java代码库,在iOS里是包含Objecive-C/Swift代码库),其工作原理是将原生代码库加载到React-Native的包管理器中,然后用JS通过React-Native的bridge调用原生库里的方法,最后返回结果。 Setup 需要安装Node.JS和NPM 需要安装Android SDK 和Android Studio https://developer.android.com…

Read More

一个简单的问题

最近一直忙于缅甸大选的投票系统,做Windows客户端给缅甸的人民用。由于种种原因我们用SQLCipher做客户端的数据库,Golang做中间的数据层。 我们的SQLCipher的Golang驱动是通过SQLCipher和SQLite驱动修改来的,中间用了很多cgo的混合编码,其中就有著名的加密库OpenSSL。 编译好的exe文件直接执行的话会报missing libeay32.dll的错误。 之前我们的做法是把编译后的libeay.ddl放到系统目录C:/windows/system32文件下,这个文件下的所有dll文件都是可以被任何应用共享的,问题自然就解决了。但是有一个问题是需要管理员确认才能将文件复制到该目录,所以我们就需要一个window installer去复制文件,其中还需要用户确认。现在我们的需求是解决这个问题,在这个项目之前我从来没有任何windows的经验,所有的经验都是以前用windows和google 来的。所以我搜索golang load dll go use static library等等,最后我才在这里找到了https://forum.qt.io/…

Read More

GPG 的工作原理

原文链接 http://www.pgpi.org/doc/pgpintro The Basics of Cryptography 当 尤利烏斯·凱撒 给他的将军们发送信息的时候,他并不信任他的信使。然后他就把信里的所有字母都向后移3位, A 替换成了字母 D ,所有的 B 替换成 E 等。只有知道 “向后移动三个位置” 的人可以解密出他的信息。这就是著名的 凯撒加密算法。 Encryption and decryption 无需经过特别处理就可以被读取和理解的数据称为纯文本数据或者明文。隐藏纯文本数据真实内容的方法称为…

Read More

拉面

在上海待了三年总有些味道是你无法忘记的,不知道什么时候就会突然的想起那股熟悉的味道,指引你去寻找它。 今天下午在看 米兰•昆德拉 的小说《不朽》,思考着阿涅丝的问题:一个人的脸其实并不一定代表自己,你喜欢的人的脸,可是那张脸下面可能并不是你,如果你从没有照过镜子的人在生活了20年以后第一次照镜子后,可能发现镜子里的人和你相像的并不一样,这个时候你不得不承认一个事实:你的脸不是你!然后就睡着了,突然间被莫名的惊醒,一看表其实才过了10分钟,却好像是睡了一宿一样。饥饿感充斥着全身,拉面,一股熟悉的感觉。好像就好像许久未见的朋友那样想念。 那起钱包,洗脸,穿衣服,不顾一切地冲出家门。熟悉的地方依然是那么熟悉,虽几个月没有去,老板娘却一眼认出我来,我只是笑着对她说:”在家里饿了,想念你们家的面了“。 就是这样的一碗拉面对我有这个致命的吸引力。…

Read More

美版kindle如何从亚马逊中国购买电子书

在学校读书的时候我对电子书充满了无限憧憬,觉得能够拥有个Kindle人生才算完整。那是年少无知,书没读多少倒是染上了浮华的毛病。 12年在实习期结束的时候,拿着最后一笔实习期薪水终于在万能的淘宝买了一个Kindle Touch,我还记得那个时候拿到Kindle时候的激动心情,那是一种在儿时拿到父亲给我买一个新玩具时候的心情。我感叹包装的精美,惊讶环保包装的设计,由衷赞叹Kindle的设计。也是第一次见到传说中的墨水显示屏。当时的我以最快的速度将Kindle连到电脑上,将我收集的电子书放到Kindle里(原谅都是盗版书,当时情况是没有那么好的电子书市场,我是一直都有购买正版实体书的。)。就是那个时候我看了大仲马的《基督山伯爵》,感叹故事的精妙,基督山的忍辱负重、卧薪尝胆的毅力,也感叹Kindle确实是一件精妙的东西,比手机的屏幕好的太多了,其带来的价值远远超过本书的价值。 后来豆瓣开通了豆瓣阅读可以通过豆瓣阅读直接推送到Kindle上,我以为我的Kindle这下要大展身手了,没想到的时候几个月后豆瓣发了公告说推送Kindle服务被关闭了。Kindle非常完美,可是唯一的遗憾是无法连接到亚马逊中国,无法从亚马逊中国购买中文书籍,我曾经在网络上搜寻无数次,问过客服无数次试图想从中发现有没有什么奇技淫巧可以让我能够从亚马逊中国购买图书,最后得到的答案是:…

Read More

How To Debug Mobile React Application

最近和朋友做了个好玩的项目颜值俱乐部,使用React做前端开发,我们的定位主要是移动端的web application,所以就需要支持响应式设计,支持移动端等等。这其中就无法避免的涉及到了如何去做好移动端的debug,在debug过程中我主要用到了下面一些工具和方法。 React Devtools 对于调试React Web Application,Facebook提供了一个官方chrome浏览器插件的debug工具,可以从Chrome Store下载,需要注意的是想要使用React Devtools需要在浏览器的window对象上绑定React对象,在代码的最上层执行window.React = require('react');就可以,然后就可以在react-devtools看到这种结构。 从上图可以看到devtool已树形列出了整改应用的Component,并且可以在右边看到每个component的state、props、component自身的方法等,对于debug来说非常有用。 Chrome Mobile Simulator Chrome 浏览器是我的最爱,因为它提供了非常完善的调试工具。…

Read More
introduce deku

introduce deku

deku 是 segment.com 公司刚刚发布的开源前端框架,语法和工作原理都和 react 极为相像。但是也有很不多不同点,比如更轻量级,但是只支持现代浏览器, 取消了class的概念。 Components 在 React 中每一个component都是一个class,你可以这样 class Button extends React.Component { render() { let {type} = this.props return <button type={type}>Hey, i…

Read More

rfs-IV

“先生,我们富余金融提供全球最优质的服务...” "先生您好,我们极速快贷公司提供24小时无间隔快速放款..." “先生,先生,我们 Speed 公司拥有全球顶尖基因工程公司 Genetic 公司的授权,安全快速,还附带感冒抗体...” 树突然发现自己每天走过的这条路似乎和平时并不一样,每天都会路过这条路的树似乎从来没有注意到旁边这些发放广告的年轻人们。他们滔滔不绝的向路人介绍着他们的公司的产品,却鲜有回应。匆匆前行的人们好像从来不会注意到旁边正在发生的任何事情,或者假装根本没有任何事情发生。 旁边穿白色衬衫的瘦小的小伙子似乎注意停下脚步的树,忙小跑着过来。树看着跑向自己的少年,想着似乎是那个叫 Speed 公司的。 “先生,我们公司 Speed 公司拥有世界最先进的基因注入技术,得到了 Genetic 公司在亚洲的唯一授权,绝对安全。” “我们 Speed…

Read More