2015 沪港 Hackathon

Thumbnail

我想参加黑客马拉松很久了,去年就观战过 2014 沪港黑客马拉松。 但苦于需要连续两天时间,一直没有下定决心参加。 上周末本来安排了两天的团队会议,后来临时取消, 给了我充足的时间。于是我在 27 号周五下午,报名参加了 27 号晚上开始的 2015 沪港 Hackathon。 独自作战的我,在现场寻觅了几个小伙伴组了一个队伍,其中有 小草 / tevin / 女王 / Doris / n1k0。 小草负责树莓派服务端,tevin 负责传感器取数据,我……负责前端游戏逻辑,哈哈哈,我已经三年没有写前端代码了,为了团队职责分工,只能赶鸭子上架了。 ...

2015-04-04 · alswl

读《遇见未知的自己》

Thumbnail

「遇到未知的自己」这本书讲的是如何来认识自己,理解自己的情绪,和自己内心沟通。 豆瓣链接 / Kindle 版本购买链接 下面我写的倒不是什么读后感,而是我自己去解决自己焦虑和压力的一个探寻过程,希望对你有帮助。 不完美 最近一年来,我生活和工作状态持续处于亚健康状态。表现出来的状况是:工作上对产出的成绩不满意, 对自己不够自信,追寻的目标(创业)变得模糊和不可量化;生活受到影响,开始陷入到哪里去的困惑。 很久没有兴奋的迎着早晨第一缕阳光蹦着下楼梯,人变得焦虑和烦躁。 ...

2015-03-14 · alswl

2014 惑

上周刚做完了自己的 2014 工作 Review,其中最大的挑战就是工作职能的变化: 由一个开发工程师变成一个团队的 Leader。 3 月份开始带领功能线小组,11 月份带性能线小组,将近一年的时间, 业绩结果只能用四个字来描述 不尽人意 从小的坏毛病:延迟、思考浅薄、计划能力差、犹豫不决被一一放大, 给管理团队带来很大的问题。 同时一个更大的问题出现了,曾经我将目标设定为成为一个优秀的产品工程师, 现在我已经站在这个位置上,下一步的目标(创业)离我还太远,导致驱动力出现了问题。 ...

2015-01-25 · alswl

《项目管理修炼之道》笔记

Thumbnail

随着团队规模的变大,成员之间合作的模式逐渐由单打独斗变成协作开发。 这时候会遇到很多意想不到的问题,项目管理的重要性也就显现出来了。 项目管理修炼之道 是一本讲技术类项目管理方法和实践的书。 从业者可以从这本书获得了有益的指导。 我在 Kindle 上面翻了好几遍,感觉受益匪浅,就把读书笔记拿出来供大家参考。 内容 核心内容是项目管理的生命周期和每个阶段的交付物: 项目章程 日程规划 开发(控制节奏) 结束项目,项目回顾 其他内容: 如何和投资者沟通 管理会议 控制项目节奏 关键字 项目定义:一个独特的任务或是系统化的流程,其目的是创建新的产品或服务, 产品和服务交付完成标志着项目的结束。项目都有风险,并且受制于有限的资源。 关键(章程) 驱动因素:功能集合、发布时间、缺陷等级,只能有一个 约束:环境、流程、人力资源、预算等,决定了规模 浮动因素 规划:带有项目发布条件的项目计划 日程安排:对工作项目的有序描述 发布条件:S.M.A.R.T.,需要一起协商 仪表盘 定性或者定量的方式,将结果公布出来 保持项目节奏的方法 快速开发 持续集成 自动冒烟测试 功能拆分和日程排期 按功能实现,而非架构 优先实现高价值功能 通过用户故事、角色和场景来定义需求 分离需求和 GUI 质量控制 复查:Code Review,结对编程 重构 项目成员的角色构成 项目经理 架构师 开发人员 测试人员 业务分析师 运维 我的问题和部分解答 Q:项目经理的职责是什么? ...

