小编Luc*_*cas的帖子

使用Mercurial,如何在推送之前将一系列变更集"压缩"为一个?

假设我有一个本地和一个远程Mercurial存储库.现在,我开始研究一个功能.我正在努力,当我认为它完成后,我提交变更集.再测试一下,我发现我可以通过调整代码中的内容来进一步改进这个功能.我做出改变并提交.20分钟后,我发现这个新功能有一个错误,所以我修复它并提交它.

我现在有3个变更集,我真的想将其作为一个变更集推送到远程存储库,例如,消息"实现功能X".

如何在没有太多麻烦的情况下做到这一点?我相信我可以用补丁来做,但看起来很多工作.

compression mercurial push changeset

95
推荐指数
5
解决办法
2万
查看次数

在Sphinx和reStructuredText中使用数字引用数字

在编写将使用Sphinx处理的RST时,我无法在引用数字时使用Sphinx LaTeX输出来使用图号.例如,这段代码:

The lemmings are attacking, as can be seen in :ref:`figlem`.

.. _figlem:

.. figure:: _static/lemming_invasion.* 

   They're coming!
Run Code Online (Sandbox Code Playgroud)

将转换成这个:

旅行者正在攻击,正如他们即将到来的那样!

/ image到这里/

图1.1:他们来了!

但我想要的是"标准"LaTeX引用数字的方式,如下所示:

旅鼠正在攻击,如图1.1所示

我该如何实现这一目标?我目前使用的代码是Sphinx手册推荐的代码,但它不会产生我想要的输出.

restructuredtext python-sphinx

30
推荐指数
3
解决办法
1万
查看次数

使用contentEditable时,如何使用Javascript获取插入符号元素?

假设我有一些像这样的HTML代码:

<body contentEditable="true">
   <h1>Some heading text here</h1>
   <p>Some text here</p>
</body>
Run Code Online (Sandbox Code Playgroud)

现在,插入符号(闪烁的光标)在H1元素内部闪烁,让我们在单词"heading"中说.如何使用JavaScript获取插入符号元素的名称?在这里,我想得到"h1".

这只需要在WebKit中工作(它嵌入在应用程序中).它最好也适用于选择.

javascript webkit element caret contenteditable

26
推荐指数
1
解决办法
1万
查看次数

有没有替代HTML Tidy?

我在我的应用程序中嵌入了HTML Tidy来清理传入的HTML.但是Tidy有很多错误,直接在源头修复它是我最糟糕的噩梦.整洁的源代码是一种难以理解的憎恶.千行功能,可变命名,意大利面条代码等等.这真的太可怕了.

更糟糕的是,官方发展似乎已经停止.在过去的12个月里,官方的CVS回购有笔交易.但是它已经死了并埋葬的时间比这要长得多......

所以我正在寻找一个可以做Tidy所能做的OSS C或C++应用程序/库(感觉就好):修复错误的HTML标记并将其转换为有效的XHTML(这是我感兴趣的部分).我的意思是各种糟糕的标记.

那里有类似的东西吗?

编辑:我需要它来通过XML处理工具对DOM树进行操作,并且通常符合XHTML规范.我的应用程序需要接受来自用户的HTML(通常在各种方式都无效)并输出有效的XHTML.它需要能够处理通常不会在浏览器中显示的HTML,因为用户手动编辑它并且之后没有检查.

Tidy的纠错解析器的直接替代品......不会太糟糕.我不介意错误,如果源是可读的,我可以自己修复问题,或者是否有活跃的开发人员及时提供错误修正.

html c c++ tidy htmltidy

19
推荐指数
1
解决办法
4929
查看次数

在这种情况下,多个条件运算符是个好主意吗?

我刚看到关于条件运算符的维基百科文章中的这段代码:

Vehicle new_vehicle = arg == 'B' ? bus      :
                      arg == 'A' ? airplane :
                      arg == 'T' ? train    :
                      arg == 'C' ? car      :
                      arg == 'H' ? horse    :
                      feet;
Run Code Online (Sandbox Code Playgroud)

我已经改变了一点代码,但想法是一样的.您会发现条件运算符的这种使用是否可以接受?它比if- elseconstruct 更简洁,并且使用一个开关肯定会为bug提供一整套新的机会(任何人都会堕落).此外,if- elses并且switch不能用作R值,因此您必须先创建变量,对其进行初始化,然后根据需要进行分配.

我真的很喜欢这个,但我想知道其他人的想法.

但格式化至关重要.

编辑:我还是喜欢这个.但我理解那些说" switch声明是为此做出的"的人.好吧,也许是这样.但是如果条件是返回的函数调用bool怎么办?或者其他一百万件你无法打开的东西.

你开关恋人真的试图说服我,一个巨大的if- else链比较好?是的,不知道如何使用条件运算符的程序员将无法理解这一点.他们应该学习如何使用它.这不是奥术.

c c++ conditional-operator

17
推荐指数
10
解决办法
3616
查看次数

MinGW vs Visual Studio 2008输出代码质量

几天前,我被告知g ++的最新版本比MSVC 2008产生"更好"的x86代码.基本上,具有完全优化的GCC比具有完全优化的MSVC产生更快的应用程序.

虽然说明这一点,如果是真的,这在很大程度上取决于应用程序和使用的C++代码(我正在为我的应用程序评估这个声明的过程),我想知道别人怎么想.

