小编U. *_*ndl的帖子

后记语言中的Concat命令

我正在使用postscript绘制一个简单的矩形,如下所示

1 -1 scale
0 -300 translate
newpath
88.9 117.25 moveto
131.6 117.25 lineto
88.9 259.75 lineto
closepath fill

88.9 117.25 moveto
111.4 94.75 lineto
154.1 94.75 lineto
131.6 117.25 lineto
closepath fill
131.6 117.25 moveto
154.1 94.75 lineto
154.1 237.25 lineto
131.6 259.75 lineto
closepath fill
%%EndDocument
Run Code Online (Sandbox Code Playgroud)

结果是一个3D矩形.

但是当我添加以下代码时,矩形会以某个角度倾斜.

[ 0.9999999 0 -1 1 261 0 ] concat
Run Code Online (Sandbox Code Playgroud)

我可以理解,这种行为是由于与CTM连接的矩阵中使用的值引起的.谁能解释上面矩阵中值的使用以及它如何影响绘图行为?

编辑:

非常感谢您提供的信息.实际上,我正在使用post script将位图转换为eps.为此,我将在Graphics对象上执行的所有操作转换为等效的post script命令.

我在后期脚本g.Transform=matrix中使用C#进行转换[ matrix.Elements[0] ...... [matrix.Elements[5] ] concat.从我用Google搜索来看,两者在功能上看起来与我相似,但绘制的eps的结果与位图图像不同.所以,我想知道postscript矩阵concat转换是如何工作的.谁能解释我转换为eps的方法出了什么问题?

postscript coordinate-transformation

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

Perl 语句似乎已执行,但不知为何没有执行

可能这是一个愚蠢的问题,但我没有看到问题(虽然假设一定有一个):

我写了一些代码;这是摘录:

