如鹏网 大学生计算机学习社区

CowNew开源团队

http://www.cownew.com 邮件请联系 about521 at 163.com

  语源科技BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  363 随笔 :: 2 文章 :: 808 评论 :: 0 Trackbacks

2008年10月23日 #

首期费用5800元,杨中科老师在线客服QQ:杨老师

最强悍的师资!最强悍的课程!想成为强悍程序员的最强悍选择

3大真实项目循序渐进、环环相扣、逐步加深!

3大独有优势(师资强、项目真、课程深)不但能让你找到工作,还能让你找到好工作


培训目标


本课程重点培养掌握ASP.Net、WinForm、ADO.net、Microsoft SQLServer数据库、Oracle数据库的实战与理论双结合型工程师。通过本课程多个真实项目的训练,学员还可掌握软件架构设计思想、搜索引擎优化、缓存系统设计、网站负载均衡、系统性能调优等软件编程高级技术。让学员毕业后真正具备两年左右软件开发经验。

招生对象


本课适合于了解c#基本语法,对.net编程有着浓厚兴趣的人士。

课程特色

一、强悍的师资:微软一线高级软件工程师亲自授课,教授的绝非三脚猫功夫
当今社会,为了特显师资实力,众多培训机构都打着“我们的老师来自微软、IBM”之类的话,但实际上大多都是“水货”。传智播客的.Net教师真真实实来自于微软公司,是绝对的行货,能够经受得起全社会的考证。传智播客的.Net教师不但是微软一线高级软件工程师,同时也是众多技术书籍的作者。由这样的原创作者讲课可想而知课程条理清晰、讲解清楚,知识面广、深度足够!下面是我们.Net教师杨中科在微软工作时的照片及其出版的书籍。
杨中科在微软时的工作照 《专家手记——AJAX开发实战 》 《程序员的SQL金典》 《自己动手写开发工具》 《JavaScript网页开发-体验式学习教程 》
 
二、独家微软内部技术资料,率先讲解.Net4.0(WF、WCF、Linq)
随着微软推出.Net 4.0和Visual Studio 2010,掌握.Net 4.0中WF、WCF、Linq等新技术的学员将在职业竞争中具有更大的竞争优势,传智播客的老师因为之前就职于微软,因此得到了微软.Net4.0技术和VisualStudio2010的内部资料,保证我们的学员掌握的知识都是领先于他人的。
 
三、真实的项目:让你切身感受到什么才是真实的商业项目
当今在到处都是大忽悠的环境下,传智播客拒绝忽悠,教学所用的项目来自于真实的商业项目。现在不少培训机构为了招生,都打上论坛系统、通讯录系统、教学管理系统等项目,但很多都只是演示的demo,离真实的项目还远着呢,所以建议大家,你可以不选择传智播客,但一定要对培训机构进行检验,忽悠的话,只要文笔好的人都会写,但真实的项目是吹不出来的。
 
四、课程深:方能让你在职业竞争中鹤立鸡群,不但能找到工作,更能找到一份好工作
受全球金融危机的影响,IT行业萎缩、人才需求下滑,现在的情况是:一个工作岗位往往几佰人竞争,队伍中更是不缺乏具有一、二年工作经验的开发人员。如何让自己在几佰人的竞争中脱颖而出?没有他途,只有把技术学的更深入,更牛,方能取胜。传智播客的课程不但可以让你找到工作,更能让你找到一份好工作。那么传智播客毕业的学生,有没有没找到工作的?可以肯定地说:“有”。由于传智播客的课程较深入,每个班偶尔会有一两个同学坚持不下来,睡懒觉,9点上课,10点才来,课下也不动手练习。试想,如果自己不付出努力,再强大的师资,再好的课程也是无法帮助他就业的。对于这些个别同学,传智播客只能建议他复读,一些愿意回来复读的同学经过认真学习后都能找到工作。
 
五、业界认可:SOHU、用友、神州数码等在职软件工程师均推荐自己的亲戚朋友到传智播客学习
传智播客是CSDN下属子公司,借助CSDN平台,传智播客聚集了一批业界精英。有相当一部分老师在IT业界是颇有知名度的,而且有些老师还是推动某个技术普及的先行者(如果你认为我们是吹牛的话,就用baidu/google去检验吧)。由这些精英共同制定的课程不但反映了业界的主流技术,还具有前瞻性。正因为传智播客在软件界内被广泛认可,所以在招收的学生当中,就有相当一部分是在职软件工程师推荐过来的。
 

课程安排    


第一阶段:C#编程基础/Windows编程基础
[ 注:我们一直处于主流技术的最前沿,别人还在讲.net3.5的时候,我们已经在讲.net4.0了,国内也只有传智播客才能做到 ]
核心技术课程 C#编程基础:面向对象编程(类、继承、接口、设计模式、异常、反射)、枚举、Attribute、C#新特性(隐式类型、using、对象初始化器、集合初始化器、匿名类型、扩展方法、自动属性、LINQ、动态类型、可选参数)、常用数据结构(List、IDictionary、Array)、常用.net类库、泛型、.Net高级技术(Assembly、AppDomain、CLR、IL)等。 Windows编程基础:常用WinForm控件(TextBox、CheckBox、Button、RadioButton、ListBox、ComboBox、通用对话框、Menu、Timer等)、控件布局。

 

第二阶段:WinForm+WCF+Oracle+呼叫中心项目
[ 注:我们一直处于主流技术的最前沿,传智播客是第一个讲解基于微软最新WCF技术的机构 ]
核心技术课程 Oracle数据库开发基础:Oracle数据库基础管理、数据库备份/恢复、SQL语言(SELECT、INSERT、UPDATE、DELETE、JOIN、UNION等)、数据库函数、PL/SQL语言、视图、存储过程、触发器、数据库设计范式、数据库调优。
WinForm高级技术:WinForm高级控件(DataGridView、ListView、TreeView、WebBrowser、CheckedListBox、TabControl、NotifyIcon、SplitContainer、PropertyGrid等)的使用、多线程编程(Thread、BackgroundWorker、线程池)、自定义控件、Windows核心编程(ActiveX、进程管理、PInvoke)、报表与打印。
ADO.Net技术:ADO.Net的基本概念、DBConnection、DBCommand、DataReader、DataSource、DataAdapter、DataSet、DataTable、DataView、数据绑定、数据库连接池、SQL注入漏洞攻击的防护。
WCF开发技术:Socket套接字编程、MSMQ、WCF、SOAP与WebService。
阶段案例 省级汽车4S连锁店呼叫中心系统(项目金额35万、耗时5个月):本系统是一个C/S模式的分布式系统,一个核心服务器程序挂接20多个坐席端程序,坐席人员分布于3个核心客服中心,并且使用VOIP系统将10余个地市的4S连锁店的业务专家连接为专家坐席,为全省上万名车主提供报修、救援、保险理赔、回访关怀等服务。包含来电信息提示、CRM、历史信息自动跟踪、报修单、回访、来电屏蔽、历史通话跟踪、FAQ知识库管理、黑名单、转接、报表统计等模块。虽然基于B/S模式的系统越来越多,但是由于C/S模式有B/S所不具有的一些优点,因此在呼叫中心、银行系统、企业生产内网系统等应用中C/S模式仍然是不可替代的,因此熟悉WinForm技术的开发人员仍然非常吃香。这个项目将ADO. Net技术融入到开发中,并且采用了微软力推的新技术WCF进行分布式开发,通过这个项目,学员可以获得WinForm、ADO. Net、Oracle、WCF分布式开发等开发技能,并且获得了价值35万元、耗时5个月真实项目的业务系统开发经验。

 

第三阶段:ASP.net+VSS+SQLServer+WF+进销存项目
[ 注:我们一直处于主流技术的最前沿,传智播客是第一个讲解基于微软最新工作流引擎技术WF的机构 ]
核心技术课程 ASP.Net开发:常用ASP.net控件(AdRotator、BulletedList、Button、Calendar、CheckBox、DropDownList、HiddenField、HyperLink、Image、ImageButton、LinkButton、ListBox、Literal、MultiView、PlaceHolder、RadioButton、RadioButtonList、Substitution、Table、TextBox等)、文件上传下载、数据绑定、数据验证(RequiredFieldValidator、CompareValidator、RangeValidator、CustomValidator、自定义Validator、ValidationSummary)、GridView(分页、排序、过滤、自定义列、选择、编辑、删除、添加、自定义模板)、Repeater、ListView、DataPager、多层开发、WebControl、UserControl。
SQLServer数据库开发基础: SQLServer数据库基础管理、T-SQL语言、SQL Server Management Studio。
工作流开发:WF技术基础、WF与ASP.net的集成。
协同开发:VSS/CVS/SVN/TFS、团队开发、Bug管理、需求管理、持续构建、敏捷开发
阶段项目 进销存项目(项目是一个金额600万的项目中的核心模块):本系统将企业的采购、仓储、销售等一系列核心流程有机的整合起来,保证物流、资金流与信息系统的畅通无阻。提供包含了数据导入导出、批量数据处理、异构系统集成、订单号生成、分录、级联选择、红冲、勾稽、结账、反操作、入库、盘点、审批流程、报表等功能在内的企业内部信息系统常见的功能模块。这个项目使用最流行的ASP.Net多层式开发,使用微软主推的最新工作流引擎技术WF进行审批流程模块的开发,并且使用VSS进行团队协同开发。通过这个项目,学员不仅能够学会ASP.Net、WF等技术,而且进一步获得了使用.net技术进行大型企业级信息系统开发的经验。
 
 
第四阶段:ASP.net+VSS+SQLServer+CodeSmith+大型网站优化技术+网站内容管理系统CMS+站内搜索引擎
核心技术课程 ASP.Net高级技术:MasterPage、AJAX(UpdatePanel、ScriptManager、AJAX Control Toolkit‎、JQuery)、安全机制(Membership、Forms验证、AD验证、Login控件、CreateUserWizard控件)、ASP.Net核心对象(Request、Response、Cookie、Session、Profile)、导航控件(SiteMapPath、Menu、TreeView)、缓存技术、主题、国际化。搜索引擎技术:Lucene、多线程开发、爬虫技术、网页分析、正则表达式。大型网站开发技术:代码生成、SEO、网站调优、采集器、RSS/XML、网站防黑(防XSS攻击、防注入漏洞攻击、防CC攻击、防挂马、防盗链、防敏感词)、IIS管理与调优。
阶段项目 如鹏网项目(项目是已经上线近两年的网站,日访问量最高18000人次,网址www.rupeng.com):本系统旧版本基于PHP、J2EE技术,由如鹏网开发者亲手操刀用.net重写新版本。系统分为前台Web界面、后台管理界面、站内搜索、监控客户端四个子系统,包含栏目管理、文章管理、采集器管理、评论管理、投票管理、敏感词过滤、用户管理、友情链接管理、站内搜索、模型管理、缓存管理、广告管理、RSS输出、水印设置、搜索引擎优化设置、数据备份恢复等模块。通过这个项目,学员不仅可以在实战中巩固对前面学习的ASP.Net、ADO.Net、WinForm、WCF等知识的掌握,还可以掌握缓存、SEO、搜索引擎技术、AJAX等大型互联网开发中涉及到的技术,更可以获得系统架构师级别的开发人员对系统进行架构、设计和实现的能力。
 
第五阶段:传智播客特色课程
[ 注:我们的老师均来自企业一线高级技术主管,更了解企业对简历的要求,因此我们学员投放的简历命中率很高 ]
项目名称 总结以往所学知识,介绍面试、沟通等个人发展所需的知识和技巧。


培训方式


培训时间:3个月
培训方式:全日制脱产,每周5天上课,早9:00-晚 8:00 。
posted @ 2010-02-02 00:12 CowNew开源团队 阅读(1345) | 评论 (2)编辑 收藏

 

微软借助它在桌面领域的垄断地位不断推广它的最新技术,特别是做为微软最核心技术的.Net更是得到了最大力度的推广,社会上对掌握.net技术的开发人员的需求也越来越多。

为了帮助用最短的时间学到尽可能多的知识、掌握真实项目的开发经验,从而找到满意的工作,传智播客开办了“.Net 就业培训班”。“.Net 就业培训班”由任职于微软中国的杨中科老师担任主讲,重点培养掌握ASP.NetWinFormADO.netMicrosoft  SQLServer数据库、Oracle数据库的实战与理论双结合型工程师。通过本课程呼叫中心、进销存、如鹏网CMS等多个真实项目的训练,学员还可掌握软件架构设计思想、搜索引擎优化、缓存系统设计、网站负载均衡、系统性能调优等软件编程高级技术。让学员毕业后真正具备两年左右软件开发经验。

我们的课程有如下几个优点:

1、价格低

市面上很多.net培训班的收费都要上万元,为了帮助更多的同学掌握实实在在的就业技能,传智播客决定改变这种培训暴利的行业“潜规则”,让同学们得到真正的实惠,我们的“.Net 就业培训班”学费仅需5800。同时我们保证“低价高质”,降低价格并不会使得您学到的东西打折扣,学更多的东西花更少的钱,怎么算怎么划算!

2、师资强

传智播客拥有非常强的师资力量。比如著名的培训大师张孝祥、著名Java培训讲师黎活明。

值得一提的是,本次的“.Net 就业培训班”的领衔主讲老师杨中科,他曾经任职于微软中国、金蝶软件等公司,著有《自己动手写开发工具》、《程序员的SQL学习笔记》、《J2EE开发全程实录》、《专家手记——AJAX开发实战》等技术图书,主持或参与过招商局集团、中国工商银行、深圳发展银行、湖南烟草局、力诺集团等大中型企业的信息系统建设,他创建了专门为计算机专业在校生提供学习指导的网站如鹏网(www.rupeng.com ),他撰写的文章和录制的视频教程帮助无数的同学走出迷茫,也因此获得了“CSDN学生大本营2009年度十佳老师”的称号。

下面是一些学生给杨中科老师的评价“听杨老师讲课有一种醍醐灌顶的感觉”、“杨老师讲课真牛B”、“讲课很认真,每个学生可能犯的错误都考虑到了”、“我觉得杨老师讲的非常的好,很适合初学者来学习,我很喜欢老师的讲课方式”、“我觉得杨老师比现实中的某些老师尽职多了, 这才是老师!”

3、项目真

传智播客的培训课程中用的项目案例都是真实的项目,而不是那些玩具级别的演示项目。要知道同样叫“客户信息管理系统”,有的可能是一个初学者花了3天写出来的玩具级别的,有的则是多名资深软件工程师耗时几个月开发出来的,做为要参加培训的人一定不能被“客户信息管理系统”等这样的名字忽悠,要看看它是不是实际的项目。本次“.Net 就业培训班”采用的三个项目都是真实的项目,分别是合同额35万的省级呼叫中心、省级进销存系统、运营两年的网站。

4、课程内容领先

传智播客紧跟行业最新技术的动态,将行业中应用最广的最新的技术引入课堂教学,传智播客是目前唯一一个将微软最新.Net 4VisualStudio 2010技术引入教学的培训机构,并且将WFWCFWPF/Silverlight等微软主推的新技术融入到项目案例中,保证学员学习的时候就站在了行业的最高点。

杨中科老师任职于微软公司,能够接触到微软的内部资源,从而先一步得到微软的最新技术动向、最新的开发工具、内部的技术资料等,从而保证学员学到的是微软最新、最主力推广的技术。

