摘要:
Meta Programming,元编程。我们通常是指那些编写程序的程序,也就是Paul Granham说过的类似这样的话:Programmer can write a program which write program for programmer.根据(程序)编写程序的时间点不同,我们可以将元编程分为:1,编译时元编程编译时元编程是指在编译时(compile-time)完成编写或修改程序的工作。像一些宏,代码生成器,C++中的模板技术都是属于编译时元编程。2,运行时元编程运行时(runtime)元编程是指在程序运行时根据需要生成,修改和执行代码。通常动态语言拥有这种能力。拥有这种能力的 阅读全文
摘要:
1,挺熟悉的界面 这篇博客的标题比较长,原因是对于界面设计还真没有什么我知道的好术语(term)可以描述这样情况。但是作为一个程序员,我只要给你看一个界面你肯定就心领神会了。 这是一个调查(软件)的配置页面,挺难看?其实一开始也挺好看的,就2个Textbox和3个selection list。可随着功能的添加,每个人加一点,最后就变成这样了。 好了,现在我接到一个需求,让我再加2个配置选... 阅读全文
摘要:
1,跨域的一个示例 当你需要操作一个内嵌iframe是,如果这个内嵌iframe和打开的网站不在同一个域中,你时常会遇到这样的报错: Unsafe JavaScript attempt to access frame with URL http:/www.d1.com from frame with URL http://www.d2.com. Domains, protocols an... 阅读全文
摘要:
好长时间没更新博客了,随笔一篇。 1,出国 8月14号面签,我前面的一位被拒签了,这让我有点小紧张,但到我的时候就几个问题就Pass了,这也让我很意外。这是我第一次出国,第一次办护照,签证,所以一切都比较新奇,就是感觉挺好玩的。 我们计划在9月2号经Hong Kong转机去San Francisco。在美国的时候最好Victor能和老板请半天假,这样我们能出去兜兜,看看。 2,学习 ... 阅读全文
摘要:
1,Intruduction 我们有时候会接到一些临时的工作,这些工作时常在计划之外,比如现在一个Bug来了,你需要及时修复。但你从上次发布以后又改了许多,并且有的改动已经stage,有的已经commit,有的已经push,这怎么办呢? 为了澄清我们的讨论,我们先看一张图 那么就有四种情况要处理: 1,Working Directory changed, but not staged ... 阅读全文
摘要:
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 directly,... 阅读全文
摘要:
1,缘起 有的我们拿到一个文件,通常是我们不太清楚的文件,比如你拿到了一个朋友传给你的源代码,如果你可以一眼看出这个源代码的目录结构那该有多好啊。 我以前的做法是: $ls –R 但是这样看不出目录结构的层级,我们是否可以自己写一个类似pstree的工具来完成这个任务? 当然可以,比如我们想看GNU coreutils源代码目录结构: ~/repo/coreutils$ lst... 阅读全文
摘要:
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)运行程序,程序会在断点的位置停下来7,bt(backtrace) 查看程序的调用路径,也就是call stack。 7.1,你可以用up和down在调用栈中移动,借此可以使用p命令打印当前call stack上的临时变量。8,p(pri. 阅读全文
摘要:
昨天我用gdb来调试一个程序,总是用list来查看代码不是很方便。我就想让terminal有两个窗口,一个用Vim来查看代码,另一个用gdb来调试代码。经过Google,我安装了screen和byobu。经过一番折腾,我并不喜欢这个工具,随即我将其卸除。悲剧来了: 当我重启Ubuntu后怎么也登录不了Gnome,症状为我一输入密码并通过验证后他又返回登录窗口(dumps me back to l... 阅读全文
摘要:
Linux执行完一些初始化以后,第一个启动init进程。init进程是所有进程的父进程,负责启动其它进程,这些进程大多数是服务进程(daemon)。随着时间的推移这个启动过程也在变化。但目前主要有两种:System V style的runlevel式启动和upstart代表的event-based启动。 1,System V style的runlevel启动 init进程会读取/etc/ini... 阅读全文