云计算项目中遇到erlang的几个小问题
来源:互联网 发布:java 英文日期转换 编辑:程序博客网 时间:2024/06/06 07:23
下面的几个小问题是今年暑假在做项目的时候遇到的,当时也花了不少的时间去把这些问题搞清了,现在有些遗忘,把那几个问题重新翻出来,和大家一起分享一下。
经过这几天的努力,可能有那么一小点的收获,但是和实际要求可能查得还远些。下面是昨天我遇到的问题的解决,这三个问题花费的时间比较多些。
问题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),
0
上一篇:内核模块编程——打印一个进程的vm_area_struct
下一篇:erlang源程序文件的注释
相关热门文章
- python 自动化测试平台 Robot ...
- python 自动化测试平台 Robot ...
- python snmp 自动化2-在python...
- 自动化测试详细测试计划 模板...
- python snmp 自动化3-修改pyth...
- linux dhcp peizhi roc
- 关于Unix文件的软链接
- 求教这个命令什么意思,我是新...
- sed -e "/grep/d" 是什么意思...
- 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
0 0
- 云计算项目中遇到erlang的几个小问题
- 云计算项目中遇到erlang的几个小问题
- 项目中遇到的一些小问题
- 项目中遇到的小问题
- 项目过程中遇到的小问题
- 项目中遇到的一些小问题
- 项目中遇到的一些小问题
- 一些项目中遇到的小问题
- 小程序项目中遇到的问题
- web项目遇到几个小问题
- 近来开发工程中遇到的几个小问题
- JSP开发中遇到的几个小问题
- 在毕设过程中遇到的几个小问题
- 编程中遇到的几个小问题(待续)
- 最近迁移恢复中遇到的几个小问题
- Hibernate学习过程中遇到的几个小问题
- WebSocket开发过程中遇到的几个小问题
- Python 编程中遇到的几个小问题
- vim的一个配置文件
- MPAndroidChart 图表柱状图,折线图,和组合图
- 内核模块编程——打印一个进程的vm_area_struct
- 关于4G直播的运用,手机app直接控制编码器物联方式简化编码器的操作
- 怎么用CDR X8做出胶片效果
- 云计算项目中遇到erlang的几个小问题
- C++ MFC string转Cstring详解
- erlang源程序文件的注释
- 从5900到65535之间随机分配一个数字——erlang实现
- C++ 无条件转移控制
- erlang gen_fsm编程框架
- 关于angular-cli build后文件路径错误
- 毕业三年,同学基本都辞职了,大部分人看完很有同感~
- 使用gen_fsm分配一个5900到65535之间不重复的数字
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
荆州温德姆
鑫江温德姆
厦门温德姆
江阴温德姆
温德姆花园酒店
上海兴隆温德姆
温德姆集团
wyndham酒店
wyndham
三亚丽禾温德姆酒店
成都喜来登酒店
成都温德姆酒店
温州二手房
温州房产
温州房产交易网
空调温控器
冰箱温控器多少钱
冰箱电子温控器
热水器温控器多少钱
温控表参数设置
温控表说明书
温控仪表接线图
红外温控仪
温控仪品牌
220v温控仪接线实物图
温控仪价格
数显温控仪
高精度温控仪
自动温控仪
温控仪接线
全自动温控仪
智能pid温控仪
医用控温仪
变压器温控仪
温控仪说明书
智能温控仪说明书
tdw温度控制仪
温控仪使用说明书
宇电温控仪
温控仪接线图
温控仪生产厂家