之道信息技术有限公司是一家专业为个人用户、企业和其它特定社会群体提供信息化解决方案的留学生高科技企业。之道成员年轻但不乏经验,富有激情却不失稳重,执着于信息技术的平民化和全民化。我们将通过一系列的信息工具、客户端、网络服务和方案设计来将我们的想法一点点变成现实,秉承正直尊重的核心价值观,遵循负责任的商业惯例,营造出一种负责任的文化,帮助用户实现信息时代的价值。
浏览模式:列表|普通当前1/1页
最近牛奶newnai.com项目执行过程中,出现了很多这样那样的问题,流程上下链衔接很是别扭
 
原因有很多,多说不宜,相互换位;思考,信任跟宽容才是大家前进的动力。
 
首先从源头开始,作为项目负责人,我会谨记以下10点:
1、不要批评、责怪或抱怨。

--把所有事怪罪于别人于事无补,去想办法解决问题吧!


2、献出你真实、诚恳的赞赏,多鼓励,让别人觉得他重要。

--每个人都有优秀的地方,你的对手也不例外。


3、引起别人的渴望。

--项目成功于否,与项目关系人的利益越紧密,项目成功可能性越大。


4、对项目有兴趣,并使别人也对项目有兴趣。

--没兴趣的项目做不好,对项目的兴趣和热情是成功的保证。


5、问题产生了,记得保持微笑。

--微笑吧,因为问题尽在你掌握中。


6、记住项目最关键的因素是人,而不是其它。

--不要天天只关心技术,抬起头,看看你周围的人吧。


7、避免争论,尊重别人的意见,要善于倾听,勤于思考,将成果归功于别人的意见。

--听多思多做多但说少,你会发现,事情都会如你所愿。


8、用商量的口气,别指使人,哪怕你是董事长。

--谁都不会喜欢受到命令。


9、间接指出错误,顾全别人的面子。

--别人会暗地里感谢你。


10、最后,多反省自己,勇敢承认自己的错误,担起最大的责任。

--承认自己的错误实在太难了,目前只有圣人才做得到。
 
大家共同监督,Newnai加油!
分类:牛奶网 | 固定链接 | 评论:0 | 查看次数:350

职位名称:技术总监
工作地点:武汉留学生创业园

工作职责:
1.参与公司旗下新项目系统架构选型、设计、编码;
2.负责牛奶newnai.com的日常维护;
3.负责牛奶newnai.com新产品的开发、部署、维护;

任职要求:
1.计算机或相关专业本科及以上学历,精通java语言;
2.精通javascript,对各种浏览器内置对象熟悉,对于写跨浏览器的脚本有经验,熟练操作DOM, XML, 了解ajax.
3.3年以上J2ee开发经验,熟练掌握JSP,Servlet,Struts, Spring 和Hibernet,熟悉J2EE主流平台(如Tomcat,WebLogic等)和开发工具(如Eclipse等)
4.精通面向对象的分析和设计技术,包括设计模式、UML建模等;
5.精通MSSQL数据库,能熟练使用SSH组合框架架构web系统,有大型SNS类web2.0应用系统经验者优先;
6.极强的逻辑分析能力,专注于技术,精益求精,对业界的最新技术发展动态有比较密切的关注;
7.工作主动性好,有创业激情,良好的沟通与团队合作能力;
8.请提供2个以上项目实例或链接,本职位谢绝应届毕业生

公司官方站:www.z-dao.com

公司产品站:
www.newnai.com

尤其适合从湖北走出去北京,上海,杭州,广州,深圳等互联网发达地区漂荡几年;

最近有志于回武汉大展拳脚的筒学们 呵呵
 

武汉的XD帮忙顶一下,这年头找个拍档不容易;
基本原则就是:给钱,给头衔,给小弟。。。
细节详谈,有意者请Q我:415882495

分类:开发日志 | 固定链接 | 评论:0 | 查看次数:370

引子:自从jdk1.5引入范式以来,所带来的好处很多很多,使得我们程序员在维护程序的时候要少花很少功夫。在程序中使用范式,只要你是jdk1.5编译器来没有任何问题。但是在jsp页面中就没有那么轻松了。(当然是用ide工具的就不用管了,因为别人已经都帮你弄好了。)