教学方式:实地培训,人手一机;

培训地点:北京;

开班时间:20104月;

培训周期:3个月;

课程内容、报名方式等点击此处查看招生简章

最低的价格、最强的师资、最真实的项目、最新的课程内容,还等什么,快来报名学习吧!

posted @ 2010-02-02 00:11 CowNew开源团队 阅读(1204) | 评论 (0)编辑 收藏

这两天一张“有图有真相”的图片在各大论坛和QQ群中疯传,内容如下:

目前热播的电视剧《蜗居》第24集3:30秒截图,在小贝 的 桌子上那本书放大看是《大规模C++程序设计》,说明小贝是程序员。小贝被宋思明(市长秘书)戴了绿帽子。为无数想为 软件开发献身的人士叹惜呀。搞了一辈子C++,结果老婆跟了宋思明。 这部电视剧深刻揭露了程序员的悲剧性。相信这个重大发现将彻底粉碎那些少年们对程序员这个职业的向往,这个时代女生不会因为你写了一个搞笑程序而嫁给你。
建议广大程序们建议你们周围的少男们看一下蜗居,如果他以你为荣,以后想当程序员。你可以告诉他,小贝就是程序员,然后告诉他宋思明是公务员。相信他就会重新考虑自己人生的选择了!!!!!!!!!!


本以为发帖子的人只是拿来开玩笑
    但是看了很多网友、同学的回帖却明显感觉气氛不对,很多同学竟然貌似很严肃的对待了这件事情,纷纷说“嗨,搞计算机真没前途,还是当官好”、“当程序员没前途哇,都被人当绿帽子了”、“不学计算机了,看似是白领,没想到房都买不起,自己女朋友被宋思明拐跑了”、“不学编程了,去考公务员吧!”。本以为这些网友会“放下程序,拿起公务员考试题”呢,没想到在另外一个帖子里又开始再跟别人讨论魔兽攻略了。我才明白小贝不是可悲的,这些人才是可悲的。

    在这些人心中“当程序员的小贝被当公务员的宋思明抢走老婆”只是他不去学计算机、不在计算机行业深入研究的增加一个借口而已。“反正毕业也找不到工作不学习了”,这样就有借口不去上课了;“搞计算机的是吃青春饭的,没前途”,所以就蒙起被子继续睡大觉挥霍用来吃饭的青春;“宿舍老三的老爸是局长,人家毕业后直接回家当科长,咱们好好学不还是失业吗?算了”,然后继续在电脑上打WOW; “如鹏网里经常和我聊那个function321拿到一大堆公司的offer,那是人家有计算机天赋呀”,然后继续看着《火影忍者》等待天赋降临;“隔壁宿舍老大人家在学校里自己就开公司,现在赚的钱都自己买了别克商务车了,嗨,咱们毕业还要写代码混饭吃”,放下翻了没有两页的《C程序设计》仰天长叹。逃避奋斗总会有理由的!

    有人说“这个社会是不公平的”,我却说“这个社会是非常公平的”。“宿舍老三的老爸是局长,人家毕业后直接回家当科长”那是人家老爸奋斗的结果; “隔壁宿舍老大人家在学校里自己就开公司,现在赚的钱都自己买了别克商务车了”,那是人家自己钻研经商之道奋斗出来的结果;“宋思明有能力帮海藻买房、买衣服,给小贝戴绿帽子”, 那是人家宋思明在没有硝烟的官场上出生入死当上市长秘书的结果。成功的人总是有成功的理由,理由不尽相同;失败的人失败的理由却永远永远相同,那就是——懒惰。

    还是我以前在《【解惑】专科生在IT的发展之路》这篇文章中说的那句话“社会上有成功的人永远都是少数人,做任何事情都是只有20%的人成功,另外80%的人都是失败的”。以《蜗居》中的宋思明为例,大家都认为宋思明当了公务员,走上了仕途,所以才现在风风光光,可是你知不知道有大把的公务员熬了一辈子临退休连个最小的副科长都没熬上的,有很多人好不容易考上公务员没过几年却由于自己后台不硬、没讨好领导、得罪有背景的同僚被淘汰……,最后能走上宋思明那样地位的人少之又少。而且宋思明也并不是真的那样风风光光,他要防着别人捅刀子,要保证自己的那些违法乱纪的勾当不被揭穿,宋思明容易嘛?

    有人总是说“搞计算机毕业就失业”、“搞计算机的小贝买不起房子”,先不说网易的丁磊、巨人的史玉柱、金山的求伯君、CSDN的蒋涛、江民杀毒的王江民、discuz的戴志康、金蝶的袁红岗等等这些计算机技术出身的成功人士,就是在中关村混了三五年、年薪十万以上、能全款买下一套好房的程序员也一大堆,当然更多的程序员是混了三五年还是月薪三四千的月光族。非常正常!正符合我说的“做任何事情都是只有20%的人成功,另外80%的人都是失败的”的这个说法。公务员中混的好和IT认识中混得好的一样,公务员中混的差和IT认识中混得差的也没什么不同。
    别让“当程序员的小贝被当公务员的宋思明抢走老婆”这样的话成为你逃避的理由,如果想在IT这行混下去,继续努力,即使成不了求伯君,也至少能弄个年薪十万。如果没有在IT行业混下去的想法,希望成为下一个宋思明的话,那么抓紧关掉魔兽、叠好被子,拿起公务员考试的书,然后发动你七大姑八大姨看看有没有亲戚当局长的,当上公务员以后把握风向、跟对队伍,早日完成你光宗耀祖的目标。


成功的人是不同的,失败的是却是相同的!

posted @ 2009-12-15 16:36 CowNew开源团队 阅读(14551) | 评论 (43)编辑 收藏

php中可以使用strlen或者mb_strlen计算字符串的长度,但是这些长度计算的都是在计算机中表示的长度,并不是实际在屏幕上显示的宽度。如下图(使用的是arial字体):


最理想的实现方式是使用imagettftext计算字符串使用特定字体显示的宽度:
function tf_strlen($str)
{
 return ceil(tf_strwidth($str)/tf_strwidth('测'));
}
function tf_strwidth($str)
{
 $im=imagecreatetruecolor(10,10);
 $r=imagettftext($im, 12, 0, 5, rand(14, 16),0, 'arial.ttf', $str);
 return $r[2]-$r[0];
}

需要在本地计算机的字体文件夹中找到'arial.ttf',然后上传到php页面同级的目录下。这样调用tf_strlen得到的就是字符串在屏幕上的显示宽度了。但是因为imagettftext是GD级别的操作,因此效率非常低,编写下面的程序验证

$begin=microtime(true);
$im=imagecreatetruecolor(1000,1000);
for($i=0;$i<10000;$i++)
{
imagettftext($im, 12, 0, 5, rand(14, 16),0, 'arial.ttf', "rupeng.com 如鹏网 在校不迷茫,毕业即辉煌");
}
$t1=microtime(true)-$begin;
echo 'imagettftext:'.$t1.'<br/>';
$begin=microtime(true);
for($i=0;$i<10000;$i++)
{
strlen("rupeng.com 如鹏网 在校不迷茫,毕业即辉煌");
}
$t2=microtime(true)-$begin;
echo 'strlen:'.$t2.'<br/>';

echo $t1/$t2.'<br/>';

运行后发现imagettftext的运行时间是strlen的4000多倍,太慢了,而且CPU占用率非常高,因此被否定。

经过观察发现arial字体下,汉字的宽度是一致的,而1、i、l等字符的宽度大约是汉字的0.4倍,而阿拉伯数字(除了1)的宽度则是汉字的约0.7倍,小写字母(除了i、l等)的宽度是汉字的约0.7倍,大写字母则是汉字的0.8倍,其他字符也可以得出相应的倍率。因此我编写了下面程序用来计算字符串占的宽度(单位是1/2的中文宽度)。

function arial_strlen($str)
{
 $lencounter=0;
 for($i=0;$i<strlen($str);$i++)
 {
  $ch=$str[$i];
  if(ord($ch)>128)
  {
   $i++;
   $lencounter++;
  }
  else if($ch=='f'||$ch=='i'||$ch=='j'||$ch=='l'||$ch=='r'||$ch=='I'
  ||$ch=='t'||$ch=='1'
  ||$ch=='.'||$ch==':'||$ch==';'||$ch=='('||$ch==')'
  ||$ch=='*'||$ch=='!'||$ch=='\'')
  {
   $lencounter+=0.4;
  }
  else if($ch>='0'&&$ch<='9')
  {
   $lencounter+=0.7;
  }
  else if($ch>='a'&&$ch<='z')
  {
   $lencounter+=0.7;
  }
  else if($ch>='A'&&$ch<='Z')
  {
   $lencounter+=0.8;
  }  
  else
  {
   $lencounter++;
  }
 }
 return ceil($lencounter*2);
}

经过大量的测试,发现和imagettftext的运行结果非常接近,而速度则比imagettftext高很多,CPU占用率也低很多。
解决思路对于其他语言,比如C#、Java等都适用。

posted @ 2009-11-15 14:06 CowNew开源团队 阅读(4014) | 评论 (5)编辑 收藏

今天和一位朋友(微软的资深架构师,按照年龄、阅历分,我叫他老师)吃饭,聊到他的爱好,他喜欢国学和习武,聊到国学的时候,他就说现在他在做一个网站,就是传播真正的国学,而不是像易中天那样披着学术的名义说评书。我问他搞这种真正的国学会不会不像易中天那样“大话国学”那么流行、那么赚钱,他说“我只是想传播一种正确的思想,相信大家都会有能力辨别正确的思想,当大家知道那些人是在恶搞国学而我是在真正的弘扬国学的时候,人的趋向争取东西的本性就会使得他接受我的正确的东西,而且会把这种正确的东西传播给其他人”。想一想这和我在如鹏网的工作也是有相似点的,现在主流的宣传口号都是“大学里学的东西过时了,没用了”,因为这是符合宣传这种想法的人们的利益的,而我在传播的“大学里学的东西永远不过时,只是需要同学们多动手”也是“非主流”的,但是是我认为正确的,这种正确的思想也在使越来越多的同学"趋向争取东西的本性就会使得他接受我的正确的东西",而且有很多同学都是靠“正确的东西传播给其他人”的这种方式知道我的这些想法的。

又谈到哲学的问题,说到很多人学哲学的时候都是死记硬背那些哲学的原理,背了半天什么真正的东西都没学到;而有的人则是看了古今中外的很多史料、案例,悟出一些道理,然后再来看那些哲学的原理,发现这些哲学原理都很容易的和之前学的史料对应上,这样轻松的就从本质上掌握了这些哲学的原理。我又联想到同学们学计算机,很多人把编程语言当成理论学,背关键字、背函数、背代码片段,到头来什么都没学到,而有的人则一边学一边练程序,练过大量程序以后再来看书指导自己的实践,反正掌握的更牢靠。

接着又谈到了关于武术的问题。他说在练武术的时候很多人都去学那些套路、招式,最后学到的只是花拳绣腿,真正的武术大家是不看重那些招式的,他们那些招式都是在实战中悟出来的,没有定法,灵活运用,两次不同的实战中用到的都是不同的招式。而那些招式只是给想“学学玩”、“学一学到别人面前显摆”的人用的,让他们学上两招去唬人,是一个玩具而已,其实什么用都没有,要想学到真正的武术必须下苦功自己练,多实战,然后自己悟。和学计算机一样,很多人学黑客,其实就是拿一些真正的黑客开发出来的黑客工具“玩一玩”,满足一下虚荣心而已;有的人学编程则学一大堆MFC、Struts之类的框架、工具,到处炫耀自己“懂得高级编程技术”,到最后却连最基本的一个for循环都写不好。

最后还谈到了学哲学中的“只和一个师傅学”,他的一个朋友去学哲学,问师傅世界上这么多哲学的书什么时候能看完,师傅告诉他只看一本书就可以,他用了五年的时间看这一本书,然后五年后师傅把其他的哲学书拿到他面前,他翻了翻就说“师傅我明白了,这么多不同的书其实本质上都是说的一样的道理,不用看其他的书了”。我又联想到同学们学计算机,有的同学刚学C++的时候就惊呼“听人说有好多C++的经典书《Essential C++》、《Thinking in C++》 、《C++ Primer》 、《Exceptional C++》、《More Effective C++”》……是不是要都学完才是掌握了C++,这要学到身边么时候呀?”,我和他说“你把你现在学的C++的教材学好了,每个程序都能熟练的写出来,然后再回头看这么多不同的书其实都不值得看了”,事实也是如此,经过半年多的苦练,等他回来再翻这些书他说了一句话“这些当年我想像的大部头现在翻起来都大同小异,每本书能挑出5页对我不同的东西都很难”。

万物通一理!

posted @ 2009-11-04 18:51 CowNew开源团队 阅读(3301) | 评论 (5)编辑 收藏

昨天和朋友去吃饭,本打算去海底捞吃的,没想到还需要排号,很多人都在等着排号,太火爆了。当时和朋友开玩笑说“这个店要是我的我就发达了”。
以前就听说过海底捞的故事,说他们的管理文化是多么的特别,才造就了现在的火爆场面。那天根本没有在那里吃,人太多,转了一圈就出来了,但是就是转这一圈就感触颇深:由于外面冷,里面热,进了门眼睛立即就一片雾蒙蒙,没想到服务员立即就递上来一片擦镜布,这种做法绝对不是总部传下来的“旨意”,而是一线的服务员发现的问题,立即就能想到更好服务顾客的办法,是一线员工在做决策,而不是靠一个领导来做决策;在等坐的时候服务员把你引到等坐区域,上来热饮,还告诉傍边的小吃、水果都是免费的,随意取,看旁边还有等坐的人在打牌、下棋,对于很多“利润为王”的餐厅来说,绝对不会让一个等坐的客人随意喝热饮、随意吃小吃,甚至只是在那坐了一下没吃饭也要收服务费,因为在他们心中“那都是成本”,而海底捞做到了,所以海底捞火爆了;在我们因为人太多,决定不在海底捞吃的时候,服务员竟然还主动送上一包火锅底料做为道歉,这就是传说中的“只要把顾客服务高兴了,一线员工有权利支配餐厅的资源,无需请示主管”。


岂有不火爆的道理。以前我总是崇拜西方科学的管理方式,现在慢慢感觉到曾仕强先生的《中国式管理》是有一定道理的。

引用一些网络上关于海底捞的资料:

虽然早已对海底捞的火暴有所耳闻,但在炎热的夏季夜晚,围绕着数十张小方桌的上百位等位者所制造出的喧闹气氛和巨大声浪,还有他们似乎超出常人的耐心,还是显得令人讶异。

