2007年11月27日

作为开发者,在站队和选择中什么才是我们的根本?


[一篇文章激起这么多人的讨论,有赞成的也有反对的亦有看笑话冷嘲热讽的,不过很多事情其实不重要,做好自己才重要。每个人都有自己的看法,林子大了总要各种鸟的存在,也需要有各种鸟的存在。]

从产生高级语言以后,我们就不断地需要站队选择,从选择高级语言,到选择IDE平台,从选择Java还是.Net,到选择何种中间件平台。现在又出现了RIA和SOA的队列,无穷无尽。。。。。

正因为有了这些才会有语言之争、使用不同语言不同IDE平台程序员的对立,JAVA VS .NET  PHP VS RUBY ON RAILS。在站队和选择中,很多很多程序员迷失了,也许框架、语言确实给我们带来了便利,也许我们有选择或无选择的使用着软件提供商开发的IDE拖拉着控件开发程序也感觉没有什么不好,也许你认为这样是天经地义的也是大势所趋的,但是 BUT 你在站队 选择中失去了自我。

我承认ruby on rails的确很酷,Ajax实现的效果也确实很棒,GOOGLE MAP 开放出来的API让我们实现了很多很多以前无法做到的效果,当你和朋友说我又买了一本诸如《C#3.5 FrameWrok揭秘》的经典书籍时略显满足的表情也许会让朋友暗叹你真上进。

我们总是在何种技术何种平台上去选择着,去努力研究着规则、标准,去祈祷着她的长久,因为她是你的饭碗。

是的!作为开发者,我们总要去选择去排队,即便精通诸多语言诸多开发工具,也要去选择现在用什么。

世界上最可悲的是永远都在梦里而自始至终不知道真相的人,很不幸我们也许就是梦中人。

写了这么多,您可能也不知道我要说什么,那么我通过几个问题来表述我要说什么。

1、您买的书中是否有诸如 图论、概率论、统计学、数据挖掘、TCP/IP协议详解、现代数学手册、等等底层并且基础的书?这些书占您所有书的多少比例?

2、有迭代法、穷举搜索法、递推法、贪婪法、回溯法、分治法、动态规划法中您掌握了哪些?

3、线性表、栈/队列、串、多维数组、广义表、树、图、排序、查找、文件 这些数据结构的基本概念您是否都了解和明白?

在站队、选择时这些才是我们的根本,而往往真正缺失又不在意的却是它们........

假如我们连这些真正该掌握的都缺失了,那么我们自以为拥有的就不叫拥有,我们也只能盲目或自认为的在选择中选择、在站队中站队,直到有一天因为年纪的增长跟不上技术的革新而被淘汰掉。

posted @ 2007-11-27 01:41 坯子 阅读(4760) 评论(84) 编辑

2006年12月31日

祝大家新年快乐 [Web页快照项目]发布一个新版本

根据 Kai.Ma 1.0版本和 萧寒发布的版本 修改整合了若干代码
该版本实现了AJAX半透明效果 并对输入数据存入了数据库
同时加入了ErrorInfo日志函数

演示地址:http://webpic.marlin.com.cn

下载地址:http://webpic.marlin.com.cn/Webpro.rar

提示:如遇到调用com 返回失败或错误 请重新启动iis即可

最后祝大家新年快乐!07年好运:)

posted @ 2006-12-31 16:29 坯子 阅读(318) 评论(5) 编辑

在web上 如何解决 对 COM 组件的调用返回了错误

System.Runtime.InteropServices.COMException (0x80004005): 对 COM 组件的调用返回了错误 HRESULT E_FAIL 
捆饶我10几小时的问题终于解决了,因为使用了STA模式,我在各个函数写入日志函数来替代跟踪调试.

2002-1-6 13:51:12正在中止线程。InitComobject()
2002-1-6 13:51:52StaRun New WebPreviewBase前还未挂
2002-1-6 13:51:52WebPreviewBase的构造函数没有问题
2002-1-6 13:51:52进入 GetWebPreview()还没有挂
2002-1-6 13:51:52进入InitComobject()还没有挂http://webpic.marlin.com.cn/
2002-1-6 13:51:52对 COM 组件的调用返回了错误 HRESULT E_FAIL。InitComobject()
2002-1-6 13:51:52对 COM 组件的调用返回了错误 HRESULT E_FAIL。 213

最后又锁定到InitComobject()函数

try
            