use Getopt::Std;
my %options;
if (getopts('hty', \%options)) {
    my @opts = split(//, 'hty');

    @options{@opts} = (1, 1, 1)
        if (scalar (grep { defined } @options{@opts}) == 0);
    something()
      if ($options{'h'});
    #...
}
Run Code Online (Sandbox Code Playgroud)

代码的目的是如果三个选项均未设置,则将所有三个选项定义为已设置。然而,即使设置了一个选项(),代码似乎也会执行-h,但最终值也不是我所期望的。请参阅调试器会话的以下片段:

DB<2> x %options
0 'h'
1 1
####: so `-h` was set
DB<3> n
main::(otptest.pl:298): if (scalar (grep { defined } @options{@opts}) == 0);
DB<3> n
main::(otptest.pl:297): @options{@opts} = (1, 1, 1)
###: surprisingly the assignment seems to be executed as well
DB<3> …
Run Code Online (Sandbox Code Playgroud)

perl optional-parameters conditional-statements

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

用文本节点替换`&lt;span&gt;`:这是程序员错误还是浏览器错误?

我正在尝试替换 HTML 中一些看起来像 的占位符<span id="Something" />。使用以下 JavaScript 代码仅替换了第一次出现的情况,我想知道为什么:

function set_placeholder(cls, txt)
{
    txt = document.createTextNode(txt);
    for (var e of document.getElementsByClassName(cls)) {
        e.parentNode.replaceChild(txt, e);
    }
}
Run Code Online (Sandbox Code Playgroud)

span替换后,集合似乎无法找到下一个匹配项。

所以我尝试使用以下变体插入文本:

function set_placeholder(cls, txt)
{
    for (var e of document.getElementsByClassName(cls)) {
        e.innerText = txt;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在所有的出现都被替换了,让我想知道这是我的错,还是浏览器(Firefox 102)的错,当第一个变体失败时。

HTML 示例

实际的 HTML 要复杂得多,但这里有一些示例:

<html>
 <p><span class="ph-customer" /> bestellte am <span class="ph-customer-date" /> folgende Artikel:</p>
<!-- ... -->
 <table>
  <tr>
    <td><span class="ph-customer-date" />,
    <span class="ph-customer-name" /></td>
  </tr>
 </table>
<!-- ... …
Run Code Online (Sandbox Code Playgroud)

javascript collections dom replace

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

Perl DBI::SQLite:如何转储具有列名的表?

类似于如何获取Sqlite3数据库上的列名列表?,但仍然不同:

出于调试目的,我编写了一个转储 SQLite3 表的闭包。输出不是很漂亮,但它可以工作:

sub something($)
{
    my $dbh = shift;
    my $me = '_dump_tables';
    my $sep = '-' x length($me);
    my $dump_table = sub ($) {          # dump specified table or view
        if (defined(my $rows = $dbh->selectall_arrayref(
                        "SELECT * FROM $_[0]"))) {
            my $nsep = '-' x length($_[0]);

            print "$me: $_[0]\n";
            print "${sep}--${nsep}\n";
            foreach (@$rows) {
                print join('|', map { $_ // 'NULL' } @$_), "\n";
            }
        } else {
            print "$me: Houston, we have a problem! …
Run Code Online (Sandbox Code Playgroud)

sqlite perl dbi

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

输出shell变量时如何保留空格?

为了进行字符串匹配,我需要使用前导空格定义bash变量。我需要从整数开始定义它,例如:

jj=5
Run Code Online (Sandbox Code Playgroud)

在我看来,printf是个好主意,因此,如果我想填充最多6个字符的空格:

jpat=`printf "  %6i"  $jj`
Run Code Online (Sandbox Code Playgroud)

但不幸的是,当我尝试调用该变量时:

echo $jpat
Run Code Online (Sandbox Code Playgroud)

前导空格被删除,我只得到$jj原样的整数。

有什么办法可以保留这样的空间?

(这等效于:v=' val'; echo $v$v。为什么输出中没有开头和多个空格?)

string bash whitespace substitution

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

虚拟表和对象切片

在对象切片中,当派生类对象复制到基类对象时,派生类的_vptr是否也会像基类的其他成员一样复制到基类的_vptr?如果没有,为什么?

class Base {
public :
    virtual void Display() { cout << "In Base" << endl; }
};
class Derived:public Base {
public:
    void Display() { cout << "In Derived" << endl; }
};
int main()
{
    Derived objD;
    Base objB;
    objB = objD;
    objB.Display();
}
Run Code Online (Sandbox Code Playgroud)

我观察到上述代码片段的以下结果。

Output
In Base
Run Code Online (Sandbox Code Playgroud)

c++ vtable vptr object-slicing

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

我可以在 Perl 中传递对象方法的代码引用吗?

在处理各种参数获取和设置的网络处理程序中,我大量使用闭包。我有一个子例程,它接收一个闭包,并使用返回时作为参数传递的闭包构建另一个闭包(听起来很复杂,但这就是我想要这样的原因)。现在我有一个情况,我必须传递两个非常相似的闭包,每个闭包使用相同的对象方法,但具有不同的参数(对象方法检查传递的参数数量)。

我的想法是不传递两个(或更多)类似的闭包,而是传递$meth_ref对对象方法的引用(该对象也传递给返回闭包的函数),以便函数可以使用代码引用来传递不同的参数。

不幸的是我没有找到这样做的语法。

代码草图:

sub closure_maker($$)
{
    my ($obj, $meth_ref) = @_;

    return sub (...) {
        $meth_ref->($obj);
        ...
        $meth_ref->($obj, ...);
    };
}

my @handlers = (closure_maker($obj1, ???), closure_maker($obj2, ???));
Run Code Online (Sandbox Code Playgroud)

我希望你能明白。

methods perl closures reference

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

fork() 复制 printf() 输出

我刚刚学习如何在 C 中使用 fork(),但在理解执行流程时遇到了困难。

代码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main() {
    printf("starting...\n");

    int x = 100;

    int rc = fork();

    if (rc < 0) {
        printf("unable to fork\n");
        exit(-1);
    } else if (rc == 0) {
        x = x + 200;
        printf("child x == %d\n", x);
    } else {
        x = x + 500;
        printf("parent x == %d\n", x);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

按照您的预期执行:

user@fedora> ./main
starting...
parent x == 600
child x == 300
Run Code Online (Sandbox Code Playgroud)

当我从以下位置删除 \n …

c linux fork

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

如何将工作断点设置为常量表达式?

我有Perl代码,它使用带有初始化块的常量,如下所示:

use constant C => map {
    ...;
} (0..255);
Run Code Online (Sandbox Code Playgroud)

当我尝试在该行上设置断点...;,它不起作用,这意味着:我可以设置断点,但是调试器不会在此停下来

我试过了:

  1. 使用调试器(perl -d program.pl)启动程序
  2. 在调试器(b 2)中设置断点
  3. 使用重新加载R,然后运行(r)程序

但是调试器仍然没有停止,就像我没有设置断点一样。

我的Perl不是最新的;它是5.18.2,以防万一。

debugging perl breakpoints constant-expression

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