- 博客(12)
- 资源 (11)
- 收藏
- 关注
原创 Ruby学习笔记(7) - Module和Mixin
Module提供了和C++里面的namespace相同的功能,不过module还可以用来作mixin,一个multiple inheritance的替代品。 在Module里面可以定义方法和变量,其中方法在其他地方调用的使用是module.method的方式调用,而变量是用module::variable的方式引用。module Trig<br /> PI = 3.141592654<br /> def Trig.sin(x)<br /> # ..<br /> end<br />
2010-09-30 19:38:00 898
原创 Ruby学习笔记(6) - 表达式
在Ruby里面一切都是表达式,就算是if, when这些都是会返回值的表达式。If, while, case这些语句会返回最后执行的表达式的值。songType = if song.mp3Type == MP3::Jazz<br /> if song.written < Date.new(1935, 1, 1)<br /> Song::TradJazz<br /> else<br />
2010-09-30 19:37:00 514
原创 Ruby学习笔记(5) - 方法(Method)
方法的名字后缀?表示这个方法是用来返回一个询问的结果的。后缀!(感叹号)是说明这个方法是会修改接受者的。 在方法里面可以写一般的表达式。但是不可以定义instance method,class和module。 方的参数可以有默认参数,就和C++里面一样。如果需要使用vararg这样的功能的话,就在最后的参数名前面加一个*,这样所以这个参数后面的参数都会转化成Array然后存放在这个参数里面。def varargs(arg1, *rest)<br /> "Got #{arg1} and #{rest.
2010-09-30 19:36:00 574
原创 Ruby学习笔记(4) - 基本的类型
整形是可以任意长度的,只要内存足够,没有任何限制。这一点并不像C++和JAVA那样。在输入的时候,数字之间的下划线(_)是会被忽略的。123_456 >>> 123456 # 下划线被忽略了<br /> 如果整形数的范围在int和long里面的话,那么他的类型是Fixnum;如果超出这个范围,类型就是Bignum。(在Ruby里面,一切都是类,包括所谓的基本类型) 在字母或者一些控制字符前面加问号(?),就是取该字符编码对应的数值。?a # c
2010-09-30 19:35:00 523
原创 Ruby学习笔记(3) - 容器和迭代器
Array可以用literal和new的方式创建:anArray = [] # 用literal的方式anArray2 = Array.new # 使用new的方式 Array可以用[]来索引,内容是动态的增长的。如果[]里面是负数的话,那么就是从尾部开始索引。实际上[]是一个函数调用。 [n1, n2]表示从n1开始的n2个元素。[n1..n2](注意中间是2个点)表示区间[n1, n2],而[n1...n2](中间3个点)表示区间[n1, n2)。 []=这个函数(或者说操作符)可以给Ar
2010-09-30 19:34:00 472
原创 Ruby学习笔记(2) - 类和变量
类的定义: class Song<br /> def initialize(name, artist, duration)<br /> @name = name<br /> @artist = artist<br /> @duration = duration<br /> end<br /> end<br /> 类里面的initialize函数和C++里面的constructor的作用是一样的,当一个对象在new之后,就会调用initia
2010-09-30 18:35:00 551
原创 Ruby学习笔记(1)
Ruby的启动方式有两种: interative和program,其中interactive可以用ruby或者irb来启动,irb是一个类似于shell那种的工具,有历史记录的功能。 Ruby和JAVA/C的一点OO区别 # In JAVA num = Math.abs(-123); # in C num = abs(-123); # in Ruby num = -123.abs; #这也是为什么很多人说Ruby才是正宗的OO语言。 Rub
2010-09-30 18:30:00 559
原创 OpenSuSE 11.2下启动不了stardict的解决方法
<br />在OpenSuSE 11.2下安装stardict会连带着安装espeak,一个从文本到语音的库。<br />而如果没有安装PulseAudio的话,这个epeak会不起作用,而OpenSuSE 11.2默认没有安装PulseAudio。<br />解决的方法是将stardict启动时候的epeak链接库去掉。如下:<br />mv /usr/lib/stardict/plugins/stardict-espeak.so /usr/lib/stardict/plugins/stardict-es
2010-09-30 18:17:00 671
原创 用wget避开robots.txt的下载限制
在网站的目录下放置一个robots.txt,并在里面禁止wget的行为,那么默认情况下wget是不会下载整个网站的内容的。比如wget -r http://www.example.com的时候,如果www.example.com上面放了一个robots.txt并在里面注明wget disallow的话。那么wget就默认不会下载这个网站。如果想要让wget忽略robots.txt的规则的话,那么就加上-e robots=off,同时,注意网站管理员加上robots.txt经常是因为负载的考虑,所以记得我们加
2010-09-25 17:20:00 6061
原创 gcc/g++学习笔记(1)
在链接的时候,要注意链接库里面的函数使用情况。gcc在搜索外部函数的时候是给gcc的参数里面从左到右的顺序来搜索的。<br />举个例子:<br />gcc -o test test.cpp -lA<br />在这个例子里面,A库里面定义了foo函数,而test.cpp里面调用了foo函数,那么-lA就必须放在test.cpp的后(右)面。如果将test.cpp和-lA的位置对调,那么就会出现undefined reference的错误。<br />同时这样的关系会出现在库也库之间,这样的时
2010-09-25 16:51:00 507
原创 C++学习笔记(5)
在开发工程的时候如果是分模块开发,那么在include别的模块的东西的时候,一定要以模块的根目录为路径。<br />比如有如下目录结构:<br />src<br /> |---mod1<br /> '---mod2<br /> ‘---submod1<br /> ‘--- file1.h<br />其中在mod1里面的源代码包含了mod2的submod1里面文件,那么不要直接#include "file1.h",
2010-09-21 11:44:00 440
原创 破解所谓的ISP封路由的方法大集合
联通电信,垄断了宽带市场,收费是人家发达国家几百倍,网速是人家发达国家几百分之一,你也好意思来封天朝人们的路由器??以下是一些找到的资料,以后好好研究下MAC和IP之间的联系和转化。第一篇,目前大多数ISP用来监测路由的方法(注意这里讲得解决方法其实不科学,也就是没有从根本上解决问题,大家主要是看网络尖兵的原理)网络尖兵原理:网络尖兵的技术实现主要依赖于“被动扫描原理(Passive Network Scan)”、 “网络指纹技术( Network TCP Finger Printing )”
2010-09-05 12:32:00 2557
Structure and Interpretation of Computer Programs
2010-07-14
Win32汇编的扫雷(不完全版本)
2009-10-05
16位MASM汇编的压缩程序(字典和霍夫曼两种算法)
2009-10-05
Linux下NASM的通用函数库Along32库V1.0(已过时)
2009-05-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人