2014-08-31 · alswl

加班那点事儿

前段时间,一个好基友告诉我,他换了份工作,去了一家用户数据表现堪称吓人的创业公司去了。其中有一个细节引起了我的注意:他们在实行 996 的上班制度。即 9 点钟上班,9 点钟下班,一周工作 6 天。 同样实行这种制度的还有阿里的来往团队。当年(其实就是去年)在抢占移动端 IM 入口时候,马云都使用了红包政策,来往的工程师在高压之下,也实行 996 了制度。 我问过阿里的朋友,他们表示,整体加班情况的确比较多。我追问了一下加班效率,证实了我的一个猜想,有些个人是晚上加班没事干,尤其有些测试工程师,白天没活干,晚上活多,还经常等到 9 点之后才有事情。这个现象也许不是普遍的,但的确存在。 ...

2014-08-30 · alswl

痛、快、活

上个月回家,在亲戚家里和侄子聊天,他刚从大学毕业,在家人的帮助下面找了算是对口的工作,对工作之后的状态有一些茫然,看不到前途和未来,我问了一个问题: 你平时是怎么面对困难和挑战的? 犹豫了一会儿,他告诉我:「大部分时间都是逃避掉困难」。 这个问题反而让我自己开始思考:面对困难的时候,为什么更倾向于逃避,而不是挑战和面对? 困难和逃避 想要一点点对这个问题抽丝剥茧,要做的第一步就是,来定义「困难」和「挑战」。这两个词都意味着,面临的事情可能超出处理者当前的能力范畴。比如让一个游泳初学者去横渡长江,让一个厨师学徒工去做满汉全席,让一个幼儿去思索人生的意义,或者让一个工程师去管理一个技术团队。 ...

2014-08-11 · alswl

在 Raspberry Pi 上使用 AirPlay

Thumbnail

早在去年时候,我就发现有个叫做 Raspberry Pi 的玩意, 已经忘了是从那里得知这个东西。这个卡片大小的电路板是可以运行 Debian 的主机,提供了一个发挥自己想象的平台。13 年 南京极客行动 时候,Michael 好像还拿了一个板子参加比赛。 我对这个东西充满了兴趣,仅售 $39 的主机,小巧的机身, 可以充分发挥自己的想象力:离线下载,动作片播放器,家庭分享中心, 给侄子学习编程~想到这些可以发挥自己的创造力, 就迫不及待的要去采购并去尝试。 不过我还是理智的压抑住自己的情感,手头老是有更重要的事情要去做,实在不能再给自己多找一个精力分散的方向。 于是,我这么一压抑,就压抑了一年。 ...

2014-07-23 · alswl

读《如何高效学习》

Learn More Study Less(如何高效学习) 讲的是作者斯科特·扬如何快速学习的方法和技巧。 我在 Kindle 上面阅读了这本书,并用书中的方法学习这本书,顺便做了一些笔记。 A. 目的 学习「整体性学习」方法,从而快速学习并且将学到的知识更高效合理的利用起来。 (所谓聪明,就是指学得更快,而且信息组织非常适合完成自己的目标)。 B. 整体性学习的定义 知识并非孤立,学习任何知识(概念、定义、公式、问题、观念、理论等)都需要联系。 C. 整体性学习的策略 1. 关键元素 建立结构(某个领域内,紧密联系的知识),让其中的知识尽可能多的联系。 通用结构:感知结构(视觉、嗅觉、听觉、味觉、触觉) 关系结构(群体关系等) 基础数学结构 时间结构(@alswl 自己横向扩展想到的) 利用模型(类似于知识框架和体系以及其他存储方式) 高速公路(在不同的结构之间进行联系,激发创造力) 2. 5 个学习的步骤 获取 关键:简化、容量、速度 理解 拓展 深度拓展:知识的深度,虽花费时间但有效 横向拓展:知识的周边,有相关性的拓展,需要借助模型 纵向拓展:跨结构的知识,比喻和内在化是一种手段 纠错 应用 (@alswl 可以想到软件开发中的需求获取、需求分析、需求挖掘、测试、 开发这些对应的另外一个软件开发结构中的联系) ...

