小编Wil*_*hes的帖子

如何找到对象理解的消息?

在Pharo,我知道整数理解这个信息to:.工作区提供建议:

工作区建议

但是,如果我从工作区检查一个整数,它没有提到to::

检查整数

搜索SmallInteger也不会在系统浏览器中显示任何内容:

系统浏览器

如何发现可以发送给对象的消息?理想情况下,我也希望看到他们的源代码.

reflection smalltalk pharo

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

如何在Jenkinsfile中的函数中运行多个sh命令?

鉴于以下Jenkinsfile:

@NonCPS
void touchFiles() {
    sh "touch foo"
    sh "touch bar"
}

node('general') {
    touchFiles()

    sh "ls"
}
Run Code Online (Sandbox Code Playgroud)

我在Jenkins的控制台日志中看到以下内容:

Running on box35 in /internal/slave/build/workspace/1499786637.EXAMPLE_test-repo_test_jenkinsfile
[Pipeline] {
[Pipeline] sh
[1499786637.EXAMPLE_test-repo_test_jenkinsfile] Running shell script
+ touch foo
[Pipeline] sh
[1499786637.EXAMPLE_test-repo_test_jenkinsfile] Running shell script
+ ls
foo
Run Code Online (Sandbox Code Playgroud)

请注意,“ bar”尚未创建。

为什么只在sh这里第一次运行?如何sh在Jenkinsfile中排除一系列调用?

(我知道我会写,sh "touch foo; touch bar"但是在更复杂的Jenkinsfiles中,有时需要单独的sh调用。)

jenkins jenkins-pipeline

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

如何使用 jq 对可能不存在的数组进行排序?

给定以下 JSON:

{
  "alice": { "items": ["foo", "bar"] },
  "bob": { "items": ["bar", "foo"] },
  "charlie": { "items": ["foo", "bar"] }
}
Run Code Online (Sandbox Code Playgroud)

我可以items按如下方式对数组进行排序:

$ jq < users.json 'map(.items |= sort)'
[
  {
    "items": [
      "bar",
      "foo"
    ]
  },
  {
    "items": [
      "bar",
      "foo"
    ]
  },
  {
    "items": [
      "bar",
      "foo"
    ]
  }
]
Run Code Online (Sandbox Code Playgroud)

但是,如果任何用户没有items

{
  "alice": { "items": ["foo", "bar"] },
  "bob": { "items": ["bar", "foo"] },
  "charlie": {}
}
Run Code Online (Sandbox Code Playgroud)

尝试对其进行排序会出错。

$ jq < users.json 'map(.items …
Run Code Online (Sandbox Code Playgroud)

arrays sorting json edit jq

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

如何在bash中取一个字符串并将其拆分为2个变量?

我有一个以"firstname lastname"格式从文件中读入的字符串.我想拆分字符串,并把它分成两个独立的变量$first$last.最简单的方法是什么?

bash shell scripting

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

Eclipse:您可以点击按键绑定来查找它所绑定的命令吗?

我是 Eclipse 新手。是否有可能在 Eclipse 中点击键绑定并找到它所绑定的命令的名称?

例如,按Ctrl+ Shift+R并在列表中出现类似“open-dialog”的内容,告诉我Ctrl+ Shift+R绑定到命令“open-dialog”。

eclipse keyboard-shortcuts

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

以异步方式在Emacs中运行命令,但以递增方式显示输出

我有一个实用功能:

(defun execute-in-buffer (command-with-args buffer)
  "Execute a string COMMAND-WITH-ARGS representing a shell command with arguments,
inserting the results in BUFFER."
  (switch-to-buffer buffer)
  (insert (format ">>> %s\n" command-with-args))
  (let* ((command-args-list (s-split " " command-with-args))
         (command (car command-args-list))
         (args (cdr command-args-list)))
    (apply 'call-process command nil buffer t args)))
Run Code Online (Sandbox Code Playgroud)

这让我可以做的事情(execute-in-buffer "ls /" (get-buffer-create "*my-output*").但是,它不适合慢速命令.如果我调用一系列慢速命令,直到最后我才会得到任何输出:

(let ((buf (get-buffer-create "*my-output")))
  (execute-in-buffer "sleep 10" buf)
  (execute-in-buffer "ls /" buf))
Run Code Online (Sandbox Code Playgroud)

我希望能够同步调用,因此下一个命令仅在前一个命令完成后运行.但是,我希望在运行时看到命令的输出.我该怎么做?

(示例代码仅用于展示,我很乐意将其放弃以支持其他内容.)

emacs elisp

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

如何使用ielm在Emacs lisp中打印字符串?

我想在ielm中打印一个字符串.我不想打印打印的表示,我想要字符串本身.我想要这个结果:

ELISP> (some-unknown-function "a\nb\n")
a
b
ELISP>
Run Code Online (Sandbox Code Playgroud)

我看不出有什么方法可以做到这一点.显而易见的功能是printprinc,但这些给了我可打印的表示:

ELISP> (print "* first\n* second\n* third\n")
"* first\n* second\n* third\n"
Run Code Online (Sandbox Code Playgroud)

我已经打了pppp-escape-newlines,但这些仍难逃其他字符:

ELISP> (setq pp-escape-newlines nil)
nil
ELISP> (pp "a\n")
"\"a
\""
Run Code Online (Sandbox Code Playgroud)

这可能吗?用于检查大弦,message不切割它.

emacs elisp read-eval-print-loop

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

这个汇编语言代码是什么意思?

我是一名学生,刚开始学习汇编语言.为了更好地理解它,我只是在C中编写了一个短文并将其转换为汇编语言.令人惊讶的是我有点不明白.

代码是:

#include<stdio.h>

int main()
{
    int n;
    n=4;
    printf("%d",n);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

相应的汇编语言是:

.file   "delta.c"
    .section    .rodata
.LC0:
    .string "%d"
    .text
    .globl  main
    .type   main, @function
main:
.LFB0:
    .cfi_startproc
    pushl   %ebp
    .cfi_def_cfa_offset 8
    .cfi_offset 5, -8
    movl    %esp, %ebp
    .cfi_def_cfa_register 5
    andl    $-16, %esp
    subl    $32, %esp
    movl    $4, 28(%esp)
    movl    $.LC0, %eax
    movl    28(%esp), %edx
    movl    %edx, 4(%esp)
    movl    %eax, (%esp)
    call    printf
    movl    $0, %eax
    leave
    .cfi_restore 5
    .cfi_def_cfa 4, 4
    ret
    .cfi_endproc
.LFE0:
    .size   main, .-main …
Run Code Online (Sandbox Code Playgroud)

x86 assembly

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

在IPython中显示无值

默认情况下,IPython似乎不显示None值:

In [1]: x = 1

In [2]: x
Out[2]: 1

In [3]: y = None

In [4]: y
Run Code Online (Sandbox Code Playgroud)

我经常最后写信y is None来确定.如何配置IPython以始终显示值,即使它是None

python ipython nonetype

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

Linux中没有符号插入的共享对象,-fno-semantic-interposition error

类Unix系统中的共享对象(*.so)由于符号插入而效率低下:.so内部对全局变量的每次访问都需要GOT查找,而.so内部从一个函数到另一个函数的每次调用都需要一个PLT抬头.因此,我很高兴看到gcc版本5.1添加了选项-fno-semantic-interposition.但是,当我尝试在没有使用PLT的情况下创建一个函数调用另一个函数的.so时,我收到错误消息:

在创建共享对象时,不能使用符号`functionname'重定位R_X86_64_PC32; 用-fPIC重新编译

我期望选项-fno-semantic-interposition可以消除此错误消息,但事实并非如此.-mcmodel = large也无济于事.对函数的引用确实与位置无关,错误消息实际确认了这一点(R_X86_64_PC32表示在64位模式下与PC相关的32位重定位).-fPIC实际上并不意味着与位置无关,正如名称所暗示的那样,它实际上意味着使用GOT和PLT.

我无法使用,__attribute__((visibility ("hidden")))因为被调用的函数和调用者是在单独的文件中编译的(调用者在C++中,称为函数在汇编中).

我试图制作一个汇编列表来查看-fno-semantic-interposition选项的作用.我发现当一个函数在同一个文件中调用另一个函数时,它会引用一个本地别名,但在另一个文件中调用一个函数时它仍然使用PLT.

(g ++版本是5.2.1 Ubuntu,64位模式).

有没有办法让链接器在没有GOT/PLT查找的情况下接受.so内的交叉引用?

shared-libraries

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