从本质上讲,比较这两个编译器的输出时,您的个人经历是什么?

我在询问MinGW,但如果您对香草GCC的体验在某种程度上有效,请随意分享.

c++ performance gcc visual-studio

16
推荐指数
1
解决办法
7634
查看次数

QtWebkit同步加载

我正在使用没有QWebView的QWebPage,因为我想将HTML文件的内容呈现到QPixmap/QImage上.

我希望页面的加载是同步完成的,而不是异步的,这是默认的.默认方式是调用QWebFrame::setHtml()QWebFrame::setContent(),但这会异步加载图像.我想要的是某种阻塞函数调用,就像QWebFrame::waitUntilLoadFinished()之后我可以调用render()它并完成它.

我找不到办法做到这一点.我错过了什么吗?

c++ qt qtwebkit

11
推荐指数
3
解决办法
4443
查看次数

为了可读性而包装STL习语是一个好主意吗?

我目前正在开发一个需要尽可能少的外部依赖项的C++项目,因此我非常关注STL和Boost.到目前为止,在C++方面,我几乎完全生活在Qt-land.一般来说,我倾向于使用C#和Python.

今天我想检查是否std::vector包含某个项目.有了Qt,我会这样做:

QList< int > list;
list.append( 1 );
list.append( 2 );
list.append( 3 );

if ( list.contains( 2 ) )
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

很好,可读.但std::vector没有contains方法,这是一个惊喜.好的...这样的STL成语是什么?搜索周围,似乎是这样的:

std::vector< int > list;
list.push_back( 1 );
list.push_back( 2 );
list.push_back( 3 );

std::vector< int >::const_iterator result =
    std::find( list.begin(), list.end(), 2 );

if ( result != list.end() )
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

那(对我来说)难以理解,而且太冗长了.所以我发现自己编写了一个实用函数,它接受一个向量和一个值,并bool根据是否找到值返回.基本上,模板化的contains()方法; 上述std::find调用的包装器.然后,我可以以类似于Qt示例的方式使用它.

我有几个类似的实用函数,它们可以包装其他STL惯用语,而不是其他原因,但可读性增加(感知).我想知道的是......这是一个坏主意吗?其他人也这样做吗?我错过了一些关键的东西吗 代码将在某一时刻成为OSS,而我宁愿做一些其他C++开发人员会觉得奇怪的特殊事物.

c++ stl readability

11
推荐指数
2
解决办法
659
查看次数

尝试换行函数返回值时,"<class name>不提供调用运算符"错误

我正在尝试编写一个函数,它将一个仿函数作为参数,调用仿函数,然后返回包含在一个函数中的返回值boost::shared_ptr.

以下拒绝编译,我完全没有想法.我得到"std :: vector <std :: string>不提供调用操作符"(粗略地).我在Mac OS X上使用Clang 3.1.

template< typename T >
boost::shared_ptr< T > ReturnValueAsShared(
    boost::function< T() > func )
{
  return boost::make_shared< T >( func() );
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试使用它的上下文:

make_shared< packaged_task< boost::shared_ptr< std::vector< std::string > > > >(
   bind( ReturnValueAsShared< std::vector< std::string > >,
      bind( [a function that returns a std::vector< std::string >] ) ) );
Run Code Online (Sandbox Code Playgroud)

编辑:这是一个完整的独立测试用例.这段代码无法使用相同的错误进行编译,对于我的生活,我看不出有什么问题:

#include <boost/make_shared.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/function.hpp>
#include <boost/bind.hpp>

#include <string>
#include <vector>

std::vector< std::string > foo( std::string a …
Run Code Online (Sandbox Code Playgroud)

c++ templates boost boost-function

9
推荐指数
1
解决办法
1万
查看次数

如何使用ReSharper创建NUnit测试?

我正试图用C#进行单元测试.各种各样的人告诉我和NUnit一起去,因为它比MSTest好(显然,我不知道),并且它在我使用的ReSharper中也有很好的支持.

现在我从来没有在我的生活中写过单元测试(忍受我,我是大学生).ReSharper有这个很好的CreateUnitTests上下文菜单选项,我见过其他人(随便看看肩膀)用来取得巨大成功.右键单击一个方法,选择CreateUnitTests,然后在那里创建一个测试框架.你只需填写重要的位.

现在,当我尝试相同的时候,ReSharper希望我创建一个新的测试项目......当我让它时,它创建(我正在假设)一个MSTest项目,显然是一个MSTest测试模板.但是我已经有一个类libarary项目引用了"nunit.framework"并且有一些NUnit测试,ReSharper非常愿意运行它们.尽管如此,它只创建了MSTest测试模板,并且只在特殊的"测试项目"项目中创建.

我究竟做错了什么?我是做错了什么,还是创建了ReSharper无法实现的NUnit测试模板?我搜索了网并阅读了ReSharper和NUnit的文档,我仍然无法弄清楚这是否可能或者是什么.

如果有人能为我提供使用ReSharper + NUnit的指南,我将不胜感激.

编辑:我正在使用ReSharper 4.5和NUnit 2.5.3

编辑2:显然我是个白痴.CreateUnitTests不是ReSharper的一部分,而是Visual Studio的一部分,因此只能与MSTest一起使用.

c# resharper nunit unit-testing

8
推荐指数
2
解决办法
2万
查看次数