我正在使用这段代码:
case class State[S, +A](run: S => (A, S)) {
...
def flatMap[B](f: A => State[S, B]): State[S, B] = State(s => {
val (a, s1) = run(s)
f(a).run(s1)
})
...
}
Run Code Online (Sandbox Code Playgroud)
这是一个用于处理纯函数状态的抽象,来自Scala中FP的 §6 .run是一个函数参数,它接受一个状态并发出一个值元组和一个新状态.
我的问题是围绕s =>本节的语法:
... B] = State(s => { ...
Run Code Online (Sandbox Code Playgroud)
这似乎是使用State'构造函数'(即apply)来构建一个新的State对象.但s代表什么呢?它是一个'匿名'状态,代表任何国家实例吗?如果是这样,它有什么不同this?或者s对应于输入参数,run即Sfrom:
... (run: S => ....
Run Code Online (Sandbox Code Playgroud)
为什么我会使用构造函数进行函数定义?请注意,flatMap定义的最后一个符号)不是a },即关闭Stateapply构造函数.
此方案与标准略有不同
case class Person(name: …Run Code Online (Sandbox Code Playgroud) (= (__ "HeLlO, WoRlD!") "HLOWRD")
Run Code Online (Sandbox Code Playgroud)
我在REPL中写了一个解决方案:
user=> (apply str (filter (fn [foo] (some #(= % foo)
(map char (range 65 91)))) "AbC"))
"AC"
Run Code Online (Sandbox Code Playgroud)
但是,你可以看到我的参数"ABC"嵌套两个括号内.我怎么会我的参数移动到外面,所以我可以在4clojure测试中使用它?我是否以错误的方式解决了问题?
我写了一个小脚本来为sshfs提供密码,但由于某些原因,sshfs没有抓取密码.有什么指针吗?(PS我知道ssh密钥更好/更安全,但我工作的政治会阻止在目标服务器上设置基于密钥的身份验证 - 叹息......).
#!/usr/bin/expect
# NOT WORKING!!
exp_internal 1
spawn sshfs server:/export/pc_storage /home/sonia/mnt/server
expect {
"assword:" {
send "secret\r\r"
send_user "\n"
}
timeout {
send_user "timed out!\n"
}
}
Run Code Online (Sandbox Code Playgroud)
要终止密码,我试过\ r \n\r \n\r \n-无法正常工作.
调试输出,显示密码提示正在触发:
spawn sshfs server:/export/pc_storage /home/sonia/mnt/server
parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {17532}
expect: does "" (spawn_id exp6) match glob pattern "assword:"? no
pcuser@server's password:
expect: does "pcuser@server's password: " (spawn_id exp6) match glob pattern …Run Code Online (Sandbox Code Playgroud) 使用tshark,我如何才能解码并显示应用层?
例如,我可以使用以下方法捕获和解码snmp流量:
sudo tshark -V -i lo -d udp.port==161,snmp
Run Code Online (Sandbox Code Playgroud)
这将解码从物理层到应用程序层的所有层(输出剪切):
Frame 120: 134 bytes on wire (1072 bits), ...
Interface id: 0
....
Ethernet II, Src: 00:00:00_00:00:00 (00:00:00...
Destination: 00:00:00_00:00:00 ...
....
Internet Protocol Version 4, Src: 127.0.0.1...
Version: 4
....
User Datagram Protocol, Src Port: snmp (161), ....
Source port: snmp (161)
....
Simple Network Management Protocol
version: v2c (1)
community: public
....
Run Code Online (Sandbox Code Playgroud)
(我只想从"简单网络管理协议"开始解码).
我知道使用字段输出(例如-e snmp.community).为snmp指定所有字段将永远...
我可以使用pdml输出,并使用XSLT转换结果.但pdml输出很慢,使用XSLT似乎有点过分:
sudo tshark -V -T pdml …Run Code Online (Sandbox Code Playgroud) 当我执行以下操作时收到以下错误消息state.apply:
[ERROR ] Data passed to highstate outputter is not a
valid highstate return: {'sonia9': ['Pillar failed to
render with the following messages:', "Rendering SLS 'users'
failed. Please see master log for details."]}
Run Code Online (Sandbox Code Playgroud)
是否可以看到实际渲染以及失败的地方?
我已经尝试过:
log_level: garbage中/etc/salt/master,重新启动守护进程salt-call -l debug state.apply在奴才上我收到同样无用的错误消息,并且没有有关实际渲染的更多详细信息。
当我编写脚本/程序时,我经常会弹出一个简单的文本'gui'来提示输入:
我该怎么做?例如来自Shell,Ruby,Golang或C.我甚至不知道这是什么叫做Google而且Google并没有对"脚本中的文本内容"做出反应.
(该示例来自Debian安装程序).