小编Rob*_*loi的帖子

Emacs中的Erlang Edoc

假设我有一个Erlang函数,带有spec.

-spec foo(integer(), string()) ->
      boolean().
foo(_Integer, _String) ->
      true.
Run Code Online (Sandbox Code Playgroud)

我的梦想是自动从Emacs中的这些信息中生成edoc.生成的代码应如下所示:

%%--------------------------------------------------------------------
%% @doc
%% Your description goes here
%% @spec foo(_Integer::integer(), _String::string()) ->
%%%      boolean()
%% @end
%%--------------------------------------------------------------------
-spec foo(integer(), string()) ->
      boolean().
foo(_Integer, _String) ->
      true.
Run Code Online (Sandbox Code Playgroud)

是否存在类似的功能?

emacs erlang code-templates

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

在安装之前是否可以检查Google Chrome扩展程序的代码?

Google Chrome扩展程序是一项不错的发明,但它们可能会与大量用户信息进行交互.

是否可以在安装之前浏览其清单和/或源代码?

我在StackOverflow上问这个的原因是我刚刚开发了我的第一个扩展.因为它正在操作您访问的网站的CSS样式,所以在安装之前它会提示:

"此扩展程序可以访问您在所有网站上的浏览历史记录和私人数据"

非常害怕...我可以想象很多用户只是因为这条消息而没有安装扩展程序.我很高兴向他们展示我的扩展程序正在做什么以及它的安全性......

google-chrome google-chrome-extension

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

如何使用AppleScript获取和解析XML文件?

某些远程服务器上有一个XML文件(http://foo/bar.xml):

<?xml version="1.0" encoding="UTF-8"?> 
<foo> 
  bar
</foo>
Run Code Online (Sandbox Code Playgroud)

如何使用AppleScript获取值"bar"?

applescript

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

如何在 Jenkins 脚本控制台中包含共享库?

在 Jenkinsfile 中,如果我在 alias 下安装了Jenkins 共享库my-awesome-lib,我可以使用以下语法包含它:

@Library('my-awesome-lib')
import ...
Run Code Online (Sandbox Code Playgroud)

但是如何从Jenkins 脚本控制台引用库?

groovy jenkins

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

Erlang,eunit和gen_server:上下文清理失败

我在gen_server上写了一些eunit测试:

-module(st_db_tests).
-include_lib("eunit/include/eunit.hrl").

main_test_() ->
    {foreach,
     fun setup/0,
     fun cleanup/1,
     [
      fun db_server_up/1
     ]}.

setup() -> 
    {ok,Pid} = st_db:start_link(), Pid.
cleanup(Pid) -> 
    gen_server:call(Pid, stop).

db_server_up(Pid) ->    
    ?_assertMatch({[{<<"couchdb">>,<<"Welcome">>},{<<"version">>, _}]},
                  gen_server:call(Pid, test)).
Run Code Online (Sandbox Code Playgroud)

当我进行测试时,我有这个:

./rebar eunit suite=st_db_tests skip_deps=true
==> site_stater (eunit)
Compiled test/st_db_tests.erl

... loading stuff ...

=PROGRESS REPORT==== 27-Jun-2011::12:33:21 ===
          supervisor: {local,kernel_safe_sup}
             started: [{pid,<0.127.0>},
                       {name,inet_gethost_native_sup},
                       {mfargs,{inet_gethost_native,start_link,[]}},
                       {restart_type,temporary},
                       {shutdown,1000},
                       {child_type,worker}]
module 'st_db_tests'
*** context cleanup failed ***
::exit:{normal,{gen_server,call,[<0.99.0>,stop]}}
  in function gen_server:call/2


=======================================================
  Failed: 0.  Skipped: 0.  Passed: 1.
Run Code Online (Sandbox Code Playgroud)

好像测试已经过去了,但在上下文清理中有错误,这是不对的,对吧?)

我怎样才能解决这个问题?

PS:我的gen_server

-module(st_db).

-behaviour(gen_server). …
Run Code Online (Sandbox Code Playgroud)

erlang unit-testing eunit

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

远程节点,组负责人和打印输出

给定两个Erlang节点"foo @ host"和"bar @ host",以下内容在"foo"上产生打印输出:

(foo@host) rpc:call('bar@host', io, format, ["~p", [test]]).
Run Code Online (Sandbox Code Playgroud)

以下打印出"bar":

