Why·Liam·Blog

人生若如初見

前天做了一个关于 毕业的网站 ,偶然翻到的文章,故做分享

毕业,有人看着是伤感的两个字,唱着老狼的歌想念《同桌的你》。且把祝福带走,装进行囊,千里之外。

时钟不会停留在十点十分,毕业是一种伤逝。像爱情一样去挽留,其实做的只有弥补,最后还是迎来伤感的结局,也很动人,只是毕业的时候,我们都知道,有这样一种泪,是不懂得珍惜的。

昏黄夜灯,浮生入梦,毕业的确令人隐隐作痛。且给书本找一个新家,阔别仰望也久的书台,回家?那是温馨的港湾。只是主人学会飘遥,不知道它们有无陌生的忧愁?因为清醒,所以难舍难分,期盼夏天再也不会回来吧!

阅读全文 »

By Sahand Saba 翻译 Liam

自从我开始学习 python,我决定记录下一系列经常用的技巧。当我看到一些代码(例如,在 Overflow,或者一些开源的应用等等)我觉得很酷,我觉得我们应该不知道这一些用法。当我理解这些代码的时候,我会测试这些代码,然后加入这个列表中。下面发表的是一部分整理后的列表。假如你是一个很专业的 Python 工程师,即使你已经知道大部分用法,你还是可以找到一些你不知道的。假如你是 C, C++, Java 工程师,并且最近想学 Python,或者最近想拓展新的编程方式,那么你将会发现有一部分真的很有用,就想我一样。每一个技巧和语言的特性都将会通过例子演示,而没有解释。同时,我将会尽量使例子简洁明了,可能有一些仍然讲的不清楚,因为专业水平不够。如果有一些例子看完之后还是不能明白的话,你可以利用例子的标题去 Google 找到更多有用的信息。例子大致的按难度排序,一些比较简单和常见的功能和技巧会放在前面。内容的目录我将会放在最后

Roy Keyes 提了一个非常好的建议,把这个文章放在 github 上,让人们通过提 PR 方式来增加内容。这个仓库是 https://github.com/sahands/python-by-exampl。欢迎大家 fork,提 pull requests。我会更新这篇文章的,当有仓库跟新的时候。

这篇文章在 Reddit, Hacker News 有很多的讨论, 在那些评论中,很多读者提了很多建议和修改。我已经更新了我的列表,根据改进的建议,并且增加了一些新的条目。我现在确实有这样的一瞬间。”Cool! I didn’t know you could do that!” 另外,我不太清楚 itertools.chain.from_iterabledictionary comprehensions. 同时,有一些十分有趣的讨论关于是否有一些技术导致难以调试代码的可能性 就我而言,下面的条目本质上是没有很难调试的。但是我可以断定,如果代码写的太长,将会增加调试的难度,以及更加难理解和维护。根据你的判断,如果你的代码足够的简洁,那是有那好维护和阅读。举例来说,我觉得列表推导式可以很好阅读,而且易于调试和维护。但是如果列表推导式在另一个列表推导式中来传递给映射,然后到 itertools.chain?可能不是好主意!

阅读全文 »

2014 年 2 月 14 日是豆瓣 CODE 项目成立两周年,同日豆瓣 CODE 团队宣布 将整个框架开源。本次开源包含 CODE 框架 以及 MikotoLinguistPCodeLive 等周边项目,感兴趣的工程师可以在这个基础上继续开发。
下面,豆瓣 CODE 的工程师们将在 InfoQ 上分享一些 CODE 背后的故事。

2012 年初,已经对 SVN 和 Mercurial 无力吐槽的豆瓣工程师们正面临一个艰难的决定:是往 Github 企业版迁移,还是自己研发一套代码管理系统。

CODE —— C: Community O: Original D: Developer E: Eldamar
2012 年 2 月 14 日,清风老师为豆瓣 CODE 写入了第一行代码;一周之后,一个用 Trac 改造的原型诞生了。CODE 不是一个公司项目,自始至终没有任何一个豆瓣的产品团队或工程团队为这套系统负责,但一个又一个的豆瓣工程师开始被吸引到这个项目周围,形成了一个强大的虚拟团队。
随着 Github 在国内的普及程度越来越高,越来越多的企业也开始探索自建 git 仓库之路。开源的 Gitlab 项目 开始受到部分团队的关注,但这个项目仍有较多局限性。这时,豆瓣 CODE 引起了包括淘宝在内不少同行的兴趣,并开始沟通将 CODE 开源的可能性。
作为一个面向内部设计的系统,CODE 的源代码中混杂了大量豆瓣专有系统的依赖,如果要开源出来需耗费不少的工作量,之前 清风在 C2D2 的分享段念在QCon上海2013大会的分享 中都提到这一点:
CODE 在豆瓣内部是运行到 DAE 上面的,一些基础设施的维护都靠豆瓣平台组的工程师,如果要开源的话需要把豆瓣内部的依赖移除。另外豆瓣内部也有一套 Web 框架,CODE 用的就是这套内部框架,如果 CODE 开源,这套框架也需要一并开源。
虽然有种种麻烦,但豆瓣的工程师们仍然将大量工作之外的时间热情的投入到将 CODE 开源的工作当中。一开始,CODE 团队零星的 将一些底层的基础库开源,包括 Python 版本的 git HTTP 实现 GPack,git SSH 实现 Maria,Pygit2 的 wrapper Ellen 等;2014 年 2 月 14 日,豆瓣 CODE 宣布 将框架代码和周边项目代码全部公开!此时的 CODE 已经聚集了 85 位 committer 为其贡献代码,并且已经托管了 1916 个项目,其中大部分都是类似 CODE 这样的、由工程师自主发起的非官方项目。