凡来过海底捞的人,恐怕都很难不对细致入微的服务留下强烈的印象,有人夸张地称之为“变态伺候”:顾客入座后,立马会送上绑头发用的皮筋、围裙、手机套,就餐期间会有服务员不时递上热毛巾。更深的感触是服务员个个精神饱满,快乐感染了每位顾客。在“大众点评网”上,很多顾客对这种贴心服务感到“受宠若惊”, 感慨“终于找到了做上帝的感觉”。

  到目前为止,海底捞无疑是一个成功的商业故事,有管理学教授跟踪探访海底捞的商业智慧。在餐饮业中,火锅是对食物烹调要求相对较低的一种。缺乏差异化使得火锅业竞争异常激烈,经营者往往会尽量降低运营成本而与竞争对手区分开。但这些途径往往很快被整个行业复制,包括曾经被披露的反复使用锅底等行业黑幕。海底捞的菜品在顾客中以干净、新鲜以及分量适宜而著称。结合他们的超品质服务,我们不免好奇海底捞的利润如何,又来自哪里?

  也许正如海底捞自己的广告语:“好火锅自己会说话”,它每年3亿元的营业额来自这些表象下面埋藏着的未知的内在驱动力。

  被误解的海底捞

  所有顾客都是“上帝”吗?

  在张勇看来,顾客满意度和忠诚度要远比简单的利润加减法重要得多。他们所提供的无与伦比的服务,似乎也证明了他们在争取每一位顾客时付出的努力。 海底捞的北京分店大部分时间能保持每晚高达3到5桌的翻台率,堪称餐饮界的奇迹。海底捞不断在菜品与服务上创新,以求为顾客带来意想不到的体验,但并非每一位等待要求被满足的顾客都能在海底捞如愿。

  有人曾经借机问过张勇:“3个小时的等位时间对一些人来说未免太漫长,他们不在乎免费茶水,也不需要擦鞋美甲,你将如何吸引这些顾客?”

  张勇的回答简单而干脆:“对时间过于敏感的顾客不会选择吃火锅,也就不会选择海底捞。”

 海底捞的一线服务员都拥有免单权,既简化了流程也加强了服务员应对特殊情况的能力。但也有一些顾客曾利用海底捞这一特色蛮横强行要求免单,这些人的要求当然就不会被满足,同时也不会被任何企业或个人所欢迎。

 给顾客不可替代的非常体验,令其非常满意,并不是件容易的事,但恰恰激发了员工的创造性。在海底捞的企业内刊上,有很多员工亲自撰写的工作感受,其中有很多是对提高顾客忠诚度的感悟。北京七店的客户经理被员工亲切地称为“干妈”。她的能耐让很多新员工佩服,一问今天哪儿有老顾客?干妈都会顺畅地回答道:“大厅96号,苏打水宋哥;大厅1号,爱美甲的张姐⋯⋯” 任何关于老顾客的问题,她都能倒背如流地回答。

     海底捞的员工很少从社会招聘,大部分是现有员工介绍来的亲戚朋友。在大家彼此都熟悉的环境里,无论好的或是坏的,都容易蔓延和生长。作为公司的创始人,张勇在极力推行一种信任平等的价值观。在接受采访的当天,袁华强刚刚召开了一个会议,起因是一些门店发现酒水的管理不够完善,晚上盘点时发现时多时少。有人提议应该加大对相关员工的惩罚力度。袁华强觉得这事可能是客人要酒,服务员太忙,忘了;后来客人再要的时候,服务员为了避免客人不满,就来不及在系统里下单,直接从吧台提酒了。如果不问原因,一律加大惩罚力度,那么对员工来说,很简单,为了不被惩罚,就照章办事,让客人等着呗。“不要因为这点小事情把员工的积极性给挫伤了,一个服务员的积极性比一瓶五粮液值钱多了!”袁华强相信,这种事大多是员工偶然疏忽造成的。最后确定的处理办法还是具体事情要具体分析处理。基于一切以为客户服务为重和对员工的信任,海底捞给一线服务员的授权很大,包括可以为客户免单的权力。每个员工都有一张卡,员工在店里的所有服务行为,都需要刷卡,记录在案。这种信任,一旦发现被滥用,则不会再有第二次机会。

  “公司给你的总是超出预期,所以就会死心塌地地为公司干。”2007年7月通过猎头公司进入海底捞的现任物流中心副总的高岩峰,这样谈出自己的体会。刚进入公司一个月,他就参加了公司安排的西交大MBA为期1年的学习,每次上课来回的飞机票和其他费用都由公司方面支付。今年年初,公司又把比较核心的技术部门交给过去并无经验的他来管理,对于他这个“外人”而言,“实在是没想到”。高岩峰在公司里被大家称为“高老师”,因为有些员工拜他为师,学习采购和物流管理。

  经朋友介绍,小厉进入公司才一个多月,脸上的笑容很由衷,“生活上没什么好担心的,只要好好干就行了。”年轻的她已经听到公司里很多从普通的服务人员升到领班甚至店经理的例子。一位顾客想再要一个火锅小料,开玩笑地问她:“能送吗?”迅速地思考了一下,小厉爽快地说,“能,我去给您拿!”

  鼓励每位基层员工参与创新,是海底捞信任平等的价值观里的重要组成部分。公司总经理办公会为此专门下了文件,员工提出的每项创新建议都会有专门的记录和片区经理的意见及总经理评价。因为这项工作,诞生了诸如“鱼滑”、“虾滑”等专门的制作模具,这些已被公司广泛推广。

      海底捞对干部的考核非常严格,在张勇的办公室墙上,张贴着对店长以上干部的考核表,考核分了多个项目,除了业务方面的内容之外,还有创新、员工激情、顾客满意度、后备干部的培养,每项内容都必须达到规定的标准。"我们优秀店长的产生不跟他所管理店的命运成正比,评选优秀店长不看他赚了多少钱,看的是员工激情,看的是顾客满意度,看的是后备干部的培养。他哪怕赚很多钱,他的利润始终是公司最高,也很可能由于在这几个问题上出了漏洞而被撤掉,比如不久前牡丹园的店长被撤掉了,他在我们公司的业绩也很好,但就是员工激情和顾客满意度达不到。"

    这几项不易评价的考核内容,海底捞都有自己衡量的标准。例如"员工激情",总部不定期的会对各个分店进行检查,看员工的注意力是不是放在客人的身上,看员工的工作热情和服务的效率。如果有员工没有达到要求,就要追究店长的责任,"你平时是怎么要求的?你是怎么带动的?"一次可以原谅,可以给机会,几天后再派人检查,员工的服务是否快速、准确、热情,是否能够马上完成顾客的要求,是否快速准确,大方得体。

    海底捞的店长都有很大的权利。总部每月会拿出利润的一部分作为每个店的奖金,这些奖金全部由店长来分配,他必须全面考察下属的业绩,如是大家都没有达到要求,不分也可以,只是唯独不能分给自己。海底捞目前的直营分店已有17家,分布于西安、北京、郑州、上海,这么多分店,分配结果又都是各店自己报告上来的,如何保证每位管理者都能真正做到公平公正?张勇告诉记者,"有不公正的可能,但是千万不要太明显,他的一切作为必须让绝大多数员工接受,如果大家不能接受的话,他的领导力与影响力会下滑、业绩会下滑。"并且,海底捞有一个公开信息源监督制度,每一个分店都会选举两个普通员工做信息源,对本店管理方面出现的一些问题以书面形式向总部反映,每个月都必须要有,张勇看过后,再转到监察部备案、核实。如果确定反映的问题属实,就会转给该部门的领导进行处理。

    尊重与关爱,创造和谐大家庭

    海底捞的管理层都是从最基层提拔上来的,他们都有切身的体会,都了解下属的心理需求,这样,他们才能发自内心地关爱下属,并且给予员工工作与生活上的支持和帮助,同时也得到员工的认可。张勇笑着举例,"如果将北京区的总经理换成一个从美国回来的博士,相信不到半年就乱套了。员工不认可你,你讲的再好,你的理念再好,员工与你不是一条心,不听你的,没办法!"

    海底捞的员工,大部分来自农村,他们的需求非常简单,有时候管理层多冲他笑一笑,给他一个领班,给他一个机会,他就满足了。

    在海底捞,尊重与善待员工始终被放在首位。从2003年7月起,海底捞实行了"员工奖励计划",给优秀员工配股,以西安东五路店作为第一个试点分店,规定一级以上员工享受纯利率为3.5%的红利。2005年3月,又推出第二期"员工奖励计划",以郑州三店作为员工奖励店给优秀员工配股,并且经公司董事会全体董事一致同意,从郑州三店开始计算,公司每开办的第三家分店均作为员工奖励计划店。

    海底捞的管理人员与员工都住在统一的员工宿舍,并且规定,必须给所有员工租住正式小区或公寓中的两、三居室,不能是地下室,所有房间配备空调、电视,电脑,宿舍有专门人员管理、保洁,员工的工作服、被罩等也统一清洗。若是某位员工生病,宿舍管理员会陪同他看病、照顾他的饮食起居。

    海底捞的所有岗位,除了基本工资之外,都有浮动工资与奖金,作为对员工良好工作表现的鼓励。同时,考虑到绝大部分员工的家庭生活状况,公司有针对性的制定了许多细节上的待遇:在海底捞工作满一年的员工,若一年累计三次或连续三次被评为先进个人,该员工的父母就可探亲一次,往返车票公司全部报销,其子女还有3天的陪同假,父母享受在店就餐一次;工作年满一年以上的员工可以享受婚假及待遇;工作满3个月以上的员工父母去世,该员工可以享受丧假及补助;工作3年以上的员工可享受产假及补助;若夫妻在同一地区工作,只要有一方工作满半年,在外租房就可以享受每月60元的补助,已婚的店经理则可享受400元以内的住房补助;店经理小孩3岁以下随本人生活的,还可享受每月300元的补助……

    在尊重与善待员工的问题上,海底捞还有不少"创意".例如,将发给先进员工的奖金直接寄给他的父母。张勇说,"这不仅仅是400块钱的事情,400块钱对于农村也许很重要,但更重要的是,他父母有了荣耀。

    海底捞的员工,有很多都是亲属,这在许多企业都是禁止的。张勇却认为,"正因为员工在海底捞获得了尊重和认可,同时他也认可了这里的工作环境与和谐的氛围,他才会介绍亲戚朋友们来。"

    关于员工的夫妻生活、子女教育问题,许多企业规定,服务员不能和厨师谈恋爱,高级管理人员配偶不能与其在同一个地区同一个城市,"这种规定是很不人道的,我们的做法相反,会尽量把他们吊在一块儿,让他们一起工作,一起生活。公司会发给他们补贴,鼓励他们住在一起,并且把孩子带着身边,自己照顾和教育孩子。"不仅如此,海底捞店长以上的干部,公司还会帮助他们联系其子女入学,并且代交入学赞助费。

posted @ 2009-11-04 18:50 CowNew开源团队 阅读(2145) | 评论 (2)编辑 收藏

现在有的网站为了防止其他人转帖他们的内容而不写“转帖自。。。”,在你复制它网页内容的时候会自动增加“本文来自于如鹏网”这样的额外的文字。这本来无可厚非,但是它们的原理是首先监听用户的复制事件,当复制动作发生的时候取得用户选择的内容,在内容后添加“本文来自于如鹏网”,然后在用clipboardData.setData设置新的粘贴板内容,但是clipboardData.setData只支持Text、URL两种格式,无法设置HTML格式的粘贴板内容,因此造成复制出来的内容粘贴的时候一些html格式都丢失了,比如字体颜色、表格等等,非常麻烦。
如果使用Maxthon浏览器,有如下两种解决思路:
1、思路1
(1)选中要复制的部分,点击右键选择“查看选定区域源代码”;
(2)在弹出的记事本中将文件另存为htm文件,也就是文件名中输入“1.htm”之类的带htm后缀的文件名。
(3)用浏览器打开刚才保存的htm文件,全选,复制就可以了。
2、思路2(推荐方法)
(1)选择主菜单的【工具】→【内容控制】→【禁止运行Javascript】,然后就可以任意的复制而没有“零碎”了
(2)复制完了再次选择主菜单的【工具】→【内容控制】→【禁止运行Javascript】,将【禁止运行Javascript】前的勾选去掉即可。

使用普通的IE浏览器有如下两种解决思路:
1、思路1
(1)选中要复制的部分;
(2)在地址栏中输入
javascript.:var bjSelection = document.selection;var bjTxtRange=objSelection.createRange();clipboardData.setData("text",objTxtRange.htmlText);alert("复制成功");
然后回车,这时候IE7、IE8浏览器可能会提示是否允许操作剪贴板,点击【允许访问】即可。
(3)打开记事本,Ctrl+V粘贴,然后另存为一个htm文件,也就是文件名中输入“1.htm”之类的带htm后缀的文件名。
(4)用浏览器打开刚才保存的htm文件,全选,复制就可以了。
原理就是地址栏中的javascript代码会被执行,这段代码的作用就是将选中部分的HTML拷贝到剪切板中(关于代码的详细解释参考这篇文章《 取得网页选中部分HTML的方法 》 ),由于添加“零碎”的代码没有对此进行控制(也无法控制),因此复制出来的HTML就是没有零碎的了,保存成htm再复制就带格式同时没有零碎了。

2、思路2 禁用javascript
(1)打开internat选项,选择安全标签,
(2)点击下方的自定义级别,这时会弹出安全设置对话框,拖动滚动条找到图示脚本-活动脚本,并选择禁用;
(3)再复制内容就不会有零碎了。

原理:因为添加“零碎”的原理是监听用户的复制事件,然后向复制的内容中添加“零碎”,这些逻辑都是javascript代码,我们禁用IE的javascript,这样那些代码就不会执行了。

很显然Maxthon中的两种方法和IE中的两种方法原理都是一样的,不过Maxthon的功能帮我们省了很多事情。
posted @ 2009-10-22 16:40 CowNew开源团队 阅读(1240) | 评论 (0)编辑 收藏

昨天网站虚拟主机提供商发送提醒邮件说我的网站“如鹏网”流量超标了,很奇怪,上个月流量用了一半多一点儿,这个月网站访问量并没有明显的上升,怎么会这个月才过20天就流量超标了呢?到网站后台查看流量报表才发现agent.php消耗了31%的流量,将近1/3呀。

agent.php就是为“如鹏助手” 提供数据的api页面,默认如鹏助手每10秒钟就会向这个页面请求最近50条新帖和50条新回复。当时开发的时候也考虑过这个功能会不会对网站流量有非常大的消耗,但是当时没有进行科学的计算,想当然的认为不会。但是现在仔细一算,50条新帖、50条新回复的信息估计有100K,那么每分钟请求6次,假设每天监控15小时,每个月30天,那么一个月的流量就是100K*6*60*15*30=16200000k=16200M=16.2G,恐怖呀!!!网站每月限定流量是45G,正好是16.2/45=36%,估算和报表中的31%差不多。

因为网站流量已经超标,因此必须买额外的流量才能保证网站正常运行,10G的流量一个月20元,买流量就要买足剩下10个月的,10个月就是200元,本来这部分花费是可以避免的。当初花几分钟算一下就不至于犯这种错误!

不要再拍脑袋,要科学的计算!!!!!!!!!

为了减少如鹏助手流量消耗,我做了如下的优化:
1、agent.php不再传输全部的帖子内容,帖子正文只传输前50个字。
2、去掉agent.php传输帖子中的空格等无意义字符。
3、因为如鹏网现在发帖量不大,没必要每次显示50条最新贴,因此改为只传输10条最新贴。
4、在agent.php头部加入“Ob_Start('ob_gzhandler');”,也就是启用GZip压缩网页,减少网页的流量传输。
5、降低如鹏助手的刷新频率,由10秒刷新一次改为60秒刷新一次
经过本次优化,10条新帖、10条新回复的信息估计有6K,6K*1*60*15*30=162000K=162M=0.162G。这样流量消耗基本可以忽略不计了。