要在jsp页面中使用范式,按照如下步骤:

1.到tomcat下的conf文件夹,然后打开web.xml,找到

    <servlet>  

       <servlet-name>jsp</servlet-nam>

       <servlet-class>省略。。。</servlet-class>

      @mark

    </servlet>

然后再@mark标记处加入

         <init-param>
             <param-name>compilerSourceVM</param-name>
             <param-value>1.5</param-value>
         </init-param>
         <init-param>
             <param-name>compilerTargetVM</param-name>
             <param-value>1.5</param-value>
         </init-param>

2.把common/lib/文件夹下面的jsp-compiler-jdt.jar删掉

3.把ant.jar拷贝到common/lib/文件下下面

4.把tools.jar拷贝到common/lib/文件下面(如果已经包含在环境变量里面,则不用拷贝这个文件包)

5.最后确保JAVA_HOME变量指向JDK1.5或者更高版本。

希望各位兄弟少走弯路。:)

Tags: jsp 范型
分类:开发日志 | 固定链接 | 评论:0 | 查看次数:106
keyword:Unobtrusive Javascript、Progressive Enhancement、Gracefully Degrade。

今天,刚开始学习 JavaScript 的人是有福气的,因为他们面对的 Web 世界虽然还不够完美,但毕竟较之从前已经是进步良多了。

为什么这么说呢?JavaScript 新手可能或多或少地知道,在早期浏览器竞争的背景下,各浏览器厂商标新立异,独树一帜,纷纷推出自己的独门绝技。“百花齐放,百家争鸣”的结果虽然催生了 Web 的早期繁荣,为 JavaScript 后来登堂入室埋下了伏笔。但同时也造成了 JavaScript 脚本编写者们苦不堪言的局面,大量的时间和精力被投入到了浏览器及版本检测上面。而且,为实现同一个功能往往要针对不同浏览器的不同版本多次重写相同的代码逻辑,导致了严重的人力资源浪费;在更深层面上,由于无法做到“编写一次,随处运行”,也就意味着将来的 API、库或者框架们根本没有诞生的土壤。而且,由于代码无法重用意味着开发效率难以提升,JavaScript 编程似乎永远是难登大雅之堂的“小玩艺”而已。


可怜的 JavaScript! (摘自《Practical JavaScript DOM Scripting and Ajax Projects》)

在 W3C、ECMA 以及一些有识之士的不懈努力下,也是在 Microsoft 的 Internet Explorer 不断改进的基础上(毕竟 IE 的市场份额太大了),Web 开发产业终于等到了第二个春天--一个遵奉标准、笃行规范的 Web 新世界展现在世人面前。JavaScript 也从“世上最被人误解的语言” ,一跃成为 Web 开发产业中的又一主角,而且随着 Ajax 异步通讯模式的“重现江湖”并迅速大行其道,以 JavaScript 框架、RSS、XML 等诸多 Web 技术的创新应用为标志的富客户端概念再度流行。JavaScript 终于得到了它应有的尊崇地位。



JavaScript 获得了应有的尊敬。(摘自《Practical JavaScript DOM Scripting and Ajax Projects》)

如今,当初学者们随便拿起一本 JavaScript 书时,“Web 标准”都是出现频率最高的词汇。但在 Web 标准的背后,有三个重要的关键词注定将被载入史册,它们分别是:Unobtrusive Javascript、Progressive Enhancement 和 Gracefully Degrade。

提到这三个关键词,也要提到三个人:Chris Heilmann、Jeffrey Zeldman 和 Jeremy Keith。Chris Heilmann 最迟在 2005 年 6 月之前写成一篇长文,文章题目就是 Unobtrusive Javascript 。而 Jeffrey Zeldman 则在 2003 年 5 月出版了专著 Designing with Web Standards(中文版由电子工业出版社出版),该书较早地提倡“遵循 Web 标准进行设计”;而 Jeremy Keith 则是成立于 1998 年的 Web Standards Project (WaSP) 的 DOM Scripting Task Force 的领导人,也是 DOM Scripting(中文版由人民邮电出版社出版)的作者,对 DOM 脚本编程的发展起到了直接推动作用。

