Posts
erlang程序设计8.2习题
第二题的erlang代码,用escript执行ex82文件
结果是
to 1000 processes, send 10 messages per process, cpu time is 290000 microseconds, real time is 285000 microseconds
另一个语言就用我熟悉的ruby了,用fiber,写一个ex82.rb
结果是to 1000 processes, send 10 messages per process, time is 275135.993958 microseconds
好像ruby的还快一些,不过ruby毕竟是生成的空的fiber
而erlang每个进程之间还传送了一些东西,如果ruby的fiber之间也传输消息的话,估计会多一个数量级。
等等,刚忘了,用escript执行效率低,因为是即时编译的(我是这样理解的)
把ex82改一下
另外建立一个ex82.erl
然后先编译一下
再执行ex82
结果是
这次erlang快了一个数量级了!
Posts
erlang程序设计8.1习题
(1)编写一个函数start(AnAtom, Fun)来把spawn(Fun)的结果注册为AnAtom。当两个并行的进程同时执行到start/2函数时,要确保代码能够正常工作。也就是说,这两个进程其中一个成功执行,而另一个必须执行失败。
http://blog.lzhaohao.info/archive/a-solution-of-the-exercise-in-chapter-8-in-erlang-programming/
这里有个别人写过的结果,但我觉得不太对。
这个第一题里只是把当前进程注册成了AnAtom,并没有把Fun注册成AnAtom。
这是我第一次做的结果,是错的。保存为ex81,+x权限,用escript执行。
=结果是报错。
我的理解是start的第二个参数这个fun没有执行尾递归,所以执行了一下就结束掉了,虽然还保留了Pid,但是不能被注册,一对这个Pid执行register就会报错。
如果需要进行注册,这个函数里必须包含receive这种代码。
又写了一个
算是的到了习题的结果,两个进程只能执行一个。
但是在main里的两个start,终究感觉还是有先后执行顺序。
考虑下面这个情况
在实际的例子里可以想象成一个网络游戏,有一个gold,谁先捡到归谁,然后两个player在两个客户端都开始send take,然后gold进程本身就会执行这么一个注册程序,由于erlang里的变量都是一次性赋值,也不用加锁,不用在第一个人触发事件的时候给gold的变量加锁,而是把gold独立成一个进程。gold被捡到后会给第一个player进程send一个消息为taken success,之后的第二个乃至更多的player进程都会send taken faild的消息。这么一想,erlang的多进程确实很适合做分布式的大量响应的程序,否则其中要加锁什么的,不知逻辑上要麻烦多少倍。不过这种逻辑的东西我现在倒是还不太能做的出来,作为这个阶段的习题也太难了点。
Posts
显卡驱动造成的死机
死机问题闹了两天,而且是最麻烦的不定时死机,一开机总能用一阵子
找了个旁边的一样配置的电脑把我的硬盘换上,还是一样,刚才发现是显卡驱动问题
一开始总觉得linux不会死机死的这么彻底,总觉得是内存或者是集成显卡出了问题
最后降级了显卡驱动
把NVIDIA-Linux-x86_64-331.20
降级成NVIDIA-Linux-x86_64-319.76
就好了
http://grantkot.com/sine.html
这个页面测试一下,也稳定了
之前是,一看这个特效,就肯定死机
Posts
angularjs-translate
最近弄的angularjs程序,想从后台调用生成的json来填充前台的翻译
但由于javascript async加载的特性,语言包总是会时不时出现加载晚了,页面上的 {{lang}}这种变量都无法显示的情况。
http://www.ng-newsletter.com/posts/angular-translate.html
https://github.com/PascalPrecht
顺带说一下 angular-translate-loader-url,这个可能过时了,怎么都不能用
用了这个插件之后,没办法,把翻译都写在一个静态的js里了,好在从原来的yaml到js的结构,基本没啥区别,就是加了好多引号。
Posts
angular-ui bootstrap modal $watch not work
直接在一个modal里
$scope.$watch ‘current_page’, -> …
想进行翻页,就翻页那块换,数据不换也没有后台请求。
http://stackoverflow.com/questions/19572514/datepicker-inside-a-modal-not-working?newreg=465289cbf441442cb01b6e8ad8b46dce
从这里学了一下,改成 $scope.$watch(‘pager.current_page’, -> …
Working! yeah
Posts
angularjs下的分页
最近一阵子一直在进修js,学了angularjs,分页配合http://angular-ui.github.io/bootstrap/很好,可惜只针对bootstrapV2的css,项目的css已经都改成了v3的,没办法这个分页实在重要,引用了一段bootstrapV2的css进来。
自从弄了angularjs,之前的得力工具simple_form、will_paginate什么的全都变的豪无用处。
现在写模板就直接写slim文件,然后配置到服务器上让nginx缓存html文件来提升效率了。
多年前我就想过这样一个类似的框架,将页面和数据完全分割,但是没能力做出来,现在也不成,angularjs做到了,而且还能将页面数据监控与动作绑定起来,让页面真正活了起来。
Posts
ruboto捣鼓失败
ruboto捣鼓失败
最后是安卓的环境弄不了
platforms-toos/adb是32位二进制文件,目前还没有64位版
解决办法是安装ia32-lib
不过我这个dpkg加上32位的源一安装就好多冲突,要把我桌面都卸载了,拉倒了
http://blog.csdn.net/softwareandy/article/details/17421027
之前好久因为系统升级之后没有了ia32-lib这个包,后来在这里发现了这么一个兼容32位的包,效果一样,装上之后好像能用32位的程序 lib32stdc++6
Posts
mail系统发附件自动剪切体积
今天有人反映邮件发附件的时候,稍微大点的附件,发出去之后体积被缩小了,在已发邮件里看体积小了好多,而且压缩文件下载之后解压错误。
查了一下发现系统的/tmp文件夹满了…
头一次发现这种问题,这个缓存系统不是会自动清空的么。
清空了,重新发了一下就好了。
本来分区的时候并没有制定/tmp分区的大小,好像是挂在/分区下的。
Posts
jquery-ui与bootstrap冲突的地方
好长一段时间内用jquery-ui的dialog,右上方的关闭按钮没有x,显示是空白的。还以为是jquery-ui-rails的这个gem带的样式的问题。
后来发现是与bootstrap的js冲突了,只要去掉bootstrap的js就能显示x。
不过为了兼容,先把这个按钮隐藏了,待以后再解决吧。
Posts
bootstrap modal
bootstrap modal不支持层叠,看来在有些情况下还是不能取代jquery-ui dialog
但是由于美观效果好点,还是偏向与用他。
问题是他在css中限制了width
手动把width改成auto之后,modal会拉伸占据整个页面。
但jquery-ui里的dialog就没有这种情况,会根据内容的宽度自动适应。
最后改了一下modal-dialog的css
实现了自动适应宽度。