我的工作室拥有超过10年的大型代码库.我们开始使用的编码标准是在内部开发人员很少的情况下开发的,早在我们不得不担心与C++相关的任何标准之前.
最近,我们在内部开展了一个小型研发项目,我们更新了我们的编码惯例,使其更适合我们的环境.研发工作将集成到现有项目代码中.我们面临的一个主要问题是,我们现在对这两个工作领域有两个标准,现在代码库将会交叉.我不想在工作室有两个标准,我真的很乐意用一个标准来推进.(我们如何进入这种情况的"方式"并不重要 - 只是我们是,而且我曾希望我们不会这样做.)
问题是重构现有代码.我不太热衷于有两个代码库(一个相对较小,一个非常大)看起来不同.我有兴趣对现有的一个代码库进行一些重构,使其符合其他标准.问题是,较小的代码库是(IMO)更令人向往的标准.
我开始寻找可以为我做大规模重构的工具.我对重新排列和收紧代码不感兴趣.我有兴趣改变这样的事情
class my_class {}
....
class my_class A;
Run Code Online (Sandbox Code Playgroud)
至
class MyClass {}
....
class MyClass A;
Run Code Online (Sandbox Code Playgroud)
基本上做功能/变量级重命名.我不想使用像Visual Assist这样的东西,因为这需要很长时间.我有超过10000个源/头文件,包含数十万行代码.一次使用VA一个类将是一个时间杀手,不值得努力.
我确实在另一篇关于SO的帖子中遇到了Vera.这似乎可以完成这项工作并做得很好.我想知道是否有人具有使用Vera的特定经验,以了解我所处的情况,或者对可能完成工作的工具有任何其他建议.我认为这个工具实际上理解代码结构很重要,这样我们就不会只是以搜索/替换方式重命名变量,因为如果不仔细完成,这将导致细微的错误.
编辑:虽然我的例子显示我将从名称之间使用_转换为camelcase类型表示法,但对我们来说,移动另一种方式可能更有利.我真的在寻找一种有助于大规模重命名的通用解决方案.
谢谢.
我想要阻止或处理我在写作中StackOverflowException
对XslCompiledTransform.Transform
方法的调用Xsl Editor
.问题似乎是用户可以写一个Xsl script
无限递归的东西,它只是在调用Transform
方法时爆炸.(也就是说,问题不仅仅是典型的编程错误,这通常是造成这种异常的原因.)
有没有办法检测和/或限制允许的递归次数?或者任何其他想法,以防止这些代码炸毁我?
我有兴趣让一些Python代码与Windows,Linux和其他平台上的一些Ruby代码进行对话.具体来说,我想从Python访问Ruby中的类并调用它们的方法,访问它们的数据,创建新的实例等等.
一个显而易见的方法是通过XML-RPC或CORBA之类的东西,但我会对任何其他方法感兴趣.
其他人做了什么来使Python和Ruby之间的代码相互通信,无论是在同一系统本地还是远程通过网络?
提前致谢.
我很好奇从"MemoryUsage"类中查询值时"已提交"内存的确切含义.该类将其解释为"已提交表示保证可供Java虚拟机使用的内存量(以字节为单位)." 这是否意味着内存正在被jvm进程使用,并且在java进程释放之前不可用于其他进程,或者它是否意味着如果java进程尝试分配高达该内存量,则该进程将成功?我意识到这可能是特定于实现的,但我只对hotspot感兴趣.
我正在运行一个控制台应用程序(myApp.exe),它将一个伪本地化(unicode)字符串输出到标准输出.如果我在常规命令提示符(cmd.exe)中运行此命令,则unicode数据将丢失.如果我在unicode命令提示符(cmd.exe/u)中运行它或将控制台的属性设置为"Lucida Console",则会保留unicode字符串.
我想在C#中运行此应用程序并将unicode字符串重定向到本地变量.我正在使用RedirectStandardOutput = true的Process对象,但unicode字符串总是丢失.
如何指定保留此unicode信息?
private static int RunDISM(string Args, out string ConsoleOutput)
{
Process process = new Process();
process.StartInfo.FileName = "myApp.exe";
process.StartInfo.Arguments = Args;
try
{
process.StartInfo.CreateNoWindow = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.WorkingDirectory = Environment.CurrentDirectory;
process.Start();
process.WaitForExit(Int32.MaxValue);
}
catch (Exception e)
{
WEX.Logging.Interop.Log.Assert("Failure while starting or running process.\nERROR: " + e.Message);
ConsoleOutput = null;
return EXITCODE_ERROR;
}
ConsoleOutput = process.StandardOutput.ReadToEnd();
return process.ExitCode;
}
Run Code Online (Sandbox Code Playgroud) 什么是抓住动态网站的最佳方法,其中大部分内容是由似乎是ajax请求生成的?我之前有过使用Mechanize,BeautifulSoup和python组合的经验,但我还有新的东西.
- 编辑 - 更多细节:我正在试图刮掉CNN 主数据库.那里有大量的信息,但似乎没有api.
我想实现一个遵循大致接口的生产者/消费者场景:
class Consumer {
private:
vector<char> read(size_t n) {
// If the internal buffer has `n` elements, then dequeue them
// Otherwise wait for more data and try again
}
public:
void run() {
read(10);
read(4839);
// etc
}
void feed(const vector<char> &more) {
// Safely queue the data
// Notify `read` that there is now more data
}
};
Run Code Online (Sandbox Code Playgroud)
在这种情况下,feed
和run
将运行在独立的线程和read
应该是一个阻挡读出(如recv
和fread
).显然,我需要在我的双端队列中进行某种互斥,我需要某种通知系统来通知read
再试一次.
我听说条件变量是要走的路,但我所有的多线程经验都在于Windows,我很难绕过它们.
谢谢你的帮助!
(是的,我知道返回向量是没有效率的.让我们不要进入那个.)
我做了一些研究,我真的找不到从C#中的工作线程更新表单控件的首选方法.我知道BackgroundWorker组件,但是在不使用BackgroundWorker组件的情况下,最好的方法是什么?
如果我有一台打印机直接连接到电脑(带打印机的信息亭),我将如何创建网页(.net网络应用程序)打印jpg到信息亭打印机的能力,除了用户干预除了点击页面上的按钮?
假设我有一些Perl代码,每当它被命中时,它会增加数据库特定行中的列,并且我希望它经常被命中,所以我想用FCGI对它进行优化.现在,我基本上把大部分代码包装成这样的东西:
while (FCGI::accept() >= 0) {
[code which currently creates a db connection and makes calls through it]
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否最好将数据库连接(我的$ dbh = DBI-> connect(etc))放在FCGI循环之外,以便脚本保持连接活动,或者我仍然可以获得FCGI速度的优势将资源留在循环中?