当然,Chris Heilmann、Jeffrey Zeldman 和 Jeremy Keith 只是倡导 Web 标准的众多有识之士中的代表人物,而 ECMA 262(ECMAScript Language Specification)和 W3C 的 DOM、Event 和 Style 等规范作为标准匆庸置疑地起到了中流砥柱的作用。

其实,最终还是想分享一下我对 Unobtrusive Javascript、Progressive Enhancement 和 Gracefully Degrade 这三个新兴术语的理解。

Unobtrusive Javascript,字面意思是“不唐突的 Javascript”或者“不莽撞的 Javascript”。虽然直译未尝不可,但显然不够精确。要精确地翻译这个词,就需要从其本质含义下手,追根溯源,查清它的来龙去脉。请看下面简单的代码:

function someFunc() {
if (!document.getElementById || !document.createTextNode){
return;
}
/* … 其他代码 … */
}someFunc 函数的函数体内第一行是一个 if 语句,该语句判断的条件是

!document.getElementById || !document.createTextNode

即,如果浏览器不支持这两个标准方法中的任何一个,那么就返回--什么也不做;也就是说,只有当浏览器同时支持这两个标准的方法时,才会执行 if 语句之后的代码。这其实就是所谓的 Unobtrusive Javascript 的核心,很有点知难而退的意思,不是吗?翻译成中国话就是“知其可为而为之”或者“知其不可为而不为”。那么,这个意思怎么翻译,而且怎么用三、四个汉字来准确地表达相同的意思呢?为寻找合适的答案,我几乎穷思极虑,仍然不得要领。结果,苦思冥想了好几个月的问题,今天堵车堵在天通苑时,似乎找到了答案。不卖关子了,我想出的译法是--“有的放矢”,说全了就是“有的放矢的 JavaScript”。“有的放矢”这个成语的意思是“有靶子才射箭。比喻说话、做事都有明确的目的(金山词霸2007-高级汉语词典)”。Chris Heilmann 虽然不一定知道中国有这么好的成语,但他的意思肯定也是这样。总而言之,Unobtrusive JavaScript 是一种“文雅”的说法,如果不客气的说,那就是“不标准的浏览器我 JavaScript 不伺候!”。能想出这么一个词,也真是难为这些老外了,想想他们,再想想自己,苦思冥想几个月又算得了什么呢?

Progressive Enhancement 和 Gracefully Degrade 可以说是一对儿“双胞胎”。因为,如果只有它们其中一个,而没有另一个,那么整个“包容”的概念是不完整的。说白了(怎么老是忍不住用粗话呢?),为了给用户更佳的体验,我想做到 Progressive Enhancement。然而,要是人家浏览器不支持怎么办?好吧,那就 Gracefully Degrade 吧。换句话说,Progressive Enhancement 是代表美好理想的新体验,而 Gracefully Degrade 则是面对残酷现实的替代品。(难怪 DOM Scripting 的译者们会把后者译为“预留后路”呢。没错,要是美好的理想实现不了,也不能“一死了之”呀,所以要“留一手”才对)。这两个概念,也不是只有与 JavaScript 有关的书中常见,.NET 中同样有类似的术语。但就 JavaScript 而言,这两个概念应该如何翻译才好呢?字面意思, Progressive Enhancement 是“改进性增强”,而 Gracefully Degrade 是“优雅的降级”,没错,但还是不够准确(笔者在2006年6月份翻译 Chris Heilmann 的长文《从 DHTML 到 DOM 脚本编程》时就将前者翻译成了“进步性增强”,将后者翻译成了“适度地妥协”,但现在认为这仍然不准确)。同样经历了一个艰苦的去粗取精、去伪存真的漫长过程,也同样是在今天堵车堵在天通苑时,这两个术语似乎有了点眉目。

