小编Woj*_*Gac的帖子

在Pharo中重新加载键盘快捷键定义

我一直在使用Pharo 7.0中的键盘快捷键.我想#jumpToNextKeywordOfIt在Smalltalk编辑器中修改绑定,所以我在buildShortcutsOn方法的定义中得到了以下更改:

(aBuilder shortcut: #jumpToNextKeywordOfIt)
    category: RubSmalltalkEditor name
    default: $y meta shift
    do: [ :target | target editor jumpToNextKeywordOfIt: true ]
    description: 'Jump to next keyword'.    
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是,只是保存这个定义应该立即生效,但事实并非如此.然后我想,也许因为这是方法定义的一部分,然后在编辑器类上调用这个方法就可以了.现在,该方法需要一个参数aBuilder,我真的不知道那是什么.所以出现两个问题:

  1. 这是将键绑定更改应用于正在运行的编辑器的正确方法吗?
  2. aBuilder在这种背景下是什么,如何得到它?

smalltalk key-bindings pharo

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

解析ST-JSON JSO对象的宏

我还有一个关于在Common Lisp中解码JSON的问题.我决定采用ST-JSON我的工具.我能够获得一个JSO包含JSON数据的对象,并访问所有字段st-json:getjso.我想编写一个原则上类似于宏的宏来destructuring-bind提供对JSON字段之后命名的变量的局部绑定(从那以后我开始怀疑这是不是一个好主意,但这是一个不同的问题).我想出了以下内容:

(defmacro destructure-jso (jso &body body)
  (let (keys values)
    (st-json:mapjso #'(lambda (key value)
            (push key keys)
            (push value values))
            jso)
    `(destructuring-bind ,keys ,values
       ,@body)))
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在JSO对象上使用它时,我得到的错误The value PARAMS is not of the expected type STRUCTURE.在哪里PARAMS是对象.谁可以给我解释一下这个?

谢谢.

lisp macros json common-lisp ccl

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

在Common Lisp中反转多个值的顺序

我一直在考虑以下问题.假设我正在处理一个返回多个值的函数,例如truncate.有没有一种聪明的方法来反转返回的值的顺序?我说的是比一些更聪明的东西

(multiple-value-bind (div rem) (truncate x y)
  (values rem div))
Run Code Online (Sandbox Code Playgroud)

lisp functional-programming common-lisp

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

Haskell 中编译时参数的混淆值

在我的 Haskell 应用程序中,我实现了以下机制来将敏感信息传递到二进制文件(不诉诸 CLI 参数):

  • 我使用一种TemplateHaskell在编译时读取环境变量的机制:
{-# LANGUAGE TemplateHaskell #-}
...
import Language.Haskell.TH.Env
...
myPrecious :: String
myPrecious = fromMaybe "" $$(envQ "MY_PRECIOUS")
...
Run Code Online (Sandbox Code Playgroud)
  • 编译时,我像这样传递相关的环境变量:MY_PRECIOUS=<secret> stack build然后它绑定到myPreciousHaskell 端
  • 生成的二进制文件具有编译后的值,因此从操作系统级别(例如 via )MY_PRECIOUS看不到它ps aux

问题是,我现在可以在文本编辑器中打开该二进制文件或创建内存转储(例如使用 GDB),并通过一点决心挖掘秘密,特别是如果我知道它正在使用的上下文 - 我假设某些恶意行为者可能已经获得了源代码的访问权限。所以我一直想知道,是否有任何方法可以强制 GHC 生成更加混乱/乱码的二进制文件,其中这些值不容易可见。我知道没有这样的保护方案可以是万无一失的,但我正在寻找一种方法来使入侵者的任务变得更加困难。

security haskell decompiling dump template-haskell

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