{
                Commons.ErrorInfo.Log("进入InitComobject()还没有挂"+this._uri);
                _wb.Navigate(this._uri); //在这个地方挂掉的
                Commons.ErrorInfo.Log("_wb.Navigate()"+_uri+" 还没有挂");
                //因为没有窗体,所以必须如此
                while (_wb.ReadyState != WebBrowserReadyState.Complete)
                {
                    //立即重绘
                    Application.DoEvents();
                }
                //这句最好注释,不然网页上的动画都抓不到了
                //_wb.Stop();
                if (_wb.ActiveXInstance == null) throw new Exception("实例不能为空");
            }
            
catch (Exception ex)
            
{
                Commons.ErrorInfo.Log(ex.Message 
+ "InitComobject()");
                
throw ex;
            }

 诡异的地方是 在本地没有任何问题 而放到服务器上 就会报上面的错误.
真正的原因今天中午吃饭时终于被我擒到了,
是IIS的问题,只要重新启动一下IIS 就ok了
这真是一个简单的问题,但也是一个很冷僻的问题
WEB上调用Com组件或者System.Windows 下的dll 只要报这种错误都是源于这个问题.

 

posted @ 2006-12-31 14:04 坯子 阅读(3270) 评论(7) 编辑

2006年10月3日

实现以空格分割 的tag模式的文章插入以及存储过程

因为中国使用方块字,所以对于tag,中国人也喜欢用空格来间隔来表示不是同一个tag

我的解决的方案是这样的 在这里和大家分享,如有好的思路希望可以大家一起讨论.

比如 这里 给用户 一个题目输入框 内容输入框  一个tag输入框 支持tag以空格分割

这里我们重点说明的是程序如何辨别tag空格的 以及插入做操的存储过程。

我是利用正则,获取到字符串中的空格 然后替换成"," 这样我们就可以传入数据库由存储过程来处理了

比如你输入的tag形式如下:voosay  blog  pizi 那么使用正则以后变成 voosay,blog,pizi  这样我们就可以直接交给存储过程来处理了。存储过程代码在最下面。

程序里正则地使用很简单 两行:

string p = @"\s+";
  string result = Regex.Replace("voosay  blog  pizi ",p,",");

以下是存储过程,我加了足够的注释,大家应该可以看得懂

CREATE  PROCEDURE voosaythemtag
@themname nvarchar(50),
@userid int,
@classid int,
@readme ntext,
@kword nvarchar(50),
@wordback int output

AS
declare @Tagid int
declare @Taid int
declare @num int
declare @tagname nvarchar(1000)
declare @sum int
declare @word nvarchar(50)
declare @f varchar(8000)
declare @int int
declare @a int


insert them(themname,readme,userid,voosayclassid)
values(@themname,@readme,@userid,@userid,@classid)--先插入数据建立专题
set @Taid=@@identity--获取刚刚插入的主健
if(@kword<>'' and @kword<>null)--判断输入的tag是否为空
begin
 set   @int=charindex(',',@kword)
 if(@int=0)--@int为零意味着插入的tag只有一个
 begin
  select @num=count(themtagid) from themtag where themtagname=@kword
  if(@num=1)--@num等于1意味着tag名字已经存在
  BEGIN
   select @tagid=themtagid from themtag where themtagname=@kword---获取该tag已经存在的tagid
   INSERT themvstag VALUES(@tagid,@Taid)--建立专题和tag的关系
  end
  else if(@num=0)--显然@num等于0意味着tag名字还不存在
  begin
   INSERT themtag(themtagname) VALUES(@kword)
   SET @tagid=@@identity--获得刚刚插入的主健
   INSERT themvstag VALUES(@tagid,@Taid)
  end
 end
 else---转折点 说明tag的个数是一个以上
 begin
  set   @f=@kword
  set   @int=0
  set   @int=charindex(',',@f)
  while   @int<>0
  begin
   set @word=left(@f,charindex(',',@f)-1)--从左面开始截取tag
   select @num=count(themtagid) from themtag where themtagname=@word
   if(@num!=0)--@num等于1意味着tag名字已经存在,@num这里必定是等于1 如果不等于0的话
   BEGIN
    select @tagid=themtagid from themtag where themtagname=@word
    INSERT themvstag VALUES(@tagid,@Taid)--建立专题和tag的关系
   end
   else
   begin
    INSERT themtag(themtagname) VALUES(@word)
    SET @tagid=@@identity
    INSERT themvstag VALUES(@tagid,@Taid)
    set   @f=right(@f,len(@f)-@int)--从传进来的tag中减去刚操作的那个字符串
    set   @int=charindex(',',@f)--建立新的字符串
   end
  end--在这里while循环结束 --下面的来进行判断字符串中最后一个
  select @num=count(themtagid) from themtag where themtagname=@f
  if(@num!=0)
  BEGIN
   select @tagid=themtagid from themtag where themtagname=@f
   INSERT themvstag VALUES(@tagid,@Taid)
  end
  else
  begin
   INSERT themtag(themtagname) VALUES(@f)
   SET @tagid=@@identity
   INSERT themvstag VALUES(@tagid,@Taid)
  end
 end
