虽然圈复杂度是一个值得衡量的指标,但我倾向于发现它是识别难以维护的代码的糟糕工具.特别是,我倾向于发现它只是突出显示某些类型的代码(例如解析器)并且错过了难以递归,线程和耦合问题以及许多已经定义的反模式.
还有哪些其他工具可用于识别有问题的Java代码?
注意,我们已经使用了PMD和FindBugs,我认为它们非常适合方法级别的问题识别.
我有一个DB表,包含25亿条记录.有1100万的重复.删除这1100万条记录的最快方法是哪一种?
可能重复:
Delphi,如何获取所有本地IP?
在不使用第三方组件的情况下,在Delphi 2009中获取机器本地IP地址的最简单,最快捷的方法是什么?谢谢.
Log Sequence Number是什么意思?我知道它是二进制类型和10bytes长,它对应于DB中事务发生的时间.但这是一个高精度的日期时间值,以某种有效的二进制格式存储,或者这是日期时间和其他东西的函数(例如,在相同的毫秒时间内发生的事务的序列号).我做了很多搜索,但找不到合适的答案.
任何人都可以解释用于从日期时间或任何事物中导出LSN的公式或函数.
当在"与程序员相关"和"明显回答"之间划清界线时,我通常倾向于后者,但我真的很想知道社区对此有何看法.我有一种感觉,这应该是CW(我从来没有创建过CW主题),但是我会让那些有更多SO经验的人来做这个电话.
摘要:
"开源"是否意味着"任何人都可以把我的工作带到任何地方,无论他们喜欢什么"?
编辑:对于那些要求,许可证是LGPL.
细节:
我的开源标题是在Codeplex上托管的,现在已经有一段时间了.今天,我看到它也在Softpedia上托管,没有明显的参考原作者的实际网站(链接在那里,一层或两层深,但不是应该如此突出).他们复制了所有相关的Codeplex内容并自己托管......就像一面镜子,但没有原作者的知识.
我根本没有被告知/问过/等等."开源"是否意味着"任何人都可以把我的工作带到任何地方,无论他们喜欢什么"?
我对这个项目没有任何经济利益.这只是一个有趣的爱好 - 满足用户需求并帮助我解决我作为开发人员的缺点(理想情况下是协作) - 也许是"回馈".如果我试图从这个项目赚钱,我会更加恼火...如果我从下载网站获得广告收入,例如(当用软件名称搜索时,你现在会发现Softpedia持有在Google的搜索结果中,该项目的Codeplex页面用于保存的位置).
无论如何,我不喜欢其他网站突然主持的气味,没有我的合作或祝福,不仅是可下载的安装程序,还有我的逐字产品描述,截图,更改日志等.
是的,他们已经显示了我的名字,但没有办法联系我.坦率地说,"我的名字"是我对他们在我不知情的情况下使用时最烦恼的事情- 我不认识这些人,我也不想以任何方式与他们或他们的网站联系.
我知道了.我在线.我做了些什么.人们将链接到我 - 这在技术上也是如此(如果你能找到链接),但这个网站感觉不对.
同样,如果该网站甚至是产品的最基本的评论/评论,那将会有所不同.但是这让我看起来就像是把自己与他们联系在一起 - 在那里创建一个帐户,或者其他东西 - 而我却没有.
他们将许可证简单地列为"免费软件",与Codeplex网站上随时提供的许可相比,这是模糊的(至少可以说).就像可编辑隐藏的Codeplex链接一样,他们对"免费软件"的定义在其网站的其他地方有更详细的解释,但它并不像Codeplex那样明显.我甚至还没有考虑过他们的"免费软件"定义是否/如何与选择LGPL的"我的"意图不同.
我没有尝试联系这些人,但是我的乐观情绪并不高,因为我开始聘请那些在不涉及他们的情况下复制他人内容的人(再次,没有"提交"内容发生在这里,他们的网站不提供独特的评论/补充我的工作).
我希望有人能提供有用/有用的东西吗?我喜欢这个项目(这是我的第一次开源尝试).我不希望它对我或我的用户来说是一件令人头疼的事吗?
这只是作为一个提供免费软件的开源软件作者的一部分吗?你的工作在其他地方(以及其他地方仍然是 - heh)得到重复,你无能为力吗?你认为这是一个合法的"链接"吗?我是否因为生气而错过了标记?
谁能告诉我最简单的方法来添加下拉列表中的所有项目 List<string>
我想List<string>用DropDownList的值填充a
我正在编写这个小程序,从文本文件中提取任意数量的电子邮件地址.我收到两个错误,"使用未分配的局部变量." 而且我不确定为什么.
static void Main(string[] args)
{
string InputPath = @"C:\Temp\excel.txt";
string OutputPath = @"C:\Temp\emails.txt";
string EmailRegex = @"^(?:[a-zA-Z0-9_'^&/+-])+(?:\.(?:[a-zA-Z0-9_'^&/+-])+)*@(?:(?:\[?(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))\.){3}(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\]?)|(?:[a-zA-Z0-9-]+\.)+(?:[a-zA-Z]){2,}\.?)$";
string Text = String.Empty;
StringBuilder Output;
List<string> Emails;
using (TextReader tr = new StreamReader(InputPath))
{
Text = tr.ReadToEnd();
}
MatchCollection Matches = Regex.Matches(Text,EmailRegex);
foreach (Match m in Matches)
{
Emails.Add(m.ToString().Trim()); // one error is here
}
foreach (String s in Emails)
{
Output.Append(s + ","); // the other error is here
}
using (TextWriter tw = new StreamWriter(OutputPath))
{
tw.Write(Output.ToString());
} …Run Code Online (Sandbox Code Playgroud) 如何正确地将应用程序从开发部署到生产以及如何处理多个站点配置.我的所有开发都通过位于var/svn/myapp/trunk的svn完成,实际的生产代码在/ var/www/myapp中.
我将本地计算机的最新代码检出到名为"myapp_latest_svn"的目录中.我在我的主settings.php中有特定于站点和位置的代码,其中包含db_host,db_user_name和db_password的H_PATH =' http: //myapp.com '和db配置设置,这与您在本地计算机设置中所知的不同(其中localhost) /myapp.com只是一个Apache别名)&生产(在myapp.com上运行的实时站点)服务器.
.htaccess文件也与生产服务器上的文件不同.简而言之,开发和生产之间存在许多差异.
我把我所有的工作都放在了SVN中.每天早上我使用SVN Update将最新代码更新到我的本地svn存储库.当我准备好上线时,我使用svn Commit构建一个版本.
然后在发布中我必须记住将所有适当的开发文件更改为其生产对应文件.现在我必须手动编辑生产settings.php和.htaccess以反映特定于站点的更改.
我正在寻找一种自动化的方式,从开发到生产完成版本控制,没有手动编辑文件,这是容易出错和不好的做法.
一种方法是使文件的生产版本只读(0444).这样,当我执行svn导出时,它们不会被文件的开发版本覆盖,我不必担心在从开发到生产的每个移动中编辑文件.但这是做持续整合等事情的坏方法.
还可以制作settings.php的多个副本(一个用于localhost,beta和prod).然后使用从svn导出的shell脚本,然后在导出完成后,它将settings.php替换为正确的settings.php,具体取决于我们部署到的位置.这样一切都是自动化的.但这也是一种蹩脚的方式.
最后一种方式是
if( eregi ("myapp.com$", $_SERVER['HTTP_HOST']) ){
define('H_PATH', 'myapp.com');
} else {
define('H_PATH', 'localmyapp.com');
}
Run Code Online (Sandbox Code Playgroud)
就settings.php而言,这很好.但是什么是.htaccess,你不能像上面的.htaccess一样检查.
我不希望每次部署我的网站时都要做,我必须更改设置.
我的数据库架构不在版本控制中,所以db不是我的问题,只有settings.php和.htaccess.
另外我怎么能告诉svn不要更新某些目录,因为它也是特定于站点的(/ log,/ cache,/ assets,/ downloads).此外,我还需要为上述文件保留完整的apache(www_data)写访问权限.
最后,我不想在导出时将空主目录和.svn文件复制到生产服务器.
在从svn构建到生产服务器时,如何使用Phing甚至shell脚本进行集成而不会导致任何这些问题.
这可能对许多想要在那里疯狂的应用程序开发人员有用.
提前致谢,
ocptime
我有一个简单的datagrid示例与silverlight 3,并使用.NET Ria服务使用DomainDataSource以及DataPager声明性地填充它(在代码隐藏中没有任何内容),并且遇到了这个问题:
LoadSize为30,页面大小为15,加载页面时,第1页和第2页显示正确,但当我超出第2页时,网格中没有任何内容显示.
这曾经在使用.NET Ria服务的Mix 2009预览版的silverlight 3 beta中工作,我有一个非常简单的例子,并且已经验证了Web项目上的服务被调用以加载新的批处理,但是网格没有显示任何数据.
任何人都可以解释为什么网格只显示数据的初始加载而不是来自寻呼机的后续批次?
这是我的xaml:
<riaControls:DomainDataSource x:Name="ArtistSource" QueryName="GetArtist" AutoLoad="True" LoadSize="30" PageSize="15">
<riaControls:DomainDataSource.DomainContext>
<domain:AdminContext />
</riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>
<data:DataGrid Grid.Row="1" x:Name="ArtistDataGrid" ItemsSource="{Binding Data, ElementName=ArtistSource}">
</data:DataGrid>
<StackPanel Grid.Row="2">
<data:DataPager Source="{Binding Data, ElementName=ArtistSource}" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud) 我在文章,书籍和例子中看到了很多创建动作的例子.似乎有两种流行的风格.
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection collection)
{
try
{
var contact = Contact.Create();
UpdateModel<Contact>(contact);
contact.Save();
return RedirectToAction("Index");
}
catch (InvalidOperationException ex)
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
和...
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Exclude="Id")]Contact contact)
{
try
{
contact.Save(); // ... assumes model does validation
return RedirectToAction("Index");
}
catch (Exception ex)
{
// ... have to handle model exceptions and populate ModelState errors
// ... either here or in the model's validation
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了两种方法,两者都有优点和缺点,IMO.
例如,当使用FormCollection版本时,我必须在我的模型绑定器中手动处理"Id",因为绑定/排除在此处不起作用.使用方法的类型化版本,我根本不能使用模型绑定器.我喜欢使用模型绑定器,因为它允许我填充ModelState错误,而不需要在模型的验证代码中知道ModelState.
任何见解?
更新: 我回答了我自己的问题,但是如果有人有更好的答案,我不会将其标记为几天的答案.
.net ×1
architecture ×1
asp.net ×1
asp.net-mvc ×1
c# ×1
cdc ×1
codeplex ×1
data-paging ×1
database ×1
delphi ×1
hosting ×1
java ×1
logging ×1
open-source ×1
oracle ×1
performance ×1
phing ×1
php ×1
plsql ×1
scripting ×1
shell ×1
sql ×1
sql-server ×1
svn ×1
validation ×1
winsock ×1