Erlang Tail-recursive

五 18th, 2009
23 views | 没有评论

在Erlang中的两种递归写法
普通递归:
recursive_sum([H|T]) -> H+recursive_sum(T);
recursive_sum([]) -> 0.
尾递归:
sum(L) -> sum(L, 0).
sum([H|T], Sum) -> sum(T, Sum + H);
sum([], Sum) -> Sum.
在Erlang文档效能向导部分有说明,尾递归比普通递归更快。
普通递归H+recursive_sum(T);在recursive_sum(T);返回之前H都会被压入stack等到返回结果再计算。
递归越深,内存将被吃的越多。面向过程编程或者面向对象编程也会常用到递归函数。当在Erlang这种函数式编程里无疑将更经常使用递归函数。所以更应该注意递归函数的效率和系统开销。
反过来在面向过程或者面向对象的语言中也可以用尾递归来提高效率减少系统开销。
阅读全文…

标签:

Windows 7 硬盘安装

五 14th, 2009
28 views | 没有评论

在虚拟机上安Winodws 7测试快半年了,RC版出来正式安起来跑跑。
安装过程记录:
1. 上微软Windows 7站点获取测试CD-KEY下载最新的ISO到本地,解压缩到D:\windows7。
2. 复制D:\windows7目录下的boot、efi目录bootmgr、bootmgr.efi文件到C:\
3. 创建C:\sources 并拷贝 D:\windows7\sources\boot.wim 到 C:\sources
4. 从Vista里提取32位版的bootsect.exe或者现成下载 放到C:\目录下
5. 开始->运行->CMD回车运行C:\bootsect.exe /nt60 C: 回车
6. 重启将进入安装界面
备注:如果是从一个无系统的硬盘安装,可以用 WINPE 引导系统按上面步骤进行。如果是已经安了XP或者VISTA的可以直接在系统里进行上述步骤
7. 进安装界面下一步看到 INSTALL NOW 这时候点左下角的 Repair your computer 选着第一项下一步看到System Recovery Options对话框
8. 选CommandPrompt 如果要纯净的安装windows 7 在命令行提示符下
format C:/fs:ntfs /q清硬盘
如果原来已经有系统想双系统
Del bootmgr
Del bootmgr.efi
Del boot
Del efi
Del sources

9. 进入windows 7 ISO解压缩的安装目录D:\windows7\sources
10.setup.exe开始基本安装流程。

硬盘模式: AHCI
安装版本: 7100.0.090421-1700_x64fre_client_en-us_retail_ultimate-grc1culxfrer_en_dvd.iso

标签:

Erlang Md5

五 10th, 2009
40 views | 没有评论

io:format(lists:flatten(array:to_list(array:new([{size,16},{default,"~.16b"}])), “~n”), binary_to_list(erlang:md5(“hello”))).

之前一直以为上面这段MD5没问题,突然有个地方用到,调试了1天发现居然是这个~.16b有问题,当md5的二进制值小于16时少了一位。比如 7 ~.16b的结果是7其实MD5字符串表示应该用两个字符串表示一个16进制值,所以应该是07。
换了一段仔细看了个详细。

-module(md5).
-export([md5_hex/1]).

md5_hex(S) ->
       Md5_bin =  erlang:md5(S),
       Md5_list = binary_to_list(Md5_bin),
       lists:flatten(list_to_hex(Md5_list)).

list_to_hex(L) ->
       lists:map(fun(X) -> int_to_hex(X) end, L).

int_to_hex(N) when N < 256 ->
       [hex(N div 16), hex(N rem 16)].

hex(N) when N < 10 ->
       $0+N;
hex(N) when N >= 10, N < 16 ->
       $a + (N-10).
标签:

用YUI Compressor自动化压缩优化

四 29th, 2009
25 views | 没有评论

负责的一个WEB项目,发布生产版本时为了优化服务器流量和客户端加载速度,每次都要手动压缩一些CSS和JS文件,十分烦人。今天得闲写了几个简单的脚本,整合在一起把整个发布过程自动化了。抄了一段压缩CSS的脚本放上来,JS文件压缩思路相仿,其他过程略。