end

if(@@error<>0)
BEGIN
 set @wordback =1---表明存储过程失败
end
else
begin
 set @wordback=0 ---表明存储过程成功
end
GO

posted @ 2006-10-03 16:55 坯子 阅读(226) 评论(1) 编辑

2006年8月23日

我们为什么要做VooSay

 VooSay目前暂时停止了开发,因为我们发现现在做的已经不是当初我们想要的,变的太过于复杂,没有心意,如果几个月后VooSay变成了一个豆瓣或者其他别的模仿者,那么我们将对不起我们的付出,整个事情也变得毫无意义和无趣。所以在这个时候让VooSay暂时停下来不是一件坏事。

        5个月前我来到中搜,工作之余我想做一个关于博客搜索的系统,当时博客是非常火爆的,我也意识到博客文章的质量相比很多信息来说是很高的,而且更具有个人性和主观性,在中国当前这种舆论环境下,这些信息更显得弥足珍贵。借助中搜的资源和自己的摸索,花了2个多月一个简单的搜索能够正常工作了,那个时候刚好认识了YUTOU,我和他谈了我这个东西,他很有兴趣,然后我们决定一起来玩这个东西。

       当我们真正开始要做这件事情时,发现不是这么简单,做搜索需要很多机器,需要巨大的带宽,还有就是要设计一系列的算法来支持整个系统可以最优的运作起来,如果单纯做一个开源的软件,开发出来往源码站一扔也就完了,但也许因为我们是2个很认真做事的人,我们决定不能简单的玩这件事。

      做Voosay的目的是为了能够让每一个人都可以看到真实的、有感情的、有价值的文章,找到"臭味相投"的同志。能够每天不用再依次打开自己喜欢的十几个博客去阅读,能够和博客作者更近的交流,可以和相同阅读趣好的人共享资源以及成为朋友,还是很重要的就是Voosay要给人不同的阅读习惯。

    也许具有博客的个人性又有论坛的社会性是任何Web2.0网站都想实现的,但VooSay要超越这一点,当徐嘉从天津来到北京加入团队,当把想法落实到实际,当开始分工工作,当开发进入正轨,当中搜出现裁员风波........,直到我们都一起停下脚步,坐下来讨论,然后决定暂停VooSay开发,停下来重写审视VooSay 打造 VooSay。在这个痛苦受煎熬的阶段,YUTOU在签名里写下了这样一句话:"请依然充满信心!"。

去年我送门楼了一首诗,今天门楼站在了所有人的眼前,并看看这个世界怎么审视她,那么今天我还想用这首诗送给VooSay,祝她早日绽放

 唐·黄巢《咏菊》:

    待到秋来九月八,我花开后百花杀。

    冲天香阵透长安,满城尽带黄金甲。

                                                                                                                                         王威写于06.8.11 14:54

posted @ 2006-08-23 14:38 坯子 阅读(188) 评论(0) 编辑

2005年10月3日

关于求知

以前的BLOG不可以用了 so 就搬家到这里
 那是在2000年我只身来到了新乡 一个陌生的城市里 一个陌生的大学,背负着太多太多的希望的我坐在明亮宽敞的大学教室里,眼睛湿润了.自己的父母和亲人现在是否仍在太阳的暴晒下的土地上为了给我挣下一年天文数字的学费忙碌着呢?

学习是一种享受,当时和现在都是这样认为的,学习计算机一个艰难而享受的过程,从我看的第一本《JAVA编程指南》开始,我就认为在这是一个充满着机会和热血的领域,我们中每一个人都有可能成为改变一切的英雄,在计算机领域历史的里程碑上深深刻下自己的名字。

每天14个小时以上的的学习时间,让我感觉时间是短暂的,这些时间根本就不够用,因为是刚刚进入程序设计这个领域的原因,很多现在看起来简单的知识对当时的我来看简直是看天书一样,大学一年级学习的是谭浩强的 C程序设计(第二版) ,是属于入门的一本书,里面带有课后习题。我用了半年的时间来看,并把所有的题目都做了一遍,感觉这是一本好书。所以到现在我不理解很多人说这本书误人子弟。。。我搞不懂为什么有人会这么说。
有了基础以后,我想更多的涉及c++范围内的知识,但学校并不给你更深学习的知识,所以在以后学习的道路上,都是自学的 虽然遇到了很多障埃,在后来的日子里却让我养成很强的自学能力和习惯。这是一种财富 并讲陪伴我一生。

