小编Red*_*ick的帖子

Perl XML :: LibXML $ node-> findnodes($ xpath)查找不应该的节点

这是我遇到问题的一些代码,我处理一些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)

xml perl xpath xml-libxml

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

如何在Go中获取文件的最后访问日期和时间?

有谁知道如何检查文件访问日期和时间?该函数返回修改的日期和时间,我需要一些东西,将访问的日期时间与当前的日期和时间进行比较.

last-modified go

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

低选择性色谱柱的索引和替代品

在低选择性色谱柱上选择记录的策略范围有哪些?

一个示例可能是订单表,多年来,您构建了大量已完成的订单,但通常需要选择活动订单.订单可能会经历生命周期,例如放置,库存分配,从仓库中挑选,发送给客户,开具发票和付款.订单可能还会被取消,保留等.大多数记录最终将处于最终状态(例如已付款),但您可能经常需要选择已分配的订单.在这种情况下,顺序读取会很慢.

索引
MySQL的类似问题:低基数/选择性列=如何索引?
索引是否在SQL中吮吸?
什么是索引以及如何使用它们来优化数据库中的查询?
定义索引:哪些列和性能影响?
和其他许多其他相关的因素.

我读过的方法(在stackoverflow和其他地方)包括

  • 使用位图索引
  • 使用部分索引(create index x on t(c2) where c1='a')
  • 使用聚集索引?
  • 不要索引低选择性列,使用顺序读取
  • 对数据进行分区(例如,分成具有相同模式的多个表)
  • 使用补充表(例如 active_customers(customer_id)

我目前的DBMS不支持上面列出的前三个选项,其余的似乎有问题 - 还有其他常用的方法吗?

更新:我见过 - 索引低选择性列,但只选择高选择性值.

sql indexing database-design relational-database

8
推荐指数
1
解决办法
2590
查看次数

Perl LWP :: UserAgent错误处理UTF-8响应

当我使用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 …

unicode perl utf-8

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

Lazarus Pascal程序"单位"的语法规则

我将应用程序的源代码组织到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

syntax lazarus

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

拉撒路编码风格指南

时尚指南?

除了http://wiki.freepascal.org/Coding_style之外,还有一个风格指南,代表着Lazarus(和/或FPC和/或Delphi)中一个值得注意的大量作品或某种广泛的共识.

我正在寻找能说出类似内容的东西

  • 文字常量的名称应全部为大写.
  • 变量名称应使用初始小写的camelCase
  • 在a begin之后缩进aif

以上只是一个例子.我知道Java和Perl等语言中支持良好的约定,但不是使用Lazarus或Delphi编写的程序的主要约定.

目的

我的意图是

  • 尝试为我编写的所有代码采用通用样式
  • 对于可能有一天会阅读它的大多数程序员来说,这种风格并不会让人感到意外.

我不是在建立标准的企业工作.

coding-style lazarus

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

直接与间接嵌套的结构

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)

xml struct nested go

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

Perl Unicode故障

在此输出中,为什么在打印非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)

windows unicode perl utf-8 codepages

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

Windows Code-Signing进程和MS signtool.exe的替代?

使用非Microsoft编译器,我已经为Windows编写了一个小应用程序,我想免费赠送或出售一些微不足道的数量(5美元说).该程序不使用注册表,但我想将其作为使用免费工具(例如InnoSetup)创建的安装程序可执行文件(例如MyAppInstall.exe)提供.

签署Windows EXE文件和其他来源,我的理解如下:

  1. 如果我没有签署安装程序,Windows将弹出一个警告对话框,警告用户该发布者未知,并建议他们不要运行该软件.这是不可取的.

  2. 如果我使用自我认证密钥对安装程序进行签名,则弹出对话框将至少提供发布者名称而不是"未知".它会说发布商无法验证或发布商不受信任.这可能比被描述为未知的出版商要好一些.

  3. 如果我每年向CA 支付约100美元,我可以获得一个代码签名证书,这将允许我提供可以轻松安装的有用的免费软件 - 不会出现可怕和令人反感的对话.

  4. 我可以使用OpenSSL的Windows版本来创建自我认证的代码签名密钥.这样我就不必从MS下载安装一个590 MB的SDK文件来获取微软的makecert.exe

  5. Catch 22:我听说的唯一代码签名工具signtool.exe只能通过下载和安装至少590 MB的其他东西(SDK)来获得.

问:有没有替代微软的 signtool.exe

code-signing digital-signature

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

限制格式化持续时间中的有效数字

我正在计时一些不可预测的 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或类似指令中的精度?

formatting duration go

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