问题列表 - 第12819页

在Perl中,是否有手动将undef转换为0的优雅方式?

我有一个这种形式的片段:

my $a = $some_href->{$code}{'A'}; # a number or undef
my $b = $some_href->{$code}{'B'}; # a number or undef
$a = 0 unless defined($a);
$b = 0 unless defined($b);
my $total = $a + $b;
Run Code Online (Sandbox Code Playgroud)

由于涉及两个以上的变量,现实更加混乱.

我真正想写的是:

my $total = $some_href->{$code}{'A'} + $some_href->{$code}{'B'};
Run Code Online (Sandbox Code Playgroud)

并且undef正确评估为0,但几乎每次运行都会收到这些警告:

Use of uninitialized value in addition (+) at Stats.pm line 192.
Run Code Online (Sandbox Code Playgroud)

让这些消息消失的最佳方法是什么?

注意:如果相关,我会使用严格的'和'使用警告'.

perl undef

8
推荐指数
3
解决办法
3662
查看次数

如何在RSS源中添加换行符?

我正在用PHP构建自己的自定义RSS提要.我希望标记包含换行符以使文本更具可读性.但是,我似乎无法弄清楚如何正确地做到这一点.无论我尝试什么,一些RSS阅读器都会错误地解释它.是否有一些标准的最佳方式来添加换行符和RSS 2.0 Feed?

我尝试过"\n",它在Mac上的NetNewsWire中运行,但内置的Safari浏览器的RSS阅读器会被忽略.

我已经尝试了<br />,它可以在Safari RSS阅读器中使用,但是
在NetNewsWire被截断后会产生所有文本.

php xml rss feeds rss2

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

如何测试线程是否是Java中唯一剩余的线程?

我希望Java程序中的一个线程循环,直到所有其他线程都死掉,然后结束循环.我怎么知道我的循环线程何时是剩下的唯一线程?

在我的情况下,循环线程将没有任何其他线程的引用,所以我认为没有isAlive()帮助我.

java concurrency multithreading

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

如何使用Python Suds(版本0.3.6)导入XSD架构SOAP库:TypeNotFound异常?

我正在尝试使用带有Python Suds的SABRE旅行网络服务,但是一个XSD似乎没有格式良好(可能在此模式中缺少名称空间).


from suds.client import Client
wsdl = 'http://webservices.sabre.com/wsdl/sabreXML1.0.00/tpf/OTA_AirPriceLLSRQ.wsdl'
client = Client(wsdl, cache=None)
Run Code Online (Sandbox Code Playgroud)

调试跟踪返回:


