我试图了解如何以及何时评估迭代器表达式.以下似乎是一个懒惰的表达:
g = (i for i in range(1000) if i % 3 == i % 2)
Run Code Online (Sandbox Code Playgroud)
然而,这个在构造上失败了:
g = (line.strip() for line in open('xxx', 'r') if len(line) > 10)
Run Code Online (Sandbox Code Playgroud)
我没有名为'xxx'的文件.但是,既然这件事很懒,为什么这么快失败呢?
谢谢.
EDI:哇,我做了一个懒人!
g = (line.strip() for i in range(3) for line in open(str(i), 'r'))
Run Code Online (Sandbox Code Playgroud) 我想找到一个更好的方法来做到这一点:
XmlNode nodeXML = xmlDoc.AppendChild(
xmlDoc.CreateXmlDeclaration( "1.0", "utf-8", String.Empty) );
Run Code Online (Sandbox Code Playgroud)
当我输入代码时,我不想考虑"utf-8"vs"UTF-8"vs"UTF8"vs"utf8".我想让我的代码更容易出现错别字.我确信某些标准库已声明"utf-8"为const/readonly字符串.我该怎么找到它?那么,"1.0"呢?我假设主要的XML版本也已在某处枚举.
谢谢!
这3种类型的锁显然很糟糕.还有什么其他类型的锁定不好?有没有Stylecop/FxCop规则可以解决这个问题?如果没有,那么请你帮我一个自定义规则实现?他们所有人的代码必须相似,对吧?
谢谢.
以下Q的高额奖金:
您好,这是我在Ubuntu 9.10上使用Python 2.6,Amara2尝试的(顺便说一句,test.xsd是使用xml2xsd工具创建的):
g@spot:~$ cat test.xml; echo =====o=====; cat test.xsd; echo ====
o=====; cat test.py; echo =====o=====; ./test.py; echo =====o=====
<?xml version="1.0" encoding="utf-8"?>==; ./test.py` >
test.txttest.xsd; echo ===
<test>abcde</test>
=====o=====
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="test" type="xs:NCName"/>
</xs:schema>
=====o=====
#!/usr/bin/python2.6
# I wish to validate an xml file against an external XSD schema.
from amara import bindery, parse
source = 'test.xml'
schema = 'test.xsd'
#help(bindery.parse)
#doc = bindery.parse(source, uri=schema, validate=True) # These 2 seem
to fail in …Run Code Online (Sandbox Code Playgroud) 我们已经构建了一个在客户端计算机上运行的Windows服务,该服务偶尔会下载其自身的较新版本,然后执行自我更新:安装新服务,启动它,停止旧服务并最终将其删除。该服务无法直接停止自身并做其他事情,因此它旋转了另一个可执行文件,完成了一些工作。正确地做到这一点是棘手的,当使用较新的.Net Framework构建较新的服务时(例如最近从.Net 2.0到.net 4.0的转换),这尤其糟糕。问题是.Net 2.0库无法在.Net 4.0服务上运行。
现在,一种方法是让服务的旧版本旋转一个新版本附带的帮助程序,但是...如果该服务的行为发生了重大变化,该怎么办?即使有些事情通常保持不变,我也对不混淆版本感到更安全-有助于降低设计复杂性。
现在,在Windows Services上似乎有一种.Net版本无关的操作方式:该sc.exe工具:http : //support.microsoft.com/kb/251192
我想知道这是否真的是我寻求的银弹。现在,因为我将以编程方式调用此人并检查错误,所以我不妨为此使用API。理想情况下,我将有一个本机C ++项目,该项目可编译为与SC.exe接口的本机exe。这可能吗?如果没有,那我该如何在不同计算机上定位sc.exe?它们可以是32位或64位,并运行从Win XP SP2 / 3开始的任何版本的Windows。
让我知道您是否对我的问题有疑问,或者有一些巧妙的想法,或者对我在此处提出的确切问题有答案。
编辑:如果我尝试使用2.0代码安装4.0服务,则会收到与执行相同的错误:
> C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe MyService4.exe
Run Code Online (Sandbox Code Playgroud)
Microsoft(R).NET Framework安装实用程序2.0.50727.4927版本(c)Microsoft Corporation。版权所有。
初始化安装时发生异常:System.BadImageFormatException:无法加载文件或程序集“ file:/// [path] \ MyService4.exe”或其依赖项之一。该程序集由比当前加载的运行时新的运行时构建,无法加载。
免责声明:在这个问题标签页面中,对话实际上意味着同样的事情,抱歉.我的理由:我不确定最终产品应该是什么样子 - 一堆独立的窗户或者一体化.
我希望改进一个用WinForms烘焙的现有的,难以维护的向导.我需要尝试保持相同的外观和感觉,但我需要清理内部逻辑.共有5个对话框,所有这些对话框都在一个巨大的方法中一个接一个地显示(当然,单击"下一个"按钮之后).来回跳跃的方式是...... 5或6个标签和GOTO!
现在,这个向导是线性的,而不是树.从任何一个对话框/页面,您最多可以访问其他两个对话框/页面.想到了双重链接列表.现在有5 * 4 = 20潜在的状态转换,而只有2*1 + 3*2 = 8它们是有效的.我不必使用gotos.他们通常是邪恶的,在这种情况下他们是 - 很难维持这个...而我正在考虑增加另一个,第6页.为什么原因gotos为在那里是最有可能,因为1.0版正在制作时A)的时间压力,B)这是5年前,所以在当时可用的奇才最好的例子/教程可能不是很大.
现在,向导的大多数页面都要求用户输入.根据用户输入的内容呈现后续页面.如果用户在第3页上说并且决定将后退按钮一直指向1,并且没有更改任何内容,并且点击下一次两次,则状态不应该更改.但是,更改页面x上的内容通常会使页面x + 1上的内容无效.但是,有一些例外,因为页面x上的某些或所有设置可能依赖于页面x-1,x-2等,但页面x + 1,x + 2等不依赖于x一些x.
我希望到目前为止事情是清楚的.我们试图通过为他们默认一些东西来帮助用户.存储事物的方式也不是很好.该对话框具有读/写属性,从/向实际控件复制内容.然后,在主方法中,存在"超级存储",其保存每页的存储.因此,当用户完成页面x并接下来命中时,首先将内容从控件复制到类的本地存储中,然后将这些内容保存到超级存储的相应成员中.
没有使用(对话框/存储器)数组和索引.每个goto目标(标签)都有单独但类似的"创建和填充"逻辑.当页面不再显示时,对话框对象会被丢弃(它们不会被丢弃,但每次要显示它们时,它们都会被重新创建并重新填充.我不相信这是必要的,因为只有需要单个手柄,并且在显示和关闭之后,我相信它可以在相同的状态下再次显示,而不必重新填充控件.如果浪费内存是唯一的问题,我可能会让事情滑落,但事情不是很容易维护,所以我不妨解决这个问题.
我在想:
如您所见,有一些挑战.然而,我很有希望,因为通过良好的精灵设计思考是一个肯定是以前重新发明的轮子.也许你可以推荐一个开源的C#/ mono应用程序,它带有一个线性但非平凡的向导,这样我就可以看一下实现.哎呀,甚至Java/Swing也许适合我,只要向导本质上是相似的.WPF对我来说是另一个挑战,我不想有2个问题而不是1个问题.
让我知道你能想到什么.我应该保留这些东西但是尽可能多地清理其他部分吗?随意问的问题.谢谢,
-HG
我试过这个:
private void AddFooters()
{
foreach (Word.Section wordSection in this.WordDoc.Sections)
{
object fieldEmpty = Word.WdFieldType.wdFieldEmpty;
object autoText = "AUTOTEXT \"Page X of Y\" ";
object preserveFormatting = true;
wordSection.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Fields.Add(
wordSection.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range,
ref fieldEmpty, ref autoText, ref preserveFormatting);
}
}
Run Code Online (Sandbox Code Playgroud)
还有这个:
private void AddFooters()
{
foreach (Word.Section section in this.WordDoc.Sections)
{
Word.Range footerRange = section.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
this.WordDoc.ActiveWindow.Selection.TypeText("Page ");
footerRange.Fields.Add(footerRange, Word.WdFieldType.wdFieldPage);
this.WordDoc.ActiveWindow.Selection.TypeText(" of ");
footerRange = section.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
footerRange.Fields.Add(footerRange, Word.WdFieldType.wdFieldNumPages);
footerRange.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight;
}
}
Run Code Online (Sandbox Code Playgroud)
我录制了这个VBA宏,但似乎没有帮助.
Sub Macro1()
' …Run Code Online (Sandbox Code Playgroud) 如果您对Python一无所知我会道歉,但是,以下代码段对任何人都应该是非常易读的.值得注意的唯一技巧 - 为列表编制索引[-1]会为您提供最后一个元素(如果存在)或引发异常.
>>> fileName = 'TheFileName.Something.xMl'
>>> fileNameList = fileName.split('.')
>>> assert(len(fileNameList) > 1) # Must have at least one period in it
>>> assert(fileNameList[-1].lower() == 'xml')
>>> fileNameList[-1] = 'bak'
>>> fileName = '.'.join(fileNameList)
>>> print(fileName)
TheFileName.Something.bak
Run Code Online (Sandbox Code Playgroud)
我需要将这个逻辑转换为C++(我实际使用的语言,但到目前为止已经很糟糕)的函数具有以下签名:void PopulateBackupFileNameOrDie(CAtlString& strBackupFileName, CAtlString& strXmlFileName);.这里strXmlFileName是"输入",strBackupFileName是"输出"(我应该反转两个的oprder吗?).棘手的部分是(纠正我,如果我错了)我正在使用Unicode字符串,所以寻找这些字符:.xmlXML不是那么直截了当.最新的Python没有这些问题,因为'.'和"."都是Unicode字符串(不是"char"长度为1型),二者只包含一个点.
请注意,返回类型是void- 不要太担心它.我不想向您详细介绍我们如何将错误传达给用户.在我的Python示例中,我只使用了一个断言.你可以做类似的事情,或者只是添加评论// ERROR: [REASON].
请问是否有问题.建议使用std::string,而不是CAtlString功能参数不是我要找的.如果必须,您可以在函数内部转换它们,但我不希望在一个函数中混合使用不同的字符串类型.我正在使用VS2010在Windows上编译这个C++.这意味着我不会安装BOOST,QTString或者其他不可用的库.窃取一个boost或其他标题以启用一些魔法也不是正确的解决方案.
谢谢.
我正在使用jQuery Tablesorter 2.0 插件创建一个可排序的表格......比如说书籍。表格的第一行将是所有书籍的摘要,我希望它始终位于顶部。
我需要自定义表排序器的行为,但我认为我不能/应该使用自定义解析器来做到这一点。我认为我需要的是一个自定义比较器函数 - 该函数允许我自己比较任意两行,理想情况下,如果我正在寻找的条件未得到满足,也能够调用默认行为。
示例算法如下(希望我没有反转我的结果):
function customSort(lhs, rhs, table, column_index) {
if (lhs === 'magic_str') {
return -1; // Magic string wins
}
if (rhs === 'magic_str') {
return 1; // Magic string wins
}
return defaultSort(lhs, rhs, table, column_index);
}
Run Code Online (Sandbox Code Playgroud)
现在,我了解一些 JS,但还不足以撬开一个流行的库并重写它的部分内容,特别是在我加载原始库后作为一个位于顶部的补丁。(那将是理想的)。另外,如果我能以任何其他方式完成这种行为,我会洗耳恭听。
c# ×3
python ×3
.net ×2
.net-4.0 ×1
amara ×1
animation ×1
ascii-art ×1
c++ ×1
coding-style ×1
declaration ×1
fxcop ×1
javascript ×1
jquery ×1
locking ×1
ms-word ×1
oop ×1
python-2.6 ×1
python-3.x ×1
string ×1
stylecop ×1
tablesorter ×1
utf-8 ×1
winforms ×1
wizard ×1
xml ×1