小编Uri*_*Uri的帖子

当Perl方法返回"hashref"时,它意味着什么?

我正在尝试解密一个我不熟悉的Perl代码,以某种方式与HashRef相关.我正在使用Amazon :: S3,但我的问题是一般的Perl问题.请参阅以下代码:

use Amazon::S3;
my $s3 = Amazon::S3->new( ... );
my $response = $s3->buckets;
Run Code Online (Sandbox Code Playgroud)

文档(这里)sais,关于s3-> buckets:

Returns undef on error, else HASHREF of results
Run Code Online (Sandbox Code Playgroud)

以下行对我有用,但我不明白为什么:

for $b in ( @ { $response->{buckets} } ) {
    print "bucket: " . $b->bucket . "\n";
}
Run Code Online (Sandbox Code Playgroud)

我对第一行的每个操作员感到困惑.

究竟是什么类型$response,$respone->{bucket}.貌似表达式中的for是一个数组,但我不明白的语法如下:@{ ... }

perl

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

os.walk嵌套列表理解

试图枚举某个目录中的所有文件(如Linux中的"find."或Windows中的"dir/s/b").

我想出了以下嵌套列表理解:

from os import walk
from os.path import join
root = r'c:\windows'      #choose any folder here
allfiles = [join(root,f) for f in files for root,dirs,files in walk(root)]
Run Code Online (Sandbox Code Playgroud)

不幸的是,对于最后一个表达式,我得到:

NameError: name 'files' is not defined

问题相关,哪个(虽然有效)我无法理解嵌套列表理解的语法.

python list-comprehension

8
推荐指数
2
解决办法
3829
查看次数

如何获得Perl管道的输出?

以下代码工作正常:

open( PIPE, '-|', 'ant' );
for( <PIPE> ) {
    print;
}
Run Code Online (Sandbox Code Playgroud)

但是,它没有做我想要的.由于Ant构建可能需要5分钟,我希望逐行看到输出.相反,我在流程结束时获得了整个输入.

使用Perl调试器查看它,Perl等待'for'语句,直到Ant终止.这是为什么?

perl pipe

7
推荐指数
1
解决办法
3809
查看次数

我应该使用CPAN的哪个包发送邮件?

我应该使用CPAN的哪个包发送邮件

有时timtowtdi方法非常累人.对我来说,特别是在包装选择方面.

所以我想要的是发送电子邮件,可能是HTML电子邮件.在Mail-Sendmail,Mail-Sender,NET-SMTP(顺便说一下 - 在PPM中不可用),Mail-SendEasy和80个左右的其他软件包中,它们的软件包名称中包含"Mail" - 我应该选择哪一个?

在这个主题中,你选择"规范"包慢跑的一般评价是什么?即"每个人都在使用"的包裹.某处是否有任何评级或受欢迎的广告牌?

perl cpan module

7
推荐指数
2
解决办法
3181
查看次数

为什么<Image Source ='...'>这么慢,我该怎么办呢?

考虑以下示例XAML文件,其中显示Facebook的前1000人,从markz开始作为第4人.请注意,这只是一个示例.任何具有1000个元素的窗口,无论您如何构建它,都是一个很好的演示.

<Window x:Class="SO.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:clr="clr-namespace:System;assembly=mscorlib"
        Title="MainWindow" Height="350" Width="525">
    <ListBox ItemsSource="{Binding}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Image Source="{Binding}" />
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Window>
Run Code Online (Sandbox Code Playgroud)

而背后的代码:

public partial class MainWindow : Window
{
    public MainWindow() {
        InitializeComponent();
        string[] urls = new string[1000];
        for (int i = 0; i < 1000; ++i) {
            urls[i] = "http://graph.facebook.com/" + i + "/picture";
        }
        this.DataContext = urls;
    }
}
Run Code Online (Sandbox Code Playgroud)

在非常合理的桌面和高速连接上,程序非常慢.尝试使用ScrollBar滚动...说到中间,需要30秒.点击"主页"和"结束"键将花费大量时间.

这不是第一次只能获取图像到缓存的问题.来回看看已经呈现的图片有点快,但通常很慢.似乎没有任何内容存储在缓存中,关闭应用程序并重新启动它,一切都很慢.

等效的HTML代码快速消失.有些慢,第一次,但后来一切都很快.

到底是怎么回事?元素是否使用任何缓存?列表是否对当前未显示的图像进行预取?无论如何要告诉它吗?真的,我唯一的解决方案是自己管理Bitmap对象,以及缓存和预取逻辑吗?如果是这样,我可以合并以前的任何工作?

