- 博客(155)
- 收藏
- 关注
转载 协程
一直对协程(coroutine)的概念不很很懂,看了Wiki中关于Coroutine的条目心里有点而谱了,至少知道协程是什么了。 通常我们的子例程,比如我们编程语言中的常用的函数,只有一个入口点(Entry Point),那就是你调用这个函数时执行第一行代码,出口点有可能有多个,比如正常执行完最后一行代码,再比如使用return语言在任意一点退出函数。而数据的交换通过参数和返回值来实现...
2019-10-07 11:49:02
100
转载 搬家至独立博客 https://www.imzjy.com/blog/
欢迎访问https://www.imzjy.com/blog/转载于:https://www.cnblogs.com/Jerry-Chou/p/move-to-imzjy-com.html
2019-10-07 11:49:00
210
转载 从开始到结束以及我的尝试
2010年12月1日加入当时的MRC,经历过EyeTrackShop,在到2014年12月底,Sticky整个部门被裁撤,我被外包出去做一些电信器材测试的相关工作。我从头到尾经历一个公司的从无到有,再到消亡。先前我也跟自己说好,无论如何要把这个完整的过程经历下来,现在我做到了。简单记录一下,以免很快被忘记了。公司的目的只有一个,那就是盈利,如果不是奔着盈利去的那就不叫公司。刚开始去一...
2019-10-07 11:49:00
100
转载 术和器
术 最近在带几个兄弟完成互联网项目,我是中途才加入的,其实他们开始的时候已七七八八完成的差不多了,前端的小伙临时起意拍拍屁股走人了。我觉得可惜,决定尝试去带他们产出一个好的结果。项目管理这样的事,难的就是相信项目可以成,并且按照心中所设想的按部就班的完成一个个小任务。考验项目的成败的往往是心力,而不是能力。在团队遇到困难,迷茫的时候,你是否依然坚定。这个坚定来自于两方面: 首先,你相...
2019-10-07 11:48:58
81
转载 从拟物化到扁平,再到Material Design
Google I/O 2014提出Material Design,这段时间听到不少关于Material Design的解读,至此Google已经定位了自己的设计语言,我个人看来就是Android和iOS设计语言更加接近了。 说到Material Design,首先要说的是乔布斯倡导的拟物化设计(Skeuomorph),在智能手机初期,明确讲是触摸屏智能手机的初期,想让人们去接受和理解一...
2019-10-07 11:48:58
143
转载 Redis简介
Redis是一个偏重于in-memory的key-value数据库,这样讲有点儿不准确,但是很容易将Redis简单分类。更准确的讲Redis是一个数据结构的存储服务。它的value不仅仅只有string,他的value可以是下面几种:stringlistsetzset(ordered set)hash正是它有不同的数据结构,将其于其他的NoSQL数据库区别...
2019-10-07 11:48:57
119
转载 如何写一个解释器(1):编译原理
最近在看DSL的东西,对于外部DSL,写一个解释器是必不可少的。我试图归纳一下我学到的,以写一个解释器为目标,讲一下如果来实现一个可用的解释器。一个解释器通常可以分为一下几个阶段: 词法分析(Lexer) 语法分析(Parser, BNF, CFG, AST) 语义分析(AST的处理, annotated AST) 目标语言生成(stack-based) ...
2019-10-07 11:48:56
204
转载 聊聊程序的配置文件
可能是移动应用的广泛普及,为了安全性的考虑现在的移动应用大都运行在一个沙箱中,无论是有系统支持的运行时沙箱还是逻辑上的沙箱。比如现在的应用大多数只能写自己的安装目录,从而将自己的运行环境和其他应用的运行环境隔绝开来。 早些时候我写过nodejs和git的库和配置文件可以选择安装位置,比如 global, system, local等。这是一个进步,他改变了我们对配置文件存放位置的思考。...
2019-10-07 11:48:55
150
转载 理解JavaScript中的原型继承(2)
两年前在我学习JavaScript的时候我就写过两篇关于原型继承的博客:理解JavaScript中原型继承JavaScript中的原型继承这两篇博客讲的都是原型的使用,其中一篇还有我学习时的错误理解。今天看《Understanding Scopes》这让我从新思考了一下原型继承,更重要的是站在一个继承设计者的角度再看一下原型继承。在传统的面向类的继承体系中,我们有个Bes...
2019-10-07 11:48:54
72
转载 Go对OO的选择
Go摒弃了许多OO的概念,但是还是很好的继承了OO的精髓——消息传递。我猜这个是学了Smalltalk的。通常我们说OO,我们会说这三大特性:对象,继承,多态。1,Go中的对象对于GO来说他的类型系统也分为两类:value type和reference type。value type就是内存中的内容,reference其实也是类似引用地址的指针。这样Go中的对象很自然的分为两类的...
2019-10-07 11:48:53
146
转载 在Amazon云上使用Dropbox来部署应用
我们需要将自家的应用迁到云上,也就是Amazon的EC2上,在前端我们用Load Balancing来做负载均衡,后端用EC2的instance来提供服务。由于后端有能有很多的instance,所以在部署的时候怎么样把应用在这些instance上同步是一个问题。 最早,我们想到了自动化的Push,也就是在服务器端开个SSH或FTP服务然后写个脚本将要更新的内容Push到这个后端的ins...
2019-10-07 11:48:52
97
转载 谈谈积累
下午的时候看最强大脑,我个人觉得这个个娱乐节目,仅此而已,谈不上什么科普。另一档中央台的《是真的吗》比这个科普性强多了去了。我比较讨厌的是他打着科普的旗号做娱乐,这会产生很大的误导。这期间更操蛋的是插播另农夫山泉的广告,说的是农夫山泉去东北找水源,坚持水源地建厂的原则,去你妈的什么玩意,你这不就是破坏环境吗?已现有的技术,想喝口干净的水并不困难,其实我觉得这样就够了,靠什么自然矿物质那大...
2019-10-07 11:48:52
105
转载 汽车引擎是怎么工作的
很长段时间没有写博客了,主要是觉得没有太多可以拿出来说的。近些日子事到时遇到一堆,但也都不值得拿出来说道。技术上最近没有看什么新的东西,但是对系统设计的敏感是越来越好了,我也不知道怎么说这种敏感,大约就是你知道你是在埋坑,还是在做正确的设计决定。 值得一提的事2013年的冬天苏州的空气真是特别的差,不少天重度污染,时不时的来个严重污染。周末的时候哪里也没有去,就买了本汽车维修的书看看。...
2019-10-07 11:48:51
137
转载 工作二三事
性能 设计系统时是要考虑性能的,否则等性能出题出来的时候是非常棘手的。大多数的情况都是当前的生产环境正在运行,留给你的操作时间不多,不会给你太多时间调优。而当你发现问题时,你也不容易改动已经在生产环境的代码。 我常遇到的性能瓶颈最后都出在的数据存储这一层。比如说数据库,如果说数据是应用的核心,那么数据库无疑是核心的管理者。当数据库遇到了性能问题解决起来也颇为棘手。一来,还是生产环境,...
2019-10-07 11:48:50
78
转载 为而不争
早上和小娟又为了我爸妈来带孩子的事吵了起来,还好是要赶着上班没吵上两句。早上做公交的时候看了一篇淘宝鬼脚七的的老子系列的《为而不争》。两件事连起来,还是可以让我思考思考的。 人和事往往都有个定数,你往往想做好些什么而不得。因为想只是你的意愿,而事情的发展是遵循他自己的规律。意愿跟规律往往是不匹配的。我们遵循着意愿做事,往往结果并不如愿。就我和小娟来说,我无非是觉得我已成家立业,能不打扰...
2019-10-07 11:48:49
96
转载 Binary Processing Tips(二进制处理技巧)
最近在做协议分析(RTMP),程序里时常要处理二进制。我网上搜索了一下,没有发现对二进制处理技巧的总结或者说明,自己尝试着总结一下。 1,基础 计算机在底层基本上都是以二进制来传递和存储的。类似于这样的序列: 0010 1100, 0001 1101 在使用的时候在把这些二进制翻译成“有意义”的格式,比如翻译成英语字母。在表示二进制的时候如果直接用0和1来显示,那样会太长...
2019-10-07 11:48:48
132
转载 NodeJS的包管理
工作到第8年,有时会错觉地以为那些能学会的东西都已经学会了,这些年一年2门语言左右从C,C++,C#, Lisp, Ruby, Python, JavaScript一路跑来觉得没有啥可以再学的了。但是我错了,最近在看NodeJS的东西,这让我又一次地知道了业界前沿的技术,也知道其实还有许多可以学的。 编辑器也是相似的,开始Notepad++,后来Vim,后来Emacs,后来回到Vim,...
2019-10-07 11:48:46
103
转载 Windows下的Lisp(CLisp)开发环境搭建
虽然我也算个编程的老鸟,但是即使这样想找个可以用的Lisp环境也是特别困难,你很难在这一堆的Lisp实现中选择一个。选择就是煎熬,最后我选择了GNU CLisp(http://www.clisp.org/)。我在Windows下工作时间较多,所以选择了CLisp的Windows port。你可以从这里下载已经编译好的文件。 1,Lisp解释器的配置 解压下载好的Zip,然后将其放至C...
2019-10-07 11:48:46
474
转载 Go语言学习
1,函数 1.1 函数的定义 Go支持匿名函数和闭包,Go的函数类似Python可以返回多个值。Go也是静态编译型的语言。先来看看Go的函数定于格式: func 函数名(参数表...) [(返回值...)] { //函数体}注意:1,返回值在参数表后定义,如果只有一个返回值,那么返回值两边的括号是不要的,如果没有返回值那么返回值这一项可以省略。...
2019-10-07 11:48:45
65
转载 SSH Tunnel
用处你懂得。 1,打开ssh tunnel端口转发 ssh -qCNgf user@a-proxy-server -D 127.0.0.1:1234 -q quite mode-C compress the data-N only port forward(do not execute the command)-g allow remote hosts to c...
2019-10-07 11:48:44
92
转载 亚马逊的负载均衡(Amazon Load Balancing)
公司最近要将架构迁到云上,存储用S3,服务器用EC2。为了将我们的架构变的具有横向的伸缩性,我们使用AWS的Load balancing来做负载均衡。简单来说负载均衡就是讲大量的客户端访问分发到不同的后端amazon ec2 instances中。 Amazon的Load balancing配置起来也非常简单,就是将已存在的ec2 instance添加到load balancing中。...
2019-10-07 11:48:43
602
转载 21层嵌套的递归解决方案
刚才看到一篇文章《21 nested callbacks》,作者吐槽了一下当时他学编程时的一个趣事:为了写一个HTML的动画,他写了有21层嵌套的函数。由于作者主要是抒情,所以这样的英文很不好阅读。我就把他最重要的思想提取出来。1,最初的实现,朴素的实现其实这个小哥就是想把20个div依次展现在用户的眼前。他用了JQuery库的animate函数,这个函数接受一个回调,当动画完成...
2019-10-07 11:48:42
90
转载 两点间插值函数
当我订阅在MouseMove事件的时候得到的点并不是等坐标距离的,也不是按像素的,为了让动画更加自然,需要用到两点间的线性插值。 private List<Point> LinearInterpolated(List<Point> trackPoints){ List<Point> result = new List<Point&...
2019-10-07 11:48:41
1127
转载 Albacore--.NET下基于Rake(ruby make)的自动化构建工具
微软系的工具以集成化著称,自动化构建一般也是基于Visual Studio或者它的插件。除此之外可能就是NAnt——Java中Ant的.NET版,很多开源的项目就是用NAnt来实现自动化构建的。我个人最不喜欢Ant的是他是基于XML的,我现在对XML有着本能的反感,他不符合DRY。XML中重复又没有意义的标签太多了,前几年对XML的替代可能是YAML,但是近几年随着Web开发的普及,JS...
2019-10-07 11:48:40
159
转载 混
2012过去了,真的没有什么好总结的,跟以前一样看书,学习,提高专业技能。世界末日也没有来,何必这么拼。2013了我想给今年列个计划,而这个计划可以归结为一个字:“混”。 做程序员辛苦,这个大家都知道的,做一个不断学习的程序员更是辛苦,项目的进度,知识的压力让我睡不好觉。你学的越多,分配给你的工作越多,工作越多你越是知道自己的不足。然后呢,只有拼命的继续学习,然后呢,重复这个循环。年初...
2019-10-07 11:48:39
89
转载 模板引擎StringTemplate
1,特点 1,强制Model和View的分离,也就是View负责呈现,不能修改Model。同时View中不用来包括任何业务逻辑,详见作者的论文(中文,英文)。 2,Lazy-Evaluation,所有的Attribute直到st.ToString()调用时才evaluate.这样的好处是setAttribute是Order Independent。 3,Recursive ena...
2019-10-07 11:48:38
369
转载 求最大两数之和(SICP 习题1.3 )
《Structure and Interpreter of Computer Program》中第1章习题1.3说到:练习1.3 请定义一个过程,它以三个数为参数,返回其中较大两个数之和。其实这一段的中文版翻译错了,其实原版是说求最大两个数的平方和。但是意思是一样的。为了这个简单的问题我也思考了挺长时间,就是得不到让我满意的解。三个数如何知道其中的两个较大的?其中的一...
2019-10-07 11:48:38
226
转载 Base64,DES,RSA,SHA1,MD5 笔记
1,Base64 场景:你想把一组二进制数据表示为一组可见字符,这样在某些场合更加利于传输,比如在邮件中传输。 算法:http://zh.wikipedia.org/wiki/Base64 2,DES和RSA 场景:你想对一组二进制数据进行加密。比如你想保护你的数据不被别人窃取,即使别人有你加密后的二进制数据,但如果没有密码,他仍旧不能解开。 算法: DES:http://z...
2019-10-07 11:48:36
86
转载 从JQuery中的Deferred对象谈谈异步编程
JQuery中的Deferred Object其实就是实现了一种异步编程模式,这个模式在CommonJS中有介绍。这种模式改变的代码的书写方式,他采用的异步模式还是回调式异步(async callback)。通常我们的异步代码都是non-blocking的,我们开一个异步操作,我们不知道什么时候完成,我们需要知道的就是这个异步操作在完成的时候通过我们传入的callback来通知我们。 ...
2019-10-07 11:48:36
78
转载 元编程
Meta Programming,元编程。我们通常是指那些编写程序的程序,也就是Paul Granham说过的类似这样的话:Programmer can write a program which write program for programmer.根据(程序)编写程序的时间点不同,我们可以将元编程分为:1,编译时元编程编译时元编程是指在编译时(compile-time...
2019-10-07 11:48:34
73
转载 界面设计——当选择项太多了我们怎办
1,挺熟悉的界面 这篇博客的标题比较长,原因是对于界面设计还真没有什么我知道的好术语(term)可以描述这样情况。但是作为一个程序员,我只要给你看一个界面你肯定就心领神会了。 这是一个调查(软件)的配置页面,挺难看?其实一开始也挺好看的,就2个Textbox和3个selection list。可随着功能的添加,每个人加一点,最后就变成这样了。 好了,现在我接到一个需求,让我再加...
2019-10-07 11:48:34
341
转载 iframe间的跨域通信
1,跨域的一个示例 当你需要操作一个内嵌iframe是,如果这个内嵌iframe和打开的网站不在同一个域中,你时常会遇到这样的报错: Unsafe JavaScript attempt to access frame with URL http:/www.d1.com from frame with URL http://www.d2.com. Domains, protoco...
2019-10-07 11:48:32
217
转载 错把虚荣当热爱,错把热爱当天赋
好长时间没更新博客了,随笔一篇。 1,出国 8月14号面签,我前面的一位被拒签了,这让我有点小紧张,但到我的时候就几个问题就Pass了,这也让我很意外。这是我第一次出国,第一次办护照,签证,所以一切都比较新奇,就是感觉挺好玩的。 我们计划在9月2号经Hong Kong转机去San Francisco。在美国的时候最好Victor能和老板请半天假,这样我们能出去兜兜,看看。 2...
2019-10-07 11:48:32
79
转载 用Git应付一些临时工作
1,Intruduction 我们有时候会接到一些临时的工作,这些工作时常在计划之外,比如现在一个Bug来了,你需要及时修复。但你从上次发布以后又改了许多,并且有的改动已经stage,有的已经commit,有的已经push,这怎么办呢? 为了澄清我们的讨论,我们先看一张图 那么就有四种情况要处理: 1,Working Directory changed, but not st...
2019-10-07 11:48:31
77
转载 Synchronize the folders between Windows and Ubuntu in VirtualBox
1, Why do this Recently, I keep working in my guest operating system which is Ubuntu 12.4 LTS. I got some project documents from my co-workers. It’s better to read the documents from Ubuntu dire...
2019-10-07 11:48:31
78
转载 写一个lstree
1,缘起 有的我们拿到一个文件,通常是我们不太清楚的文件,比如你拿到了一个朋友传给你的源代码,如果你可以一眼看出这个源代码的目录结构那该有多好啊。 我以前的做法是: $ls –R 但是这样看不出目录结构的层级,我们是否可以自己写一个类似pstree的工具来完成这个任务? 当然可以,比如我们想看GNU coreutils源代码目录结构: ~/repo/coreutils...
2019-10-07 11:48:29
75
转载 gdb调试
1,gdb的一般调试过程1,你先用gcc –g 参数生成带调试符号的二进制文件2,gdb prog_name加载待调试的文件3,l(list) [func_name | line_num]查看源文件4,b(break) [func_name | line_num] 在函数或具体的行上加上断点5,info breakpoints 查看当前所有断点6,r(run)运行...
2019-10-07 11:48:29
69
转载 Ubuntu 12.04 LTS不能登录的解决
昨天我用gdb来调试一个程序,总是用list来查看代码不是很方便。我就想让terminal有两个窗口,一个用Vim来查看代码,另一个用gdb来调试代码。经过Google,我安装了screen和byobu。经过一番折腾,我并不喜欢这个工具,随即我将其卸除。悲剧来了: 当我重启Ubuntu后怎么也登录不了Gnome,症状为我一输入密码并通过验证后他又返回登录窗口(dumps me back...
2019-10-07 11:48:27
104
转载 Linux的init
Linux执行完一些初始化以后,第一个启动init进程。init进程是所有进程的父进程,负责启动其它进程,这些进程大多数是服务进程(daemon)。随着时间的推移这个启动过程也在变化。但目前主要有两种:System V style的runlevel式启动和upstart代表的event-based启动。 1,System V style的runlevel启动 init进程会读取/et...
2019-10-07 11:48:27
90
转载 Tracking others folk in Git
Our logic master repo is Hacker/master,Jerry and Lily folks this repo。 Someday,Lily added a new feature. Jerry want to tracking Lily’s changes, What do Jerry’s do? 1, fetch the changes from Lil...
2019-10-07 11:48:26
85
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人