小编Gar*_*art的帖子

WPF动态布局:如何强制平方比例(宽度等于高度)?

我正在学习WPF,无法弄清楚我的按钮是如何形成方形的.

这是我的XAML标记:

<Window x:Class="Example"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Height="368" Width="333">
  <Window.Resources>
    <Style x:Key="ToggleStyle" BasedOn="{StaticResource {x:Type ToggleButton}}"
                            TargetType="{x:Type RadioButton}">
    </Style>
  </Window.Resources>
  <RadioButton Style="{StaticResource ToggleStyle}">
        Very very long text
  </RadioButton>
</Window>
Run Code Online (Sandbox Code Playgroud)

为属性WidthHeight属性指定显式值似乎是一个错误的想法 - 按钮应根据其内容自动计算其尺寸,但保持其宽度和高度相等.这可能吗?

wpf xaml

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

案例中是否有三点(案例'0'...'9':)有效的C语言切换语法?

我在DRBD软件的开源代码文件中注意到这一点(user/drbdtool_common.c)

const char* shell_escape(const char* s)
{
    /* ugly static buffer. so what. */
    static char buffer[1024];
    char *c = buffer;

    if (s == NULL)
        return s;

    while (*s) {
        if (buffer + sizeof(buffer) < c+2)
            break;

        switch(*s) {
        /* set of 'clean' characters */
        case '%': case '+': case '-': case '.': case '/':
        case '0' ... '9':
        case ':': case '=': case '@':
        case 'A' ... 'Z':
        case '_':
        case 'a' ... 'z':
            break; …
Run Code Online (Sandbox Code Playgroud)

c switch-statement

13
推荐指数
2
解决办法
6037
查看次数

哪些CPU支持MOVBE指令?

有时GCC会在编译时生成此指令-march=atom.每个Intel Atom CPU都支持MOVBE吗?

其他哪些处理器支持此指令?我似乎无法在英特尔网站上找到这些信息.请帮忙.

x86 assembly endianness

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

用于在数据库中存储个人联系人的格式

我正在考虑将个人联系人存储在业务应用程序的数据库中的最佳方法.传统和直接的方法是创建一个包含每个元素列的表,即名称,电话号码,职位,地址等等.但是,有这种数据的已知行业标准,例如vCard,或者是hCard,或者是vCard-RDF/XML,甚至是Windows Contacts XML Schema.使用标准格式可以提供一些好处,例如与其他系统的可操作性.但是,我如何决定使用哪种方法?

要求主要是存储数据.搜索和订购查询的可能性极小,但可能.数据量最多为100,000条记录.

我的数据库引擎支持原生XML列.我一直在考虑使用一些基于XML的格式来存储个人联系人.如果需要搜索和排序,则可以对此数据使用XML索引.这是一个好方法吗?您会为此推荐哪种联系人格式和架构?

在第一个答案后编辑

这就是为什么我认为直截了当的方法很糟糕.这是由于这种数据的性质 - 它并不那么简单.

  1. 个人联系人不是结构良好的数据,它可能被称为半结构化.每个联系人可能有不同的数据字段,甚至可能是我无法预料的字段.在我看来,这些数据的每一部分都应被视为重要信息,即因为数据库中没有相关列,所以不能丢弃任何数据.
  2. 如果我们进一步考虑,假设没有数据丢失,那么我们可以创建一个名为CommentDescriptionOther的大文本列,并将所有不能很好地拟合到表列中的内容放在那里.但话说回来 - 数据会失去结构 - 这可能是坏事.
  3. 如果我们想要结构化数据,那么 - 根据数据库设计原则 - 数据应该被分解为实体,并且应该在实体之间建立关系.但这增加了复杂性 - 实体太多了,应该制定很多设计方案,比如"我们如何存储地址?个人姓名?电话号码?我们如何编码家庭电话号码和手机号码?怎么样?联系信息?"实体之间的关系是复杂的,多个,每个关系都是数据库中的一个表.每个关系都需要在设计文件中记录.这是很多工作要做.但是可以完全避免复杂性 - 只记录根据这样的数据存储数据标准架构,期间.然后,任何阅读该文档的人都应该很容易理解它的全部内容.
  4. 最后,这完全是关于使用行业标准.希望这个标准是由一些聪明的人设计的,他们比以往任何时候都更好地预测和描述了个人联系信息的结构.我们为什么要重新发明轮子?使用标准模式要容易得多.问题是,标准太多了 - 决定使用哪一个并不容易!

database-design contacts

6
推荐指数
1
解决办法
2974
查看次数

C++ std :: regex多行语法

我似乎无法使我的正则表达式正常工作.在ECMAScript中的多行文本中,这个正则表达式begin\n([\s\S]*\nend)?完全符合我的需要,我在这里测试了它.

当我将它翻译成C++时,它无法匹配相同的文本.

这是我在Visual C++ 2010中的代码:

#include <iostream>
#include <regex>

int main(int argc, char *argv[]) {
    std::regex metadataBlockRegex("begin\\n([\\s\\S]*\\nend)?",
        std::regex::ECMAScript);

    std::string text =
      "begin\n"
      "  123\n"
      "end\n";

    std::sregex_iterator blocksBegin(text.begin(), text.end(), metadataBlockRegex);
    std::sregex_iterator blocksEnd;

    for (auto blockMatch = blocksBegin; blockMatch != blocksEnd; ++blockMatch) {
            std::cout << (*blockMatch)[0].str();
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这只输出"开始",我希望它匹配整个文本.

我的问题是:这里有什么问题,我在哪里可以找到std::regex引擎语法的详细描述以及它们如何处理多行字符串.

c++ regex c++11

6
推荐指数
2
解决办法
4844
查看次数

在XSLT XPath中使用'/ ..'表示法

这是一个初学者的问题.这个XPath表达式/..意味着什么?它总是选择一个空节点集吗?

我注意到这种模式在FXSL库中被广泛使用,例如:

<xsl:template name="map">
  <xsl:param name="pFun" select="/.."/>
  <xsl:param name="pList1" select="/.."/>

  <xsl:for-each select="$pList1">
    <xsl:copy>
      <xsl:apply-templates select="$pFun">
        <xsl:with-param name="arg1" select="."/>
      </xsl:apply-templates>
    </xsl:copy>
  </xsl:for-each>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

是否有必要/..在参数中指定值?

xslt xpath fxsl

5
推荐指数
1
解决办法
235
查看次数

NHibernate:一次插入多个项目

所有!我现在正在学习NHibernate,我想知道是否可以在一次操作中将多个对象保存到数据库中.

例如,请考虑此测试代码

    private static void SaveTestBillNamesInSession(ISession session, params string[] names)
    {
        var bills = from name in names
                    select new Bill
                        {
                            Name = name,
                            DateRegistered = DateTime.Now,
                        };
        foreach (var bill in bills)
            session.SaveOrUpdate(bill);
    }
Run Code Online (Sandbox Code Playgroud)

此循环在此处生成许多INSERT语句,这些语句在SQL Server 2008中可能是次优的,它允许在一个INSERT语句中包含多个数据行.

是否可以重写此代码以使用此功能 - 在一次操作中插入所有数据?

更新 确定,现在它真正开始在一个批次中发送所有内容.非常感谢大家!

nhibernate

4
推荐指数
1
解决办法
3610
查看次数

在变量模板中使用lambdas调用std :: make_tuple - 这应该适用于C++ 11吗?

在C++ 11中,lambda函数是一个对象,应该可以用它来调用make_tuple,对吗?

void foobar() {
    auto t = std::make_tuple([](){ std::make_shared<int>(); });
}
Run Code Online (Sandbox Code Playgroud)

这段代码适合我.

现在,如果我们添加一个可变参数模板会发生什么:

#include <tuple>
#include <memory>

template <class... T>
void foobar() {
    auto t = std::make_tuple([](){ std::make_shared<T>(); }...);
}

int main(int, char**)
{
    foobar<int, float, double>();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这个无法在GCC 4.7.2中编译

main.cpp: In lambda function:
main.cpp:6:54: error: parameter packs not expanded with '...':
main.cpp:6:54: note:         'T'
main.cpp: In function 'void foobar()':
main.cpp:6:57: error: expansion pattern '#'lambda_expr' not supported by dump_expr#<expression error>' contains no argument packs
main.cpp: In instantiation …
Run Code Online (Sandbox Code Playgroud)

c++ lambda tuples variadic-templates c++11

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