不要再拍脑袋,要科学的计算!!!!!!!!!
posted @ 2009-10-20 12:06 CowNew开源团队 阅读(2358) | 评论 (5)编辑 收藏

修改于http://blog.csdn.net/majianan/archive/2008/12/30/3646565.aspx
使用的这个TabPane已经有了TabPane的所有功能。
不过我想增加一个功能,就是:
1、每隔一段时间,选项卡自动切换到下一页。
2、当用户点击TabPane内任意一个选项卡的时候自动切换停止。

代码下载: http://bbs.blueidea.com/viewthread.php?tid=2952907&page=1&extra=page%3D1

使用方法参考附件rupengtabpane.zip中的test.htm
TabPane类构造函数有三个参数,第一个参数是占位div的id,第二个、第三个都是可选参数,第二个为自动切换的时间间隔,单位为秒,默认值为10,第三个为是否启用自动切换,默认值为true
tabPane.js中还提供了一个function randint(m,n)函数,用于产生一个changeTabInterval的随机数,防止页面上TabPane过多,如果设置的changeTabInterval都一样的话会产生整齐划一的切换的效果,不好看,因此用它产生随机的Interval给TabPane类构造函数的第二个参数。

                                   <script>
                                 var tp = new TabPane("divGlobalNew",15);
                                 tp.addTabPage({title:"论坛新帖" ,width:80 ,panel:"divGlobalNewThreads"});
                                 tp.addTabPage({title:"论坛新回复" ,width:80 ,panel:"divGlobalNewReplies"});     
                                   </script>  
       
演示地址:http://www.rupeng.com/forum
posted @ 2009-10-14 13:45 CowNew开源团队 阅读(1971) | 评论 (1)编辑 收藏

假设Jetty监听的端口是8080,
1、首先修改/etc/lighttpd/httpd.conf,查找

server.modules=部分
不要动"mod_proxy_core"等前面的注释,在之前插入"mod_proxy",
保存,退出。
2、进行代理设置,修改/etc/lighttpd/httpd.conf(如果使用的是kloxo之类的虚拟主机管理系统,那么修改/etc/lighttpd/conf/kloxo中相应虚拟目录下的可能更好,比如我修改的就是/etc/lighttpd/conf/kloxo/lighttpd.so.rupeng.com)
在尾部增加:
$HTTP["host"]=="so.rupeng.com"{
proxy.server=(""=>(("host"=>"127.0.0.1","port"=>8080)))
}

3、执行“/etc/init.d/lighttpd restart”重启lighttpd即可。



posted @ 2009-10-10 16:15 CowNew开源团队 阅读(1192) | 评论 (0)编辑 收藏

看很多人在乐此不疲的找卡巴斯基的Key。其实kav一年的key才30块钱,花几十块钱买个key够用1年的,省得浪费时间再去找key。浪费找key的时间不止30块钱吧?
就按月薪9000算,一天平均300元,平均一小时30元,想一下一年时间用来找key的时间早就超过1小时了吧,看起来是省钱了,其实是浪费了
posted @ 2009-10-01 15:06 CowNew开源团队 阅读(853) | 评论 (2)编辑 收藏

有时候需要在discuz基础上增加一些自定义的功能,不免要自己建表,自己建表就涉及到数据备份的问题,一般情况下就要写自己的备份功能。不过在discuz中只要自定义表的表名以discuz表名的前缀开头(一般都是cdb_),那么discuz就会自动将其加入discuz的备份体系。不用单独维护了,:)

如鹏网 http://www.rupeng.com 在校不迷茫,毕业即辉煌
posted @ 2009-09-25 15:41 CowNew开源团队 阅读(338) | 评论 (0)编辑 收藏

前一阵子看我以前一位同事的MSN签名是“面对它,处理它”,感觉收获非常大。以前做事情经常会拖延,以为逃避问题的话问题就说不定自己就解决了,现在每次要给自己拖延理由的时候我都会想起这句话“问题怎么逃避也逃避不了,面对它,处理它”。

比如前两天由于不知道的原因我提交给公司财务部的报销票据财务部找不到了,没法报销,一开始就想“反正就几百块钱,认倒霉了,再去折腾肯定特麻烦,不管它了”。但是朱老师一直催促我说“抓紧办,麻利的!”,我就联系财务部、联系主管领导,用了工作间隙的几个小时时间就办好了,打了几个电话就办成了,根本没有之前想象的那么复杂。
问题没什么大不了的,碰到问题不要想着怎么躲开它,而是用积极的心态去处理它,“面对它,处理它”。

由此想到以前上大学的时候有一段时间学《自动控制原理》的时候看着那些公式推导就头大,碰到一道难题就像“不管它了,先跳过去”,一个晚自习竟然发现自己整晚上都在“跳过去”,根本没做什么事情,后来调整了自己的心态,“蚂蚁啃骨头”一样的啃那些题,发现很快就明白了,其实离以前我“跳过去”的理解程度也没差不多,只不过多努力了一点儿而已。

又想到很多同学学编程的时候,碰到一个难写的程序、莫名的bug,只要稍微解决不了了,就开始抓狂,并且质疑自己“是不是处理不了这个问题了”,然后就放弃或者去论坛上求助别人,但是很有意思的是看到很多同学在论坛发的提问帖后没几分钟就又自己回复帖子“问题已经解决了”,呵呵,其实遇到问题的时候不要抓狂、不要放弃,“面对它,处理它”,没什么大不了的!

如鹏网上的hackhou同学去年春节的时候一直不找工作,我和他交流,发现他的想法是“找工作太麻烦,不想去想,还是自己在家里写程序能忘掉烦恼”,我就劝他“现在的主要问题是去找工作,而不是用写程序麻醉自己;你躲着求职并不会使你找工作的问题得到解决,也不会使得工作自己找上门来,快去找工作!”,听了我的建议他出去找工作了,没想到没几天时间就找到了满意的工作!

面对它,处理它;不逃避,直面问题解决问题,问题终将会得到解决的!
posted @ 2009-09-25 11:24 CowNew开源团队 阅读(1721) | 评论 (2)编辑 收藏

package com.rupeng.search.discuz;

import java.net.URLConnection;

import org.htmlparser.Parser;
import org.htmlparser.Tag;
import org.htmlparser.tags.Div;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
import org.htmlparser.visitors.HtmlPage;
import org.htmlparser.visitors.NodeVisitor;

public class DiscuzDefaultStyleHTMLParser
{
 private String title;
 private String bodyText;

 public DiscuzDefaultStyleHTMLParser(URLConnection urlConnection) throws ParserException
 {
  Parser parser = new Parser(urlConnection);
  HtmlPage visitor = new HtmlPage(parser);
  parser.visitAllNodesWith(visitor);
  this.title = visitor.getTitle();
  NodeList nodeList = visitor.getBody();
  final StringBuffer sb = new StringBuffer();
  nodeList.visitAllNodesWith(new NodeVisitor() {

   @Override
   public void visitTag(Tag tag)
   {
    //因为主题、回帖都是包含在Div里,而且主题、回帖的divid都是以“postmessage_”开头
    if (tag instanceof Div)
    {
     Div div = (Div) tag;
     String divId = div.getAttribute("id");
     if (divId != null&& divId.startsWith("postmessage_"))
     {
      sb.append(div.getStringText());
     }
    }
   }
  });

  this.bodyText = sb.toString();
 }

 public String getTitle()
 {
  return title;
 }

 public String getThreadText()
 {
  return bodyText;
 }
}

posted @ 2009-08-13 19:26 CowNew开源团队 阅读(708) | 评论 (0)编辑 收藏

一、关于 realtek hd audio 装不上驱动的问题:
首先,要针对你的操作系统打上微软的音频补丁,本文针对 XP SP2系统。对于SP2系统,请你先打上KB888111补丁,这个网上有下载!搜索一下吧!

打上补丁以后,在设备管理器的系统设备里面出现一个带“!”的“PCI bus”设备,手动安装驱动找到HdaudBus.sys(这个微软的KB888111补丁里面有带的,如果不能自动找到就将KB888111XPSP2解压,commonfiles里可以找到。)开始安装,安装完后会在系统设备里面多出一个微软的UAA BUS 的设备驱动,重启以后自动安装驱动就可以了。

这时,驱动安装就已经完成。

其实sp2以后的系统这个貌似可以自动驱动!

下面说说麦克风无声的问题!

二、安装好驱动后,有时会发现麦克风是灰色的,不能说话的问题:

这个可能是你设置的问题,如何解决呢?

HD audia 是一种新的音频规范,不同于以前的AC97,驱动安装好以后在你的控制面板里和系统的任务栏里面都有一个配置程序。

在这里,我们要先打上HD的声卡补丁,把rtkhdaud.dat文件复制到C:\WINDOWS\system32\drivers下,并必须重新启动计算机。

补丁下载:点击下载

重启后,让我们来看一下realtec的设置,在这里或者在右下角点打开。

然后就到这里。

点上图中的混频器,我们就可以看到,打完补丁后的录制界面会变成下图这样,也就是,下面四项可调了。我产把这四项的声音全部都调到最大,然后选中麦克风(麦克风下面的那个黄点选中)。

接下来看音频输出项(HD Audio output),也就是上一排的重放栏。通过 < 和 > 我们可以看到全部项,注意用红色框圈住的那两项,请取消静音,去掉这两个X,并且音量调到最大。

接着,我们点一下最上面的,和混频器一排的,音频IO,按下图标示1的位置,将喇叭数设为选择8CH,这样设声音会大一些。然后再点2的位置,进入3,接头设置,禁用前面板检测,也就是,在前面打上对勾。

最后,重新插一下耳机和麦克风,注意这里,这也是容易被大家忽视的,一定不能勾选错,选错了同样不能用,具体是这样的:

当你插入耳机时会弹出来下图,一定要选耳机。

 

当你插入麦克风时会弹出来下图,一定要选麦克风。

打开控制面板--声音设备--声音和音频设备

 

高级 -选项--属性

 

选中rear pink in (麦克风要插在后面板的粉红色插口中,插在前面板相应设置Front pink in)

 

这时候麦克风的音量就可以设置了,还可以点高级使用 麦克风加强 (小心震耳朵)

 

这时候再点选项--属性--选中 Audio input 如下图所示

 

确定之后,把录音音量调到最大

 

这时候打开QQ的音量调节,声音输入输出按照下图设置,试试效果吧



http://www.blogjava.net/Files/huanzhugege/Realtek%20HD%20Audio录音声音小的解决方法.zip

posted @ 2009-07-28 23:38 CowNew开源团队 阅读(2336) | 评论 (0)编辑 收藏

远离新版本软件,拒当小白鼠

本文是专门为在校生写的,是看到了很多同学把很多精力放到折腾这种各样的新软件而忽略了正路的学习有感而发,不是针对那些有太多时间研究新东西、有志于改善世界上所有软件、要解放全人类的牛人。
=================================================================================================

刚才帮一个同学解决一个在IE8下在如鹏论坛无法发帖的问题。由于如鹏论坛使用的Discuz系统的验证问答功能对IE8支持有Bug,所以新用户无法发帖。验证问答功能是防止垃圾广告的一个有效手段,但是对IE8、Opera、chrome等非主流浏览器支持有Bug。刚才为了能让这个同学发帖,我就暂时关闭了验证问答功能,但是刚关闭了,就来了一大堆垃圾广告贴。所以我就赶紧又把验证问答功能打开了。所以以后使用IE8、Opera、chrome等非主流浏览器访问如鹏论坛的时候会有这样那样的问题,现在也没有精力解决这些问题,只能满足大多数同学的需求了。
    我以及很多同事都有一个新习惯,绝对不拿新软件尝鲜。因为新软件千好万好,但是经验证明新软件会给我带来麻烦而不是方便。当年XP刚推出的时候,我还在上学,很多同学抢着装,我就还是Win2000坚持不动摇,当时大部分软件都能在Win2000下跑的很好,而很多软件对XP兼容性不是很好,所以他们一直在跟XP做斗争,我则用着Win2000做着该做的事,编着该编的代码。碰到问题当时网上介绍的方法都是在Win2000下的解决方案。这节省了很多时间。毕竟操作系统、电脑只是工具,是要工具为你服务,不是给你添乱。
    还有当初IE7推出的时候,很多人尝鲜用IE7,可是很多网站都对IE7支持有问题,到最后干什么都干不了。而那些用IE6的人则干着该干的事情,一点时间、精力都没浪费。
    IE8推出来了,我相信它很好,我相信它比IE6、IE7都好,比别的浏览器都好,可是有一点,很多网站用IE8看都有问题,那我用IE8干什么,给自己找那个麻烦干什么。有同学说“IE8用起来快”,由于网站对IE8支持有问题导致你你一个帖子半个小时都发不出去,节省的那点时间早就浪费没了。浏览器的目的是上网,不是给别人当小白鼠。我估计早晚有用IE8的那一天,但是那一天是所有网站都对IE8支持没问题我再用IE8。我不当小白鼠。
    Vista推出来了,同学们争着用,可是各个软件在Vista上装的都有问题,那不是给自己找闲事儿吗?竟然还有同学用Windows7,Win7和IE8现在都是测试版,各个软件的兼容程度可想而知,给自己找那个麻烦干什么?等主流软件都支持他们在说吧。有同学说Windows7兼容性可好了,可是再好有XP好吗?只要没有的话你就有可能运行一个别人能跑你不能跑的软件,给自己添那个麻烦干什么。别人在拿着书在运行着代码,你却在为着开发工具和操作系统的兼容性艰苦奋斗着,何必活的那么累呢。
    我现在从事的银行系统软件开发中,一个新技术推出以后必须经过其他客户至少三年的验证和升级以后才会考虑使用,就是基于这样的考虑,毕竟工具是给人用的,不是给人添麻烦的。

远离新版本软件,拒绝当小白鼠!
==================================================
本文是专门为在校生写的,是看到了很多同学把很多精力放到折腾这种各样的新软件而忽略了正路的学习有感而发,不是针对那些有太多时间研究新东西、有志于改善世界上所有软件、要解放全人类的牛人。

posted @ 2009-06-11 10:31 CowNew开源团队 阅读(2297) | 评论 (27)编辑 收藏

首先说一下我的网站(www.rupeng.com)的结构,discuz论坛放在了网站根目录的forum目录下,论坛的附件目录并没有使用默认的/forum/ attachments,而是我把论坛附件也挪到了网站根目录的“/forum_attachments”下,因此我在discuz后台将【附件保存位置】修改为“./../forum_attachments”(discuz文档中说“相对目录务必以 "./" 开头”)。然后同时启用了“远程附件”。
经过上面的修改以后我发现当上传的附件超过“附件尺寸下限”的时候提示“附件文件无法保存到远程服务器,请与管理员联系”,也就是上传远程附件失败。经过调试discuz代码发现了问题所在,确认是discuz的Bug。
Bug在include/post.func.php的ftpupload函数中,如果是上传的远程附件,那么假设$source参数传过来的是“/www/users/cownew.com/forum/./../forum_attachments/month_0906/20090602_8af8as9dfas8du9823898898.rar”,后面的代码把$source传递给了dftp_put函数,但是好像dftp_put函数对这种有点复杂的路径“/www/users/cownew.com/forum/./../forum_attachments/month_0906/20090602_8af8as9dfas8du9823898898.rar”识别有Bug,因此我在ftpupload函数的一开始加入一句“$source=realpath($source)”来将这个复杂的相对路径转换为绝对路径。这样问题就解决了。

