小编Alo*_*dal的帖子

使用perl脚本故意吃一定量的内存

我需要模拟一个需要内存的过程.例如,在具有4.0 GiB的计算机上,我需要一个吃3.2 GiB(给予或少量MiB)的进程.

我认为它应该像以下一样简单:

my $mbytes = 3276;
my $huge_string = 'X' x ($mbytes * 1024 * 1024);
Run Code Online (Sandbox Code Playgroud)

但最终我的进程吃了两倍于我需要的内存.

  • 这在两台Windows 7 amd64机器上是相同的:一台是64位,另一台是32位版本的Strawberry Perl

  • 我正在使用Sysinternals Process Explorer并观看"Private Bytes"

当然,我可以$mbytes /= 2(现在,我可能会这样做),但是:

  • 有没有更好的办法?

  • 任何人都可以解释为什么数量是字符串长度的两倍?

windows perl strawberry-perl

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

在Perl中调用子例程的非标准方式

我正在尝试一种在Perl脚本中调用子例程的不同方法.

我有一组功能如下:

sub Testcase_CheckStatus {
    print "TestCase_CheckStatus called\n";
}
Run Code Online (Sandbox Code Playgroud)

然后我用"CheckStatus"这样的键遍历Perl哈希:

while (my ($k, $v) = each %test_cases) {
    print "TestCase_$k","\n";
    Testcase_$k();
}
Run Code Online (Sandbox Code Playgroud)

基本上,我想在解析哈希的键时调用上面的函数Testcase_CheckStatus,但是我收到了这个错误:

无法通过包"CheckStatus"找到对象方法"Testcase_"(也许你忘了在./main.pl第17行加载"CheckStatus"?)

我该怎么做才能解决这个问题?有没有其他方法可以做同样的事情?

perl subroutine

3
推荐指数
2
解决办法
170
查看次数

使用class作为特殊值?

在Python中使用类作为特殊值是否丑陋?

考虑一下:

def find_result():
    result = None
    # do something to find the result, even recursing
    return result

r = find_result()
if r is None:
     raise Exception("we have no result")
Run Code Online (Sandbox Code Playgroud)

如果我希望结果是数字或任何"正常"类型,这将完美地工作.

但是如果存在任意数据结构,结果可以是从None另一个结构到什么呢?我在我的案例中所做的是:

class NoResult:
    """i'm even less than `None`."""
    pass

def query(data, path):
    result = NoResult
    # traverse and recurse into the data structure
    return result

r = query()
if r is NoResult:
     raise Exception("our hands are empty")
Run Code Online (Sandbox Code Playgroud)

它有效,但我无法摆脱这种感觉,我有点滥用这里的贫困阶层,甚至可能存在潜伏在里面的真正危险.

这是真的吗?我在上课吗?或者只是我的算法很糟糕,如果它需要依赖这样的"特殊None"?

python class

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

RPM构建在安装部分失败

我正在尝试构建我的第一个rpm包,它是一个简单的可执行文件(mysh)。

我的规格文件:

Summary: bla <br>
Name: mysh <br>
Version: 1.0 <br>
Release: 1 <br>
Group: Applications <br>
Source: mysh-1.0.tar.gz <br>
URL: http://www.google.com <br>
Vendor: tadas sofware inc. <br>
Packager: tadas <br>
License: GPL 

%description <br>
a very good program!

%prep <br>
rm -rf $RPM_BUILD_DIR/mysh-1.0 <br>
zcat $RPM_SOURCE_DIR/mysh-1.0.tar.gz | tar -xvf -

%build <br>
make 

%install <br>
cp mysh /usr/local/bin/mysh

%files <br>
/usr/local/bin/mysh
Run Code Online (Sandbox Code Playgroud)

失败并显示以下错误:

cd: 8: can't cd to /home/tadzys/rpm/BUILDROOT/mysh-1.0-1.x86_64
Run Code Online (Sandbox Code Playgroud)

当然该文件不存在。我尝试将其复制到那里仍然存在相同的错误。不知道我的安装部分是否应将任何内容放到BUILDROOT文件夹中。

我在Ubuntu 11.04上。

linux ubuntu rpm rpmbuild

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

获取有关Windows上其他进程的信息

如何在Windows中获取有关其他(与perl.exe无关)进程的信息?

说,我有一个脚本,希望监视有关所有firefox.exe进程的一些基本信息.

我想做的事情如下:

