这是我遇到问题的一些代码,我处理一些XML,在OO类的方法中,我从文档中重复的几个节点中提取一个元素.每个节点的子树中应该只有一个这样的元素,但我的代码获取所有元素,就像它作为一个整体在文档上运行一样.
因为我只期望得到oine元素我只使用数组的第0个元素,这导致我的函数输出错误的值(对于文档中的所有项都是相同的)
这是一些说明问题的简化代码
$ cat t4.pl
#!/usr/bin/perl
use strict;
use warnings;
use XML::LibXML;
my $xml = <<EndXML;
<Envelope>
<Body>
<Reply>
<List>
<Item>
<Id>8b9a</Id>
<Message>
<Response>
<Identifier>55D</Identifier>
</Response>
</Message>
</Item>
<Item>
<Id>5350</Id>
<Message>
<Response>
<Identifier>56D</Identifier>
</Response>
</Message>
</Item>
</List>
</Reply>
</Body>
</Envelope>
EndXML
my $foo = Foo->new();
my $parser = XML::LibXML->new();
my $doc = $parser->parse_string( $xml );
my @list = $doc->getElementsByTagName( 'Item' );
for my $item ( @list ) {
my $id = get( $item, 'Id' );
my @messages = $item->getElementsByLocalName( …Run Code Online (Sandbox Code Playgroud) 有谁知道如何检查文件访问日期和时间?该函数返回修改的日期和时间,我需要一些东西,将访问的日期时间与当前的日期和时间进行比较.
在低选择性色谱柱上选择记录的策略范围有哪些?
一个示例可能是订单表,多年来,您构建了大量已完成的订单,但通常需要选择活动订单.订单可能会经历生命周期,例如放置,库存分配,从仓库中挑选,发送给客户,开具发票和付款.订单可能还会被取消,保留等.大多数记录最终将处于最终状态(例如已付款),但您可能经常需要选择已分配的订单.在这种情况下,顺序读取会很慢.
索引
MySQL的类似问题:低基数/选择性列=如何索引?
索引是否在SQL中吮吸?
什么是索引以及如何使用它们来优化数据库中的查询?
定义索引:哪些列和性能影响?
和其他许多其他相关的因素.
我读过的方法(在stackoverflow和其他地方)包括
create index x on t(c2) where c1='a')active_customers(customer_id)我目前的DBMS不支持上面列出的前三个选项,其余的似乎有问题 - 还有其他常用的方法吗?
更新:我见过 - 索引低选择性列,但只选择高选择性值.
当我使用LWP :: UserAgent检索以UTF-8编码的内容时,似乎LWP :: UserAgent无法正确处理编码.
这是通过命令将命令提示符窗口设置为Unicode后的输出chcp 65001注意,这最初给出了一切都很好的外观,但我认为它只是shell重新组装字节并解码UTF-8,从另一个输出中你可以看到perl本身并没有正确处理宽字符.
C:\>perl getutf8.pl ====================================================================== HTTP/1.1 200 OK Connection: close Date: Fri, 31 Dec 2010 19:24:04 GMT Accept-Ranges: bytes Server: Apache/2.2.8 (Win32) PHP/5.2.6 Content-Length: 75 Content-Type: application/xml; charset=utf-8 Last-Modified: Fri, 31 Dec 2010 19:20:18 GMT Client-Date: Fri, 31 Dec 2010 19:24:04 GMT Client-Peer: 127.0.0.1:80 Client-Response-Num: 1 <?xml version="1.0" encoding="UTF-8"?> <name>Bud?jovický Budvar</name> ====================================================================== response content length is 33 ....v....1....v....2....v....3....v....4 <name>Bud?jovický Budvar</name> . . . . v . . . . 1 …
我将应用程序的源代码组织到Pascal编译单元中 File -> New Unit
以下单元编译好......
unit CryptoUnit;
{$mode objfpc}{$H+}
interface
function Encrypt(key, plaintext:string):string;
function Decrypt(key, ciphertext:string):string;
implementation
uses
Classes, SysUtils, Blowfish;
function Encrypt(key, plaintext:string):string;
...
Run Code Online (Sandbox Code Playgroud)
但是这个有编译错误,因为它无法识别第6行的"异常"...
unit ExceptionUnit;
{$mode objfpc}{$H+}
interface
procedure DumpExceptionCallStack(E: Exception); // <--- problem
implementation
uses
Classes, SysUtils, FileUtil;
{ See http://wiki.freepascal.org/Logging_exceptions }
procedure DumpExceptionCallStack(E: Exception);
...
Run Code Online (Sandbox Code Playgroud)
如果我认为这Exception是定义的SysUtils(我怎么能告诉?)我不能放在uses SysUtils之前interface(编译器抱怨它期待interface)
如何告诉Exception定义的编译器SysUtils?
除了http://wiki.freepascal.org/Coding_style之外,还有一个风格指南,代表着Lazarus(和/或FPC和/或Delphi)中一个值得注意的大量作品或某种广泛的共识.
我正在寻找能说出类似内容的东西
begin之后缩进aif以上只是一个例子.我知道Java和Perl等语言中支持良好的约定,但不是使用Lazarus或Delphi编写的程序的主要约定.
我的意图是
我不是在建立标准的企业工作.
在xml:Unmarshal的Go 文档中,有一个解组此xml的示例
<Person>
<FullName>Grace R. Emlin</FullName>
<Company>Example Inc.</Company>
<Email where="home">
<Addr>gre@example.com</Addr>
</Email>
<Email where='work'>
<Addr>gre@work.com</Addr>
</Email>
<Group>
<Value>Friends</Value>
<Value>Squash</Value>
</Group>
<City>Hanga Roa</City>
<State>Easter Island</State>
</Person>
Run Code Online (Sandbox Code Playgroud)
使用这些结构
type Address struct {
City, State string
}
type Result struct {
XMLName xml.Name `xml:"Person"`
Name string `xml:"FullName"`
Phone string
Email []Email
Groups []string `xml:"Group>Value"`
Address
}
Run Code Online (Sandbox Code Playgroud)
注意,Result包含对单独定义的引用Address.显然,这段代码有效.
当我试图解组这个xml
<C>
<D>
<E>Fred</E>
<F>42</F>
</D>
</C>
Run Code Online (Sandbox Code Playgroud)
使用这些结构
type D struct {
E string
F int
}
type C …Run Code Online (Sandbox Code Playgroud) 在此输出中,为什么在打印非ASCII Unicode字符后会获得额外的换行符?
平台是Windows Vista,问题发生在chcp 65001但不是之后chcp 850
C:\>chcp 850 Active code page: 850 C:\>perl unicode_bug_1.pl Budweiser Budweiser Budweiser Bud?øjovick?¢ Budvar Bud?øjovick?¢ Budvar Bud?øjovick?¢ Budvar C:\>chcp 65001 Active code page: 65001 C:\>perl unicode_bug_1.pl Budweiser Budweiser Budweiser Bud?jovický Budvar Bud?jovický Budvar Bud?jovický Budvar
来自这个计划
#!perl
use strict;
use warnings;
binmode (STDOUT, "encoding(UTF-8)"); # so no "Wide character in print" warning
print "Budweiser\n" for 1..3;
print "Bud\N{U+011B}jovick\N{U+00FD} Budvar\n" for 1..3;
Run Code Online (Sandbox Code Playgroud) 使用非Microsoft编译器,我已经为Windows编写了一个小应用程序,我想免费赠送或出售一些微不足道的数量(5美元说).该程序不使用注册表,但我想将其作为使用免费工具(例如InnoSetup)创建的安装程序可执行文件(例如MyAppInstall.exe)提供.
从签署Windows EXE文件和其他来源,我的理解如下:
如果我没有签署安装程序,Windows将弹出一个警告对话框,警告用户该发布者未知,并建议他们不要运行该软件.这是不可取的.
如果我使用自我认证密钥对安装程序进行签名,则弹出对话框将至少提供发布者名称而不是"未知".它会说发布商无法验证或发布商不受信任.这可能比被描述为未知的出版商要好一些.
如果我每年向CA 支付约100美元,我可以获得一个代码签名证书,这将允许我提供可以轻松安装的有用的免费软件 - 不会出现可怕和令人反感的对话.
我可以使用OpenSSL的Windows版本来创建自我认证的代码签名密钥.这样我就不必从MS下载安装一个590 MB的SDK文件来获取微软的makecert.exe
Catch 22:我听说的唯一代码签名工具signtool.exe只能通过下载和安装至少590 MB的其他东西(SDK)来获得.
问:有没有替代微软的 signtool.exe
我正在计时一些不可预测的 I/O。这段代码
started := time.Now()
time.Sleep(123456789 * time.Nanosecond) // unpredictable process
fmt.Printf("%v", time.Since(started))
Run Code Online (Sandbox Code Playgroud)
生产
123.456789ms
Run Code Online (Sandbox Code Playgroud)
我喜欢单位刻度(ms、?s、ns 等)的自动选择和打印,因为我事先不知道定时操作是否需要微秒、毫秒或秒才能完成。
我不喜欢精度 - 我宁愿只报告两到三个有效数字。是否有一种简单的方法来限制格式化指令%v或类似指令中的精度?
go ×3
perl ×3
lazarus ×2
unicode ×2
utf-8 ×2
xml ×2
code-signing ×1
codepages ×1
coding-style ×1
duration ×1
formatting ×1
indexing ×1
nested ×1
sql ×1
struct ×1
syntax ×1
windows ×1
xml-libxml ×1
xpath ×1