小编Gor*_*rie的帖子

在Erlang中使用trace和dbg

我试图开始使用erlang:trace/3和dbg模块来跟踪实时生产系统的行为,而无需关闭服务器.

文件不透明的(说得客气一点),而且不会出现任何有用的在线教程.

我花了一整天努力做的是通过尝试将跟踪应用于模块来捕获特定函数中发生的事情:使用dbg:c和dbg:p的函数但是根本没有成功...

有没有人对如何在实时Erlang系统中使用跟踪有简洁的解释?

debugging erlang trace

66
推荐指数
4
解决办法
2万
查看次数

如果您想编程Emacs,那么ELisp最重要的部分是什么?

我每天都使用Emacs,因为它是Erlang的标准编辑器.

我决定学习eLisp作为我的新年决议.我决定写一本关于eLisp的书是最好的学习方法.

我已经取得了很好的进展: 学习eLisp For Emacs

这本书的战略结构是

  • 入门/基础知识
  • 更高级的eLisp
  • 写一个小模式
  • 写一个主要模式

我已经完成了基础知识(即这4点中的第一点),涵盖:

  • 评估表达式
  • 调试
  • 添加菜单项/工具栏
  • 加载自己的emacs文件
  • 等等

如果你正在写一本关于编程语言的书,你通常从熟悉语言开始 - 我不是 - 所以我现在的主要问题是完整性问题:

  • 我怎么知道我已经涵盖了Emacs程序员应该掌握的所有功能?
  • 如何确保内容中没有空白?

所以我想我会通过在这里询问社区来解决这些问题.我的问题是我的目录中遗漏了什么?(特别是更高级的eLisp部分应该包含什么).

emacs elisp

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

分析Mnesia查询

我们的Mnesia DB运行缓慢,我们认为它应该更快一些.

因此,我们需要对其进行分析并找出正在发生的事情.

有许多选项表明自己:

  • 运行fprof,看看时间在哪里
  • 运行cprof并查看调用了哪些函数

然而,这些都是相当标准的性能监控样式工具.问题是我如何实际进行查询分析 - 哪些查询花费的时间最长.如果我们是Oracle或MySQL商店,我们只会运行一个查询分析器,它将返回需要很长时间才能运行的各种查询.这不是Mnesia似乎可用的工具.

所以问题是:

  • 有什么技术来描述Mnesia
  • 有什么工具来描述Mnesia - 我认为没有,但证明我错了:)
  • 您是如何分析查询并优化mnesia数据库安装的

根据讨论扩大

fprof作为性能分析工具的一个问题是它只会告诉您正在查看的特定查询.所以fprof告诉我X很慢,我调整它以加快速度.然后,低,看,操作Y(这是足够快)现在是狗慢.因此,我描述了Y,并意识到快速制作Y的方法是让X变慢.所以我最终做了一系列双边权衡......

我真正需要的是一种管理多边权衡的方法.我现在记录了2个实际用户活动的度量标准,我可以重放.这些日志代表了我想要优化的内容.

SQL数据库上的"正确"查询分析器将能够分析SQL语句的结构,例如具有以下形式的所有语句:

SELECT [fieldset] FROM [table] WHERE {field = *parameter*}, {field = *parameter*}
Run Code Online (Sandbox Code Playgroud)

并且说这个形式的285个查询平均需要0.37ms才能运行

他们说出了神奇的答案:这个表格的17个查询需要运行6.34秒并在表X上进行全表扫描,你应该在字段Y上放一个索引

当我在一组有代表性的用户活动中得到这样的结果集时,我可以开始在这一轮中进行权衡 - 并设计一个测试模式.

测试模式类似于:

  • 活动X会使查询A,C和C更快,但查询E和F会更慢
  • 测试和测量
  • 然后批准/不批准

我一直在使用Erlang足以"知道"没有像这样的查询分析器,我想知道的是其他人(必须有这个问题)对于mnesia优化的"理由".

database erlang profiling mnesia

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

中止jQuery getJSON XMLHttpRequest

原来这是一个Firebug bug的人工制品.Ajax请求被取消,但Firebug继续将其报告为活动状态.细节在这里.


我一直在运行XMLHttpRequests,我需要能够在某些情况下中止它们.

我以正常方式设置请求:

ajax = $.getJSON(url + "?updates", function(data) { ...; });
Run Code Online (Sandbox Code Playgroud)

后来我想中止这个请求,看起来很简单:

ajax.abort();
Run Code Online (Sandbox Code Playgroud)

然而,当我看着Firebug时,我发现它仍在运行......

我在尝试中止它之前就调试了ajax的值.它确认它的值是和XMLHttpRequest(readyState为0).

对abh()在XMLHttpRequest上的触发方式和时间有限制吗?

javascript jquery getjson

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

可视化版本控制文件中的更改

我们一直在尝试使用由Edward Tufte启发的数据可视化技术来展示我们的测试套件,并且它非常有效.

我想将它扩展到我们的Subversion Repository,因为我觉得提交历史中有很多信息可以更好地以图形格式表示.