#!perl -w
use warnings;
use strict;
use MagicModule qw/ read_process_info /;
use Data::Dumper;

my $ps = MagicModule::read_process_info();

print Dumper($ps);
Run Code Online (Sandbox Code Playgroud)

并看到类似的东西:

$VAR = [
    {
        ProcessName  => 'firefox.exe',
        PID          => 1234,
        PirvateBytes => 21153546,
        WorkingSet   => 134566354,
        # etc...
    },
    {
        ProcessName  => 'firefox.exe',
        PID          => 1556,
        PirvateBytes => 15435487,
        WorkingSet   => 245774448,
        # etc...
    },
    {
        ProcessName  => 'calc.exe',
        PID          => 2777,
        PirvateBytes => 1024,
        WorkingSet   => 4096,
        # etc...
    },
];
Run Code Online (Sandbox Code Playgroud)

因为我通过解析Systinternals的PsExec的输出来获得这个信息,但显然这根本没有效率.

有什么好的Perl方法来获取这些数据?

(在Windows …

windows perl process

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

如何删除highcharts中的网格线重叠?

有没有办法删除左侧xAxis gridLine左侧yAxis gridLine边缘的像素?

网格线重叠

参见示例:http://jsfiddle.net/48LvK/

$(function () {
    var chart;
    $(document).ready(function() {
        chart = new Highcharts.Chart({
            chart: {
                renderTo: 'container',
                type: 'area',
                marginRight: 130,
                marginBottom: 25
            },
            "xAxis": {
                "tickWidth": 0,
                "gridLineWidth": 1,
                "gridLineDashStyle": "ShortDot",
                "gridLineColor": "#c1c2c3",
                "labels": {
                    "enabled": false
                },
            },
            "yAxis": {

            },
            "plotOptions": {
                "area": {
                    "fillColor": "transparent",
                    "marker": {
                        "enabled": false
                    }
                }
            }, 
            series: [{
                data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
            }]
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

highcharts

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

为什么运算符模块缺少`和`以及`或`?

运算符模块可以在以下情况下轻松避免不必要的函数和lambdas:

import operator

def mytest(op, list1, list2):
    ok = [op(i1, i2) for i1, i2 in zip(list1, list2)]
    return all(ok)

mytest(operator.eq, [1, 2, 3], [1, 2, 3])         # True
mytest(operator.add, [-1, 2, -3], [1, -2, 33])    # False
Run Code Online (Sandbox Code Playgroud)

好吧,现在我需要做i1 and i2,但令我惊讶的是,我and在操作员模块中找不到!这同样适用于or!我知道,and这不是运营商,它是一个关键字,但是not,连同is甚至del是所有关键字都包括在内.

那故事是什么?他们为什么失踪?

python module operator-keyword

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

Fragment中getActivity()和视图之间的区别

有什么区别

getActivity().findViewById(...)
Run Code Online (Sandbox Code Playgroud)

View view = inflater.inflate(R.layout.fragment_fragment_v, null);
view.findViewById(...)
Run Code Online (Sandbox Code Playgroud)

在Fragment中(将Activity转换为Fragment时)?

android android-fragments android-activity

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

Perl语法用法,使用strict和local

我有Perl local语法的问题.

代码如下:

#!/usr/bin/perl -w

&outer;

sub outer {
    local $lvar = 'local';
    &inner;
}

sub inner {
    print "lvar: $lvar\n";
}
Run Code Online (Sandbox Code Playgroud)

如果我运行代码,它输出:

lvar: local
Run Code Online (Sandbox Code Playgroud)

但如果代码修改如下:

#!/usr/bin/perl -w
use strict;

&outer;

sub outer {
    local $lvar = 'local';
    &inner;
}

sub inner {
    print "lvar: $lvar\n";
}
Run Code Online (Sandbox Code Playgroud)

然后,出现错误:

Global symbol "$lvar" requires explicit package name at ./test.pl line 7.
Global symbol "$lvar" requires explicit package name at ./test.pl line 12.
Execution of ./test.pl aborted due to compilation errors.
Run Code Online (Sandbox Code Playgroud)

我在这里很困惑.我想最小化范围 …

perl

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

如何使用c#语言呈现带有5位数(十六进制)的字符Unicode

我想在屏幕上打印一个带有5个十六进制数字的Unicode字符(例如,将其写在Windows窗体按钮上).

例如,Ace Heart角色的Unicode是1F0B1.我尝试过,\x但最多可以显示4位数.

c#

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