Zhang Jiuan’ Notes

一个老程序员的感悟:做技术二十多年,突然明白的道理

做技术已经有二十多年,每天忙忙碌碌,开始还对自己的职业生涯有些思考,时间一长,习惯了,再也没想过。前几天在办公楼上认识了一个朋友,他在某知名IT 招聘网站做专业职业顾问,聊天的时候,他告诉我的这些话,让我顿时清醒了许多,现在我决定给自己这么多年的工作方式和思维模式做个改变,应该还不算晚。
不管你是学习技术为了找工作还是创业,你都要对技术本身有个清醒的认识,在中国还仅仅的停留在把软件技术人才当作人才机器来用的尴尬境地。
  一。不要以为技术可以换来稳定的生活和高的薪水待遇,更不要认为那些从事市场开发,跑腿的人没有前途。
  中国有相当大的一部分软件公司,他们的软件开发团队都小的可怜,甚至只有1-3个人,连一个项目小组都算不上,而这样的团队却要承担一个软件公司所有的软件开发任务,更可怕的是,会让你接触的人际关系非常单一,除了有限的技术人员之外你几乎见不到做其他行业工作和职位的人,你的朋友圈子小且单一.
  
  比之于我们,那些从事售前和市场开发的朋友,却有比我们多的多的工作之外的时间,甚至他们的工作有时候是可以兼顾生活的,坦率的说更有发财和发展的机会,只要他们跟我们一样勤奋。
  二。不要认为如果做到技术最强,就可以成为100%受尊重的人。
  如果你幸运的能够听到市场人员的谈话,或是领导们的谈话,你会隐约觉得他们都在把技术人员当作编码的机器来看,你的价值并没有你想象的那么重要。而在你所在的团队内部,你可能正在为一个技术问题的讨论再跟同事搞内耗,因为他不服你,你也不服他,你们都认为自己的对,其实你们两个都对,而争论的目的就是为了在关键场合证明一下自己比对方技术好,比对方强。(在一个项目开发中,没有人愿意长期听别人的,总想换个位置领导别人。)
  三。更不要认为,如果我技术够好,我就自己创业,自己有创业的资本,因为自己是搞技术的。
  如果你那样认为,真的是大错特错了,你可以做个调查在非技术人群中,没有几个人知道C#与 JAVA的,更谈不上来欣赏你的技术是好还是不好。一句话,技术仅仅是一个工具,善于运用这个工具为别人干活的人,却往往不太擅长用这个工具来为自己创业,因为这是两个概念,训练的技能也是完全不同的。
  创业的时候,你的人际关系,你处理人际关系的能力,你对社会潜规则的认识,还有你明白不明白别人的心,你会不会说让人喜欢的话,还有你对自己所提供的服务的策划和推销等等,这么多的问题都是客观存在着的。
  [总之]
  技术仅仅是一个工具,是你在人生一个阶段生存的工具,你可以一辈子喜欢它,但最好不要一辈子靠它生存。
转自:http://blog.csdn.net/teamlet/archive/2010/03/24/5410991.aspx
If you enjoyed this post, make sure you subscribe to my RSS feed!

几个内存相关面试题(c/c++)

void GetMemory(char *p)
{
p=(char*)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str,”helloworld”);
printf(str);
}
请问运行Test函数会有什么样的结果?
答:程序崩溃。因为GetMemory并不能传递动态内存,Test函数中的str一直都是NULL。strcpy(str,”helloworld”);将使程序崩溃。
char *GetMemory(void)
{
char p[]=”helloworld”;
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}
请问运行Test函数会有什么样的结果?
答:可能是乱码。因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是NULL,但其原先的内容已经被清除,新内容不可知。
void GetMemory2(char **p, int num)
{
*p = (char*)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, “hello”);
printf(str);
}
请问运行Test函数会有什么样的结果?
答:(1)能够输出hello(2)内存泄漏
以上都是关于内存的问题,我想问第一个为什么说GetMemory不能传递动态内存,而第三个 GetMemory2(char **p, int num)却可以;还有第二个说GetMemory返回的是指向“栈内存”的指针,该指针的地址不是NULL,总之我不懂,最好懂得人能一句一句的解释。
If you enjoyed this post, make sure you subscribe to my RSS feed!

linux下的 rm 命令-i选项

有时候使用rm命令的时候觉得有个删除提示比较保险;但真的加上了,
在使用的大多数时候又觉得比较麻烦。这其实可通过rm的-i选项来控制的.
以下是用rm –help命令查出来的
用法:rm [选项]… 文件…
删除 (unlink) 文件。
-f, –force 强制删除。忽略不存在的文件,不提示确认
-i 在删除前需要确认
-I 在删除超过三个文件或者递归删除前要求确认。此选项比-i 提
示内容更少,但同样可以阻止大多数错误发生
–interactive[=WHEN] 根据指定的WHEN 进行确认提示:never,once (-I),
或者always (-i)。如果此参数不加WHEN 则总是提示
–one-file-system 递归删除一个层级时,跳过所有不符合命令行参
数的文件系统上的文件
[...]

