我正在尝试解密一个我不熟悉的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是一个数组,但我不明白的语法如下:@{ ... }?
试图枚举某个目录中的所有文件(如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
与此问题相关,哪个(虽然有效)我无法理解嵌套列表理解的语法.
以下代码工作正常:
open( PIPE, '-|', 'ant' );
for( <PIPE> ) {
print;
}
Run Code Online (Sandbox Code Playgroud)
但是,它没有做我想要的.由于Ant构建可能需要5分钟,我希望逐行看到输出.相反,我在流程结束时获得了整个输入.
使用Perl调试器查看它,Perl等待'for'语句,直到Ant终止.这是为什么?
我应该使用CPAN的哪个包发送邮件?
有时timtowtdi方法非常累人.对我来说,特别是在包装选择方面.
所以我想要的是发送电子邮件,可能是HTML电子邮件.在Mail-Sendmail,Mail-Sender,NET-SMTP(顺便说一下 - 在PPM中不可用),Mail-SendEasy和80个左右的其他软件包中,它们的软件包名称中包含"Mail" - 我应该选择哪一个?
在这个主题中,你选择"规范"包慢跑的一般评价是什么?即"每个人都在使用"的包裹.某处是否有任何评级或受欢迎的广告牌?
考虑以下示例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对象,以及缓存和预取逻辑吗?如果是这样,我可以合并以前的任何工作?
编辑(摘要):
我有一个管理好的资源管理器栏(在Internet Explorer中工作),运行得相当好.目前,调试它的唯一方法是:
尝试执行以下操作:
第一种方法非常麻烦.使用第二种方法,iexplore启动,但调试器无法识别断点,不知道为什么.
有提示吗?
似乎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*?
我有一个相当直接的 eclipse 安装。从用于 Java EE 开发的 Eclipse 开始,我添加了 CDT 和 PyDev(我不记得F6在添加这些扩展之前是否有效)。
调试时,我试图F6按键跳过,但没有任何动作发生。
F5 工作正常。此外,Debug 视图上的 step over 按钮工作正常。查看首选项 -> 常规 -> 键,F6在按预期调试时绑定为“Step Over”。
我可以从哪里开始解决此问题?
我在 Windows 上,Indigo SR 2。
我对pip的熟悉最终能够做到:'pip install','pip uninstall'和'pip list' - 我想要安装的包的名称作为单个参数.
到目前为止,这种有限的知识使我能够安装大多数简单的软件包,有时候,当我运气好的时候,我甚至可以安装需要编译的软件包.这对我来说都是神奇的.
我现在面临的情况是我需要对C文件进行一些编辑(旁注:这似乎是'netifaces'软件包的一个已知的解决方法 - 每个人似乎都很和平.这是一个惊人的现象).
所以我想将安装分解为更小的步骤:
除了第1步,我不知道如何继续.
我要用多个项目来维护一个庞大的,旧的代码库(不是由我编写的),其中大多数都是用C++编写的.我的第一步是将代码库从VS 2008升级到VS 2013.
两种解决方案都设置为针对大小进行优化(在发布版本中).然而,二进制大小现在大约增加了30%,几乎在所有二进制文件中 - 我很难解释.
这些项目大量使用ATL,我知道ATL 9转移到静态库,但我怀疑这解释了所有的大小差异.
任何想法:
尺寸差异的解释是什么?VS12是否更安全或由于尺寸变化而具有更好的性能(寻找出售此开关的"关键点").
寻找减少二进制大小的方法,从低挂果到更精细的工作.