编辑(摘要):

  1. 关闭虚拟化的@HB答案会给你最好的结果.窗口加载后立即呈现整个列表框,并且不重新计算图像
  2. @Phil代码效果很好,它可以提高性能,特别是在来回时.
  3. 没有任何其他代码,WPF将不会在调用之间缓存图像.使用WinINET缓存.虽然HTTP Header中的请求附带了Cache指令,但WPF对它没有任何作用.

wpf caching

7
推荐指数
1
解决办法
2905
查看次数

如何从Visual Studio 2010调试托管BHO

我有一个管理好的资源管理器栏(在Internet Explorer中工作),运行得相当好.目前,调试它的唯一方法是:

  1. 在VS外启动IE
  2. 从VS(Debug => Attach)附加到进程"iexplore.exe"

尝试执行以下操作:

  1. 转到Project Properties => Debug选项卡
  2. 启动外部程序:c:\ program files(x86)\ internet explorer\iexplore.exe
  3. 命令行参数:about:blank
  4. 击中 F5

第一种方法非常麻烦.使用第二种方法,iexplore启动,但调试器无法识别断点,不知道为什么.

有提示吗?

.net bho com-interop visual-studio-2010

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

如何从'char const*'中删除const

似乎std :: remove_const无法删除其中的常量const char*.请考虑以下代码:

#include <iostream>
#include <type_traits>
#include <typeinfo>

template< typename T >
struct S
{
    static void foo( ) {
        std::cout << typeid(T).name() << std::endl;
        std::cout << typeid( std::remove_const<T>::type ).name() << std::endl;
    }
};


int main( )
{
    S<char const*>::foo();
}
Run Code Online (Sandbox Code Playgroud)

此程序的输出(在Visual Studio 2010上):

char const *
char const *
Run Code Online (Sandbox Code Playgroud)

在gcc中我们有可读的输出(代码在这里):

PKc
PKc
Run Code Online (Sandbox Code Playgroud)

我希望得到char *第二行的Microsoft编译器,以及gcc上的任何(但不同于第一行).我究竟做错了什么?如何打开char const*char*

c++ c++11

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

知道为什么 F6 不起作用吗?

我有一个相当直接的 eclipse 安装。从用于 Java EE 开发的 Eclipse 开始,我添加了 CDT 和 PyDev(我不记得F6在添加这些扩展之前是否有效)。

调试时,我试图F6按键跳过,但没有任何动作发生。

F5 工作正常。此外,Debug 视图上的 step over 按钮工作正常。查看首选项 -> 常规 -> 键,F6在按预期调试时绑定为“Step Over”。

我可以从哪里开始解决此问题?

我在 Windows 上,Indigo SR 2。

eclipse pydev

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

将'pip install'分解为较小的步骤,这样我就可以在安装之前编辑它

我对pip的熟悉最终能够做到:'pip install','pip uninstall'和'pip list' - 我想要安装的包的名称作为单个参数.

到目前为止,这种有限的知识使我能够安装大多数简单的软件包,有时候,当我运气好的时候,我甚至可以安装需要编译的软件包.这对我来说都是神奇的.

我现在面临的情况是我需要对C文件进行一些编辑(旁注:这似乎是'netifaces'软件包的一个已知的解决方法 - 每个人似乎都很和平.这是一个惊人的现象).

所以我想将安装分解为更小的步骤:

  1. 下载egg文件(我已经找到了这个:pip install --download).
  2. 解压缩或以其他方式解压缩包文件,直到我可以编辑个人
  3. 做我的自定义修改.
  4. 做构建
  5. 做安装.

除了第1步,我不知道如何继续.

python pip

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

从Visual Studio 2008升级到Visual Studio 2013时,二进制大小增长了30%

我要用多个项目来维护一个庞大的,旧的代码库(不是由我编写的),其中大多数都是用C++编写的.我的第一步是将代码库从VS 2008升级到VS 2013.

两种解决方案都设置为针对大小进行优化(在发布版本中).然而,二进制大小现在大约增加了30%,几乎在所有二进制文件中 - 我很难解释.

这些项目大量使用ATL,我知道ATL 9转移到静态库,但我怀疑这解释了所有的大小差异.

任何想法:

  1. 尺寸差异的解释是什么?VS12是否更安全或由于尺寸变化而具有更好的性能(寻找出售此开关的"关键点").

  2. 寻找减少二进制大小的方法,从低挂果到更精细的工作.

c++ visual-c++ visual-studio-2013

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