小编JB.*_*JB.的帖子

AF_UNIX本地数据报套接字的自动命名?

我正在使用unix本地套接字上的数据报实现一个简单的服务(AF_UNIX地址系列,即不是UDP).服务器绑定到公共地址,它接收请求就好了.不幸的是,当谈到回复时,sendto除非客户端也被绑定,否则失败.(常见的错误是Transport endpoint is not connected).

绑定到一些随机名称(基于文件系统或抽象)的工作.但我想避免这种情况:我是谁保证我选择的名字不会碰撞?

unix套接字的流模式文档告诉我们,connect如果它们还没有抽象名称,那么它们将在时间分配给它们.这种功能是否适用于面向数据报的套接字?

unix sockets bind datagram local

5
推荐指数
2
解决办法
3421
查看次数

elisp mapcar + lambda + defmacro帮助

我正在尝试使用宏生成函数:

(defmacro make-my-emacs-command-region (cmd name)
  (list 'defun (intern (format "my-emacs-command-%s-%s" cmd name))
        '(&optional arg)
        (list 'interactive "p")
        (list (intern (format "mark-%s" name)) 'arg)
        (list (intern (format "my-emacs-command-%s-region" cmd))
              '(region-beginning) '(region-end))))
Run Code Online (Sandbox Code Playgroud)

发电机:

(mapcar (lambda (a) (make-my-emacs-command-region a buffer))
        '(foo bar))
Run Code Online (Sandbox Code Playgroud)

但我得到:

my-emacs-command-a-buffer
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我如何强制传递价值a

lisp emacs macros elisp

5
推荐指数
2
解决办法
749
查看次数

尝试通过 Perl 中的词法绑定本地化外部包变量

这是一个很长的标题,但恐怕我不能在不失去问题的真正含义的情况下说出一个字。我将首先简要描述我要实现的目标,然后长篇大论我为什么要这样做。如果您打算直接回答问题标题,请跳过漫谈:-)

快速描述

假设有一个lexicalize内置函数可以满足我的要求,这里是:

package Whatever;
{
  lexicalize $Other::Package::var;
  local $var = 42;
  Other::Package->do_stuff; # depends on that variable internally
}
Run Code Online (Sandbox Code Playgroud)

为什么和为什么不

对于一些上下文,我正在对第三方模块进行白盒测试。

我希望变量本地化,因为我希望它只在有限的时间内更改,然后再进行其他测试。 local是我发现的最好的方法,而不依赖于知道模块对初始值的选择。

我想要一个词法绑定有两个主要原因:

  1. 我不想污染测试文件的更高级别的命名空间。
  2. 我想要比完全限定名称更短的名称。为简洁起见,它不在示例代码中,但我使用的标识符比显示的要多得多,计算和更新相对于其先前的值。

我不能体面地使用,our因为它不会从另一个包中获取变量:““我们的”中的变量 $Other::Package::var 不允许使用包名称。” 作弊暂时进入 Other::Package 的范围并不会削减它:如果我使用块 ( { package Other::Package; our $var }) 则绑定不会持续足够长的时间而无法使用;如果我不这样做 ( package Other::Package; our @var; package main) 那么我需要知道并复制前一个包的名称,这样可以防止过多地移动那段代码。

在问这个问题的先前形式之前做功课时,我发现Lexical::Var,这似乎正是我所需要的。唉:“无法通过参考进行本地化。”

我也尽了最大的努力来处理my *var基于 -based 的形式的直觉,但一直遇到语法错误。我今天学到的关于范围和绑定的知识比我关心的要多:-)

我想不出为什么我想要的东西不可能实现的原因,但我找不到正确的咒语。我是在要求一个不幸的未实现的边缘案例吗?

variables perl internals lexical-scope

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

应用程序恢复时重新加载 ViewController

我的应用程序只有一个ViewController,因此一个ViewController.swift

我希望ViewController在用户恢复应用程序(多任务处理)时重新加载它。viewDidLoad()函数中的初始化代码在应用程序恢复时不会触发。我希望在应用程序恢复时触发此代码,因此我想ViewController在应用程序恢复时重新加载。

在 Swift 中有一种优雅的方法可以做到这一点吗?

谢谢你。

iphone view uiviewcontroller ios swift

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

有没有快速的方法来确定运营商的优先级和关联性?

我知道perlop.我正在寻找的是像GHCi :info命令一样的快速查找:

ghci> :info (+)
class (Eq a, Show a) => Num a where
    (+) :: a -> a -> a
    ...
    -- Defined in GHC.Num
infixl 6 +
Run Code Online (Sandbox Code Playgroud)

我学习的地方(+)是左联想的,并且该infixl 6 +行的优先级别为6 .

perl operator-precedence associativity

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

在Haskell中定义一个任意递归类型的Show

我正在尝试将自定义类型设为Show的实例.

这是theType,它只是一个基本的Set类型.

data Set a = Insert a (Set a) | EmptySet
Run Code Online (Sandbox Code Playgroud)

我喜欢类似的东西

Insert 1 (Insert 2 (Insert 3 EmptySet))
Run Code Online (Sandbox Code Playgroud)

显示像

{1, 2, 3}
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?我尝试使用字符串连接,但似乎做字符串插值被认为是不好的形式(Haskell似乎本身不支持这个?)另外,我如何得到列表周围的花括号?到目前为止,我所能做的就是这个,基本上什么都没做......

instance (Show a) => Show (Set a) where
     show EmptySet = ""
     show (Insert a as) = show a ++ show as 
Run Code Online (Sandbox Code Playgroud)

此外,我尝试使用Hoogle和Hayoo查找List实现,以便我可以看到这是如何在列表中实现的.我找不到它.有人对此有任何指示吗?我试着搜索"show :: [a] - > String","Data.Lists","Lists"等....

haskell typeclass

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

如何声明其内容取决于cookbook文件的Chef文件资源?

我需要一个文件fileC部署这是其它两个文件的串联fileAfileB.在我当前的设置中,所有三个文件都在cookbook中,声明为Cookbook文件资源.

但感觉多余.我想将更大的文件声明为另外两个文件的函数.

什么fileC时候第一次需要,我通过声明文件资源的内容为"运气好" IO.read(file1) + IO.read(file2).但是,一旦配方被部署到一个新的节点出现故障,因为fileAfileB不存在在编译时.

我试图访问底层Ruby对象的有关可以部署cookbook的信息.但是我看的越多,我就越不相信我的Chef/Ruby知识水平是可能的.资源↔供应商差距似乎太宽.

我想避免使用这种cat fileA fileB >fileC解决方案,原因如下:将来,我可能需要从需要A/B的节点中删除需要C的节点.

有关如何解决冗余问题的任何想法?

chef-infra

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

使用Perl从文本文件中提取和打印键值对

我有一个文本文件temp.txt,其中包含条目,

cinterim=3534
cstart=517
cstop=622
ointerim=47
ostart=19
ostop=20
Run Code Online (Sandbox Code Playgroud)

注意:键值对可以按新行排列,也可以一行排列在一行中.

我正在尝试使用Perl在DB中打印和存储这些值以获得相应的键.但是我收到很多错误和警告.现在我只是想打印这些值.

use strict;
use warnings;

open(FILE,"/root/temp.txt") or die "Unable to open file:$!\n";

while (my $line = <FILE>) {
  # optional whitespace, KEY, optional whitespace, required ':', 
  # optional whitespace, VALUE, required whitespace, required '.'
  $line =~ m/^\s*(\S+)\s*:\s*(.*)\s+\./;
  my @pairs = split(/\s+/,$line);
  my %hash = map { split(/=/, $_, 2) } @pairs;

  printf "%s,%s,%s\n", $hash{cinterim}, $hash{cstart}, $hash{cstop};

}
close(FILE);
Run Code Online (Sandbox Code Playgroud)

有人可以提供帮助来完善我的计划.

perl hash search extract

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

StringBuffer 可以用作 HashMap 中的键吗?

StringBuffer 可以作为 HashMap 中的键吗?
如果是这样,使用 String 和 StringBuffer 作为键有什么区别?

java hashmap

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

'git checkout HEAD ^'的反义词是什么?

我正带着命令走过git历史git checkout.从master我去用例如哈希提交a7040f35a1e.

git checkout a7040f35a1e
Run Code Online (Sandbox Code Playgroud)

然后我去了之前的提交:

git checkout HEAD^
Run Code Online (Sandbox Code Playgroud)

我怎么能回来?我是说如何才能进行以下提交?用HEAD+或其他东西可以吗?

git git-checkout

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