(foo@host) rpc:call('bar@host', erlang, display, [test]).
Run Code Online (Sandbox Code Playgroud)

即使erlang:display/1应该仅用于调试,两个函数都应该将内容发送到标准输出.每个进程都应该从其父进程继承组长,所以我希望这两个函数以一致的方式运行.

上述行为是否有任何理由?

erlang

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

跟踪Erlang函数 - 简短形式

您可能知道,现在可以使用简短形式跟踪Erlang函数:

dbg:tpl(Module, Function, x).
Run Code Online (Sandbox Code Playgroud)

而不是通常的:

dbg:tpl(Module, Function, dbg:fun2ms(fun(_) -> exception_trace() end)).
Run Code Online (Sandbox Code Playgroud)

我其实想知道是否有类似的简短形式return_trace().就像是:

dbg:tpl(Module, Function, r).
Run Code Online (Sandbox Code Playgroud)

代替:

dbg:tpl(Module, Function, dbg:fun2ms(fun(_) -> return_trace() end)).
Run Code Online (Sandbox Code Playgroud)

dbg模块中的源代码似乎不建议:

new_pattern_table() ->
    PT = ets:new(dbg_tab, [ordered_set, public]),
    ets:insert(PT, 
           {x, 
        term_to_binary([{'_',[],[{exception_trace}]}])}),
    ets:insert(PT, 
           {exception_trace, 
        term_to_binary(x)}),
    PT.
Run Code Online (Sandbox Code Playgroud)

但我可能错了.你知道吗?

debugging erlang trace

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

识别PHP未使用的变量(在Emacs中)?

是否有可能在Emacs中的PHP文件中识别未使用的变量?

使用其他语言,可以使用flymake等工具.我已经启用了Flymake,以示对我的PHP文件的语法错误的飞行,但它仍然是令人沮丧的是PHP逻辑错误,有时由于类似的情况:

<?php
$foo = whatever();
$bar = something($fo);
...
Run Code Online (Sandbox Code Playgroud)

请注意$ foo上的错字将导致开发人员的头痛和他过度使用咖啡.

更新:

在Pascal和Gabor的提示之后,我在php.ini中设置:

error_reporting = E_ALL | E_STRICT
Run Code Online (Sandbox Code Playgroud)

当我从命令行运行php时,我现在能够看到有关未定义变量的通知(带或不带-l选项):

> php -r '$foo = 3; echo $fo;'
PHP Notice:  Undefined variable: fo in Command line code on line 1
> php -r '$foo = 3; echo $fo;' -l
PHP Notice:  Undefined variable: fo in Command line code on line 1
Run Code Online (Sandbox Code Playgroud)

这就是我目前在.emacs中使用的内容.它完全没有解析错误,但我仍然无法匹配通知,但:(

;; FlyMake for Php(需要'flymake)

(defun flymake-php-init ()
  "Use php to check the syntax …
Run Code Online (Sandbox Code Playgroud)

php emacs flymake

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

如何在预处理时区分出ERTS版本?

在最近的Erlang R14中,inets的文件httpd.hrl已被移除:

src/httpd.hrl
Run Code Online (Sandbox Code Playgroud)

至:

src/http_server/httpd.hrl
Run Code Online (Sandbox Code Playgroud)

二郎的Web框架,包括使用以下指令几个地方的文件:

-include_lib("inets/src/httpd.hrl").
Run Code Online (Sandbox Code Playgroud)

因为我喜欢Erlang Web用两个版本的Erlang(R13和R14)进行编译,所以理想情况下我需要的是:

-ifdef(OLD_ERTS_VERSION).
-include_lib("inets/src/httpd.hrl").
-else.
-include_lib("inets/src/http_server/httpd.hrl").
-endif.
Run Code Online (Sandbox Code Playgroud)

即使可以通过以下方式检索ERTS版本:

erlang:system_info(version).
Run Code Online (Sandbox Code Playgroud)

这在预处理时确实是不可能的.

如何处理这些情况?解析变换是唯一的方法吗?还有更好的选择吗?

erlang preprocessor

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

迭代Makefile中的列表并获取值和索引

在GNU Makefile中,您有一个项目列表:

OBJECTS = foo bar baz
Run Code Online (Sandbox Code Playgroud)

您想迭代这些项目,并且您对索引和每个项目的值都感兴趣(foo => 1,bar => 2,baz => 3).在Makefile中执行此操作的惯用方法是什么?

makefile

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