asmlinkage, linux源代码

asmlinkage long sys_nice(int increment)
“asmlinkage” 是在 i386 system call 实作中相当重要的一个 gcc 标签(tag)。
当 system call handler 要呼叫相对应的 system call routine 时,便将一般用途暂存器的值 push 到 stack 里,因此 system call routine 就要由 stack 来读取 system call handler 传递的参数。这就是 asmlinkage 标签的用意。
system call handler 是 assembly code,system call routine(例如:sys_nice)是 C code,当 assembly code 呼叫 C function,并且是以 stack 方式传参数(parameter)时,在 C [...]

自动化测试中Python与C/C++的混合使用

背景
项目的 自动化测试中已经使用了基于Python 脚本的框架,自动化过程中最关键的问题就是如何实现桩模块。运用 Python 强大的功能,实现任何桩模块都是可能的,但是是否必须完全使用 Python 实现模块逻辑,成本是一个决定性因素。在桩模块逻辑简单的情况下,使用 Python 模拟模块逻辑不但使自动化测试的结构清晰,也具有更好的灵活性,但是如果桩模块逻辑复杂,实现起来可能要耗费很大的成本,也容易由于桩模块逻辑与实际不符导致测试结果不可信。在这种情况下,如果能够借用 RD 开发的某些代码段 / 库,将会对测试自动化带来很多效益。
另外,在Python 中调用 C/C++ 代码的方法也可能应用于 C/C++ 库的测试中,这种测试方法的可行性还有待研究。
以下总结出几种在Python 中调用 C/C++ 代码的方法
使用ctypes 模块调用 C 动态库
从Python2.5 开始, Python 开始提供 ctypes 模块来提供对 C 语言编译的动态库文件的调用。注意, 这里特指C 的动态库 ,用C++ 编译的动态库 ctypes 虽然能够加载,但调用时的函数名已经由于 C++ 的重载特性被加以修改,难以调用。 使用 ctypes 调用 C 动态库的好处在于不用进行额外的开发,可以直接使用编译好的动态库。 ctypes 提供了完整的 C 类型封装,也支持自定义类型,大大减少在调用过程中的工作量。 ctypes 的使用很简单,只需熟悉 python 封装与 C [...]

Linux Kernel < 2.6.19 udp_sendmsg Local Root Exploit