2014-04-13 · alswl

hiredis 源码学习

前段时间学习 Redis 时候,听到 hiredis 的大名,正好也在做异步的学习,就找来代码学习一下。 我几乎不太会 C,仅限于最简单的语法,完全没有在生产环境中写过, 所以先看个 Client 简单代码,下次看 Memcached 代码应该会更顺畅一些。 Hiredis 是用 C 写的 Redis 客户端,对 Redis 协议进行了简单的封装, 同时提供了同步和异步的两种 API。Hiredis 的代码位于 https://github.com/redis/hiredis。 一分钟使用入门 同步 API 的调用方法: redisContext *context = redisConnect("127.0.0.1", 6379); reply = redisCommand(context, "SET foo %s", value); printf("PING: %s\n", reply->str); freeReplyObject(reply) redisFree(context); Redis ae 异步 API 的调用方法,使用 Redis 自己的 ae 事件库, 至于为什么 Redis 没有使用 libevent 或者 libev,可以参考 Reason, 中文翻译: ...

2014-03-30 · alswl

Java 运行参数调整

JVM 在线上运行的时候,可以调整一些运行参数,查看参数帮助如下: 运行 java -h 可以看到 Java 运行可调整的参数。 运行 java -X 可以查看 Java 支持的额外参数。 注意一些参数的默认开启在 JDK6 和 JDK7 之间会有差异,甚至在 JDK7 的不同 update 也会有差异,运行 java -XX:+PrintFlagsFinal 查看默认的参数配置。 参考: Java HotSpot VM Options The most complete list of -XX options for Java JVM Tuning JVM Garbage Collection for Production Deployments JVM -XX: 参数介绍 以下是一些经验调整: -d64 # 运行在 64 位数据模式下 -server # 选择 server VM -Xms1024m # 初始堆大小,直接固定到 Xmx -Xmx1024m # 最大堆大小,根据服务器性能和请求量调整,太大了会导致 GC 时间太长 -XX:+DoEscapeAnalysis: # 支持逃逸分析(将局部对象实例存储在栈上) # http://www.iteye.com/topic/473355 -XX:+UseTLAB # Use thread-local object allocation # 使用本地线程实例存储,可以减少堆共享锁的竞争 -XX:-RelaxAccessControlCheck # Relax the access control checks in the verifier # JDK7 默认不开启 -XX:+AggressiveOpts # Enable aggressive optimizations - see arguments.cpp # 启用最新 JVM 调优成果 -XX:+UseBiasedLocking # Enable biased locking in JVM # 偏向锁(建议去了解一下轻量级锁和偏向锁) # 优化单线程程序下面锁资源速度,不适合多线程(所以到底 +/- 我存疑) # http://www.iteye.com/topic/518066 -XX:+UseFastAccessorMethods # Use fast method entry code for accessor methods # 优化 get/set 方法 -XX:ThreadStackSize # Thread Stack Size (in Kbytes) # 经验值 4096 -XX:+UseLargePages # Use large page memory # 大内存分页 -XX:+UseStringCache # Enables caching of commonly allocated strings. # 启用缓存常用的字符串 -XX:+UseCompressedStrings: Use a byte[] for Strings which can be represented as pure ASCII. (Introduced in Java 6 Update 21 Performance Release) # 降低内存消耗,浪费一点 CPU # http://stackoverflow.com/questions/8833385/is-support-for-compressed-strings-being-dropped -XX:+OptimizeStringConcat: Optimize String concatenation operations where possible. (Introduced in Java 6 Update 20) # 优化字符串连接,对模板渲染操作应该会很有意义 -XX:MaxPermSize # Maximum size of permanent generation (in bytes) # 经验值 128m

2014-03-22 · alswl