#!/bin/sh
#检查路径参数是否存在
if [ 0 = $# ]
then
    echo "Usage: $0 Minify CSS Source Dir"
    exit
fi
#判断目录是否存在
if [ ! -d $1 ]
then
    echo "$1 : No such Directory"
    exit
fi

#压缩CSS文件
for I in `find $1 -type f -name "*.css"`
do
    echo $I
    java -jar /opt/yuicompressor-2.4.2/build/yuicompressor-2.4.2.jar --charset utf-8 --type css $I -o $I
done

参考:
YUI Compressor 主页

程序员的十层楼

三 23rd, 2009
18 views | 没有评论

看《Erlang 并发编程》链到了张驰原的博客,又从博客上的一篇《上帝与新物理学》链到英特尔® 软件网络博客上的《程序员的十层楼》。一口气读完长了些见识,知道了希尔伯特、哥德尔这些泰斗对人类的贡献。不过要从最底层的程序员成长成专家或者大师我觉得几乎不可能,至少按我目前的知识积累和学习环境再怎么努力都无济于事,除非能跟希尔伯特之类的泰斗混几年再来写程序。

第1~3层 看这里:http://software.intel.com/zh-cn/blogs/2009/02/04/1071/

第4~5层 看这里:http://software.intel.com/zh-cn/blogs/2009/02/04/1073/

第6~7层 看这里:http://software.intel.com/zh-cn/blogs/2009/02/04/1077/

第8~9层 看这里:http://software.intel.com/zh-cn/blogs/2009/02/04/1081/

第10层(上) 看这里:http://software.intel.com/zh-cn/blogs/2009/02/09/1084/

第10层(下) 看这里:http://software.intel.com/zh-cn/blogs/2009/02/09/1088/

标签:

IE8 3月20日正式发布

三 20th, 2009
30 views | 没有评论

IE8浏览器于北京时间3月20日零时正式发布。
各大媒体头版头条,争相介绍IE8的新特性。其中一个特性是IE8 增加了对W3C Selector API的支持,Javascript 增加了两个函数 querySelector() 和 querySelectorAll() 。听都都引用了这个例子:

1
2
3
4
5
6
7
8
9
10
<html>
  <body>
    <div><div><span>InnerSpan</span></div></div>
    <div><span class="myClass">ClassSpan</span></div>
    <script type="text/javascript">
      alert(document.querySelector("div div span").innerHTML);
      alert(document.querySelector("span.myClass").innerHTML);
    </script>
   </body>
</html>

当你真的把这段代码,Ctrl-C Ctrl-V运行的时候你会发现IE8直接提示JS错误。不是IE8已经支持querySelector()和querySelectorAll了吗?
原来IE8少了DOCTYPE定义就不认这两函数了。
阅读全文…

标签: ,

J2ME 手机房贷计算器

三 20th, 2009
141 views | 2 条评论

动机:

上周末和几个同事去看房(第一次看房),营销中心美女销售个个拿着个计算器。当即和同事开玩笑,要是能把计算程序,直接通过蓝牙或者红外发给看客安装,大家在手机上自己算购房费用就好了。谈好价格各种费用都可以用自己手机算个清单出来。程序名还可以用XXX地产房贷计算器,提供了差异性服务,提高用户体验同时也起到品牌推广的作用。而且时髦点说还是分布式运算。明显提高了单点(销售)的业务处理能力。

目的:

干的是互联网这行,平常很少接触手机应用的开发。但随着手持设备上网的条件不断成熟和普及,将来手持设备和互联网之间肯定有很多很好的结合点。先接触下以便将来不时之需。 阅读全文…

标签:

软件开发与哲学

三 15th, 2009
24 views | 没有评论

在开发方面也有很多哲理小故事,《Unix编程艺术》的附录:无名师的Unix心传就讲了挺多有趣的小故事,很是不错,推荐一下。摘了两篇:

无名师与万行码

无名师曾对来访的程序员说:“Unix传统上认为,一行shell脚本胜过万行C程序。”
这个程序员自以为对C极其精通,说:“这不可能。UNIX内核正是用C实现的。”
无名师回道:“确是如此。不过,UNIX传统上认为,一行shell脚本胜过万行C程序。“ 阅读全文…

标签:

鱼与鱼竿的故事

三 15th, 2009
61 views | 没有评论

坐公交车常听到一个广播节目叫《哲理小堂,回味悠长》主要是讲些哲理小故事,发愣的时候听听这些耐人寻味的小故事 ,很是有味道。不过听故事之余请当心扒手。。。

  从前,有两个饥饿的人得到了一位长者的恩赐:一根鱼竿和一篓鲜活的鱼。其中,一个人要了一篓鱼,另一个人要了一根鱼竿,于是他们分道扬镳了。得到鱼的人原地就用干柴搭起篝火煮起了鱼,他狼吞虎咽,还没有品出鱼的肉香,转瞬间,连鱼带汤就被他吃了个精光,不久,他便饿死在空空的鱼篓旁。另一个人则提着鱼竿继续忍饥挨饿,一步步艰难地向海边走去,可当他已经看到不远处那片蔚蓝色的海洋时,他浑身的最后一点力气也使完了,他也只能眼巴巴地带着无尽的遗憾撒手人间。
  还有两个饥饿的人他们同样得到了长者恩赐:一根鱼竿和一篓鲜活的鱼。只是他们并没有各奔东西,而是商定共同去找寻大海,他俩每次只煮一条鱼,他们经过遥远的跋涉来到了海边,从此,两人开始了捕鱼为生的日子,几年后,他们盖起了房子,有了各自的家庭和子女,有了自己建造的渔船,过上了幸福安康的生活。
  一个人只顾眼前的利益,得到的终将是短暂的欢愉;一个人目标高远,但也要面对现实的生活。
  只有把理想和现实有机结合起来,才有可能成为一个成功之人。

标签:

IE下javascript cookie path设置Bug

三 15th, 2009
679 views | 6 条评论

手上一个广告项目,在Firefox下顺利测试通过。自信JS代码能兼容IE,FF测试过后随手就仍给CS测试,结果CS反馈说有问题。排查一番,发现居然和Javascript 设置 Cookie 时的 path 有关。IE下Cookie种在 /或者URL所在路径时正常,如果Cookie值作用域在当前URL下则IE下javascript 无法获取到设置的Cookie值。

看下面演示代码:
阅读全文…

标签: ,
Pages: Prev 1 2 3 4 Next