有人能告诉我Ant和Maven之间的区别吗?我也没用过.我知道他们习惯于自动构建Java项目,但我不知道从哪里开始.
如果你有一个有趣的故事要分享,请发一个答案,但不要滥用这个问题来抨击一种语言.
我们是程序员,我们的主要工具是我们使用的编程语言.
虽然有很多关于最佳编程的讨论,但我想听听你曾经使用过的最糟糕的编程语言的故事,我想知道你到底是什么烦恼.
我想收集这些故事,部分是为了避免在设计语言(特别是DSL)时遇到常见的陷阱,部分是为了避免未来的奇怪语言.
这个问题不是主观的.如果一种语言只支持单个字符标识符(请参阅我自己的答案),那么这是一个不容争议的方式.
编辑
有些人担心这个问题会吸引巨魔.趟过你所有的答案都有一点清楚.绝大多数答案都是恰当,有用且写得很好的.
更新2009-07-01 19:15 GMT
语言概述现已完成,涵盖102个答案中的103种不同语言.我决定对什么算作编程语言松懈,包括任何合理的东西.感谢大卫对此的评论.
以下是目前为止涵盖的所有编程语言(字母顺序,与答案相关联,新条目以粗体显示):
ABAP, 所有20世纪语言, 所有拖放语言, 所有专有语言, APF, APL (1), AS400, Authorware, Autohotkey, BancaStar, BASIC, Bourne Shell, Brainfuck, C++, Centura Team Developer, Cobol (1), Cold Fusion, Coldfusion, CRM114, Crystal语法, CSS, Dataflex 2.3, DB/c …
我已经使用了直接的Mongrel,我在Apache后面使用了Mongrel集群,我看过Thin,而且我对乘客非常感兴趣.我也看过Nginx.我看过MRI,Ruby Enterprise Edition,Rubinius和JRuby.有很多选择,每个都声称是新的圣杯.
一个全新的,完全最新的部署的最佳选择是什么?唯一的假设是这样的:
鉴于这些特别广泛的约束,在并发性和低开销方面,哪种软件组合将产生最佳结果?
我倾向于使用"worker"mpm和Passenger + Ruby Enterprise Edition,因为它提供了即时的稳定性和简单的设置和维护.
另外一个选择我可能会特别好吗?
我想为64位整数值计算2 n -1.我现在做的是这个
for(i=0; i<n; i++) r|=1<<i;
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更优雅的方式来做到这一点.这条线在内环中,所以我需要快速.
我想到了
r=(1ULL<<n)-1;
Run Code Online (Sandbox Code Playgroud)
但它不起作用n=64,因为<<只定义了n最多63的值.
编辑: 感谢您的所有答案和评论.这是一个小桌子,上面有我最好尝试和喜欢的解决方案.第二列是我(完全不科学的)基准时间的秒数.
r=N2MINUSONE_LUT[n]; 3.9 lookup table = fastest, answer by aviraldg r =n?~0ull>>(64 - n):0ull; 5.9 fastest without LUT, comment by Christoph r=(1ULL<<n)-1; 5.9 Obvious but WRONG! r =(n==64)?-1:(1ULL<<n)-1; 7.0 Short, clear and quite fast, answer by Gabe r=((1ULL<<(n/2))<<((n+1)/2))-1; 8.2 Nice, w/o spec. case, answer by drawnonward r=(1ULL<<n-1)+((1ULL<<n-1)-1); 9.2 Nice, w/o spec. case, answer by David Lively r=pow(2, n)-1; 99.0 Just for comparison …
我在线分发软件,并且总是想知道是否有更好的方法来更好地定义版本号.
让我们假设答案中有ABCD.什么时候增加每个组件?
你使用任何其他版本号技巧,如D mod 2 == 1意味着它只是一个内部发布?
您是否拥有自己版本号的测试版,或者您是否有每个版本号的测试版?
根据我的少量经验,我只使用Ant作为构建工具.还有其他更好的项目,为什么?
当您对实际网站进行更改时,如何检查实时系统是否正常工作?你用哪些工具?谁做到了?您是否在测试期间阻止访问该网站?可以接受多少停机时间?
我有一些批处理过程在Linux/PHP网站的幕后运行.它们的数量和复杂性开始增长,因此我想对它们进行少量处理.
我的源代码树有一堆cpp文件和脚本,按开发组织但不考虑部署.编译完所有可执行文件后,我需要在一组机器上放置各种脚本和二进制文件.不同的计算机需要为其批处理过程使用不同的可执行文件,脚本和配置文件.我也有一些我写的属于每台机器的工具.目前,此部署过程是手动且容易出错的.
我猜我最终会得到一个在源代码树根目录下运行的脚本,并构建一个包含任何机器所需的所有内容的小树.然后,我将把它同步到适当的机器上.但我很好奇其他人是如何处理这类问题的.有任何想法吗?
我在一家产品开发公司工作.我们首先做内部发布,然后公开发布.我想知道,其他产品开发公司如何管理他们的发布?你如何给出发行号码?标记源代码管理?
这是一个哲学问题.我在我的软件中添加了一个小功能,我认为它将被大多数用户使用,但只有10%的时间他们使用该软件.换句话说,软件在没有它的情况下已经好了3个月,但有4或5个用户要求它,我同意它应该在那里.
问题是,由于我正在使用的平台的限制(以及可能我的大脑的限制),"我能做的最好"仍然有一些非关键但明显的错误 - 让我们说编码的功能是可用的但在某些情况下"有点不稳定".
该怎么办?90%的功能真的"总比没有好"吗?我知道我会收到一些我无法解决的错误报告:我该告诉客户这些错误?我应该接受未答复的功能请求或未答复的错误报告吗?