我希望能够一目了然地确定:

  • 哪些模块比较稳定 - 大量写作 - 一点点维护,哪些模块已经编写和重写
  • 哪些模块都是一个人工作,哪些是许多人的工作

理想情况下,我想用测试和性能工具中的其他东西来注释这些信息,例如:

  • 代码覆盖率
  • 外部函数调用函数调用图
  • 即使是在一致负载下的处理器利用率也会出现问题

任何人好的任何好的技巧,例子,实用程序等等...

我们的商店主要使用强大的Erlang,但我们会从任何来源获取心灵和灵感.

version-control visualization

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

通过核心Erlang编译Erlang到Javascript

所以开始在LuvvieScript上取得进展,然后在Twitter上开始了一些... https://twitter.com/gordonguthrie/status/389659700741943296

Anthony Ramine https://twitter.com/nokusu指出我做错了,我应该通过Core Erlang而不是Erlang AST从Erlang编译成JavaScript.这对我来说是一个引人注目但又没有吸引力的选择......推特不是讨论的正确媒介我想我会在这里写下来并得到一些建议.

战略概述

LuvvieScript有三个核心要求:

  • Erlang的有效子集,编译为相同且高性能的Javascript
  • 一个完整的源映射,以便可以在浏览器中使用LuvvieScript而不是Javascript进行调试
  • 一个'运行时'客户端javascript环境(带有服务器端通信)来执行LuvvieScript模块(一种页内主管...)

这些选项中的第三个有点超出了本次辩论的范围,但前两个是核心.

有一个懒惰的结果 - 我想尽可能多地使用Erlang和Javascript语法工具(词法分析器,解析器,标记器,AST变换等等)并编写最少量的代码.

当前的思考

代码当前的编写方式如下:

基本上我得到一个看起来像这样的Erlang AST:

 [{function,
      {19,{1,9}},
      atom1_fn,0,
      [{clause,
           {19,none},
           [],
           [[]],
           [{match,
                {20,none},
                [{var,{20,{5,6}},'D'}],
                [{atom,{20,{11,15}},blue}]},
            {var,{21,{5,6}},'D'}]}]}]},
Run Code Online (Sandbox Code Playgroud)

然后我将其转换为Javascript JSON AST,如下所示:

{
    "type": "Program",
    "body": [
        {
            "type": "VariableDeclaration",
            "declarations": [
                {
                    "type": "VariableDeclarator",
                    "id": {
                        "type": "Identifier",
                        "name": "answer",
                        "loc": {
                            "start": {
                                "line": 2,
                                "column": …
Run Code Online (Sandbox Code Playgroud)

javascript compiler-construction erlang source-maps coreerlang

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

外部css文件加载但未应用

Wetware错误

这是一个错字 - 有两个不同的css文件具有相似的名称,我链接到一个在一个网站上,另一个在另一个网站上

从布偶道歉:(

关闭

我在html head部分中有以下行:

<link rel="stylesheet" href="http://files.hypernumbers.com/redesign/frontpage.css">
Run Code Online (Sandbox Code Playgroud)

当我从域中查看此页面时,hypernumbers.com它会正常加载然后应用.

但当我从hypernumbers.dev它加载的域中查看同一页面时(Firebug和Chrome工具向我显示CSS文件在那里)但它不适用于页面

是否存在某种域优先/子域事物,我不知道?

更新

试图在歌剧它不会在任何负载hypernumbers.comhypernumbers.dev...

css

6
推荐指数
2
解决办法
9927
查看次数

在HTML类名中表示键/值对的最佳方式

我使用javascript将事物绑定到HTML对象,并且需要比类名更复杂的机制.

我的第一种方法是使用类名称,如结构声明,其中绑定位于名称位置,如下所示:

Definition = identifier: foo bar baz
Run Code Online (Sandbox Code Playgroud)

用这个定义编码一些类名给出

<p   id="someid"    class="identifier bish bash bosh">
<div id="anotherid" class="identifier heebie jeebie">
Run Code Online (Sandbox Code Playgroud)

这可以理解为:

{foo: bish,   bar: bash,   baz: bosh};
{foo: heebie, bar: jeebie}
Run Code Online (Sandbox Code Playgroud)

请注意,绑定具有不同数量的参数.

这非常脆弱.我无法使用其他名称来装饰任何html元素(例如添加拖放等jquery行为等)并且通常有点粗制滥造......

我想做的是将它们表示为键值对,如下所示:

<p   id="someid"    class="id{foo:bish} id{bar:bash} id{baz:bosh} random class">
<div id="anotherid" class="ui-draggable id{bar:jeebie} id{foo:heebie}">
Run Code Online (Sandbox Code Playgroud)

这允许我在元素上有随机定位和随机长度的类名,只要我的id是一个sorta GUID(但我可以'手动轻松地做到这一点'......)

现在,从理论上讲,类名是CDATA,所以一切都应该是嘀嗒声,但我喜欢麻烦!特别是在旧的跨浏览器方面......

所有关于KV对的最佳语法的建议,建议,现有技术,最佳实践都感激不尽.

html javascript

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