我采用的是康盛的虚拟主机,昨天晚上康盛的技术人员整个晚上都在帮我解决这个问题,虽然最终还是我自己发现discuz的这个Bug,但是还是非常感谢康盛的虚拟主机技术人员,他们非常尽职,而且服务器也非常稳定,用康盛的主机一年以来只碰到过两次持续时间不超过半小时的服务器被DDOS攻击和一次MYSQL故障,相对其他IDC来说稳定性已经非常好了,推荐大家使用康盛的IDC。
posted @ 2009-06-02 22:21 CowNew开源团队 阅读(1795) | 评论 (0)编辑 收藏

以前一直使用卡巴斯基杀毒软件,用过半年360安全卫士赠送的卡巴斯基授权文件,又用了一个月的试用版,今天试用到期。看到网上很多人在费劲找授权码,我也试着找了找,但是最终还是决定购买授权码,做一个“正版人”。

我是基于以下几点考虑的:
1、人家千辛万苦开发出来的软件不容易,做为软件从业者的我们更知道开发一个软件的艰辛和耗费巨大的财力,卡巴斯基是非常优秀的杀毒软件,为它的服务付费理所应当;
2、我们是未来的计算机从业者,如果连我们都不尊敬同行,使用盗版软件,以后难道能要求别人尊敬我们的劳动成果吗;
3、也许浪费几个小时能找到能用的授权码,但是浪费这几个小时我可以看看书,可以去做一点其他事情,获得的收入比那几十块钱的正版软件费用多得多。
4、软件的生产商要吃饭,没人会饿着肚子为你开发软件,大家都不肯购买暴风影音,所以暴风影音只有靠在软件中放广告赚广告费,有的人竟然骂暴风影音放广告是“流氓行为”,真不知道谁是流氓。暴风影音在这次DNS事件中的唯一责任就是软件中不应该频繁的重试连接自己的服务器,仅此而已。不花钱用软件人家就要放广告,难道要人家替你免费打工?
5、用盗版软件是违法的;

我购买的是“卡巴斯基反病毒软件2009”一年的授权,全价40元,太便宜了,5月份使用优惠券代码为:232346472323385738 还可以打九折,也就是36元,有购买的同学记得使用这个优惠代码。
posted @ 2009-05-28 14:26 CowNew开源团队 阅读(370) | 评论 (0)编辑 收藏

修改discuzcode.func.php中discuzcode方法,
修改最后一行的return $htmlon || $allowhtml ? $message : nl2br(str_replace(array("\t", '   ', '  '), array('&nbsp; &nbsp; &nbsp; &nbsp; ', '&nbsp; &nbsp;', '&nbsp;&nbsp;'), $message));


 $tempstr= $htmlon || $allowhtml ? $message : nl2br(str_replace(array("\t", '   ', '  '), array('&nbsp; &nbsp; &nbsp; &nbsp; ', '&nbsp; &nbsp;', '&nbsp;&nbsp;'), $message));
 $tempstr= str_replace("&amp;#160;","&nbsp;",$tempstr);//code标签在粘贴一些代码的时候会把一些空格替换成"&amp;#160;"从而出现乱码,这是暂时性的解决策略,不严谨,不过一般没问题 by 杨中科
 return $tempstr;
 

posted @ 2009-05-22 23:29 CowNew开源团队 阅读(298) | 评论 (0)编辑 收藏

1、编写rewrite脚本,编辑/etc/lighttpd/local.lighttpd.conf内容如下:
url.rewrite-once = (
        "^/forum/archiver/((fid|tid)-[\w\-]+\.html)$" => "forum/archiver/index.php?$1",
        "^/forum/forum-([0-9]+)-([0-9]+)\.html$" => "forum/forumdisplay.php?fid=$1&page=$2",
        "^/forum/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$" => "forum/viewthread.php?tid=$1&extra=page%%53D$3&page=$2",
        "^/forum/space-(username|uid)-(.+)\.html$" => "forum/space.php?$1=$2",
        "^/forum/tag-(.+)\.html$" => "forum/tag.php?name=$1"
)
这里假设论坛装在forum目录下,如果是装在根目录下则是:
url.rewrite-once = (
        "^/archiver/((fid|tid)-[\w\-]+\.html)$" => "archiver/index.php?$1",
        "^/forum-([0-9]+)-([0-9]+)\.html$" => "forumdisplay.php?fid=$1&page=$2",
        "^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$" => "viewthread.php?tid=$1&extra=page%%53D$3&page=$2",
        "^/space-(username|uid)-(.+)\.html$" => "space.php?$1=$2",
        "^/tag-(.+)\.html$" => "tag.php?name=$1"
)

2、重启lighttpd,重启方法:/etc/init.d/lighttpd restart

posted @ 2009-05-16 21:41 CowNew开源团队 阅读(1190) | 评论 (0)编辑 收藏

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !^http://rupeng.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://rupeng.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.rupeng.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.rupeng.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tinyosstudy.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tinyosstudy.com$ [NC]
RewriteRule .*.(jpg|jpeg|gif|png|bmp|rar|zip|exe|pdf|attach|chm)$      http://www.rupeng.com


一定要注意保存为Unix格式。有的版本的IE“另存为”发送的referer为空,所以加上第一行“RewriteCond %{HTTP_REFERER} !^$ [NC]”
posted @ 2009-05-04 13:37 CowNew开源团队 阅读(397) | 评论 (0)编辑 收藏

付费解决疑难问题:

杨中科是国内知名的技术图书作者和IT培训讲师,经验丰富,详见百度百科:http://baike.baidu.com/view/1607669.htm 

杨中科在各种主流语言和技术平台上都有过丰富的经验,善于处理各种疑难问题,把您的技术难题提交给我,包您满意。
支付方式: http://item.taobao.com/auction/item_detail.jhtml?item_id=040979d74ff665498567ed0848fc5bf7
支付后和我连接解决问题,对于特别疑难的问题不排除加价的可能。

开源收费服务:

负责解决CowNew开源相关产品的问题,包括使用咨询、产品定制、二次开发、培训等。

服务费以500元为单位,具体费用需要协商。


支付方式:http://item.taobao.com/auction/item_detail.jhtml?x_id=0db2&item_id=237dfa9931ab86dcdd6a2a7a9179c05d
posted @ 2009-03-14 00:07 CowNew开源团队 阅读(298) | 评论 (0)编辑 收藏

     摘要: 第一部分 AppWizard及其工作原理 AppWizard即应用程序向导,它是Visual Studio开发环境中强大的编程工具之一,用它可以创建各种不同类型的程序。比如Win32应用、ATL、MFC应用等等。在Windows的术语中,向导(wizard)一词指得是一个应用程...  阅读全文
posted @ 2009-03-08 00:04 CowNew开源团队 阅读(986) | 评论 (0)编辑 收藏

当自定义的应用程序向导生成一个项目时,则它只是不能替换自动创建的.dsp 项目设置文件。 .dsp 文件中的项目设置由假定所有生成的项目为 MFC 项目的内部规则设置。 但是,Visual C++ 5.0 的新对象模型允许修改工具设置,以便从生成的项目中删除所有依赖 MFC 的自定义 AppWizards。

Visual C++5.0 CCustomAppWiz 类现在具有名为 CustomizeProject 在虚拟重写。 CustomizeProject 提供与 IBuildProject 接口自定义向导。 IBuildProject 配置方法提供了一个的 IConfiguration 界面,用于在项目中每个生成配置。 IConfiguration 可以添加和删除如编译器提供给工具的设置。 在使用这些方法自定义向导可以删除在 MFC 上添加依存关系的设置。

示例代码

以下是示例 CustomizeProject 重写的演示 MFC 依赖项的删除:
   #import "c:\Program Files\DevStudio\SharedIDE\bin\ide\devbld.pkg"
void CNoMfcCustWizAppWiz::CustomizeProject(IBuildProject* pProject)
{
using namespace DSProjectSystem;
long lNumConfigs;
IConfigurationsPtr pConfigs;
IBuildProjectPtr pProj;
// Needed to convert IBuildProject to the DSProjectSystem namespace
pProj.Attach((DSProjectSystem::IBuildProject*)pProject, true);
pProj->get_Configurations(&pConfigs);
pConfigs->get_Count(&lNumConfigs);
//Get each individual configuration
for (long j = 1 ; j < lNumConfigs+1 ; j++)
{
_bstr_t varTool;
_bstr_t varSwitch;
IConfigurationPtr pConfig;
_variant_t varj = j;
pConfig = pConfigs->Item(varj);
// Remove Preprocessor def for MFC DLL specifier, _AFXDLL
varTool   = "cl.exe";
varSwitch = "/D \"_AFXDLL\"";
pConfig->RemoveToolSettings(varTool, varSwitch, varj);
varTool   = "rc.exe";
varSwitch = "/d \"_AFXDLL\"";
pConfig->RemoveToolSettings(varTool, varSwitch, varj);
// OPTIONAL
// Add Libs that MFC headers would have pulled in automatically
// Feel free to customize this listing to your tastes
varTool = "link.exe";
varSwitch = "kernel32.lib user32.lib gdi32.lib winspool.lib "
"comdlg32.lib advapi32.lib shell32.lib ole32.lib "
"oleaut32.lib uuid.lib odbc32.lib odbccp32.lib";
pConfig->AddToolSettings(varTool, varSwitch, varj);
}
}
本代码示例使用 Visual C++ 5.0 的新 COM 编译器支持功能的说明。 # import 语句导入,并创建 DEVBLD.PKG 类型库的所有类型的定义。 这将允许使用窗体 IInterfacePtr 的 COM 智能指针,以及新的 _ bstr _ t 和 _ variant _ t 类型代码。 这些新类型的所有自动清理使用的内存,并在超出范围时释放保持的接口指针。

此外请注意标准的自定义应用程序向导将使用预编译的头文件 StdAfx.h。 应当将放 # import # 结尾处的语句 StdAfx.h 中包含列表。

注意: DevBld.pkg 路径将不同,如果您使用 Visual C++ 版本 6.0。 假设 Visual C++ 版本 6.0 已安装到 C: 驱动器上的默认目录,# import 语句应阅读,如下所示:
   #import "C:\Program Files\Microsoft Visual Studio\Common\MsDev98\Bin\IDE\DevBld.Pkg"
注意: 上面 </a0>-# import 行必须在代码中相同的行。

请参阅有关 Visual C++ 文档。

警告

  • 请注意没有编程的方法可用于删除内部的项目将该控件设置"Microsoft 基础类"设置在常规的项目设置由包含上述代码的自定义向导生成的方式项目仍将显示"使用 MFC 共享 DLL 中"。 您可以更改此设置,唯一方法是不支持修改.dsp 项目设置文件。 但是,此设置仅用于某些 DevStudio MFC 用户界面元素如类向导和一些基于 MFC 的组件库组件。 它应该有一个非 MFC 项目没有影响。
  • 即使后修改项目设置使用 AddToolSettings 和与上面的 RemoveToolSettings,默认项目设置将仍然保持相同 Visual C++ 版本 5.0 中。 如果项目生成此自定义应用程序向导的用户打开项目设置,并单击重置,已还原的项目设置将包含已删除的 MFC 引用。 再次,防止出现这种唯一的方法是使不支持的更改生成的.dsp 项目设置文件手动自定义应用程序向导已创建项目后。

    Visual C++ 版本 6.0 提供新的自动化方法更改默认项目设置的。 配置对象支持 MakeCurrentSettingsDefault 方法。 此方法更改成为当前的设置配置的默认项目设置。
  • 当您使用 RemoveToolSettings 时,删除一次的只有一个工具设置。 在上面示例中进行另一调用 RemoveToolSettings CL.EXE 命令行而不是附加到同一个 varSwitch 语句的末尾删除定义中删除另一个的预处理器定义。 此外,请记住,工具设置的是大小写区分"/ d"和"/ D"不是相同的操作。
  • 遗憾的是,AddToolSettings、 RemoveToolSettings,和 AddCustomBuildStep (另一个 IConfiguration 方法) 运行仅在 Visual C++ 版本 5.0 在整个项目上,他们不能进行工具设置或创建自定义生成步骤单个文件。 是例如最好通常添加处理使用 MIDL 文件并生成 TLB 和其他所需的项目文件的一个项目的 IDL 文件的自定义生成步骤。 在 Developer Studio 97 对象模型不支持此。 单个文件的自定义生成步骤需要自定义应用程序向导生成项目后手动添加。

    Visual C++ 版本 6.0 对象模型不会支持若要更改的方法文件设置,并添加自定义生成步骤的文件。 请参阅 Visual C++ 版本 6.0 文档的下列方法配置对象:
    AddFileSettings
    RemoveFileSettings
    AddCustomBuildStepToFile

转载自:http://support.microsoft.com/kb/173483

大学生计算机学习社区
posted @ 2009-03-08 00:00 CowNew开源团队 阅读(676) | 评论 (0)编辑 收藏

  2005年的时候我大学毕业来到深圳工作,公司负责解决户口,因此户口也就落到了深圳。为啥我要说找个呢?难道我要做“深户担保”?哈哈,我不会贴小广告,具体原因后面你就明白了。

  05年春节我开办了一个开源技术研发组织,因此就创建了第一个网站cownew.com,也就立即备案了,一个礼拜备案就下来了。

  06年底我离开了深圳来到北京发展。转眼到了2008年,我准备创建一个为计算机相关专业提供学习指导服务的网站,所以申请了域名jsj321.com(含义是“计算机321”),然后申请了备案,但是一个多月过去了备案还是没有通过,无奈之下只好花了几十块钱在淘宝网上通过网上那些宣传“快速备案”进行了备案,10分钟就“获得了备案”,6个月之后终于收到哦啊了,计算机321没有通过备案的通知,然后我去备案中心一查原来计算机321买的那个“快速备案”也是上了备案骗子的当了,他们完全是用自己ISP的权限在修改自己手头已有的备案的域名,没过几天他又用这个备案号帮别人“快速备案”了。希望光大站长以后一定不能上这帮人的当,咱们也一起祝愿这些“备案骗子”生孩子没屁眼儿!一气之下计算机321就一直没有备案,2009年随着网站的发展壮大,越来越感到原有域名传播力太差,而且怎么看怎么像垃圾站的域名,所以在会员的帮助下改用了现在的新域名www.rupeng.com (如鹏网),立即备案了,一个礼拜备案就下来了。

  说了一通,到底为啥cownew和如鹏网这么容易备案通过,而计算机321就不容易通过呢?还记得前面我提到的我的户口落在了深圳吗?cownew这个域名备案的时候主办人所在地我当然填的是深圳。而jsj321.com备案的时候由于我在北京,所以主办人所在地我填的是北京,而身份证当然还是深圳的。在备案如鹏网的时候我就想为什么一个备案快一个备案慢的要命呢?我猜是户口的原因,因此我在备案如鹏网的时候主办人所在地也填的是深圳,没想到确实很快就批准下来了。

  这只是我的一个猜想,不过联想到目前的户籍制度,应该是有一定道理的,不是结婚都要回户籍所在地办理的吗?网站备案“回自己家备案”当然会容易很多了。希望正在准备备案的站长可以试一试,也验证一下我的猜想。

