我目前正在开发一个perl web应用程序LAMP风格,最近偶然发现了一些以前的开发人员留下的死亡迷宫代码.他留下了许多神奇的数字和奇怪的逻辑,每次我必须通过它时,它让我头疼.
我现在正在学习单元测试,所以我想找到一些有用的工具来重构代码并编写单元测试,以确保我不会意外破坏任何东西.
对LAMP perl的任何好的重构工具的任何建议?最好免费:)
谢谢.
在一个Telerik控件中,我能够DataTable直接绑定到ItemSource,但是当我切换到Codeplex时WPFToolkit Datagrid:
<dg:DataGrid Name="theGrid"/>
---
theGrid.ItemsSource = dt;
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Cannot implicitly convert type 'System.Data.DataTable' to 'System.Collections.IEnumerable'.
Run Code Online (Sandbox Code Playgroud)
我该如何绑定DataTable到WPFToolkit DataGrid?
伙计们,
研究和展示技术白皮书的最佳方法是什么?我不是指格式,概述,部分和类似的东西.
我从来没有写过 - 我想知道白皮书是否需要非常非常通用(概念)或具体(例如支持特定工具/方法)
如果你的回答有利于通用方法,我想知道如何研究它.是否更好地关注较小的用例场景,从小做起,使用特定的工具/方法,获得良好的理解,然后进行更多研究并开发关于该主题的广角视图?
我目前正在开发一个我的小项目,它以动态方式生成SQL调用以供其他软件使用.SQL调用事先是未知的,因此我希望能够对生成SQL的对象进行单元测试.
您是否了解如何才能做到这一点的最佳方法?请记住,没有可能的方法来了解要生成的所有可能的SQL调用.
目前我唯一的想法是使用regex从db创建接受的SQL的测试用例,并确保SQL将编译,但这不能确保调用返回预期的结果.
编辑:添加更多信息:
我的项目是Boo的扩展,允许开发人员使用一组属性标记他的属性.此属性用于标识开发人员如何将对象存储在DB中.例如:
# This attribute tells the Boo compiler extension that you want to
# store the object in a MySQL db. The boo compiler extension will make sure that you meet
# the requirements
[Storable(MySQL)]
class MyObject():
# Tells the compiler that name is the PK
[PrimaryKey(Size = 25)]
[Property(Name)]
private name as String
[TableColumn(Size = 25)]
[Property(Surname)]
private surname as String
[TableColumn()]
[Property(Age)]
private age as int
Run Code Online (Sandbox Code Playgroud)
好主意是生成的代码不需要使用反射,但它会在编译时添加到类中.是的,编译需要更长的时间,但根本不需要使用Reflection.我目前有代码工作生成所需的方法,在编译时返回SQL,它们被添加到对象并可以被调用,但我需要测试生成的SQL是否正确:P
在我的一个项目中,Visual Studio 2008有一个奇怪的问题.当我在一行代码上设置一个断点时,它会被点击,但是当我试图"跳过",或者其他任何应该通过该断点并停在下一行的其他内容时,代码会被执行并继续,好像我击中了F5.即使我在此之后的线上有另一个断点,也会发生这种情况,奇怪的是,第二个断点被忽略(有时).
任何人,任何想法?
更新
这是一个示例代码.但似乎在我尝试的任何地方......抛出异常的catch块,我有这个问题.
在下面的代码示例中,"return(T)bFormatter.Deserialize(mStream)"抛出异常.
public static T LoadEncryptedObject<T>(string location) where T : class
{
if( string.IsNullOrEmpty(location) || !System.IO.File.Exists(location) )
return default(T);
System.IO.FileStream fs = null;
try
{
fs = new System.IO.FileStream(location, System.IO.FileMode.Open,
System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite);
BinaryFormatter bFormatter = new BinaryFormatter();
byte[] encryptedBytes = new byte[fs.Length];
fs.Read(encryptedBytes, 0, encryptedBytes.Length);
MemoryStream mStream = new MemoryStream(Cryptography.Decrypt(encryptedBytes));
return (T)bFormatter.Deserialize(mStream);
}
catch( SerializationException sx )
{
System.Diagnostics.Debug.WriteLine(sx.Message);
return default(T);
}
finally
{
if( fs != null )
fs.Close();
}
}
Run Code Online (Sandbox Code Playgroud) 关于如何对Office文档进行版本控制之前,已经就SO(此处和此处)进行了一些讨论,但我认为我的问题仍然有些不同.
我的编程项目以一个项目文件夹开头,该文件夹是空的,除了名为"设计文档"的子文件夹,其中包含项目功能规范的草稿,后来扩展为包含API规范或其他任何需要的内容.
当然,我也会将这些文件检入SVN.我正在寻找的是良好的文件格式和策略,以便在整个版本控制,差异化和合并过程中发挥良好作用.例如,我认为最好将文字处理器文件存储为XML,或者这些差异对于人类读者来说是难看和无用的?这是我想做的事情:
有没有人做过这种事情?我可能会查看有关OOo文件等的大量文档和教程,但我也非常感谢指点,我主要是在寻找有关在实践中有效或无效的事情的第一手资料.
编辑:只是为了确定,这里没有涉及"非技术用户".它只是程序员,文档仅用于编程项目.可能会发布PDF,但这将只是另一个构建工件,没有任何必须版本化.
不过,我们真的不想使用Tex等.我知道它很棒,而且我只是不能为一个简单的文本文档而烦恼.我们必须学习它,正确获取所有额外的软件包,将Tex-to-PDF渲染添加到我们的构建过程等等.这就像是一个针对两个或三个文档的小编程项目.如果有的话,我宁愿使用HTML,但对于我来说,文字处理器似乎仍然是一个不错的选择,除了我想要很好的版本.
还有另外一个想法:是否有像OOo或其他方式的SVN插件?或者甚至,为OOo添加SVN支持需要什么?类似于"文件"菜单中的"同步"选项和"修订号"文本字段.我的意思是,这不会成为我们业务的一部分,但它会很酷,毕竟我是老板.
如何检测我的应用是为“所有用户”安装的还是仅为一位用户安装的。
今天,我检查安装程序中的文件Environment.SpecialFolder.CommonApplicationData或Environment.SpecialFolder.ApplicationData由我的安装程序放置的文件。
有没有更好的办法?
使用Python脚本,我需要读取一个CVS文件,其中日期格式为DD/MM/YYYY,并在将其保存到SQLite数据库之前将它们转换为YYYY-MM-DD.
这几乎可以工作,但因为我没有提供时间而失败:
from datetime import datetime
lastconnection = datetime.strptime("21/12/2008", "%Y-%m-%d")
#ValueError: time data did not match format: data=21/12/2008 fmt=%Y-%m-%d
print lastconnection
Run Code Online (Sandbox Code Playgroud)
我假设datetime对象中有一个方法可以很容易地执行此转换,但我找不到如何执行此操作的示例.谢谢.
Windows HeapFree,msvcrt free:它们是否会释放被释放的内存?我试图估计如果不在退出时释放内存将显着加快应用程序关闭.
注意:这是一个非常具体的技术问题.这不是应用程序应该或不应该free在退出时调用.