/***********************************************************
* hoagie_udp_sendmsg.c
* LOCAL LINUX KERNEL ROOT EXPLOIT (< 2.6.19) - CVE-2009-2698
*
* udp_sendmsg bug exploit via (*output) callback function
* used in dst_entry / rtable
*
* Bug reported by Tavis Ormandy and Julien Tinnes
* of the Google Security Team
*
* Tested with Debian Etch (r0)
*
* $ cat [...]

近期暴的linux漏洞 提升权限

前段时间,爆出一个linux用户提升普通用户权限到root权限的漏洞,很多小白开始试了,进ssh,然后./a,咋什么都没有呢?殊不知,哪有这么简单,还是需要代码的。。本文的末尾提供了代码(代码版权归原作者所有:p0c73n1(at)gmail(dot)com),也提供了编译后的执行程序。gcc版本是gcc (GCC) 4.1.1 20070105。还要注意,此漏洞需要在Linux kernel 2.6 < 2.6.19 (32bit)下才能测试通过,目前还没有好的补救办法。
国内极少数有主机商提供ssh登入权限,所以,机会不多,但是国外有很多都提供,例如DreamHost等等。。如果空间没有使用gcc的权限,可以找对应版本的gcc编译之后,ftp上去亦可。。编译命令是: gcc -o t t.c,然后执行/path/to/t 即可。。如:
[leekooqi@icnote ~]$ gcc -o t t.c
[leekooqi@icnote ~]$ ./t
sh-3.1# id
uid=0(root) gid=0(root) groups=512(leekooqi)
sh-3.1#
你会发现,你已经拥有root权限了,可以为所欲为了。。但是,记住,不要干坏事!!
原文件如下:
1./*
2.**
3.** 0×82-CVE-2009-2698
4.** Linux kernel 2.6 < 2.6.19 (32bit) ip_append_data() local ring0 root exploit
5.**
6.** Tested White Box 4(2.6.9-5.ELsmp),
7.** CentOS 4.4(2.6.9-42.ELsmp), CentOS 4.5(2.6.9-55.ELsmp),
8.** Fedora Core [...]

Linux 账号与身份管理

账号管理:
管理员的工作中,相当重要的一环就是『管理账号』啦!因为整个系统都是你在管理的,并且所有的一般用户的申请,都必须要透过你的协助才行!所以你就必须要了解一下如何管理好一个网站的账号管理啦!在管理 Linux 主机的账号时,我们必须先来了解一下 Linux 到底是如何辨别每一个使用者的!
使用者的 ID 与群组的 ID :
其实 Linux 并不会直接认识你的『账号名称』,他认识的其实是你的『账号 ID 』才是!如果你曾经以 tarball 安装过软件的话,那么应该不难发现,在解压缩之后的档案,嘿?档案拥有者竟然是『不明的数字』?奇怪吧?这没什么好奇怪的,因为 Linux 说实在话,他真的只认识代表你身份的号码而已!而对应的号码与账号,则是记录在 /etc/passwd 当中!
怎样登入 Linux 主机呀?
好了,那么我们再来谈一谈,到底我们是怎样登入 Linux 主机的呢?其实也不难啦!当我们在主机前面或者是以 telnet 或者 ssh 登入主机时,系统会出现一个 login 的画面让你输入账号,这个时候当你输入账号与密码之后, Linux 会:
 
先找寻 /etc/passwd 里面是否有这个账号?如果没有则跳出,如果有的话则将该账号对应的 UID ( User ID )与 GID ( Group ID )读出来,另外,该账号的家目录与 shell 设定也一并读出;
再来则是核对密码表啦!这时 Linux 会进入 /etc/shadow 里面找出对应的账号与 UID,然后核对一下你刚刚输入的密码与里头的密码是否相符?
如果一切都 OK 的话,就进入 Shell 控管的阶段啰!
大致上的情况就像这样,所以呢,当你要登入你的 Linux [...]

百度股票上涨创新高 因传言谷歌将关闭中文站

  (中国电子商务研究中心讯)3月16日消息,据国外媒体报道,受谷歌将退出中国市场传言的影响,百度股价在当地时间周一的常规交易中上涨26.6美元,涨幅为4.8%,报收于576.84美元,创下1个多月以来的最高单日涨幅。
  对此,中国电子商务研究中心搜索引擎分析师卜梓琴认为:中国互联网公司百度(Baidu Inc.)的美国存托凭证周一走高,因谷歌(Google Inc.)关闭其中文搜索引擎的可能性似乎越来越大。
  卜梓琴还表示:百度在中国占有互联网搜索市场的主导地位,过去数年一直高速发展,但谷歌和其他搜索引擎正开始奋起直追。
  据悉,谷歌中国业务的广告客户已被建议向其他网站投放广告,业务合作伙伴在考虑替代方案。中国政府上周表示,谷歌不遵守中国法律是“不负责任的”。
  加拿大皇家银行资本市场分析师斯蒂芬·朱(Stephen Ju)表示,谷歌退出中国市场的传言在推动百度股价上涨,“如果最大的竞争对手退出市场,百度就会成为中国互联网搜索市场事实上的垄断者”。但RBC Capital Markets的Stephen Ju称,如果谷歌如《华尔街日报》(Wall Street Journal)报导的那样将很快退出市场的话,百度将成为垄断者。Stephen Ju称,百度很可能会获得广告主目前投给谷歌的广告预算中的绝大部分。他补充称,跟踪百度的多数分析师预计谷歌将退出中国。
  记者未能立即联络到百度公司的代表置评。最近百度股价上涨3.2%,至567.55美元。过去12个月,该股股价上涨两倍多。而谷歌跌2.1%,至567.44美元。该股过去12个月上涨75%,但在过去3个月中下跌4%。
  在与分析师举行的一次电话会议上,百度资深副总裁沈皓瑜表示,主要竞争对手谷歌可能退出中国,并未令该公司看到这一消息对去年第四季度或今年第一季度的收入产生积极影响。但百度管理层暗示,谷歌与中国政府发生冲突,并威胁退出中国市场的确会在长远上对该公司带来好处。(中国电子商务研究中心综合报道)
转载:http://b2b.netsun.com/detail–5044325.html
If you enjoyed this post, make sure you subscribe to my RSS feed!

再贴一道老掉牙的智力测验题

题目目:
5个药瓶药粒数一样,其中一瓶药坏了,每粒药轻了1克,
原来是每粒药10克,怎样一次用天枰称出来是哪一瓶坏了
答案:
从第一瓶,第二瓶…第五瓶分别取1,2,3,4,5放在天枰一边,
另一边则放1+2+3+4+5=15颗放在另一边,一次便可得到
答案。详细就不用多讲了吧。
多谢
张久安
If you enjoyed this post, make sure you subscribe to my RSS feed!

返回顶部