| 标题 |
作者 |
阅读数 |
发布时间 |
|
|
blue88 |
1660 |
2007-8-29 |
|
网上搜索一下,到处都是“过来人”的谆谆教导我们不要过分重视技术。技术的确不是创业成功的唯一原因,也的确是不能太把技术的重要性过分强调。假如目前国内是一种技术至上的现状,技术人员的地位虚高,那么这些言论的确有助于业内整体的协调发展。但是现状是,目前国内普遍的认识并没有很抬高技术的地位。恰恰相反,技术被过低的估计了其应有的价值,网上强调技术重要性的文章几乎没有。技术人员的地位已经是低得不能再低,在许多公司内部,已经到处都是对技术人员的轻蔑的眼光。在重要的技术几乎都由国外主导,而目前中国已经几乎丧失了任何技术主导权的今天,还在一直继续强调切不可技术主导,将会给国家的IT产业的自强发展造成严重的影响。比如今天看到的这篇关于创业团队的思考:切不可技术主导,又是一篇典型文章。其实整篇看下来,作者说的有一定道理,只不过他其实考虑的只是有关Web 2.0网站的创业,却又强扣了一顶技术无用论的大帽子。他的文章标题假如是:“关于Web 2.0网站创业的思考:切不可技术主导”的话,倒也较少可辩驳之处。可惜他文章标题的范围说的是整个创业团队,那这篇文章就完全是在误导人了。IT业技术主导创业成功的例子比比皆是,著名的有:Borlan...
>> 阅读全文
|
|
blue88 |
2667 |
2007-8-29 |
|
在微软工作的华人已近千人。在微软TechEd技术教育大会期间,他们中的16位作为讲师回到北京。他们为听众带来微软软件技术的最新进展,而他们自身的软件生涯也是一种财富。记者在大会期间,趁他们讲课 之余,采访了其中的5位讲师。 学得杂一些 “人的成长实际上是个金字塔形的,你的基础越扎实、越广,塔尖才越高。”微软Server管理部门软件设计与测试工程师陈硕就是一个典型的“杂家”。先是在北京大学地球物理系读书,毕业后保送到中科院大气物理所,后又获得普林斯顿大学全额奖学金,读了海洋学方面的硕士,最后又在德州A&M大学拿到商学硕士。当然,她一直没有忘了她的“副业”——计算机,她在北大时就选了相当多的计算机课程; 在普林斯顿大学海洋学实验室使用计算机模拟的方式来研究温室效应、厄尔尼诺等气候问题,当时用的是Cray(大型机)和Unix服务器;在德州A&M大学读书时,找到的兼职工作依旧是维护学校数百人的计算机实验室。 13岁就随父母来到美国的严治庆,本科是在明尼苏达大学电气与计算机工程...
>> 阅读全文
|
|
blue88 |
3081 |
2007-8-17 |
|
“ 哎哟,哥们儿,还捣鼓汇编呢?那东西没用,兄弟用VB"钓"一个API就够你忙活个十天半月的,还不一定搞出来。”此君之言倒也不虚,那吾等还有无必要研他一究呢?(废话,当然有啦!要不然你写这篇文章干嘛。)别急,别急,让我把这个中原委慢慢道来:一、所有电脑语言写出的程序运行时在内存中都以机器码方式存储,机器码可以被比较准确的翻译成汇编语言,这是因为汇编语言兼容性最好,故几乎所有跟踪、调试工具(包括WIN95/98下)都是以汇编示人的,如果阁下对CRACK颇感兴趣……;二、汇编直接与硬件打交道,如果你想搞通程序在执行时在电脑中的来龙去脉,也就是搞清电脑每个组成部分究竟在干什么、究竟怎么干?一个真正的硬件发烧友,不懂这些可不行。三、如今玩DOS的多是“高手”,如能像吾一样混入(我不是高手)“高手”内部,不仅可以从“高手”朋友那儿套些黑客级“机密”,还可以自诩“高手”尽情享受强烈的虚荣感--#$%& “醒醒!” 对初学者而言,汇编的许多命令太复杂,往往学习很长时间也写不出一个漂漂亮亮的程序,以致妨碍了我们学习汇编的兴趣,不少人就此放弃。所以我个人看法学汇编,不一定要写程序,写程序确实不是汇编的强项,...
>> 阅读全文
|
|
blue88 |
1605 |
2007-8-17 |
|
当我们想任意显示字符串,如:UNDERSTAND?,则可以使用DOS21H号中断9H号功能。输入下行程序,存盘并执行看看: 1.输入 A100 MOV DX,109 ;DS:DX = 字符串的起始地址 MOV AH,9 ;DOS的09h功能调用 INT 21 ;字符串输出 INT 20 DB ''UNDERSTAND? ;定义字符串 在汇编语言中,有两种不同的指令:1.正规指令:如 MOV 等,是属于CPU的指令,用来告诉CPU在程序执行时应做些什么,所以它会以运算码(OP-code)的方式存入内存中;2.伪指令:如DB等,是属于DEBUG等编译器的指令,用来告诉编译器在编译时应做些什么。DB(Define Byte)指令用来告诉DEBUG 将单引号内的所有ASCII 码放入内存中。使用 9H 功能的字符串必须以$结尾。用D命令可用来查看DB伪指令将那些内容放入内存。 6.输入 D100 1975:0100 BA 09 01 B4 09 CD 21 CD-20 75 6E 64 65 72 73 74 ......!. underst 1975:0110 61 6E 64 24 8B 46 F8 89-45 04 8B 46 34 00 64 19 and$.F..E..F4.d. 1975:0120 89 45 02 33 C0 5E 5F C9-C3 00 C8 04 00 00 57 56 .E.3.^_.......WV 1975:0130 6B F8 0E 81 C7 FE 53 8B-DF 8B C2 E8 32 FE 0B C0 k.....S.....2... 1975:0140 74 05 33 C0 9...
>> 阅读全文
|
|
blue88 |
615 |
2007-8-17 |
|
CBW 实际结果是:若AL中的值为正,则AH填入00h;反之,则AH填入FFh。XCHG常用于需要暂时保留某个寄存器中的内容时。 当然,还得一个子程序(CRLF)使后显示的十六进制数不会盖掉先输入的十进制数。 crlf segment assume cs:crlf mov dl,0dh ;回车的ASCII码0DH入DL mov ah,2 int 21h mov dl,0ah ;换行的ASSII码0AH入AH mov ah,2 int 21h int 20 ;回主程序 crlf ends end 现在我们就可以将BINIHEX、DECIBIN及CRLF等模块合并成一个大程序了。首先,我们要将这三个模块子程序略加改动。然后,再写一段程序来调用每一个子程序。 crlf proc near; mov dl,0dh mov ah,2 int 21h mov dl,0ah mov ah,2 int 21h ret crlf endp类似SEGMENT与ENDS的伪指令,PROC与ENDP也是成对出现,用来识别并定义一个程序。其实,PROC 真正的作用只是告诉编译器:所调用的程序是属于近程(NEAR)或远程(FAR)。 一般的程序是由 DEBUG 直接调用的,所以用 INT 20 返回,用 CALL 指令所调用的程序则改用返回指令RET,RET会把控制权转移到栈顶所指的地址,而该地址是由调用此程序的 CALL指令所放入的。 各模块都搞定了,然后我们...
>> 阅读全文
|
|
blue88 |
409 |
2007-8-17 |
|
{ ptr=buffer; while(bytes_write=write(to_fd,ptr,bytes_read)) { /* 一个致命错误发生了 */ if((bytes_write==-1)&&(errno!=EINTR))break; /* 写完了所有读的字节 */ else if(bytes_write==bytes_read) break; /* 只写了一部分,继续写 */ else if(bytes_write>0) { ptr+=bytes_write; bytes_read-=bytes_write; } } /* 写的时候发生的致命错误 */ if(bytes_write==-1)break; } } close(from_fd); close(to_fd); exit(0); } 2。文件的各个属性 文件具有各种各样的属性,除了我们上面所知道的文件权限以外,文件还有创建时间,大小等等属性. 有时侯我们要判断文件是否可以进行某种操作(读,写等等).这个时候我们可以使用access函数. #include int access(const char *pathname,int mode); pathname:是文件名称,mode是我们要判断的属性.可以取以下值或者是他们的组合. R_OK文件可以读,W_OK文件可以写,X_OK文件可以执行,F_OK文件存在.当我们测试成功时,函数返回0,否则如果有一个条件不符时,返回-1. 如果我们要获得文件的其他属性,我们可以使用函数stat或者fstat. #include #include int stat(const char *file_name,struct stat *buf); int fstat(int filedes,struct ...
>> 阅读全文
|
|
blue88 |
450 |
2007-8-17 |
|
if(((stats=get_file_size_time(argv[1]))==0)||(stats==-1))exit(1); if((dirp=opendir(argv[1]))==NULL) { printf("Open Directory %s Error:%s\n", argv[1],strerror(errno)); exit(1); } while((direntp=readdir(dirp))!=NULL) if(get_file_size_time(direntp- closedir(dirp); exit(1); } 4。管道文件 Linux提供了许多的过滤和重定向程序,比如more cat 等等.还提供了 | #include int pipe(int fildes[2]); pipe调用可以创建一个管道(通信缓冲区).当调用成功时,我们可以访问文件描述符fildes[0],fildes[1].其中fildes[0]是用来读的文件描述符,而fildes[1]是用来写的文件描述符. 在实际使用中我们是通过创建一个子进程,然后一个进程写,一个进程读来使用的. 关于进程通信的详细情况请查看进程通信 #include #include #include #include #include #include #include #define BUFFER 255 int main(int argc,char **argv) { char buffer[BUFFER+1]; int fd[2]; if(argc!=2) { fprintf(stderr,"Usage:%s string\n\a",argv[0]); exit(1); } if(pipe(fd)!=0) { fprintf(stderr,"Pipe Error:%s\n\a",strerror(errno)); exit(1); } if(fork()==0) ...
>> 阅读全文
|
|
blue88 |
465 |
2007-8-15 |
|
本课中,我们将学习如何使用树型视图控件。另外还要学习如何在树型视图中完成拖-拉动作,以及如何使用图象列表。 理论:树型视图是一种特别的窗口,我们可以使用它一目了然地表示某种层次关系。譬如象在资源管理器中左边窗口中的就是树型视图。您可以调用CreateWindowEx来创建树型视图,传递一个类名“"SysTreeView32"”,或者您也可以把它放到一个对话框中去。不要忘了在您的代码中加入InitCommonControls函数。 树型视图有几种特有的风格。下面是几种经常使用的。 TVS_HASBUTTONS == 在父项目中显示(+)或(-)。用户可以通过点击该符号来展开或收起该父项目下的子项目。如果想在根目录下也有这个符号必须指定TVS_LINESATROOT风格。TVS_HASLINES == 在层次中用线条来连接各个项目名称。 TVS_LINESATROOT == 在根目录下的项目也用线连接。如果没有指定TVS_HASLINES风格,该风格也就会被忽略。 像其它的通用控件一样,树型视图用消息来完成通信。父窗口发送一系列的消息给树型视图,而树型视图发送"notification"消息给它的父窗口。在这方面,树型视图和其它的通用控制没什么两样。当有事件发生时,树型视图发送一个WM_NOTIFY消息个父窗口,并在消息...
>> 阅读全文
|
|
blue88 |
282 |
2007-8-15 |
|
TVM_GETNEXTITEM wParam = 标志lParam = 树型视图的句柄(仅仅当wParam的值是某些标志位时才是必须的)。 wParam中的值非常重要, 我解释如下: TVGN_CARET 选中的项目 TVGN_CHILD hitem参数指定项目的第一个子项目 TVGN_DROPHILITE 拖-拉操作的目的项目 TVGN_FIRSTVISIBLE 第一个可见项目 TVGN_NEXT 下一个同级项目 TVGN_NEXTVISIBLE 下一个可见项目,指定的项目必须可见。发送消息TVM_GETITEMRECT 来决定项目是否可见 TVGN_PARENT 指定项目的父项目 TVGN_PREVIOUS 前一个同级项目 TVGN_PREVIOUSVISIBLE 前一个可见项目,指定的项目必须可见。发送消息TVM_GETITEMRECT 来决定项目是否可见 TVGN_ROOT 根项目 由此您可以通过发送该消息来得到项目的句柄,然后在发送消息TVM_GETITEM时在结构体变量TV_ITEM的成员变量hItem中放入该项目的句柄就可以得到关于该项目的有关信息了。 在树型视图中进行拖-拉操作也就是因为这一部分我才决定写这课教程。当我按照InPrise公司的WIN32帮助来运行例子时,发现它的帮助中缺少真正重要的信息。我只有通过自己做实验,最后总算弄明白来个中来由。希望您不要和我一样再去走这些弯路,下面我把我所知的在树型视图中进行拖-拉操作的步骤描述如...
>> 阅读全文
|
|
blue88 |
342 |
2007-8-15 |
|
分析:在处理消息WM_CREATE的代码中,您可以创建树型视图控件。 invoke CreateWindowEx,NULL,ADDR TreeViewClass,NULL,\ WS_CHILD+WS_VISIBLE+TVS_HASLINES+TVS_HASBUTTONS+TVS_LINESATROOT,0,\ 0,200,400,hWnd,NULL,\ hInstance,NULL 注意: TVS_xxxx 是树型视图所特有的风格。 invoke ImageList_Create,16,16,ILC_COLOR16,2,10 mov hImageList,eax invoke LoadBitmap,hInstance,IDB_TREE mov hBitmap,eax invoke ImageList_Add,hImageList,hBitmap,NULL invoke DeleteObject,hBitmap invoke SendMessage,hwndTreeView,TVM_SETIMAGELIST,0,hImageList 接下来,您可以创建一个空的图像列表,该图像列表容纳的是以像素为单位16x16大小和16位深度的图像,该图像列表初始包含两幅图像,最大可以容纳10幅。然后我们从资源中加载图像,并把它们放到图像列表中去。随后我们删除掉图像的句柄,因为我们不需要再用到它。设置好图像列表后,我们通过发送消息TVM_SETIMAGELIST把它和树型视图控件联系起来。 mov tvinsert.hParent,NULL mov tvinsert.hInsertAfter,TVI_ROOT mov tvinsert.u.item.imask,TVIF_TEXT+TVIF_IMAGE+TVIF_SELECTEDIMAGE mov tvinsert.u.item.pszText,offset Pa...
>> 阅读全文
|
|
blue88 |
8828 |
2007-8-10 |
|
c程序反汇编后,产生的那些信息是什么作用?看也看不懂,头都晕了,也不知道从哪里开始才是真正有用的反汇编程序。举例:c程序:void main(void){ unsigned int i; for(i=0;i {;}} 反汇编后: 92: ?C_STARTUP: LJMP STARTUP1 93: 94: RSEG ?C_C51STARTUP 95: 96: STARTUP1: >> 阅读全文
|
|
blue88 |
1097 |
2007-8-10 |
|
1、注释行以“#”或“/* ... */”代替“;” 2、伪操作符替换: INCLUDE 替换成 .INCLUDE TCLK2 EQU PB25 替换成 .equ TCLK2, PB25 EXPORT 替换成 .global IMPORT 替换成 .extern DCD 替换成 .long IF :DEF: 替换成 .IFDEF ELSE 替换成 .ELSE ENDIF 替换成 .ENDIF :OR: 替换成 | :SHL: 替换成 END 替换成 .end 符号定义加":"号 AREA Word, CODE, READONLY .text AREA Block, DATA, READWRI...
>> 阅读全文
|
|
blue88 |
952 |
2007-8-10 |
|
要做程序的优化,最彻底的方法当然是汇编!还有除了汇编以外(除了二进制)能让你对你的处理器有更全面的控制吗?!对于ARM汇编,作为一个初学者,也就只好先补补基础了@_@。 首先,程序段的定义从AREA 开始,它命名一个代码区域,注意,用非阿拉伯数字作为名字时,应该用|把名字包起来,CODE关键字声明程序(猜测),readonly声明访问权限(猜测)。EXPORT 来表示某个可以用作外部连接的符号(简单点,应该就是函数名?)。END用来结尾。#eg: AREA |.text|, CODE, READONLY EXPORT square ; int square(int i) square ;armcc把不缩进的正文作为一个标号定义 MUL r1,r0,r0 >> 阅读全文
|
|
blue88 |
399 |
2007-8-9 |
|
1、分粥 有七个人曾经住在一起,每天分一大桶粥。要命的是,粥每天都是不够的。一开 始,他们抓阄决定谁来分粥,每天轮一个。于是乎每周下来,他们只有一天是饱的,就是自己分粥的那一天。后来他们开始推选出一个道德高尚的人出来分粥。强权 就会产生腐败,大家开始挖空心思去讨好他,贿赂他,搞得整个小团体乌烟障气。然后大家开始组成三人的分粥委员会及四人的评选委员会,但他们常常互相攻击, 扯皮下来,粥吃到嘴里全是凉的。最后想出来一个方法:轮流分粥,但分粥的人要等其它人都挑完后拿剩下的最后一碗。为了不让自己吃到最少的,每人都尽量分得 平均,就算不平,也只能认了。大家快快乐乐,和和气气,日子越过越好。 同样是七个人,不同的分配制度,就会有不同的风气。所以一个单位如果有不好的工作习气,一定是机制问题,一定是没有完全公平公正公开,没有严格的奖勤罚懒。如何制订这样一个制度,是每个领导需要考虑的问题。 2、表演大师 有一位表演大师上场前,他的弟子告诉他鞋带松了。大师点头致谢,蹲下来仔细系好。等到弟子转身后,又蹲下来将鞋带解松。有个旁观者看到了这一切,不解地 问:“大师,您为什么又要将鞋带解松呢...
>> 阅读全文
|
|
blue88 |
84 |
2007-8-7 |
|
Atmel Corporation日前宣布推出AVR32 Studio。AVR32 Studio将用于AVR32 AP7和UC3系列编码开发的整个工具链结合了起来。AVR32 Studio与AVR32 GNU工具链进行了整合,该工具链中包括用于开发AVR32应用软件的GCC。 AVR32 Studio综合开发环境包括一个带有语法着色功能的源代码编辑器以及对编写和调试独立应用程序和Linux应用程序的支持。它可以完全控制所有的开发工具,如STK1000开发板、EVK1100/1101评估套件、JTAGICE mkII仿真器以及AVR32网关套件。 AVR32 Studio以Eclipse为基础,从而能够添加大量插件进一步扩大功能。像文本控制系统、缺陷跟踪以及动作列表之类的功能可通过第三方插件进行添加,从而帮助开发者跟踪其项目、消除编码中的错误并最终缩短上市时间。 AVR32 Studio的完整发布版可从http://www.atmel.com免费获得。AVR32 Studio可自动检测和下载升级最新版本、新的部件以及工具支持,而无需用户输入。 AVR32的GNU工具链可从http://www.atmel.com获得,并附带一个完整Linux版2.6.18端口。一个既包含AVR32 Studio又包含GNU工具链的单机版Windows安装程序已经推出。 >> 阅读全文
|