在大一的下半年和大二的上半年,学习的效率很高 这段时间我看完了 C++ Primer Plus(第四版)中文版 ,c++程序设计语言(特别版),Windows 程序设计(第5版)(上、下册), Microsoft Visual C++.NET技术内幕(第6版),那是一段怎样的日子我忘记了。现在的脑海里只能记起一个瘦黑的孩子每天拿着一本书一支笔和一份白纸在忘情的吸取着知识。。。。当时真的是忘情。。。。。。

我觉得编程是一项实践性很强的科学,无非就是看代码和写代码的一个过程,写代码的过程中会有很多问题,不要怕出现问题,问题出现的越多,才会学到越多的东西,而且这些出现问题的地方你会记忆的比较深。在学习的过程中会看很多书,有时候会有看不懂的时候,看不懂不免有些人会很郁闷<大部分应该是初学者>,我想下面这句话应该对大家有所帮助:"能看懂的书,仔细看,看不懂的书,硬着头皮看。很多时候看不懂的书,其实是你觉得自己看不懂所以才看不懂的。"

学习是另一种可卡因,在学习到一定状态下 你会感觉有太多太多的问题需要你来解决,而这些问题的解决是需要你不断完善自己。在学完c++以后 我又深入的学习了WEB的应用和开发,asp php jsp 以及xml

等等 让我比较清晰的理解了整个程序编写以及在系统应用和网络应用中的作用和过程,面向过程—面向对象—面向组件—面向集成 这是程序设计发展的过程 也是我学习的过程 我为亲身经历和体验这一段计算机领域历史感动自豪和欣慰。

目前我现在所从事的领域主要是c#/java程序设计,基于XML的.net的商务研发工作,我希望自己能为计算机世界做一点微薄的贡献 这是我的理想 也是我的动力。

有回报就会有付出,你得到一些东西自然也会失去一些东西,从事这个行业 就是学习学习再学习,也是一个解决问题的过程。每天面对着上千行代码不能不说这是一个很枯燥乏味的工作。有的时候特别是深夜你也会莫名孤独。很少有自己的时间 没有女朋友的陪伴 牺牲自己的个人爱好 身体越来越差…………………..

所有失去的这些在我看来是值得的,正如流星一样 一瞬间的光芒四射的从天际划过胜过欲过千年的萧然沉默。我爱这个行业 对知识的渴求 对问题解决的强烈渴求 如果可以能爱上任何事物的话 我想说我爱它这个行业



(这篇文章是朋友jevese托我写给一个不知道名字正为求知迷茫的朋友写的,在此送这位朋友一句话:"算法+适当的语言描述=程序" 希望有一天你能理解这句话。)

posted @ 2005-10-03 16:39 坯子 阅读(215) 评论(0) 编辑

2005年10月1日

我反思 故我在(写给XMLOL所有成员的一封公开信)

摘要: 在2005年6月我还未毕业的时,maxazure和superbug就极热情的呼唤到郑州一起创业,通过网络交流给我讲述了现在团队的现状:他们已经从以前的IT公司脱离出来,真正以XMLOL为技术团队开始创业了,有了自己的办公室,并在同乐租了一套居民房,vivi也加入进来,招聘了2个DEPHI程序员,项目非常多 根本忙不过来。一切都显的如此美好(当时给我的印象是如此),作为一个还未真正踏入社会的大学生在...阅读全文

posted @ 2005-10-01 21:38 坯子 阅读(327) 评论(1) 编辑

2005年5月25日

编码标准和代码检查

摘要: 全面的编码标准包含代码结构的所有方面。虽然开发人员在实现标准时应慎重,但只要应用了就应该坚持。完成的源代码应该反映出一致的样式,就像一个开发人员在一个会话中编写代码一样。在开始软件项目时,建立编码标准以确保项目的所有开发人员协同工作。当软件项目并入现有的源代码时,或者在现有软件系统上执行维护时,编码标准应说明如何处理现有的基本代码。源代码的可读性对于开发人员对软件系统的理解程度有直接影响。代码的可...阅读全文

posted @ 2005-05-25 20:22 坯子 阅读(411) 评论(0) 编辑

导航

公告

我的博客文章的主要更新在:http://idai.blogbus.com

昵称:坯子
园龄:6年8个月
粉丝:0
关注:0

搜索

 
 

常用链接

随笔分类(4)

博客链

最新评论

评论排行榜

推荐排行榜