云计算项目中遇到erlang的几个小问题
来源:互联网 发布:世界人工智能专业排名 编辑:程序博客网 时间:2024/05/21 18:36
转自:http://blog.chinaunix.net/uid-22566367-id-2973774.html
问题1总结:
在源代码中是
D = os:cmd("get_node_resource.sh") -- "\n"
但是在我的机子上是用问题的,但在我们测试的虚拟机上是正确的,后来我改成了这样:
D = os:cmd("bash /home/sunny/ECP/NodeController/priv/script/get_node_resource.sh") -- " \n\r",
在不同机子上的结果是不一样的,是版本问题,还是?
\n\r 的问题。
还有:
D = os:cmd("bash /home/sunny/ECP/NodeController/priv/script/create_vm.sh") -- "\n\r",
问题2总结:
在create_vm_cmd.erl中的
check_parm(Content)->
ture.
这里的返回结果是有问题的,不是ture,而是true.是true......
单词写错了,这个问题我花了一晚上时间找出来了,我的速度太慢了,唉。
这些细节上,我的速度有些慢。
问题3总结:
关于列表和元组的区别。
这个问题也比较纠结些,对于Resource,我发现代码中有的地方用的是列表,有的地方用的是元组,所以这个是有问题的,这个问题上我花费的时间也比较多些。
而且特别注意一下这个东西:
D = os:cmd("bash /home/sunny/ECP/NodeController/priv/script/get_node_resource.sh") -- "\n\r",
case io_lib:fread("~s~s~d~d~d~d~d", D) of
{ok,[ParseRes],_} ->
{ok,ParseRes};
这里的[ParseRes]中,不能加列表。原因是列表的个数都是固定的,所以这样是不行的。
后来,我改成了这样:
D = os:cmd("bash /home/sunny/ECP/NodeController/priv/script/get_node_resource.sh") -- "\n\r",
case io_lib:fread("~s~s~d~d~d~d~d", D) of
{ok,ParseRes,_} ->
[HostName,IpAddr,VcpuCount,StorageSize,MemorySize,FreeStorageSize,FreeMemorySize] = ParseRes,
Resource = {HostName,IpAddr,VcpuCount,StorageSize,MemorySize,FreeStorageSize,FreeMemorySize},
{ok,Resource};
这样来做的话,也有些问题,那就是如果参数发生变化的话,就要修改。但是我也没有想到什么其他解决方法。
问题4总结:
%Params = integer_to_list(VcpuCount) ++ " " ++
%integer_to_list(MemSize) ++ " " ++
%integer_to_list(DiskSize) ++ " " ++
%IpAddr ++ " " ++
%MacAddr ++ " " ++
%integer_to_list(VncPort) ++ " " ++
%integer_to_list(VmId),
%io:format("Params ~p ~n", [Params]),
这里要注意:++和--是用在列表的操作,其他的使用不了,所以这里是有问题的。
这里我改成了:
Params = lists:concat([integer_to_list(VcpuCount)," ",
integer_to_list(MemSize), " ",
integer_to_list(DiskSize)," ",
IpAddr," ",
MacAddr," ",
VncPass," ",
integer_to_list(VncPort)," ",
VmUser," ",
VmUserPass," ",
integer_to_list(VmId)]),
D = os:cmd("create_vm.sh" ++ " " ++ Params),
但是在os:cmd中++又一次可以使用了,我不清楚这个是为什么?
问题5总结:
关于erlang与shell交互,我原先以为通过接口那种形式进行交互,没有想到有现成的os:cmd可以调用,这样的话,erlang与shell交互就方便许多了,也就不需要原先那种比较复杂的程序了,呵呵~~
这个是对问题4的补充:
在os:cmd()中++仍然是不能使用的,不同的版本可能结果会有写区别,但我觉得那只是巧合,昨天晚上在我的机子上运行正确的那个命令,今天在实验室机子上就出现问题了,应该这样改:
Params = lists:concat([“bash create_vm.sh ”
integer_to_list(VcpuCount)," ",
integer_to_list(MemSize), " ",
integer_to_list(DiskSize)," ",
IpAddr," ",
MacAddr," ",
VncPass," ",
integer_to_list(VncPort)," ",
VmUser," ",
VmUserPass," ",
integer_to_list(VmId)]),
D = os:cmd(Params),
- 云计算项目中遇到erlang的几个小问题
- 云计算项目中遇到erlang的几个小问题
- 项目中遇到的一些小问题
- 项目中遇到的小问题
- 项目过程中遇到的小问题
- 项目中遇到的一些小问题
- 项目中遇到的一些小问题
- 一些项目中遇到的小问题
- 小程序项目中遇到的问题
- web项目遇到几个小问题
- 近来开发工程中遇到的几个小问题
- JSP开发中遇到的几个小问题
- 在毕设过程中遇到的几个小问题
- 编程中遇到的几个小问题(待续)
- 最近迁移恢复中遇到的几个小问题
- Hibernate学习过程中遇到的几个小问题
- WebSocket开发过程中遇到的几个小问题
- Python 编程中遇到的几个小问题
- ASIHTTPRequest类库简介和使用说明
- TerminateThread函数学习
- 网页meta http-equiv参数的用法
- JVM GC
- jsp页面注释
- 云计算项目中遇到erlang的几个小问题
- FusionCharts 中文提示信息
- 英语基础 词性
- 转载:谈谈VC 若干UI界面库
- c# Ftp协议Socket实现
- c++设计模式--解释器模式
- iOS开发复选框类库SSCheckBoxView
- 使用Memory Analyzer tool(MAT)分析内存泄漏(二)
- Eclipse 3.0插件集锦