从本质上讲,这两个概念涉及到通过 JavaScript 提升用户体验(增加更多的便利功能)和保证网页的可访问性(不能“英勇就义”就算完事了)这两个重要的核心思想。而决定用户体验好坏的当然是 JavaScript 所提供的新功能。如果用户的浏览器支持标准(并且启用了 JavaScript),那么 JavaScript 就会通过提供更多的便利功能使用户体验更上一层楼;而如果浏览器不支持标准(或者出于安全考虑关闭了 JavaScript),那么就把这些便利功能统统撤掉,就当它们不存在,虽然用户不如在前一种情况下方便,但仍然可以保证访问到页面的内容。基于这个分析,我决定把这两个术语分别翻译为:“功能增进”和“功能减退”。这样,无论从字面上,还是从含义中,都能体现 JavaScript 在面临标准和不标准的浏览器共存(以及用户开不开启 JavaScript )的现状时,所作出的抉择。
分类:开发日志 | 固定链接 | 评论:0 | 查看次数:79
  • 关于团队

  • 作者:youwin日期:2008年03月11日 16时24分53秒

项目可以重来,团队却无比珍贵,成功需要的是一群“傻瓜”的坚持而不是一个“傻瓜”;

让那些优秀的创业者,成为自己的朋友、同事、伙伴、或者合作者,这会是我们成功的基础。

Tags: 创业 团队
分类:开发日志 | 固定链接 | 评论:2 | 查看次数:122
  • JSP设置COOKIE

  • 作者:tian long日期:2008年01月19日 12时13分15秒

在jsp中如何设置cookie?

看到这个问题,估计只要稍微接触过jsp开发的程序人员都会回答:不会吧,这还不容易,到api里面去找cookie类的相关信息,然后调用相关函数就可以啊,这有什么好问的。

呵呵,不错。这个回答不能说错。谁用java去操作cookie不采用这个流程列。我也不例外,也是采用上面的方法。先实例化一个Cookie对象:

   Cookie zdaoCookie = new Cookie("cookieName","cookieValue");

然后设置:

   zdaoCookie.setMaxAge( 60*60*24*365);//一年过期

   response.addCookie(zdaoCookie);//浏览器写cookie信息

到这里,基本到位了,一般情况下就可以使用了。但是我们在实际的开发中,仍然会出现cookie删除不了,cookie值读取不了,cookie值设置不了的情况。比如,我们在服务的的根目录下面有个项目zdaoApp,然后在这个项目里面有几个子项目zdaoWeather,、、等等,如果我们在子项目里面仍然还是采用上面简单的三步到位式的操作,那么你想要保存的的那些信息浏览器是不会帮你保存的,并且你要在子项目里面想要删除的cookie信息,浏览器也是不会帮你删除的。为什么会出现这样的情况列?

其实,我们长期只是关注cookie的时间期限问题,但是对于它被保存在什么地方,基本上就忽略了,而恰恰是这个被忽略的属性,就会让我们不能控制它。这个设置保存在什么地方的功能,我一提到,大家肯定就马上想到了是要用setPath(),用它来设置你要把cookie保存到哪里,记住哦,这里setPath的参数也不是能乱给的哦,要和你的项目所在的路径一致哦,要不然,你还是会找不到它!

Tags: cookie jsp java
分类:开发日志 | 固定链接 | 评论:0 | 查看次数:219
在所有成员的努力下,探路者项目终于得到了一份完整的公交查询数据源。为了测试这份数据源的准确性,测试组成员可是花费了不少心血。

在测试的过程中测试出2条线路数据有误,这可是很重要的问题,探路者的任务可不能是把用户带领迷路了,抱着对大家负责的态度,一定要把这个问题追查清楚!于是我们的测试成员发扬了不怕吃苦,实事求是的工作作风,在风雪交加的天气里到户外又进行了新一轮的实地考证测试。付出终有回报,经过不懈努力,终于将探路者的数据错误率降到了最低!面对这份结果,我们项目所有的成员都激动不已,大家辛苦的工作终于交了一份满意的答卷!

   而且探路者的公交查询数据经过和互联网上其他公交查询的网站数据对比测试,得出我们的这份公交查询数据源是目前互联网上准确性和全面性较高的查询数据。过不了多久我们的探路者公交查询服务就要上线了。相信我们的探路者一定能为您带来便利的出行服务!敬请期待吧!

分类:探路者 | 固定链接 | 评论:0 | 查看次数:143