posted @ 2009-03-06 23:14 CowNew开源团队 阅读(522) | 评论 (2)编辑 收藏

1、SS在后台:系统设置→搜索优化设置→站点链接URL方式修改为“简短Apache模式”
2、discuz在后台:全局→优化设置→搜索引擎优化→URL 静态化下的几项全部选中。
用记事本建立如下内容文件(要另存为,不能重命名,因为重命名无法重命名为只有后缀的文件名):

RewriteEngine On

# 修改以下语句中的 /discuz 为你的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 /
RewriteBase /forum

# Rewrite 系统规则请勿修改
RewriteRule ^archiver/((fid|tid)-[\w\-]+\.html)$ archiver/index.php?$1
RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1&extra=page\%3D$3&page=$2
RewriteRule ^space-(username|uid)-(.+)\.html$ space.php?$1=$2
RewriteRule ^tag-(.+)\.html$ tag.php?name=$1


保存到网站根目录。

默认CuteFTP是不会显示.htacess文件的,因为它被Linux认为是隐藏文件,所以需要在cuteftp的过滤器中在弹出的窗口中选中“启用过滤”和“启用服务器端过滤”,并在"远程过滤"中填写"-a"。

posted @ 2009-02-06 00:09 CowNew开源团队 阅读(1035) | 评论 (0)编辑 收藏

1、Validator
2、IsPostBack
3、AutoPostBack。控件离开焦点的时候自动Post。
4、repeater控件的使用。:Repeater控件比以前版本的asp.net好用了,只要 Eval就可以了,不用DataBinder.Eval(container.DataItem,"***"):了,只要Eval("Name")就可以,注意不能丢了前面的“#”。
    <asp:Repeater ID="Repeater1" runat="server">
        <HeaderTemplate>
            嘎嘎嘎
        </HeaderTemplate>
        <ItemTemplate>
        <%# Eval("Name")%>
        <%# Eval("Desc")%>
        </ItemTemplate>
    </asp:Repeater>

        protected void Button3_Click(object sender, EventArgs e)
        {
            List<Person> list = new List<Person>();
            list.Add(new Person(){Name="芭芭拉",Desc="白牙呗"});
            list.Add(new Person(){Name="奥巴马",Desc="黑黝黑"});
            Repeater1.DataSource = list;
            Repeater1.DataBind();
        }
5、DataList控件:
(1)行的高亮选中
     <asp:DataList ID="DataList1" runat="server" >
        <SelectedItemStyle BackColor="#FF6666" />
    <ItemTemplate>
        <%# Eval("Name")%>
        <%# Eval("Desc")%>    
        <asp:LinkButton ID="LinkButton1" runat="server" Text="选择" CommandName="select" />  
    </ItemTemplate>
    </asp:DataList>
核心是CommandName这个属性,可选值还有edit、delete等可选值,当按钮被点击的时候将会执行EditCommand、DeleteCommand等事件。
(2)行的在位编辑:
    <asp:DataList ID="DataList1" runat="server"
        oneditcommand="DataList1_EditCommand">
        <SelectedItemStyle BackColor="#FF6666" />
    <EditItemTemplate>
        <asp:TextBox runat="server" ID="t1" Text='<%# Eval("Name")%>' />
        <asp:TextBox runat="server" ID="t2" Text='<%# Eval("Desc")%>' />
        <asp:Button runat="server" Text="提交" CommandName="update" />
    </EditItemTemplate>
    <ItemTemplate>
        <%# Eval("Name")%>
        <%# Eval("Desc")%>    
        <asp:LinkButton ID="LinkButton1" runat="server" Text="编辑" CommandName="edit" />  
    </ItemTemplate>
    </asp:DataList>

        protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
        {
            DataList1.EditItemIndex = e.Item.ItemIndex;
            ReBind();
        }

        private void ReBind()
        {
            List<Person> list = new List<Person>();
            list.Add(new Person() { Name = "芭芭拉", Desc = "白牙呗" });
            list.Add(new Person() { Name = "奥巴马", Desc = "黑黝黑" });
            Repeater1.DataSource = list;
            Repeater1.DataBind();

            DataList1.DataSource = list;
            DataList1.DataBind();
        }
(3)行的在位编辑并且提交修改
    <asp:DataList ID="DataList1" runat="server"
        oneditcommand="DataList1_EditCommand"
        onupdatecommand="DataList1_UpdateCommand">
        <SelectedItemStyle BackColor="#FF6666" />
    <EditItemTemplate>
        <asp:TextBox runat="server" ID="t1" Text='<%# Eval("Name")%>' />
        <asp:TextBox runat="server" ID="t2" Text='<%# Eval("Desc")%>' />
        <asp:Button runat="server" Text="提交" CommandName="update" />
    </EditItemTemplate>
    <ItemTemplate>
        <%# Eval("Name")%>
        <%# Eval("Desc")%>    
        <asp:LinkButton ID="LinkButton1" runat="server" Text="编辑" CommandName="edit" />  
    </ItemTemplate>
    </asp:DataList>
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["PersonList"] == null)
            {
                List<Person> list = new List<Person>();
                list.Add(new Person() { Name = "芭芭拉", Desc = "白牙呗" });
                list.Add(new Person() { Name = "奥巴马", Desc = "黑黝黑" });
                Repeater1.DataSource = list;
                Repeater1.DataBind();
                Session["PersonList"] = list;
            }           
        }

        protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
        {
            DataList1.EditItemIndex = e.Item.ItemIndex;
            ReBind();
        }

        private void ReBind()
        {
            DataList1.DataSource = Session["PersonList"];
            DataList1.DataBind();           
        }

        protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
        {
            TextBox nT1 = e.Item.FindControl("t1") as TextBox;
            TextBox nT2 = e.Item.FindControl("t2") as TextBox;
            //不要直接从DataList1.DataSource中取,因为取到的是null
            List<Person> list = Session["PersonList"] as List<Person>;
            Person curPerson = list[DataList1.EditItemIndex];
            curPerson.Name = nT1.Text;
            curPerson.Desc = nT2.Text;
            DataList1.EditItemIndex = -1;
            ReBind();
        }
    }
6 GridView控件
    <asp:GridView ID="GridView1" runat="server" AllowSorting="True"
        AutoGenerateColumns="False" onrowcommand="GridView1_RowCommand"
        onsorting="GridView1_Sorting">
        <Columns>
            <asp:ButtonField ButtonType="Button" CommandName="DingGou" HeaderText="订购"
                ShowHeader="True" Text="订购" />
            <asp:ButtonField ButtonType="Button" CommandName="TuiDing" HeaderText="退订"
                ShowHeader="True" Text="退订" />
            <asp:BoundField DataField="Name" HeaderText="名称" SortExpression="Name" />
            <asp:BoundField DataField="Desc" HeaderText="描述" SortExpression="Desc" />
        </Columns>
    </asp:GridView>

        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "DingGou")
            {
                Debug.WriteLine("第"+e.CommandArgument+"行被订购");
            }
        }

        protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
        {

        }
7、用户控件(UserControl)
通过向导创建一个UserControl,然后就可以任意编辑这个UserControl,而且还可以为UserControl增加属性、事件。使用的时候只要将控件直接从SolutionExplorer拖到页面上就可以。
8、继承控件
(1)通过向导创建一个WebCustomControl。
(2)定义自己应用界面。需要重载从Control类继承来的CreateChildControls方法,并在其中生成界面控件。如果用户定义的控件会在一个页面中反复使用,最好implements System.Web.UI.INamingContainer,它会为该控件创建一个唯一的命名空间。
(3)定义自己控件的消息处理函数。自己定义的控件含有两种类型的消息,一是包含的子控件所产生的消息,二是自定义的控件消息。
9、向工程中添加“Global Application Class”就可以添加Global.asax,在这里可以监听Application、Session的生命周期。
10、(1)Response.Redirect("newpage.aspx");客户端转发
(2)Server.Transfer("newpage.aspx");服务器端转发
11、web.config配置
(1)  <appSettings>
    <add key="FTP" value="127.0.0.1"/>
  </appSettings>
  this.Title = WebConfigurationManager.AppSettings["FTP"];
(2)
  <connectionStrings>
    <add name="mydb"  connectionString="jdbc:ddd"/>
  </connectionStrings>
  this.Title = WebConfigurationManager.ConnectionStrings["mydb"].ConnectionString;
12、BulletedList就是<ul><ol>
13、PostBack本质论
ASP.NET also adds two additional hidden input fields that are used to pass information
back to the server. This information consists of the ID of the control that raised the event and
any additional information that might be relevant. These fields are initially empty, as shown
here:
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
The __doPostBack() function has the responsibility for setting these values with the
appropriate information about the event and then submitting the form. A slightly simplified
version of the __doPostBack() function is shown here:
<script language="text/javascript">
function __doPostBack(eventTarget, eventArgument) {
var theform = document.Form1;
theform.__EVENTTARGET.value = eventTarget;
theform.__EVENTARGUMENT.value = eventArgument;
theform.submit();
}
</script>
14、跨页表单提交
在页1中指定按钮的PostBackUrl属性为WebForm1.aspx,这样表单就会提交到WebForm1.aspx了,然后在WebForm1.aspx中还可以取到前一页中所有的值:
TextBox1.Text = PreviousPage.Title;
还可以将PreviousPage cast成更详细的页面子类。
15、取QueryString的方法:
Request.QueryString["recordID"]
16、Server.UrlEncode(lstItems.SelectedItem.Text)
17、Multiview控件用来实现动态界面,Multiview里嵌套多个view控件,每个view控件里可以方式其他控件。通过控制Multiview控件的ActiveViewIndex属性来控制不同View的显示。
18、Wizard控件比Multiview控件更方面,更像一个TabControl
19、动态图片:
在pageload的事件中:
Bitmap image = new Bitmap(300, 50);
Graphics g = Graphics.FromImage(image);
Response.ContentType = "image/png";
image.Save(Response.OutputStream,
System.Drawing.Imaging.ImageFormat.Gif);
20 页面导航
创建SiteMap文件,修改SiteMap文件增加节点。
在页面上增加一个SiteMapDataSource,然后只要拖TreeView、Menu、SiteMapPath等控件上来,指定DataSource属性为SiteMapDataSource就可以了。
21 单值绑定
URL = "Images/picture.jpg";
this.DataBind();
<asp:CheckBox id="chkDynamic" Text="<%# URL %>" runat="server" />
22 下拉列表框绑定
    <asp:DropDownList ID="DropDownList1" runat="server" DataTextField="value"
        DataValueField="key">
    </asp:DropDownList>
    IDictionary<string, string> dict = new Dictionary<string, string>();
    dict["1"] = "aa";
    dict["2"] = "bb";
    DropDownList1.DataSource = dict;
    DropDownList1.DataBind();   
23 设定起始页:在aspx上点右键,选择“Set as startpage”
24 程序中数据库连接字符串的设置
(1)、web.config中加入: 
<connectionStrings>
    <add name="DBConnectionString" connectionString="server=192.168.88.128\SQLEXPRESS1;uid=sa;pwd=123456;database=CRM" providerName="System.Data.SqlClient"/>
  </connectionStrings>
(2)、在IDE中拖放DataSource组件以后,在属性视图的ConnectionString属性中选择DBConnectionString即可。
(3)、程序中读取这个连接字符串的方法:
            System.Configuration.Configuration rootWebConfig =
                System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
            string connString =
                rootWebConfig.ConnectionStrings.ConnectionStrings["DBConnectionString"].ConnectionString;
24 制作简单的CRUD页面的步骤:
(1)拖放一个SqlDataSource组件上来,设定好ConnectionString,命名组件为dsList。
(2)修改SqlDataSource组件的DeleteQuery属性为:delete from T_PSI_User where FId=@FId
InsertQuery属性为:INSERT INTO T_PSI_User(FId, FUserName, FPassword) VALUES (NEWID(),@FUserName,@FPassword)
SelectQuery为:select * from T_PSI_User
UpdateQuery为:Update T_PSI_User set FUserName=@FUserName,FPassword=@FPassword where FId=@FId
(3)拖放一个GridView组件上来,设定其DataSourceID属性为dsList。修改AllowPaging、AllowSorting、AutoGenerateDeleteButton、AutoGenerateEditButton属性为True。设定AutoGeneratedColumns属性为false。设定DataKeyNames属性为FId(这样哪怕隐藏了FId字段,Edit、delete功能也能正常执行了)
(4)修改GridView的Columns属性,在弹出的对话框中点击【RefreshSchema】链接,这样在BoundField下就显示了FId、FName、FPassword三个字段,将FUserName和FPassword字段Add进来。
这样不用一行代码,有删、改功能的页面就做好了。下面来做“增”的功能。
(5)选择GridView组件,在智能提示中选择EditTemplete、然后选择“EmptyTemplete”,拖放一个FormView组件到EmptyTemplete中,选中Formview组件,在智能提示中设定DataSource为dsList。
(6)新建一个【新增】按钮,编辑其Click事件代码为:
            GridView1.DataSourceID = "";
            GridView1.DataBind();
(7)设定FormView的ItemInserted事件代码为:
RefreshList();
RefreshList()函数定义如下:
            GridView1.DataSourceID = "dsList";
            GridView1.DataBind();
这样“增”的功能就做好了,不过还是有缺憾,那就是显示出了不归我们管的FId字段,并且字段名、按钮都是英文的。
(8)选中,FormView组件,然后点击EditTemplete,选中InsertTemplete,这样就可以删除不需要的FId字段了,并且可以修改控件布局以及界面的语言文字。
(9)这样的话Insert界面中的“Cancel取消”按钮还是不能用,编辑FormView1的ItemCommand事件,编写如下的代码:
            if (e.CommandName == "Cancel")
            {
                RefreshList();
            }
25 上面实现CRUD的方法有两个缺陷:
(1)需要编写一个EmptyTemplete
(2)很难对Edit的控件做定制
因此我们还是用ListUI和EditUI分置的方法来解决。步骤:
制作ListUI:
(1)使用datasource、GridView,不过DataSource只要配置SelectQuery、DeleteQuery即可。
(2)GridView不自动生成Edit按钮。
(3)GridView生成一个ButtonField,标题为“编辑”,CommandName="EditInPage"
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "EditInPage")
            {
                int index = Convert.ToInt32(e.CommandArgument);
                Guid guid = (Guid)GridView1.DataKeys[index].Value;
                Server.Transfer("/Sys/SysUserEdit.aspx?Action=Edit&FId="+guid);
            }           
        }
(4)新增按钮的Onclick事件:
Server.Transfer("/Sys/SysUserEdit.aspx?Action=Insert");

制作EditUI:
(1)拖一个DataSouce控件,按常规配置InsertCommand和UpdateCommand,配置SelectCommand为“SELECT * FROM [T_PSI_User] where 1<>1”,配置UpdateCommand为“”
(2)拖一个FormView上来,并且修改EditTemplete和InsertTemplte(可以直接将EditTemplete修改后的拷贝到InsertTemplte,注意不要忘了修改Button的CommandName)
(3)代码;
        protected void Page_Load(object sender, EventArgs e)
        {
            switch (Request["Action"])
            {
                case "Edit":
                    dsEdit.SelectCommand = "select * from T_PSI_User where FId=@FId";
                    dsEdit.SelectParameters.Clear();
                    dsEdit.SelectParameters.Add("FId", Request["FId"]);
                    FormView1.ChangeMode(FormViewMode.Edit);
                    break;
                case "Insert":
                    FormView1.ChangeMode(FormViewMode.Insert);
                    break;
            }
        }

        protected void FormView1_ItemInserted(object sender, FormViewInsertedEventArgs e)
        {
            GogoList();
        }       

        protected void FormView1_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
        {
            GogoList();
        }

        private void GogoList()
        {
            Server.Transfer("/Sys/SysUserList.aspx");
        }
    }
    }