CODE 在豆瓣内部对应一个 DAE 应用,其实就是一个 Web 项目。CODE 目前最核心的工作是对 git 仓库的读写,另外就是 code review。
CODE 发展两年来一直在扩展自己的定位,从单纯的代码管理系统发展为可以将设计、产品都拉进来一同协作的平台,周边衍生出大量的附加项目,从 image diff 到类 Dropbox 的文件同步工具,可谓五花八门。所有这些功能都围绕一个核心:对 git 仓库的读写。
XTao:目前 CODE 支持 http 和 ssh 协议进行 clone 和 push 操作,http 目前我们使用的是 git_http_backend 这个开源项目,我们自己也用 Python 实现了一个 Grack(原项目基于 Ruby),即 GPack,目前还没有大规模的使用。ssh 我们用的是 CMGS 同学写的 Maria
CODE 的 Web 版 git 操作的变化很大,一开始直接使用 subprocess 调用 shell 的 git 命令,然后解析命令返回的文本,python 对象化,然后供 Web 使用,后来因为性能问题开始使用 Pygit2,从此就是 git 命令和 Pygit2 混用,一直到现在。我们的这个库也开源了:Ellen
Pygit2 是 libgit2 一个 Python 接口,在使用 Pygit2 和 libgit2 的过程中,也经常当小白鼠,也给 Pygit2 和 libgit2 提过一些 Pull Request。对 Pygit2 我们改动比较大,因为 CODE 使用模式问题,我们有一个自己的 fork 版本,跟上游的主要区别有:

  1. 把 libgit2 内嵌到 Pygit2 里面,做了静态编译,不再依赖系统的 libgit2 版本,方便升级 Pygit2。
  2. 一直采用最新版本的 libgit2,Pygit2 本身比较稳定,不能及时的使用 libgit2 最新的方法。
  3. 为了性能写了一些特殊的方法。
    总体来说 libgit2 实现了核心的 git 接口,并不是很成熟,但是对于 Web 应用来说已经够用了。
    以上的部分是与 git 操作紧密结合的部分。我们在 Web 界面也做了一些核心功能,主要包括 Pull Request 的实现,代码 diff 和 review 功能的实现,以及 Issue 和 Gist 系统。这里说一下代码 diff 和 review 功能,在实现的时候,一方面是用了 git 操作接口的 API,一方面是对于代码片段做了处理,在前端页面上支持 diff 的按行展开评论等一些功能。
    同时,CODE 团队也在尝试分布式 git 方案,目前也已经有个原型了。

豆瓣曾经历过大桌子开会、强制大家做 review 的岁月,而 CODE 颠覆了这一情况。CODE 团队将 code review 视为 CODE 的第二个核心功能,认为促进工程师之间的沟通是 CODE 最大的成就之一。
CODE 为每个项目设置了三个角色,分为 owner(有全部权限)、committer(有 push 和 merge 权限)、member。review 机制根据项目的不同设置了不同的规则,如产品线级别的、需要对外发布的项目,基础库等项目都需要经过严格的 review,如 东西团队 对 review 设置了如下规则:

阅读全文 »

一个关于 1024 的小克隆版,基于 Saming 的 2048。制作只是为了好玩。你可以在这里 玩它。感谢 rayhaanj, Mechazawa, grant, remram44 and ghoullier 等的支持。

附上链接:

2048版

4096求虐版

基本的思想就是递归生成,

阅读全文 »

禅寂,那是一种淡泊明志、宁静致远的境界,一种被古代儒士所推崇的佛教哲学,教人修身、养性、无我的哲理,这理念运用到设计中,就是简洁并让人安静的设计美学。

请输入图片描述

禅的境界

大道至简,教给人们解惑的道理,都是一些很简单的哲理故事;大象无形,真正有内涵的事物,它的气质是从内散发出来的,而不是刻意靠外表去装饰的。同理,真正好的设计是让你感觉不到设计。无印良品 (Muji) 就是一个很极致简洁的品牌,无印在日文中是没有花纹的意思,日本店名」无印」意为无品牌。然而靠着清一色无华简朴,及还原商品本质的讲究手法,低调的无印良品反而成为闻名世界的」No Brand」(无品牌)。其实有牌无牌已经不重要,虽然极力淡化品牌意识,但它遵循统一设计理念所生产出来的产品无不诠释着「无印良品」的品牌形象,它所倡导的自然、简约、质朴的生活方式也大受品位人士推崇。

请输入图片描述

