我每天都使用Emacs,因为它是Erlang的标准编辑器.
我决定学习eLisp作为我的新年决议.我决定写一本关于eLisp的书是最好的学习方法.
我已经取得了很好的进展: 学习eLisp For Emacs
这本书的战略结构是
我已经完成了基础知识(即这4点中的第一点),涵盖:
如果你正在写一本关于编程语言的书,你通常从熟悉语言开始 - 我不是 - 所以我现在的主要问题是完整性问题:
所以我想我会通过在这里询问社区来解决这些问题.我的问题是我的目录中遗漏了什么?(特别是更高级的eLisp部分应该包含什么).
我们的Mnesia DB运行缓慢,我们认为它应该更快一些.
因此,我们需要对其进行分析并找出正在发生的事情.
有许多选项表明自己:
然而,这些都是相当标准的性能监控样式工具.问题是我如何实际进行查询分析 - 哪些查询花费的时间最长.如果我们是Oracle或MySQL商店,我们只会运行一个查询分析器,它将返回需要很长时间才能运行的各种查询.这不是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上放一个索引
当我在一组有代表性的用户活动中得到这样的结果集时,我可以开始在这一轮中进行权衡 - 并设计一个测试模式.
测试模式类似于:
我一直在使用Erlang足以"知道"没有像这样的查询分析器,我想知道的是其他人(必须有这个问题)对于mnesia优化的"理由".
原来这是一个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上的触发方式和时间有限制吗?
我们一直在尝试使用由Edward Tufte启发的数据可视化技术来展示我们的测试套件,并且它非常有效.
我想将它扩展到我们的Subversion Repository,因为我觉得提交历史中有很多信息可以更好地以图形格式表示.
我希望能够一目了然地确定:
理想情况下,我想用测试和性能工具中的其他东西来注释这些信息,例如:
任何人好的任何好的技巧,例子,实用程序等等...
我们的商店主要使用强大的Erlang,但我们会从任何来源获取心灵和灵感.
所以开始在LuvvieScript上取得进展,然后在Twitter上开始了一些... https://twitter.com/gordonguthrie/status/389659700741943296
Anthony Ramine https://twitter.com/nokusu指出我做错了,我应该通过Core Erlang而不是Erlang AST从Erlang编译成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
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.com或hypernumbers.dev...
我使用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对的最佳语法的建议,建议,现有技术,最佳实践都感激不尽.
erlang ×3
javascript ×3
coreerlang ×1
css ×1
database ×1
debugging ×1
elisp ×1
emacs ×1
getjson ×1
html ×1
jquery ×1
mnesia ×1
profiling ×1
source-maps ×1
trace ×1