26、DropDownList实现基础资料选择器,比如在商品编辑中的选择计量单位:
(1)拖一个针对T_MeasureUnit表的DataSource,比如名字为dsMeasureUnit。
(2)拖一个商品的Datasource,比如dsMerchan。
(3)拖一个FormView上来,并且设定其DataSource为dsMerchan
(4)将一个DropDownList放到FormView中,因为只有这样才能设定DropDownList本身的绑定。
(5)选中DropDownList,在智能提示中选择“ConfigDateSource”,在这里配置上dsMeasureUnit。
(6)选中DropDownList,在智能提示中选择“EditDataBindings”,然后设定绑定到dsMerchan的FMeasureUnitId字段。

源码:http://www.blogjava.net/Files/huanzhugege/PSI.Net.rar

posted @ 2009-01-22 18:04 CowNew开源团队 阅读(531) | 评论 (0)编辑 收藏

今天早上听到这样一个报道:在全球不景气的市场环境下,电子游戏业似乎独自顶住了消极影响,呈现出良好的市场表现,Xbox欧洲销售同比增长124%。而在美国Xbox销售同比增长25%,为历史最好表现。在金融危机下,很多人虚幻世界中寻找慰藉,以转移注意力:电视剧、网络、音乐、小说、电子游戏,以此逃避压力。
碰到过很多这样的人,或者一直找不到工作、或者考研失败或者工作不顺心,碰了几次壁以后不再是“越战越勇”,而是到游戏、网络中逃避压力,靠一次次的打怪、一次次的发灌水帖、看一部部肥皂剧的方式让自己忘记痛苦,当别人劝告他的时候他还美其名曰“玩网游也是一种创业,也能赚钱”,这不禁让我想起了老家里一些常年赌博成性的人嘴里唠叨着“玩麻将也能赚钱”那样好笑。“玩麻将也能赚钱”的人是赌王,人家的目的是赚钱而不是玩儿;同样“玩网游的人也能赚钱”的人是代练公司,而不是把玩网游当成逃避手段的懦夫。
遇到危险时,鸵鸟会把头埋入草堆里,以为自己眼睛看不见就是安全。事实上鸵鸟的两条腿很长,奔跑得很快,遇到危险的时候,其奔跑速度足以摆脱敌人的攻击,如果不是把头埋藏在草堆里坐以待毙的话,是足可以躲避猛兽攻击的。 心理学家将这种消极的心态称之为“鸵鸟心态”。
“鸵鸟心态”是一种逃避现实的心理,也是一种不敢面对问题的懦弱行为。有鸵鸟心态的人,不敢面对现实,不敢担当责任,平常大言不惭,遇到事情来临就畏缩不前了。 课堂上老师要提问的时候,每个学生都噤若寒蝉;做事情失败的时候靠烟酒麻醉自己;听说企业要裁员的时候总是认为“还有比我差的的,裁员也轮不到我”;学校里要选人参加软件大赛的时候,“比我学的好的有的是,轮不到我,我也不去争了”;考研的时候干脆不去参加考试,为自己考研失败找理由“我都没去考试,不能说我能力差了吧”;考试挂科,“我就干脆所有课都挂,难道学校敢开除我?”……
“遇食颈如鹤,遇事头如鳖”、“多做多错、少做少错、不做不错”、“天塌下来有高个儿顶着呢”、“眼不见为净”、“破罐破摔”等等都是鸵鸟心理。
不敢面对现实,而现实却不会因为你的躲避而不会发生。该来的始终会来,躲避是没有用的,只有迎难而上。工作不好找,那就要调整自己的求职策略和求职技巧,必要的话参加培训班给自己充电;企业要裁员,那就要更努力的工作,不要被末尾淘汰掉;公司待遇不好,那就要增强自己的“杀敌本领”,跳到更好的职位,甚至可以筹备自己创业,金融危机下游戏、网络等娱乐业以及培训业反而发展比较快,难道就不能找到一个创业机会,从而使自己在下一个经济大潮来临的时候勇立潮头,要知道现在很多国际性的大公司都是在上一轮的金融危机中脱颖而出的。
万事想开点,勇敢面对现实才能把问题解决。逃避、麻醉自己是懦夫的行为,只有迎难而上才是一个真正的男子汉。
posted @ 2009-01-12 11:59 CowNew开源团队 阅读(3459) | 评论 (5)编辑 收藏

关于女生做IT行业的话题我在jsj321的其他板块也提到过。我的一个原则就是除了天生的天才巾帼英雄之外(这样的人我也碰到过不少),大部分女孩子并不适合长期在第一线从事编程工作,这并不是什么性别歧视,而是考虑到女孩子的生理、心理等各方面的因素说出的这句话。但是这并不说明女孩子不能从事IT相关工作。对于一个计算机专业的女生来说,如果能在IT行业找到自己的位置,那是比转行更加合适的。IT行业的测试工程师(主要做软件的测试)、软件配置管理(主要从事软件的文档、数据库管理、源代码管理等)、项目经理助理(主要辅助项目经理处理项目开发、人员管理中的问题、项目进度管理等)等等这些都是非常适合于女孩子长期发展的,这些职位即对计算机技术有一定要求,而且又不像编程工作一样对技术要求非常高,我有很多同事都是从事这些工作的女孩子,而且做的都很优秀。
这些工作毕竟是贴近于编程一线的工作,因此也不能对编程一窍不通,否则沟通起来很麻烦,建议你在上学期间把专业课学好,同时学好英语,并且锻炼自己的写作能力、沟通能力等,毕业后你的前途是不可限量的。有更多问题欢迎访问http://www.jsj321.com

from:http://www.jsj321.com/forum/viewthread.php?tid=420&extra=page%3D1

posted @ 2008-11-27 22:37 CowNew开源团队 阅读(1059) | 评论 (0)编辑 收藏

 

引用:
Real提问:
小有迷茫,求教
先声明吧,也许这些话过几天自己都会忘记,但确实有发出来的冲动,而且也是反复看过杨老师以前的文章才发出来的。别批评我是愚昧的发牢骚吧。呵呵。
最近一个公司联系到班长说是免费实习,去了以后才发现是个培训机构。教了我们一些ASP的基础,连接数据库,做一些最基本的增删改查,但也有些想法。
1.他们告诉我们代码不是最重要的,代码看看书谁都会,重要的是流程。说刚出来的大学生都是做编码和测试人员,等做了5,6年以后熟悉了再去做设计人员。这对刚学了半年专业课,上了两年半大学还一直以代码至上,看到代码就想吃通吃透的我(们)有些茫然了。真的是这样?
2.培训是一条捷径。杨老师说过嘛,经过2,3个月的培训,我能会,别人也可以会,没有门槛的。但是现实是,人家说找工作就是让你敲代码,熟不熟一眼就看出来了,再告诉我们老板要的是上来能干活的人,自己培训自己很重要。当然,人家是搞培训的,自己也是王婆卖瓜。我们虽然要保持警惕,但事实也正是这样,从上届学生的情况看,在校内接受过一个7000块钱/5个月 的JAVA培训的同学确实找工作比较容易。我们呢?要知识还是要技能?是个问题。毕竟时间有限。
3.刚好也是学期末,做课程设计,最早出来的是数据库的课程设计题目,老师要求也很有意思,前台的语言不限制,于是大家都去图书馆借这样那样的书,走近图书馆,看到5花6门的书,说以前不迷茫只知道学老师教的也许是真的什么都不懂,现在什么都懂一点,迷茫感真的来了。
我以后是做什么?我到的是一个B/S还是一个C/S模式的公司?我应该拿我的这次课程设计来强化自己的哪方面?甚至还真有点“什么技术有前途”的小笑话。
杨老师说大公司考察的就是书本上的内容,好吧,我们不是清华的计算机系,我们当然不能拿我们的前途豪赌,到时候进不了大公司又没有一定的技能——两手空空?
太乱了...也许过几天自己就好了,呵呵。
******************************************

real是jsj321的老会员了,而且你也看过网站上的很多文章了,所以我的“陈词滥调”就不在这里重复了,直接解答你的问题。
1、“代码看看书谁都会,重要的是流程”。对于信息系统开发而言,确实有“业务重于代码”的说法,而且我非常同意,因为在信息系统中系统是供用户使用的,是给用户带来价值的,所以符合用户需求的系统才是好系统,采用什么技术、用什么样的代码写出来的则不是用户关心的。这是站在用户的角度看待技术和业务的,但是被很多从业者偷换概念用来进行妄自菲薄。对于用户来说当然是一个软件开发商怎么开发的他们不用关心,但是对于软件开发商本身也要这么想吗?对于一个企业来说它的唯一使命就是“赤裸裸的赚取利润”,什么是利润?利润就是“收入减去成本”,增加利润只有两条途径“增加收入”或者“削减成本”,企业的收入增长非常难,而“削减成本”则相对较容易。那么对于软件企业来说怎么“削减成本”呢?当然是缩短软件的开发时间了。怎么缩短软件的开发时间呢?软件是软件工程师编写出来的,当然就是要求软件工程师有比较高的编程水平,尽快的开发出高质量的程序来。站到软件开发商老板的角度想一下你还认为软件工程师的水平不重要吗?
“等做了5,6年以后熟悉了再去做设计人员”,“设计人员”这个词是一个非常宽泛的词,软件开发工程师、UI设计师、架构师、业务分析师等等都可以叫做设计人员。我估计他这里说的“设计人员”其实应该指得是“业务分析师”吧。业务分析师是站在用户的角度设计软件的整体业务架构以及产品功能,不用再思考用什么代码编写某个功能,企业里的业务分析师有两个来源:从软件工程师中来、从业务人员中来。比如对于一个财务软件来说,它的业务分析师会从资深的财务系统软件工程师以及经验丰富的会计师中来。一个企业里软件工程师有很多,而业务分析师则是相对来说比较少的,那么什么样的人才会成长为业务分析师呢?一个业务分析师必须有很丰富的项目经验并且在这些项目从事核心工作,一个软件工程师如果没有过硬的编程本领,连简单的功能都不能实现,连软件工程师的本质工作都没能力完成,老板怎么可能让你参与项目的开发又怎么敢让做核心工作呢???没做过这些你又怎么能获得这些经验呢?又怎么能成长为业务分析师呢?
“代码看看书谁都会”,这样的话工作几年后的人说还差不多,对于还没毕业,只学过编程语法、根本没写过像样程序的人敢这么说吗?我给你一个功能需求你能想出来大体用程序怎么实现吗?相信大部分同学都说不出来。一个长跑运动员可以说“跑步就是两条腿前后交替着运动呗”,但是一个刚会四条腿爬着走的婴儿如果说出“跑步谁都会”的话,我只能对着蔚蓝的天空大喊“My God,救救这个孩子吧!”。对着在校生说“代码看看书谁都会,重要的是流程”这种话的人不是存心误人子弟的人就是什么都不懂还要装牛B的人。
2、“经过2,3个月的培训,我能会,别人也可以会,没有门槛的”。其他同学有类似问题也可以访问jsj321.com。我说这句话是对那种把就业培训当成救命稻草的同学说的,这样的同学只是希望大学四年不好好学习,盼望着毕业以后找一个承诺“高薪就业、100%就业”的培训机构学几个月就成功当上白领甚至金领的人说的。对于自学能力稍差的同学来说,在培训机构有老师教能快速的提高技术水平,我从来没否定过。只不过不希望同学们只是寄托于培训机构而已,他们不是你什么都不学都能让你高薪就业的活神仙,不仅要在培训机构好好学,在进这些培训机构之前也要好好学习。争取在大学期间、在培训期间比别人多用功一些,多学一些,那些参加培训的人也不是100%掌握了老师讲的东西,他们能掌握20%就算不错了,只要你比他们多掌握10%,你不就是相当于“你会的他们不会”了吗?
3、“我以后是做什么?我到的是一个B/S还是一个C/S模式的公司?我应该拿我的这次课程设计来强化自己的哪方面?”别想太远了,踏踏实实的走好脚下的每一步,路是人走出来的,整天抬着头看远方的人肯定会被脚下的石子绊倒。我这并不是让同学们没有大的理想,而是希望同学们在走好每一步的基础上再去思考那些问题。等你真实的走过这段以后你会发现你现在思考的问题有多么“傻”(请原谅我用这个词)。把课程设计做好吧,不要抄袭,把课程设计自己做好,哪怕课程设计做好了也要继续研究相关的技术,这是最实际的事情。
4、“我们不是清华的计算机系,不能拿我们的前途豪赌,到时候进不了大公司又没有一定的技能——两手空空”。你可能误解我的意思了,并不是只有大公司才注重基础,除了少数草台班子公司或者皮包公司之外,大部分大中小型公司都是非常欢迎基础扎实的求职者的,而且都会委以重任和重点培养。当然所有公司也都欢迎接受过短期职业培训能够熟练使用一两门工具进行开发的人,但是这些人公司不会重点培养,而且只会给他们一些重复性的劳动,就像流水线上的工人,有几个工厂会把流水线工人培养成骨干呢?又有几个流水线工人认为自己有前途呢?"上等男人豪赌,中等男人不赌,下等男人滥赌"。

from:http://www.jsj321.com/forum/viewthread.php?tid=431&extra=page%3D1

posted @ 2008-11-27 22:32 CowNew开源团队 阅读(1178) | 评论 (0)编辑 收藏

在使用数据选择器的时候(ValueObjectDataPicker),如果只有一条数据,显示窗口的时候,提示document.formDataList.selectId[...]为空或不是对象。
这是一个Bug,修改WebContent\Ctrl\ValueObjectDataPicker.jsp 的getSelectedData 方法开头如下添加代码:
function getSelectedData()
{
if(document.formDataList.selectId.constructor != Array)
{
    var ret = new Array();
    ret[0] = document.formDataList.selectId;
    return ret;
}
var selectIndex=-1;
…………………………
}
posted @ 2008-11-13 23:05 CowNew开源团队 阅读(448) | 评论 (0)编辑 收藏

 

shupi 

Chinapub在线购买地址:http://www.china-pub.com/301651

当当网在线购买地址:http://product.dangdang.com/product.aspx?product_id=20368319

试读电子版下载:
下载地址1:http://www.blogjava.net/Files/huanzhugege/cxydSQLjd.zip
下载地址2: http://www.namipan.com/d/2ec1eacc92d2678a38095bef1d19ed938f78831d6f791500
第一本专门为程序员编写的数据库图书

《程序员的SQL金典》

  • 将子查询、表连接、数据库语法差异等用通俗易懂、诙谐幽默的语言讲解出来
  • 配合大量真实案例,学了就能用,在短时间内成为数据库开发高手
  • 高度提取不同数据库的共同点,仔细分析不同点,并给出解决方案,同时学会MSSQLServer、MYSQL、Oracle、DB2数据库不再是梦
  • 国内第一本讲解开窗函数实际应用的图书