阅读全文 »

  1. 方正宋刻本秀楷简体

  1. 康熙字典体

  1. 欧体楷书
阅读全文 »

爱而不能,恨而不敢的,都是废物,他们永远都以口头的恨、行动的怯懦、内心的自卑来证明你的优越和高不可及。打击、伤害废物的方式,要么是鄙视他、无视他、不屑一顾,要么是以高高在上的姿态宽容他、抚慰他。

她爱你的时候是真的爱你,可是她不爱你的时候也是真的不爱你了,她爱你的时候没有办法假装不爱你;同样的,她不爱你的时候也没有办法假装爱你。

当一个人不爱你要离开你,你要问自己还爱不爱他,如果你也不爱他了,千万别为了可怜的自尊而不肯离开;如果你还爱他,你应该会希望他过得幸福快乐,希望他跟真正爱的人在一起,绝不会阻止,你要是阻止他得到真正的幸福,就表示你已经不爱他了,而如果你不爱他,你又有什么资格指责他变心呢?爱不是占有,你喜欢月亮,不可能把月亮拿下来放在脸盆里,但月亮的光芒仍可照进你的房间。

换句话说,你爱一个人,也可以用另一种方式拥有,让爱人成为生命里的永恒回忆。

The Why·Liam·Blog by WhyLiam is licensed under a Creative Commons BY-NC-ND 4.0 International License.

阅读全文 »

本文主要面对前端初级新手,是我从事前端项目外包这一年多时间里积累的经验,提供一系列的工具和资料来帮助新手更高效的从事前端开发。但是由于本人水平有限,所以只能写一些初级的方法和工具。没有添加诸如 grunt 这类的更高级的工具,因为我对这块目前还没有很多实战经验。

此外,关于移动端的调试开发,也很少做过,所以本文没有很多相关信息,有待进一步补充。

这里说的是我一开始前端相关工作时的最原始的工作流程,有部分可能你也在经历,有部分你经历过去了。

首先拿到设计稿或者是与客户沟通好设计需求。然后开始新建文件夹,将设计稿放好,新建

index.htmlstyle.css 等等必要的资源文件。通常先找找之前的项目,复制类似的文件。然后开始按照设计稿写 HTML 结构和 CSS 代码,并且在需要图片的地方,切换到 PhotoShop 去切图。写完一次,摁下保存,然后切换到浏览器,摁下 F5 或者是 Ctrl+F5 强刷,看到效果是否满意。如果不满意,摁下 F12 呼出控制台,查看对应的 HTML 结构,在调试工具中修改参数值达到设计稿的需求,然后切换回去继续在编辑器中编写代码,反复到完成为止。

阅读全文 »

一个人住第三年。对我而言,独居的妙处,两个字来概括,清净。

不必没话找话,不必强颜欢笑,在这个屋子里,只有我一个人,我对自己苛刻,对自己宽容,对自己生硬或温柔,都是我的自由。

作为吃货,规律的饮食很容易给我带来幸福感。晚上把一把黄豆泡好,早上起来先趿着鞋到厨房,把泡好的黄豆放到豆浆机里,加一小把花生,开始磨豆浆,顺手把饮水机打开,洗漱完了后喝一大杯温水,梳头,扫地,整理床铺,豆浆有时候配面包吃,有时候自己做鸡蛋饼,面糊里打两个鸡蛋,撒点儿盐和葱花,摊出来很香,有时候在面糊里加一点老干妈的香辣菜,做出来的饼就是香辣口味的,很好吃。也有的时候早饭吃粥,冬天会在白粥里加少许姜同熬,暖胃,再滴一滴麻油搅开,连香气都是暖的。

我午饭通常吃得简单,因为吃肉不多,所以一般是做素菜,番茄炒鸡蛋,番茄炒西葫芦,炒茄泥,炒土豆丝,手撕包菜,麻辣豆腐……都是快手菜,素菜的好处是中午吃不完晚上吃粥还可以继续吃。

阅读全文 »

pcDuino 是一种高性能,高性价比的迷你 PC 的平台,能够运行 PC 操作系统,如 Ubuntu 和 Android 的 ICS 等。它可以通过内置 HDMI 接口输出视频到电视或显示器屏幕。pcDuino 专门针对开源社区快速增长的需求,即希望有一个平台可以运行完整的 PC 操作系统,容易使用的工具链和兼容流行的 Arduino 开放的生态系统,如 Arduino shield 和开源项目等。就是如下这一只,板子其实很小,兼容 Arduino 接口:

其实本人也不是很熟悉 LINUX 环境,不过对于嵌入式 ARM 上跑嵌入式系统很感兴趣,所以打算正好乘这个机会恶补一下,本来看中的是 UK 学生设计的那款树莓派,不过看到 PcDuino 更优异的性能还是毅然选择了它。刚入手就遇到了问题,没有显示器,怎么操作 PcDuino 呢? 卖家告诉我 VNC,可是试了很多遍总是 connection refused,断定 VNC 服务压根就没有启动。于是在 LINUX 环境下 ssh 连接:

输入密码(默认 ubuntu)@ubuntu> 如上,pcDuino 的终端就出来了

阅读全文 »
0%