之道的易搜项目中的搜索分类是通过JS动态生成的,每个生成的元素都要动态的添加属性、事件。其中,添加属性可以采用赋值的方式,这对IE和FF都是适用的。比如:

     var element = document.createElement('select');

     element.id = "myselect";

上面的语句在IE和FF中都会有同样的效果,并且运行正常。但是我们创建的元素,大部分是要给其动态添加事件的,显然,我们不能和添加属性一样,直接在后面打个dot,然后写个事件名,然后后面跟着一串代码,那样是会报错的。所以我们可以采用如下的方法来添加事件:

   首先:我们要判断当前的浏览器是什么浏览器,我们仍然延用之前的定义,

   if( element.attachEvent ){

    //为IE以及IE内核的浏览器(1)

   }else if( element.addEventListener){

     //为FF以及NS内核的浏览器(2)

   }

   上面的if语句块就是帮我们完成当前浏览器是IE还是FF的判断。

   浏览器判断出来,然后我们要做的就是把函数注册到元素里面。下面我们给出我们定义的一个功能函数:

   function showElementId(elmt){

     alert(elmt.id);

   }

函数功能很简单,就是提示出参数里面的元素的ID。

如果是IE浏览器,我们把如下代码插入到上面的注释(1)处:

element.attachEvent( "onclick",function(){showElementId(elmt)});

如果是FF浏览器,我们把如下代码插入到上面的注释(2)处:

   var eventName = "onclick".replace(/on(.*)/i,'$1');
   element.addEventListener( eventName,function(){showElementId(elmt)},false);

   因为在FF中给元素注册事件的时候,不需要事件名称前面的“on”,所以要把on给替换掉。

 

好啦,如果今后各位同行在开发项目中,遇到要用JS动态给元素添加事件的时候,就可以采用上面的方法。那样就可以避免用户在用FF浏览器时候不能使用你幸苦开发的功能了。

分类:易搜 | 固定链接 | 评论:0 | 查看次数:74

1.公交查询,无外乎两种形式:直达和换乘,换乘又分为一次和两次或多次。

2.在考虑这个算法的时候,首先想的是从起点开始算起,一个站一个站的遍历下去,直到终点站,但很快就把这个想法否决了,虽然这个办法很通用而且可以达到换乘多次的目的,但是对于大部分用户来说,换乘两次就够用了,中间很多的遍历过程其实是在做无用功,所以开始考虑从起点和终点这两个站点着手。

公交换乘逻辑

以上是大致的换乘逻辑。

3.表结构的确定。
   以站为主键,列出经过该站的所有车的信息。

4.考虑算法的实现方法。
   一是数据取出后,放入JAVA集合中,再进行处理;
   二是直接在数据库中用存储过程实现。
   考虑到取数据的开销,直接用存储过程实现。

5.具体算法的代码省略

6.优化结构和算法。
   由于公交车信息表和站点信息表分开,由BUSID关联,所以需要两表关联,鉴于数据量很大,两表甚至涉及到多表关联,对数据库服务器压力过大,于是将站点表中增加了,城市ID,BUS名称等字段,目的就是,以牺牲容量的前提下,提高查询性能。
   另外在代码中多次用到临时表。
   一方面临时表可以另代码条理更清晰,便于修改和维护,
   另一方面由于相同的查询可能要用到几次所以先把查询出的数据放在临时表中便于后面的查询使用,可进一步提高性能。

    总结:此算法,并不复杂,但是由于数据量大,所以要更多的考虑查询的优化和服务器的开销。
    对于这个项目,我的感觉如下:
    结构第一,没有好的结构,后面的一切都将变的复杂和困难;
    第二是算法,这个项目的逻辑上并不复杂,只是需要找到最简单的办法;
    第三,优化,好的结构,是优化的第一步;
    然后就是,合理的索引,数据的归类,表的分割和连接等等。

分类:探路者 | 固定链接 | 评论:1 | 查看次数:528
  • 一句心得

  • 作者:Tim.Ren日期:2008年01月11日 14时37分03秒

态度左右成败。

Tags: 心得
分类:开发日志 | 固定链接 | 评论:1 | 查看次数:108
当前1/1页

返回顶部返回顶部