轻举技术之“纲”,张合用之“目”,锻造SQL高可用性数据库应用指南从理论到实践,凝聚SQL主流数据库最前沿的技术要领。

本书特色:主要介绍SQL的语法规则及在实际开发中的应用,并且对SQL在MySQL、MS SQL Server、Oracle和DB2中的差异进行了分析;详细讲解数据库对增、删、改、查等SQL的支持并给出了相应的SQL应用案例;透彻分析函数、子查询、表连接、不同DBMS中的SQL语法差异、SQL调优、NULL值处理、事务、开窗函数等高级技术;通过对实际案例开发过程的详细分析,使读者掌握SQL的综合应用技巧。

内容提要

本书主要介绍SQL以及在实际开发中的应用,并且对SQL在MYSQL、MSSQLServer、Oracle和DB2中的差异性进行了分析。本书分为三部分:第一部分为基础篇,主要讲解数据库对增删改查等SQL的支持,给出了这些SQL的应用案例;第二部分为进阶篇,讲解了函数、子查询、表联接、不同DBMS中SQL语法差异、SQL调优、NULL值处理、事务、开窗函数等高级技术;第三部分为案例篇,讲解了前两部分的知识的综合运用。此书适用于学习数据库编程的读者,对于有一定数据库开发经验的读者也有非常大的参考价值。

前言

市面上讲解数现在据库的书都花了很多篇幅讲解数据库的备份、授权、调优、修复、监控等内容,这些内容是数据库管理员(DBA)应该掌握的,而对于程序员来说更需要去掌握的则是SQL语句的使用。但是市面上专门讲解SQL语句的书非常少,初学者学习数据库开发过程中常常被那些写给DBA的书弄的晕头转向,无法真正快速的掌握SQL技术;而且这些书中讲解的SQL也常常是针对特定数据库系统的专有实现,无法很容易的在其他数据库系统中运行,读者需要阅读大量的书和查阅大量的文档才能掌握不同数据库系统的使用。

本书是专门写给程序员的,因此没有讲解备份、授权、调优、修复、监控等开发人员不关心的内容,直接从SQL语句入手让读者快速的掌握数据库开发的技能。“面向开发人员,讲解对开发人员最有用的知识”是本书的编写宗旨。

MYSQL、MSSQLServer、Oracle和DB2等都是非常流行的数据库管理系统(DBMS),虽然在大部分SQL语法上这些DBMS实现都是一致的,不过在实现细节以及高级语法方面这些DBMS的实现差异还是非常大的。如果编写能够兼容这些DBMS的SQL语句是开发人员经常需要面对的问题。本书将帮助读者从根本上解决这个问题。

很多开发人员对于SQL语句的掌握只限于简单的SELECT、UPDATE语句,对于稍微复杂的逻辑经常需要编写程序代码来完成,这不仅无法发挥数据库的优势,而且开发出的系统性能非常低,而如果能够使用数据库函数、子查询、表联接、开窗函数等高级的SQL特性则可以大大简化系统开发的难度,并且提高系统的性能。本书将对这些高级特性进行详细的讲解。

本书第1、2章介绍数据库系统的基本知识以及基本操作;第3章介绍Insert、Delete和Update语句的基本应用;第4章对Select语句进行全面的介绍,对模糊匹配、分组、限制数据条数、计算字段、组合查询等高级内容进行了重点的讲解;第5章介绍常用的数据库函数以及它们在主流DBMS中的实现差异;第6章介绍索引与约束等知识点;第7、8章分别介绍表连接、子查询等高级查询技术;第9章对主流DBMS的语法差异进行分析,并且给出了解决方案;第10章介绍注入漏洞攻击、SQL调优、事务、自动增长字段、NULL值处理、开窗函数等高级话题;第11章以一个案例讲解书中知识点在实际开发中的应用。

在此,我要感谢为这本书的诞生给于我帮助的所有人。首先我要感谢CowNew开源团队的朋友们一直以来的无私奉献;感谢KingChou在开发CowNewSQL过程中的卓越工作,没有CowNewSQL也就不会有这本书的问世;还要感谢EasyJF的蔡世友,他一直以来对开源事业的奉献是值得我学习的;最后我要感谢电子工业出版社的田小康经理,他的高效工作使得本书能够顺利的完成和出版。

如果您对我的书有任何意见和建议,您可以给我发送邮件:about521@163.com,本书相关的后续资料将会发布到CowNew开源团队网站(http://www.cownew.com)中。

第1章 数据库入门 1

1.1 数据库概述 1

1.1.1 数据库与数据库管理系统 1

1.1.2 数据库能做什么 2

1.1.3 主流数据库管理系统介绍 2

1.2 数据库基础概念 5

1.2.1 Catalog 5

1.2.2 表(Table) 6

1.2.3 列(Column) 7

1.2.4 数据类型(DataType) 8

1.2.5 记录(Record) 9

1.2.6 主键(PrimaryKey) 9

1.2.7 索引(Index) 10

1.2.8 表关联 12

1.2.9 数据库的语言——SQL 13

1.2.10 DBA与程序员 14

第2章 数据表的创建和管理 17

2.1 数据类型 17

2.1.1 整数类型 17

2.1.2 数值类型 19

2.1.3 字符相关类型 21

2.1.4 日期时间类型 23

2.1.5 二进制类型 24

2.2 通过SQL语句管理数据表 25

2.2.1 创建数据表 25

2.2.2 定义非空约束 26

2.2.3 定义默认值 27

2.2.4 定义主键 27

2.2.5 定义外键 29

2.2.6 修改已有数据表 30

2.2.7 删除数据表 31

2.2.8 受限操作的变通解决方案 31

第3章 数据的增、删、改 33

3.1 数据的插入 34

3.1.1 简单的INSERT语句 34

3.1.2 简化的INSERT语句 36

3.1.3 非空约束对数据插入的影响 36

3.1.4 主键对数据插入的影响 37

3.1.5 外键对数据插入的影响 38

3.2 数据的更新 38

3.2.1 简单的数据更新 39

3.2.2 带WHERE子句的UPDATE语句 40

3.2.3 非空约束对数据更新的影响 41

3.2.4 主键对数据更新的影响 42

3.2.5 外键对数据更新的影响 42

3.3 数据的删除 43

3.3.1 简单的数据删除 43

3.3.2 带WHERE子句的DELETE语句 44

第4章 数据的检索 47

4.1 SELECT基本用法 48

4.1.1 简单的数据检索 48

4.1.2 检索出需要的列 49

4.1.3 列别名 51

4.1.4 按条件过滤 52

4.1.5 数据汇总 53

4.1.6 排序 56

4.2 高级数据过滤 59

4.2.1 通配符过滤 59

4.2.2 空值检测 63

4.2.3 反义运算符 64

4.2.4 多值检测 65

4.2.5 范围值检测 66

4.2.6 低效的“WHERE 1=1” 68

4.3 数据分组 72

4.3.1 数据分组入门 74

4.3.2 数据分组与聚合函数 76

4.3.3 HAVING语句 79

4.4 限制结果集行数 81

4.4.1 MySQL 81

4.4.2 MS SQL Server 2000 82

4.4.3 MS SQL Server 2005 83

4.4.4 Oracle 84

4.4.5 DB2 86

4.4.6 数据库分页 88

4.5 抑制数据重复 90

4.6 计算字段 91

4.6.1 常量字段 92

4.6.2 字段间的计算 93

4.6.3 数据处理函数 95

4.6.4 字符串的拼接 97

4.6.5 计算字段的其他用途 103

4.7 不从实体表中取的数据 105

4.8 联合结果集 107

4.8.1 简单的结果集联合 108

4.8.2 联合结果集的原则 110

4.8.3 UNION ALL 112

4.8.4 联合结果集应用举例 114

第5章 函数 119

5.1 数学函数 122

5.1.1 求绝对值 122

5.1.2 求指数 122

5.1.3 求平方根 123

5.1.4 求随机数 123

5.1.5 舍入到最大整数 125

5.1.6 舍入到最小整数 126

5.1.7 四舍五入 127

5.1.8 求正弦值 128

5.1.9 求余弦值 129

5.1.10 求反正弦值 129

5.1.11 求反余弦值 130

5.1.12 求正切值 130

5.1.13 求反正切值 131

5.1.14 求两个变量的反正切 131

5.1.15 求余切 132

5.1.16 求圆周率π值 132

5.1.17 弧度制转换为角度制 133

5.1.18 角度制转换为弧度制 134

5.1.19 求符号 134

5.1.20 求整除余数 135

5.1.21 求自然对数 136

5.1.22 求以10为底的对数 136

5.1.23 求幂 137

5.2 字符串函数 137

5.2.1 计算字符串长度 138

5.2.2 字符串转换为小写 138

5.2.3 字符串转换为大写 139

5.2.4 截去字符串左侧空格 139

5.2.5 截去字符串右侧空格 140

5.2.6 截去字符串两侧的空格 141

5.2.7 取子字符串 143

5.2.8 计算子字符串的位置 144

5.2.9 从左侧开始取子字符串 145

5.2.10 从右侧开始取子字符串 146

5.2.11 字符串替换 147

5.2.12 得到字符的ASCII码 148

5.2.13 得到一个ASCII码数字对应的字符 149

5.2.14 发音匹配度 151

5.3 日期时间函数 153

5.3.1 日期、时间、日期时间与时间戳 153

5.3.2 主流数据库系统中日期时间类型的表示方式 154

5.3.3 取得当前日期时间 154

5.3.4 日期增减 157

5.3.5 计算日期差额 166

5.3.6 计算一个日期是星期几 172

5.3.7 取得日期的指定部分 177

5.4 其他函数 183

5.4.1 类型转换 183

5.4.2 空值处理 188

5.4.3 CASE函数 191

5.5 各数据库系统独有函数 194

5.5.1 MySQL中的独有函数 195

5.5.2 MS SQL Server中的独有函数 202

5.5.3 Oracle中的独有函数 206

第6章 索引与约束 209

6.1 索引 209

6.2 约束 211

6.2.1 非空约束 211

6.2.2 唯一约束 212

6.2.3 CHECK约束 217

6.2.4 主键约束 221

6.2.5 外键约束 224

第7章 表连接 233

7.1 表连接简介 236

7.2 内连接(INNER JOIN) 236

7.3 不等值连接 240

7.4 交叉连接 241

7.5 自连接 245

7.6 外部连接 248

7.6.1 左外部连接 250

7.6.2 右外部连接 251

7.6.3 全外部连接 252

第8章 子查询 255

8.1 子查询入门 261

8.1.1 单值子查询 261

8.1.2 列值子查询 263

8.2 SELECT列表中的标量子查询 265

8.3 WHERE子句中的标量子查询 267

8.4 集合运算符与子查询 270

8.4.1 IN运算符 270

8.4.2 ANY和SOME运算符 272

8.4.3 ALL运算符 274

8.4.4 EXISTS运算符 275

8.5 在其他类型SQL语句中的子查询应用 277

8.5.1 子查询在INSERT语句中的应用 277

8.5.2 子查询在UPDATE语句中的应用 283

8.5.3 子查询在DELETE语句中的应用 285

第9章 主流数据库的SQL语法差异解决方案 287

9.1 SQL语法差异分析 287

9.1.1 数据类型的差异 287

9.1.2 运算符的差异 288

9.1.3 函数的差异 289

9.1.4 常用SQL的差异 289

9.1.5 取元数据信息的差异 290

9.2 消除差异性的方案 293

9.2.1 为每种数据库编写不同的SQL语句 293

9.2.2 使用语法交集 294

9.2.3 使用SQL实体对象 294

9.2.4 使用ORM工具 295

9.2.5 使用SQL翻译器 296

9.3 CowNewSQL翻译器 299

9.3.1 CowNewSQL支持的数据类型 299

9.3.2 CowNewSQL支持的SQL语法 300

9.3.3 CowNewSQL支持的函数 305

9.3.4 CowNewSQL的使用方法 309

第10章 高级话题 313

10.1 SQL注入漏洞攻防 313

10.1.1 SQL注入漏洞原理 313

10.1.2 过滤敏感字符 314

10.1.3 使用参数化SQL 315

10.2 SQL调优 316

10.2.1 SQL调优的基本原则 317

10.2.2 索引 317

10.2.3 全表扫描和索引查找 318

10.2.4 优化手法 318

10.3 事务 324

10.3.1 事务简介 324

10.3.2 事务的隔离 325

10.3.3 事务的隔离级别 326

10.3.4 事务的使用 327

10.4 自动增长字段 327

10.4.1 MySQL中的自动增长字段 327

10.4.2 MS SQL Server中的自动增长字段 328

10.4.3 Oracle中的自动增长字段 329

10.4.4 DB2中的自动增长字段 332

10.5 业务主键与逻辑主键 333

10.6 NULL的学问 334

10.6.1 NULL与比较运算符 336

10.6.2 NULL和计算字段 337

10.6.3 NULL和字符串 338

10.6.4 NULL和函数 339

10.6.5 NULL和聚合函数 339

10.7 开窗函数 340

10.7.1 开窗函数简介 342

10.7.2 PARTITION BY子句 344

10.7.3 ORDER BY子句 346

10.7.4 高级开窗函数 353

10.8 WITH子句与子查询 360

第11章 案例讲解 363

11.1 报表制作 371

11.1.1 显示制单人详细信息 371

11.1.2 显示销售单的详细信息 373

11.1.3 计算收益 374

11.1.4 产品销售额统计 378

11.1.5 统计销售记录的份额 379

11.1.6 为采购单分级 380

11.1.7 检索所有重叠日期销售单 383

11.1.8 为查询编号 385

11.1.9 标记所有单内最大销售量 386

11.2 排序 389

11.2.1 非字段排序规则 389

11.2.2 随机排序 390

11.3 表间比较 391

11.3.1 检索制作过采购单的人制作的销售单 391

11.3.2 检索没有制作过采购单的人制作的销售单 392

11.4 表复制 394

11.4.1 复制源表的结构并复制表中的数据 394

11.4.2 只复制源表的结构 395

11.5 计算字符在字符串中出现的次数 396

11.6 去除最高分、最低分 396

11.6.1 去除所有最低、最高值 397

11.6.2 只去除一个最低、最高值 397

11.7 与日期相关的应用 398

11.7.1 计算销售确认日和制单日之间相差的天数 398

11.7.2 计算两张销售单之间的时间间隔 399

11.7.3 计算销售单制单日期所在年份的天数 401

11.7.4 计算销售单制单日期所在月份的第一天和最后一天 402

11.8 结果集转置 403

11.8.1 将结果集转置为一行 404

11.8.2 把结果集转置为多行 406

11.9 递归查询 410

11.9.1 Oracle中的CONNECT BY子句 410

11.9.2 Oracle中的SYS_CONNECT_BY_PATH()函数 414

11.9.3 My SQL Server和DB2中递归查询 415

附录A 常用数据库系统的安装和使用 417

A.1 DB2的安装和使用 417

A.2 MySQL的安装和使用 429

A.3 Oracle的安装和使用 441

A.4 Microsoft SQL Server的安装和使用 452

20081021

posted @ 2008-10-23 09:58 CowNew开源团队 阅读(2413) | 评论 (2)编辑 收藏