云计算项目中遇到erlang的几个小问题
2017-04-10 10:38
288 查看
下面的几个小问题是今年暑假在做项目的时候遇到的,当时也花了不少的时间去把这些问题搞清了,现在有些遗忘,把那几个问题重新翻出来,和大家一起分享一下。
经过这几天的努力,可能有那么一小点的收获,但是和实际要求可能查得还远些。下面是昨天我遇到的问题的解决,这三个问题花费的时间比较多些。
问题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),
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(818) | 评论(0) | 转发(0) |
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...
给主人留下些什么吧!~~
评论热议
经过这几天的努力,可能有那么一小点的收获,但是和实际要求可能查得还远些。下面是昨天我遇到的问题的解决,这三个问题花费的时间比较多些。
问题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),
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(818) | 评论(0) | 转发(0) |
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...
给主人留下些什么吧!~~
评论热议
相关文章推荐
- 云计算项目中遇到erlang的几个小问题
- 自己在项目中遇到的几个问题,包括vector的问题,键盘隐藏等
- VC6.0编写的MFC项目移植到VS2010中编译遇到的几个问题
- 从代码审核时遇到的有关JUnit的几个问题来看项目开发问题
- 从不知道cocoapods是啥 到跑起一个cocoapods的项目 遇到的几个问题
- MyEclipse导入Maven项目遇到的几个问题
- 做项目时遇到的几个关于C#和SQL的细节问题(一)
- github air项目中遇到的几个问题及解决(nodejs居多)
- 浅谈UE4项目打包中遇到的几个问题
- Myeclipse搭建web项目常遇到的几个问题
- 将maven项目导入到myeclipse遇到的几个问题
- 做项目遇到的几个小问题(first:居中问题)
- 将eclipse 项目导入到Android studio 遇到的几个问题
- 最近在项目中遇到的几个小小问题
- 做项目时遇到的几个关于C#和SQL的细节问题(二)
- maven整合到eclipse中的android项目遇到的几个问题及解决方法
- 做Java Web项目过程中遇到的几个问题及解决方案
- 所用ctorrent项目编译遇到的几个问题
- 用了几天Asp.Net 2.0遇到的几个小问题
- 最近遇到了几个oracle权限的几个小问题