2007/4/29
也不知道谁给平安保险做的在线投保功能,昨天去激活一张旅程平安卡,结果上面显示的默认投保起始日期竟然是06-04-29。我一不留神啊,这20块钱的卡就被平安保险给黑走了,黑,真黑啊,打他们的投诉电话,小姐答应我说1个工作日内给我答复,我等,等了一天也没个结果,晚上再打电话过去又告诉我说什么时候能给我答复不一定。靠,以后再也不跟他们平安保险打交道,玩去!
2007/4/20
听说夏新要主攻3G手机,要做智能手机,别的不说,希望它不要再请那个李宇春做广告,要不然,嘿嘿,就算它做出再牛的手机,等着它的也是血本无归。
一位新来的员工坐在我旁边。一日谈话时,他说他不喜欢写C程序,喜欢JAVA,那我就问他那为什么来应聘底层软件,应该去应聘应用软件才对,他说是他当时递简历时就是递的应用软件开发,等拿到offer后,上面写的是"底层软件工程师",他当时以为"底层软件工程师"指的是处于公司最底层的、受剥削受压迫的那种程序员……于是,哈哈,呵呵,这个说法其实,其实也挺正确的……
几天后,在这个哥们的争取下,他被调去做JAVA了,比较开心。希望他不会成为"底层软件工程师",希望广大的程序员都不要成为"底层软件工程师"。
tracert程序出现错误no resources,在网上查了一下,大概原因是TCP协议遭到了破坏,下了一个叫WinSockFix的程序进行修复,问题解决。
首先需要在home目录($HOME)下新增或编辑两个档案:
.inputrc 和 .bash_profile
在.inputrc中要有下面三行
set meta-flag on
set convert-meta off
set output-meta on
在.bash_profile中要有下面三行
export LESSCHARSET=latin1
alias less='/bin/less -r'
alias ls='/bin/ls -F --color=tty --show-control-chars'
如果对指令跟文本编辑器都不熟,请开启cygwin console,依序执行下面七个指令:
cd
echo "set meta-flag on" >> .inputrc
echo "set convert-meta off" >> .inputrc
echo "set output-meta on" >> .inputrc
echo "export LESSCHARSET=latin1" >> .bash_profile
echo "alias less='/bin/less -r'" >> .bash_profile
echo "alias ls='/bin/ls -F --color=tty --show-control-chars'" >> .bash_profile
然后退出cygwin console,再重新开启,就可以输入、显示中文了。
转到这里时做了修改,添加了itoa函数. by Garfield
对于嵌入式软件的开发人员而言,"printf调试(printf-debugging)"这个术语描述了将调试字符串从嵌入式目标空闲的串口压出,并在运行于宿主工作站的终端模拟器上显示结果的常见方法。
出于这个目的,许多程序员更喜欢使用有名的printf() C语言库函数,因为它在将文本输出和数据组合成单个函数调用上具有灵活性。但是,不在嵌入式系统中使用printf()无外乎两个常见的原因:不是因为printf()太慢了,就是因为它太大了。
事实上,很容易就会碰到这些局限性。如果你看一下标准C语言库的规范,原因就很明显了。Printf()必须处理大量的数据格式,包括字符串、字符、(各种长度的有符号和无符号)数字,以及浮点值。此外,格式字符串可以包括用于更改文本对齐、基数、间距、字段宽度和精度的调节器和指示器。很清楚的是,任何支持整个规范的代码都会是冗长和繁重的。
嵌入式系统库的提供商意识到了这个问题,于是提供了只使用整数的printf()实现。这就通过去掉不必要的浮点支持而稍稍改善了这种状况。但是即使如此,这些实现对于许多缺乏内存的嵌入式系统来说仍然太大了。
在你每天的编程工作中,你到底需要多少printf()的规范?可能只需要"%s"、"%d",以及"%x"?所以还有另一个选择:编写能够满足需要的你自己的最小printf()函数。
这会带来相当大的好处。例如,在最近一个项目里,我替换掉了一个由制造商所提供的printf()库,它需要超过20 KB的内存(这超过了可用内存的一半),而换上了一个小巧的只支持必要特性的自定义版本,它只需要不到500字节的内存空间。
小巧的printf()
下面是替换一个非常基本的printf()的例子:
/*反转字符数组s*/
void reverse(char *s)
{
int c, i, j;
for (i = 0, j = strlen(s) - 1; i < j; i++, j--) {
c = s[i];
s[i] = s[j];
s[j] = c;
}
}
/*将整数n转换为字符数组存入s*/
void itoa(long n, char *s)
{
int i, sign;
/*最小负数单独处理*/
if (n == 0x80000000) {
strcpy(s, "-2147483648");
return;
}
if ((sign = n) < 0) {
n = -n;
}
i = 0;
do {
s[i++] = n % 10 + '0';
}while ((n /= 10) > 0);
if (sign < 0) {
s[i++] = '-';
}
s[i] = '\0';
reverse(s);
}
/*格式化输出,用法同printf,只支持%s和%u两种格式转换*/
void intprintf(const char *fmt, ...)
{
const char *s;
int d;
char buf[16];
va_list ap;
va_start(ap, fmt);
while (*fmt) {
if (*fmt != '%') {
putchar(*fmt++);
continue;
}
switch (*++fmt) {
case 's':
s = va_arg(ap, char *);
for ( ; *s; s++) {
putchar(*s);
}
break;
case 'd':
d = va_arg(ap, int);
itoa(d, buf);
for (s = buf; *s; s++) {
putchar(*s);
}
break;
default:
putchar(*fmt);
break;
}
fmt++;
}
va_end(ap);
}
下面是一些值得注意的事情:
为了节省空间,这个简单的printf()只支持"%s"和"%d"格式的分类符,而不需要任何指示器或者其他调节器。扩展这个函数以支持其他分类符是相对较简单的。
C语言的标准要求printf()应该返回输出字符串的数量。这个被返回的值通常被忽略掉了,所以这个轻型的printf()就不会劳心去计算它了,而是返回一个伪值。
一般来说,putchar()这个函数会将字符发送到串口,更通行的方法是通过由中断驱动的串口输出缓冲区以避免延迟。
首标文件<stdarg.h>是一个标准的库首标文件,它为访问传递给printf()的变量自变量列表提供小巧的宏,通常是通过系统堆栈。
更进一步优化
要注意,控制权在你手里,你可以在感觉需要的情况下做出任何优化,并轻易地添加你所需要的特性。
下面是你可以考虑的几种优化方法:
添加一个#define,它会控制%d是否将整数显示为十进制或者十六进制数。如果你使用简单的位移(bit-shift)而不是长的划分来实现到十六进制数(等同于使用"%x"分类符)的转换,那么这一转换在大多数处理器上会快得多。然后你就能够在编译的时候为"%x"取得输出格式:快速的十六进制数或者缓慢的十进制。
将整数到文本冗长的转换转移到工作站上。例如,当碰到"%x"分类符的时候,嵌入式处理器能够轻易地发送一个未使用的ASCII码,比如说0x01,并跟有原始的整数字节。不幸的是,这种方法需要一个在你工作站上运行的自定义终端程序,以解码它所获得的字节流,并在显示字符串之前实现必要的整数到文本的转换。
从我的blogcn上转来的.
这篇日志是06年7月31号写的,只是今天才发上来。
本来是阳历的7月7想写日志的,不过老是没机会,左赶右错就等到今天了,也可能是天意吧,今天是阴历的七月七,七夕节,呵呵
又是一年七月七
遥想前事成追忆
只道年少光阴慢
回首暮然发叹息
离家千里无亲故
只身一人话难提
甘愿受难多磨厉
有成之日会有期
本想写些东西,可现在,觉的上面这首"诗"把我要说的意思都表达了,啥也别说啦,眼泪哗哗的……
这是转自我CSDN的文章,在这里安家,东西当然要搬来了:
今天收到老大发来的书,CHM格式的,结果out look说这文件不安全,不让接收,靠,安不安全的还能全让你说了算?那我的书怎么办?不过呢,结果书还是被我收到手了,方法如下:
HKEY_CURRENT_ USER\Software\Microsoft\Office 11.0\Outlook\Security,选择"编辑"->"新建",继续选择"String value"(字符串值)并将其命名为"Level1Remove"。 值设为不需要接受安全检查的附件类型扩展名,多个扩展名用分号隔开,例如".exe;.chm"等,单击"确认"按钮即可。退出注册表编辑器,重新启动计算机后即可。
<<Routing TCP.IP v1, 2e.chm>>到手.
终于又能发日志了,这下终于弄清是怎么回事导致之前无法发表日志了。原来是因为那天安了个天网,由于我一直用GB,所以就把IE给封掉了,而word好发表日志好像要用到IE,结果弄的WORD也发不了日志了。其实当时也想到了天网的问题,看了看列表里没有封WORD的项,也就没管,唉,没想到载到这个天网上了。
2007/4/17
之前是live space不能在IE里发布日志,我忍,安一下WORD2007来写,可刚刚发了一篇,就又不能发了。这个G8烂东西,气死个人。
可也没办法,找不到好用的地方。本以为MS的东西,应该错不了的,可还是他奶奶的让人生气。