小编Mic*_*ald的帖子

如何在Mac OS X中跟踪程序的系统调用

我想跟踪find命令发出的系统调用来调试一些性能问题但是我无法弄清楚如何在Mac OS X Yosemite上执行此操作.我如何跟踪任意程序的系统调用,类似于FreeBSD上的strace?我对跟踪文件系统相关的调用特别感兴趣.

macos strace

37
推荐指数
3
解决办法
3万
查看次数

一次循环多个项目

我们可以迭代一组项目,一次考虑一个,如下所示:

#!/bin/bash
for i in $( ls ); do
    echo item: $i
done
Run Code Online (Sandbox Code Playgroud)

我们如何在类似的循环中一次处理几个项目?就像是:

#!/bin/bash
for i,j,k in $( ls ); do
    echo item i: $i
    echo item j: $j
    echo item k: $k
done
Run Code Online (Sandbox Code Playgroud)

第二个shell脚本不正确,但应准确说明我想要实现的目标.

unix bash shell xargs

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

bmake的优点

除了bmake相当于GNU make的BSD之外,我无法清楚地理解它比GNU make更具优势.谁能帮我?我只能找到一个有点帮助的资源.更多的帮助或指示表示赞赏.

谢谢,帕布

makefile build gnu-make bsdmake

10
推荐指数
3
解决办法
4095
查看次数

如何从ocaml中的列表中获取子列表

我正在查看List文档.似乎图书馆没有提供sublist功能.

我正在尝试从ij获取元素列表.现在我必须把它写成:

let rec sublist list i j =
  if i > j then
    []
  else
    (List.nth list i) :: (sublist list (i+1) j)
Run Code Online (Sandbox Code Playgroud)

这是非常简洁的,但我质疑效率List.nth,因为如果它是O(n),我宁愿以不那么简洁的方式写它.

我想知道他们为什么不提供List.sublistfunc,如果List.nth不是O(1),因为它是如此常见的操作..

ocaml list

10
推荐指数
2
解决办法
9003
查看次数

如何编写 PPX 重写器生成记录镜头?

我正在编写 PPX 重写器以简化Lenses的定义。让我为普通读者回忆一下什么是镜头

关于镜头

与记录字段相关联的镜头是一对函数,允许提取记录并更新它。下面是一个例子:

module Lens =
struct
  type ('a, 'b) t = {
    get : 'a -> 'b;
    set : 'b -> 'a -> 'a
  }
end

type car = {
  vendor: string;
  make: string;
  mileage: int;
}

let vendor_lens = {
  Lens.get = (fun x -> x.vendor);
  Lens.set = (fun v x -> { x with vendor = v })
}
Run Code Online (Sandbox Code Playgroud)

vendor_lens让我们获得该领域的价值vendor在我们car和更新它-这意味着返回的全新副本car只能由值从原来的不同的vendor …

ocaml metaprogramming

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

如何安排Quicklisp加载给定库的本地版本

我正在使用Quicklisp在我的Common Lisp项目中加载库,我需要加载一些库的自定义版本,而不是Quicklisp提供的版本.

该库的自定义版本存储在Quicklisp的本地项目目录中,并且已注册本地项目.但Quicklisp仍尝试加载自己的库版本.

如何安排Quicklisp更喜欢图书馆的定制?(附带问题:我怎么能问Quicklisp它将用于加载库的位置?)

common-lisp package quicklisp

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

类型声明中的OCaml语法错误

我是OCaml的新手,我不知道为什么这会给我一个语法错误:

type ('nonterminal, 'terminal) pe =
| Empty
| T of t 
| N of n
| Seq of list
| Choose of list
| Star of e
| Not of e;;

type ('nonterminal, 'terminal) pe_tree = 
| Is_empty 
| Leaf of t 
| Node of (n,tree) 
| Sequence of list 
| Repeat of list 
| Is_not of e;;
Run Code Online (Sandbox Code Playgroud)

所有它说的是第14行字符0-1(这是哪里| Sequence of list)有一个语法错误,我无法弄清楚为什么!

ocaml

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

如何在 GNU Make 中以编程方式定义目标?

我不知道有什么方法可以在 GNU Make 中以编程方式定义目标。这怎么可能?

有时可以使用替代方法离开。然而,在 Makefile 中以编程方式定义目标的能力对于使用make. 在 FreeBSD 的构建系统或诸如BSD Owl 之类的Makefile 库中可以找到复杂生成规则的示例

shell 脚本和 Makefile 之间的主要区别是:

  • 在 Makefile 中,程序的状态由命令行和文件系统给出,因此可以在作业中断后恢复作业。当然,这需要正确地编写 Makefile,但即使这相当困难,也比使用 shell 脚本实现类似的效果要容易得多。

  • 在 Makefile 中,用建议或钩子装饰一个过程是非常容易的,而这在 shell 脚本中基本上是不可能的。

例如,一个非常简单且有用的模式如下:

build: pre-build
build: do-build
build: post-build
Run Code Online (Sandbox Code Playgroud)

这将build目标呈现为三个目标的组合,一个包含实际指令do-build,另外两个是钩子,在 之前和之后执行do-build。许多为 BSD Make 编写的构建系统都使用这种模式,顺便说一下,它允许以编程方式定义目标,以便可以批量编写:

.for _target in configure build test install
.if !target(${_target})
${_target}: pre-${_target}
${_target}: do-${_target}
${_target}: post-${_target}
.endif
.endfor
Run Code Online (Sandbox Code Playgroud)

.if/.endif块引入的条件使用户能够使用自己对 any 的定义${_target}

GNU Make 的那个片段的翻译是什么?

makefile gnu-make bsdmake

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

tee和脚本本质上等效吗?

在要捕获文件中进程的标准输出但仍要在终端中显示此输出的情况下,可以在script和之间进行选择tee。在这种情况下,这些工具在本质上是等效的,还是有(可能是微妙的)理由偏爱一种?


这些程序scripttee设计用于不同的目的:

  • script -制作终端会话的打字稿
  • tee - 管道配件

script和之间的重要区别tee是:

  • script传送它监督的进程的退出状态,而tee作为过滤器甚至不知道它。
  • script捕获其监视的进程的stdinstdoutstderr,而tee仅捕获其过滤的流。

在给定的上下文中,这些差异均不相关。

shell monitoring tee

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

如何在Oasis中添加额外警告?

我有这样几个库绿洲文件-我如何能够支持-w ..-warn-error +a为他们每个人?


出于参考目的,给定的oasis文件如下所示:

OASISFormat: 0.4
Name:        re
Version:     1.5.0
Synopsis:    Pure OCaml regular expression library
Authors:     Jerome Vouillon, Thomas Gazagnaire, Anil Madhavapeddy
License:     LGPL-2.0 with OCaml linking exception
Plugins:     META (0.4), DevFiles (0.4)
AlphaFeatures: compiled_setup_ml
BuildTools: ocamlbuild

Library re
  Path:       lib
  InternalModules: Re_cset, Re_automata
  Modules: Re
  Findlibname: re
  BuildDepends: bytes

Library re_emacs
  Path: lib
  XMETADescription: Emacs-compatible regexps
  Modules: Re_emacs
  Findlibname: emacs
  FindlibParent: re
  BuildDepends: re
Run Code Online (Sandbox Code Playgroud)

ocaml oasis

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