我正在浏览mochiweb源代码并且看到了以前从未使用过的东西.该模块声明尤其是在mochiweb_request和mochiweb_response模块在了Mochiweb HTTP库中找到.以下是模块的开始:
-module(mochiweb_request,[Socket, Method, RawPath, Version, Headers]). -author(...).
然后在模块中你看到get(socket) -> Socket;get(method)-> Method; ....
这让我很困惑.当我尝试获取其中一个这样的模块的模块信息时,编译器添加了一些东西:{abstract,true}在返回:
mochiweb_request:module_info()..事实上,他们的文档将这些模块称为abstract modules.
我搜索了谷歌并找到了一篇关于参数化模块的论文:链接太大了但是你肯定如果你在这里继续那么你会得到论文
这些模块不能直接调用,而是通过它们的实例调用.它使模块表现得像是乐趣.我已经意识到它是运行时系统中的一个非官方特性.令我困惑的是,mochiweb的家伙们正在使用它!在mochiweb模块中,您将找到自己的写作:
loop(Req,_DocRoot)->
"/" ++ Path = Req:get_path(),
Body = Req:recv_body(),
Method = Req:get(method),
...,
....,
Response = Req:ok({"text.html;charset=utf-8",[],chunked}),
Response:write_chunk("Some text here....."),
...
试图 io:format("\n\t Req = ~p~n",[Req])揭示一个复杂的数据结构(一个元组)element(1,Req) == mochiweb_request.挺有趣的!?!!!?
问题1是:现在在生产中使用是否稳定,或者我可以等到正式生产?
问题2是:如果mochiweb家伙尚未正式使用它,他们是如何获得使用它的信心的?
问题3:为什么它还没有正式发布?(因为,对我来说,它带来了一些面向对象的功能)
问题4:那里有没有人使用过它?他/她在哪些情况下使用这些参数化模块?为什么?你能指点我们看看或发布一些源代码的链接,以便我们可以找到更多有关此功能的信息吗?
最后一个问题:没有在Erlang Docs中我发现了这个功能.没有教科书,甚至没有回家.那么使用它的人是如何找到使用它的方式和原因的呢?它是否已经包含在此处的Erlang Run时间系统的商业版本中?
我非常高兴看到CouchBase团队为我们提供了一个出色的NoSQL解决方案所做的出色工作.然而,尽管与可能是ruby,PHP,Java或Python相比,erlang Web开发人员很少,但是获取erlang的开发人员的数量正在增加.
这让我想到了为什么在他们的SDK页面上,他们不断遗漏Erlang.有了雅虎Web服务器,Mochiweb和许多其他Erlang Web库,为什么他们不会在他们的NoSQL领域支持Erlang.发现他们使用它来构建他们的DBMS但他们没有为该语言提供客户端/ SDK是非常令人不安的.
现在,问题是:在某处我读到它是因为Erlang Web Development中没有钱.这是他们给出的唯一理由吗?
还有谁知道为什么Couch Base一直拒绝为他们的NoSQL数据库提供Erlang SDK?
我去过zotonic docs,但是,他们并没有真正有用,因为那里的一切都是零碎的.我是一个平均优秀的二郎程序员,我想我需要的是一个网站或网络应用程序的完整示例,无论多么简单,但从头开始.
通常,构建的示例将用于说明库的所有基本概念.例如,网站如何安排?我如何以及在哪里放这些文件?这个配置是什么意思?这项任务有哪些选择?等
Zotonic在外面看起来不错,我很想潜入它.它看起来像是使用erlang构建网站和管理网站的唯一Erlang简便方法.
问题:有没有人遇到过一个完整的Zotonic构建的网站或网络应用程序,他可以共享的源代码或者从头开始的教程,特别是对于Erlang程序员来说,可以让一个人真正开始?类似于这个Django介绍的东西
另外,是否有任何可以安装在Windows服务器上的Zotonic构建?
我们CouchDB在生产中使用过,主要是在受控环境中构建应用程序.大多数情况下,我们使用中间件库进行直接调用couchdb/cloudant,从而避免直接(前端JavaScript调用直接进入CouchDB/Cloudant).
出于安全原因,很明显,对于经过身份验证的CouchDB数据库:http://{username}:{password}@IPAddress:Port/DB
或者对于cloudant:,https://{username}:{password}@username.cloudant.com/DB如果直接通过JavaScript进行调用,则今天浏览器中的开发人员工具可以使人员实现此调用,从而可以完全访问您的数据库.
在中间件处理时,附件通常很痛苦.有利的是使云量处理附件的高速缓存和服务直接到前端,从而减轻了我们的中间件.但是,在网络上和庞大的受众群体中,直接调用我们的云端环境非常棘手.
我们首先为所有附件都设置了一个单独的cloudant帐户,这样inquisitive boy就不会篡改我们用户的实际元数据或信息.因此,他们可以访问的唯一cloudant帐户是附件,因为我们正在对我们的数据库进行直接的JavaScript调用.
问题:我们如何找到隐藏云环境的用户名和密码的方式,从而允许我们安全地对云端进行直接JavaScript调用?我们的基础架构完全在云端,因此我们没有代理和东西可以使用.我们听说过Url缩短服务,CDN等,但我们还没有找到一个非常确定的解决方案.
Mochiweb和webmachine是非常有前途的应用程序,当你看到那些发现他们周围的人正在使用它时.我需要被引导到我可以在mochiweb上找到初学者的教程.似乎没有专门用于该框架的网站.我认为我需要的是一个pdf,一个博客网站或mochiweb的教程,提供了几个如何使用它的例子.我已经是一名二郎程序员,使用氮气,雅司病,Mnesia和OTP等请告诉我方式......
在这里测试MD5的Javascript实现: http://www.webtoolkit.info/javascript-md5.html给出以下输出:
MD5("muzaaya") = "00e081abefbbbf72b2d5258196a9b6d0"
转到我的erlang shell,并计算相同值的MD5我得到这个:
Eshell V5.8.4 (abort with ^G)
1> erlang:md5("muzaaya").
<<0,224,129,171,239,187,191,114,178,213,37,129,150,169,
182,208>>
2>
我怎么能比较这两个?如果来自JavaScript前端应用程序的MD5结果来到我的Erlang后端,我希望能够比较两个摘要.如何将Javascript MD5摘要与Erlang的摘要相匹配?
在两对给定的比较中,对于Erlang中的系统资源,哪一对(每对)更昂贵:
Qn1: lists:append(L1,L2)与erlang:'++'(L1,L2)
Qn2相反写入列表的头部说:[NewHead|List]与写入列表末尾的对象:List ++ [NewValue]
我之所以问这个问题,是因为我的程序中有一部分是读写列表的.我需要决定是否要写到列表的头部或写到他们的目的,反之亦然.
我现在已经使用了mnesia一段时间了.我必须承认,我觉得我并不完全理解mnesia的概念:wait_for_tables/2.引用下面的文档说:
Some applications need to wait for certain tables to be accessible in order to do现在,对于我开发的所有应用程序,我必须在启动后端时调用它.在上面的文档中,上下文
useful work. mnesia:wait_for_tables/2 hangs until all tables in the Tab List are
accessible, or until timeout is reached.
"Some applications"没有很好地扩展,这就是我的问题所在.
RAM (ram_copies)表,那么我不需要这个我的代码中的方法.现在,我认为如果我只有disc_only_copies,我也不需要这个功能.disc_copies为什么完全在Disc上运行或完全在RAM中运行的应用程序需要等待并加载表?
问题:
帮助和检查我的想法1,2和3.一般来说,只有在处理mnesia表类型时才需要此功能:disc_copies因为这种类型与光盘和RAM上的数据复制有关吗?
如果我的表都是碎片,(我总是为每个片段调用此方法以确保mnesia为我的应用程序做好准备),我是否必须调用每个片段的方法?是ATOMIC或Transactional的方法,如果我在mnesia事务中调用它(意味着如果我单独指定基表,mnesia将自动加载所有表片段)?我的碎片的表格类型对此功能也有影响吗?
我检查了Google Hosted EXT Js,但是我找不到EXT JS 4.我希望我的网页能够从那里引用EXT JS 4而不是我本地的Web服务器.任何人请告诉我EXT JS 4的完整路径托管网站上的一些始终可用的地方,并且可以被其他网页用作
<link rel="stylesheet" type="text/css" href="LINK_TO_EXTJS4/resources/css/ext-all.css"> <script type="text/javascript" src="LINK_TO_EXTJS4/ext-all.js"></script>所以我需要上面的两行,取代
LINK_TO_EXTJS4指向某些EXT JS4的某些网站,以便我的用户浏览器从这些端点而不是从我的本地Web服务器获取JavaScript库.谢谢 Chicago Boss是一个伟大的Erlang框架.它附带很多依赖条件包括mochiweb,yaws,和misultin.安装完成后,Chicago Boss可以很好地运行开发服务器.
我需要知道它附带了哪些Web服务器,默认使用它?如何在不影响芝加哥Boss项目的情况下从一个Web服务器更改为另一个Web服务器?