念 的个人资料牛肉面的BLOG日志列表留言簿 工具 帮助

日志


2007/4/29

谁给平安保险做的在线投保功能?

也不知道谁给平安保险做的在线投保功能,昨天去激活一张旅程平安卡,结果上面显示的默认投保起始日期竟然是06-04-29。我一不留神啊,这20块钱的卡就被平安保险给黑走了,黑,真黑啊,打他们的投诉电话,小姐答应我说1个工作日内给我答复,我等,等了一天也没个结果,晚上再打电话过去又告诉我说什么时候能给我答复不一定。靠,以后再也不跟他们平安保险打交道,玩去!

2007/4/20

听说夏新要主攻3G手机

听说夏新要主攻3G手机,要做智能手机,别的不说,希望它不要再请那个李宇春做广告,要不然,嘿嘿,就算它做出再牛的手机,等着它的也是血本无归。

底层软件工程师

一位新来的员工坐在我旁边。一日谈话时,他说他不喜欢写C程序,喜欢JAVA,那我就问他那为什么来应聘底层软件,应该去应聘应用软件才对,他说是他当时递简历时就是递的应用软件开发,等拿到offer后,上面写的是"底层软件工程师",他当时以为"底层软件工程师"指的是处于公司最底层的、受剥削受压迫的那种程序员……于是,哈哈,呵呵,这个说法其实,其实也挺正确的……

 

几天后,在这个哥们的争取下,他被调去做JAVA了,比较开心。希望他不会成为"底层软件工程师",希望广大的程序员都不要成为"底层软件工程师"。

2007/4/19

日子过糊涂了,时间错乱

日子过的都过乱了。下班后看着看着代码,扫了一眼右下角的时间,结果发现已经X点过16分了,当时我的第一反应就是9:16。结果赶紧写了日志,奔到隔壁看去找老大,想一起去座车回家。事有凑巧,本来老大肯定会告诉我时间还没到,可就在这时,正赶上部门老大说要回家,老大和我就一起去蹭部门老大的车回家。

    等到了家才发现,闹钟上刚刚9点。咦,肯定是闹钟没电了,然后看了一眼家里电脑的时间,发现那里也是9点,咦!这是怎么回事?第三类接触?事情太怪了,于是我仔细想了想,终于恍然大悟,原来是我在公司看错了时间,本来应该到公司门口一看,没有厂车,也应该能反应过来看错时间了的,可偏偏又坐了部门老大的车回来,于是……

    晕了,晕了,事情竟能错到这种地步,而且一错再错,有趣有趣。

tracert程序出现错误no resources

tracert程序出现错误no resources,在网上查了一下,大概原因是TCP协议遭到了破坏,下了一个叫WinSockFix的程序进行修复,问题解决。

在Cygwin console输入、显示中文

首先需要在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,再重新开启,就可以输入、显示中文了。 

编写适合自己需要的printf()函数

转到这里时做了修改,添加了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想写日志的,不过老是没机会,左赶右错就等到今天了,也可能是天意吧,今天是阴历的七月七,七夕节,呵呵

又是一年七月七
遥想前事成追忆
只道年少光阴慢
回首暮然发叹息
离家千里无亲故
只身一人话难提
甘愿受难多磨厉
有成之日会有期


本想写些东西,可现在,觉的上面这首"诗"把我要说的意思都表达了,啥也别说啦,眼泪哗哗的……

接收OutLook中不安全附件

这是转自我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

之前是live space不能在IE里发布日志,我忍,安一下WORD2007来写,可刚刚发了一篇,就又不能发了。这个G8烂东西,气死个人。
可也没办法,找不到好用的地方。本以为MS的东西,应该错不了的,可还是他奶奶的让人生气。