.DEBUG:suds.wsdl:reading wsdl at: http://webservices.sabre.com/wsdl/sabreXML1.0.00/tpf/OTA_AirPriceLLSRQ.wsdl ...
DEBUG:suds.transport.http:opening (http://webservices.sabre.com/wsdl/sabreXML1.0.00/tpf/OTA_AirPriceLLSRQ.wsdl)
DEBUG:suds.metrics:sax (http://webservices.sabre.com/wsdl/sabreXML1.0.00/tpf/OTA_AirPriceLLSRQ.wsdl) duration: 406 (ms)
DEBUG:suds.xsd.sxbasic:Import:0x7f90196fd5f0, importing ns="http://webservices.sabre.com/sabreXML/2003/07", location="OTA_AirPriceLLSRQRS.xsd"
DEBUG:suds.transport.http:opening (http://webservices.sabre.com/wsdl/sabreXML1.0.00/tpf/OTA_AirPriceLLSRQRS.xsd)
DEBUG:suds.metrics:sax (http://webservices.sabre.com/wsdl/sabreXML1.0.00/tpf/OTA_AirPriceLLSRQRS.xsd) duration: 504 (ms)
DEBUG:suds.xsd.sxbasic:Include:0x7f90196fdf80, importing ns="None", location="OTA_AirPriceLLSRQ.xsd"
DEBUG:suds.transport.http:opening (http://webservices.sabre.com/wsdl/sabreXML1.0.00/tpf/OTA_AirPriceLLSRQ.xsd)
DEBUG:suds.metrics:sax (http://webservices.sabre.com/wsdl/sabreXML1.0.00/tpf/OTA_AirPriceLLSRQ.xsd) duration: 1.363 (seconds)
DEBUG:suds.xsd.schema:built:
Schema:0x7f9019708e60
(...)
DEBUG:suds.xsd.query:(u'MessageHeader', http://www.ebxml.org/namespaces/messageHeader), found as: 
DEBUG:suds.xsd.query:(u'Security', http://schemas.xmlsoap.org/ws/2002/12/secext), found as: 
DEBUG:suds.xsd.query:(u'OTA_AirPriceRQ', http://webservices.sabre.com/sabreXML/2003/07), not-found
.
----------------------------------------------------------------------
Ran 2 tests in 11.669s

Type not found: '(OTA_AirPriceRQ, http://webservices.sabre.com/sabreXML/2003/07, )'
Run Code Online (Sandbox Code Playgroud)

这是逻辑:Python Suds在"无"命名空间中加载OTA_AirPriceRQ.我读了"修复破坏的模式"Python Suds文档(https://fedorahosted.org/suds/wiki/Documentation#FIXINGBROKENSCHEMAs): …

python soap wsdl suds

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

BindingList <> ListChanged事件

我有一个类的BindingList <>设置为BindingSource的DataSource属性,该属性又设置为DataGridView的DataSource属性.

1.我的理解是,对列表的任何添加都将触发ListChanged事件,该事件将通过BindingSource传播,然后传播到DataGridView,DataGridView将更新自身以显示更改.这将发生,因为事件已自动连接.(是?)

当所有工作都在UI线程上完成时,这一切都很好,但是当从非UI线程创建和更改列表时,最终在更新网格时会发生跨线程异常.我能理解为什么会这样,但是没有办法解决这个问题......

2.我很难理解,我应该在哪里最好拦截ListChanged事件来尝试将内容整理到UI线程中?我猜我需要一个UI线程的引用以某种方式帮助做到这一点?

我已经阅读了很多这方面的帖子/文章,但我很难挣扎,因为我不完全理解这里的工作机制.

我们永远不会在列表中更改任何项目,只添加它们,并最初清除列表.

(我使用的是.NET 2.0)

.net c# data-binding datagridview winforms

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

从NSData创建NSString时猜测编码

NSString从我可以使用的文件中读取时initWithContentsOfFile:usedEncoding:error:,它会猜测文件的编码.

当我从一个创建它时,NSData我唯一的选择是initWithData:encoding:我必须显式传递编码.当我使用NSData而不是文件时,如何可靠地猜测编码?

cocoa cocoa-touch nsdata

18
推荐指数
2
解决办法
6245
查看次数

与其他领域相关的易变语义

假设我有以下代码

private volatile Service service;

public void setService(Service service) {
  this.service = service;
}

public void doWork() {
  service.doWork();
}
Run Code Online (Sandbox Code Playgroud)

修改后的字段标记为volatile,其值不依赖于先前的状态.所以,这是正确的多线程代码(不用担心Service一分钟的实现).

据我所知,从内存可见性的角度来看,读取volatile变量就像输入一个锁.这是因为读取常规变量不能通过读取volatile变量来重新排序.

这是否意味着以下代码是正确的?

private volatile boolean serviceReady = false;
private Service service;

public void setService(Service service) {
  this.service = service;
  this.serviceReady = true;
}

public void doWork() {
  if ( serviceReady ) {
    service.doWork();
  }
}
Run Code Online (Sandbox Code Playgroud)

java concurrency volatile

13
推荐指数
1
解决办法
1892
查看次数

使用 Delphi 和 TIdHttp 将数据发布到 ASP .NET 页面

我有一个像这个简单的http://issamsoft.com/app2/page1.aspx这样的 Asp .net 页面 ,我想通过使用 TIdHttp 向它发布一些数据并从响应中提取数据。我尝试在 Delphi2009 中这样做:

Procedure TForm1.Button1Click(Sender: TObject);
Const
VIEWSTATE = '/wEPDwUKMjA3NjE4MDczNmRkSxPt/LdmgqMd+hN+hkbiqIZuGUk=';
EVENTVALIDATION = '/wEWAwL40NXEDALs0bLrBgKM54rGBtmtdOYy+U7IFq8B25bYT1d4o1iK';
FORMPARAMS = 'TextBox1=Issam&Button1=Button';
URL = 'http://issamsoft.com/app2/page1.aspx';
var
http: TIdHttp;
lstParams: TStringList;
begin
 http := TIdHTTP.Create(self);
 lstParams := TStringList.Create;
 try
  lstParams.Add('__VIEWSTATE='+VIEWSTATE);
  lstParams.Add('__EVENTVALIDATION='+EVENTVALIDATION);
  lstParams.Add(FORMPARAMS);
  http.Request.ContentType := 'application/x-www-form-urlencoded';
  Memo1.Lines.Text := http.Post(url,lstParams);
 finally
  http.Free;
  lstParams.Free;
 end;

end;
Run Code Online (Sandbox Code Playgroud)

但是 TIdhttp 总是给出一个错误(HTTP/1.1 500 内部服务器错误。)

目前,当发出 POST 时,IdHTTP 会自动将协议设置为 1.0 版本,而与它最初的值无关,这是因为有些服务器不完全遵守 RFC。特别是,他们不尊重发送/不发送 Expect: 100-Continue 标头。在我们找到不破坏 RFC 的最佳解决方案之前,我们会将 POSTS 限制为 1.0 版。

我的代码有问题还是 TidHttp 错误?如果问题出在 TIdHttp 上,是否有任何解决方法?或者是否有其他使用 …

asp.net delphi indy delphi-2009

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

如何按字母顺序对NSArray进行排序?

如何[UIFont familyNames]按字母顺序对填充的数组进行排序?

sorting objective-c

374
推荐指数
5
解决办法
22万
查看次数

如何创建类的静态对象成员?

我对c ++很新,特别是在它的技术方面.我的问题是,如何创建类本身的静态对象成员.我的意思是我在类中声明了一个静态成员对象.例:

CFoo:CFoo *pFoo[2] = {0};

class CFoo
{
   public: static CFoo *pFoo[2];
   public: CFoo(int a);
   public: CFoo *getFoo();
};
Run Code Online (Sandbox Code Playgroud)

现在的问题是,如何创建pFoo,就像我想创建两个静态对象pFoo一样,

pFoo[0] = new CFoo(0);
pFoo[1] = new CFoo(1);
Run Code Online (Sandbox Code Playgroud)

这样我就可以使用getFoo方法返回一个pFoo,比如

CFoo *getFoo()
{
   return pFoo[0]; //or pFoo(1);
}
Run Code Online (Sandbox Code Playgroud)

非常感谢你们.希望我的问题很清楚.

再次感谢您的提前.-sasayins

c++

4
推荐指数
2
解决办法
6862
查看次数