还差半各种头2007就过去了,总结下这一年:
sicp今年到底是没看完,还记得当时开始看的时候,信誓旦旦的一定要在今年看完,然后明年开始看算法导论,可是到了年末,sicp没看完,算法导论没开始看,倒是csapp看了4章了,python 就看了本python in nutshell,后来实在由于ruby的诱惑太大,投入了ruby的怀抱,学习rails的过程中,感觉自己的js,css水平是在太烂,明年要加强了.erlang看了一段时间,不过始终看不进去,现在对lisp的兴趣倒是非常大的说。今年自己后半年,基本上在家里就是用ubuntu,基本上已经习惯了linux,不过对ubuntu实在是郁闷,7 ...
1创建一个hash
就想创建一个数组一样,我们能够使用Hash的[]方法来创建一个hash:
puts a1 = Hash.[]("flat",3,"curved",2)
puts a2 = Hash.[]("flat"=>3,"curved"=>2)
puts b1 = Hash["flat",3,"curved",2]
puts b2 = Hash["flat"=>3,"curved"=>2]
puts c2 = {"flat"=>3,"curved"=>2}
相似的,我们还可以使用new来创建一个hash:
puts d = Hash.new # 创建一个 ...
原文在这里: http://programming.reddit.com/info/63tnv/comments/c02qx55
Latent typing是一种你不需要在源码中的明确的声明你的变量的类型的类型系统.而与之相反的是manifest typing,它需要你在源码中明确的声明你的变量的类型。
Static typing类型系统指的是你的源码中的任何独立的表达式都必须有类型,不管它的类型是直接写在源码中,或者是通过编译器来推断.Dynamic typing是运行时的值才有类型的一种类型系统,因此在它里面程序的表达式能够有任意的类型.
overlap 是一种类型推断系统 ...
nnd,bug超多,速度超慢..现在每次进去桌面之前,都要等几分钟。切换个桌面就直接挂掉,真是失望,而且软件更新的速度也很慢,erlang的新版本都出来多久了,还不更新。准备下次鼓捣鼓捣gentoo了...
1 创建和实例化一个数组
类方法[]能够创建一个数组,这里有3种方法使用[]来创建一个数组:
a = Array.[](1,2,3,4)
b = Array[1,2,3,4]
c = [1,2,3,4]
这里还有一个方法叫做new也可以创建一个数组,它可以接受0,1或者2个参数,第一个参数是数组的大小,第二个参数是数组中每一个元素的默认值。
d = Array.new # Create an empty array
e = Array.new(3) # [nil, nil, nil]
f = Array.new(3, "b ...
1 1个简单的数字区间我们能这样表示:
digits = 0..9
scale1 = 0..10
scale2 = 0...10
其中..包括结束点,...不包括结束点,也就是说digits和scale2的表示范围是一样的.
在ruby中,不只是数值可以用作区间,任何ruby对象都可以用作区间。可是并不是所有的表示都有意义或者有用。
接下来让我们来看看怎么操作区间:
2 开区间和闭区间
就像上面说的,..是闭区间,...是开区间:
r1 = 3..6 # closed
r2 = 3...6 # open
a1 = r1.to_a ...
1 symbols简介
在ruby中一个symbol就是一个Symbol类的实例,他的语法也就是简单的一个冒号后面跟着一个声明.
一个symbol就像一个字符串,可是它和字符串所不同的是每一个symbol都只有一个实例。我们举个例子:
array = ["foo", "foo", "foo", :foo, :foo, :foo]
在这个例子中字符串"foo"在内存里面被存储为3个不同的对象,而:foo则是被存储为一个对象,只不过是多个引用而已。
在ruby1.6之前的版本,一个symbol不是一个first-class 的对象,他是被传递给一个Fixnum ,然后再存储起来。在现在的 ...
1定积分的计算
我么可以使用Riemann sum来计算积分:
def integrate(x0, x1, dx=(x1-x0)/1000.0) #也就是求一个函数在x0到x1区间的积分
x = x0
sum = 0
loop do
y = yield(x)
sum += dx * y
x += dx
break if x > x1
end
sum
end
def f(x)
x**2
end
z = integrate(0.0,5.0) {|x| f(x) }
puts z, "\n" ...
1 处理复数
标准库complex 能使我们处理复数。一个复数的创建能使用Complex来构造:
require 'complex'
puts Complex(1,2) # 3+5i
方法im能够转换一个数字为虚数:
puts a = 3.im # 3i
puts b = 5 - 2.im # 5-2i
如果你想表示极坐标的话,可以使用polar方法:
puts z = Complex.polar(5,Math::PI/2.0) #第一个参数是半径,第二个参数是角度
Complex还提供了I这个常量,他就表示复数中的i:
puts z1 = Compl ...
1 在ruby中表示数值
直接表示:
237 或者+237表示一个正数(如果超出范围,那他就是一个无符数)
-237 表示一个负数
当一个数字太长的话,可以用_将它分割,比如1048576和1_048_576 是一样的。
在ruby中还可以用0b,0,0x分别表示2进制,8进制和16进制的数:
0b10010110 # 二进制
0b1211 # error!
01234 # octal (base 8)
01823 # error!
0xdeadbeef # hexadecimal (base 16) ...
5规范化unicode字符串
这张没什么意思,它讲的是将一些拉丁文的音调和表示分开来表示,比如"é" 可以表示为e 和'.对我们来说,没有多大的用处,就不说了。
不过这张介绍了一个unicode的库,大家想看的话可以去看看
http://www.yoshidam.net/Ruby.html
6字符串的排序
这张也是没多少意思,对我们来说,这张讲的是对拉丁文,西班牙文之类的字符的排序,作者所作的是把那些字母的发音用上一小节所用到的Unicode库,单独那出来,然后再 进行排序.
这边要注意的是,对于array.sort他的排序,是通过解码后字节大小来进行排序的:
eac ...
这边有几个概念先看一下:
引用为了将软件多语言化,首先进行植入能够使用各种语言的设计和方法等的国际化操作(internationalization 118N)。然后针对各种语言,进行能够使用该语言的地区化(localization、L10N)的操作。进行了多种语言的地区化,用户能够切换成自己想使用的语言时的状态称为多语言化(multilingualization、M17N)。
这几个概念的简写版,可以通过下面的函数就行简化:
def shorten(str)
(str[0..0] + str[1..-2].length.to_s + str[-1..-1]).upc ...
这几天一直在做csapp里面的3.38,他是让你自己实现一个缓冲区溢出程序.代码如下:
/* Bomb program that is solved using a buffer overflow attack */
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
/* Like gets, except that characters are typed as pairs of hex digits.
Nondigit characters are ignored. Stops ...
无语了,写好的blog,不小心按了刷新键,全没了........
7 使用字符类
字符类也就是包裹在中括号里面的一堆字符.他所匹配的是中括号里面的任意一个字符。
[aeiou] #匹配 a,e,i,o,u中的任意一个字符
要注意在他里面的那些特殊字符比如.?之类的将全部只能表示他们字面上的意思,而\n之类的能正常转义
[a?si\n] #由于?在这里只能表示字面意思,所以这个匹配 a,?,s,i中的任意一个
^表示非
[^ae] #匹配非a,e中的任意一个的字符
-表示区间
[a-z] #表示从a到z的任意一个字符
如果要在字符类中使用[ - ]那么就必学 ...
在ruby中内置了正则表达式,如果你的ruby版本是1.9或者更后面的版本的话,你的正则表达式引擎将会是一个叫做Oniguruma的东西。这是一个新的引擎,代替了1.8版本中的这则表达式引擎,我们后面会介绍到它。
1编译正则表达式:
正则表达式能够使用Regexp.compile 方法进行编译(这个方法同Regexp.new方法是同义的),
参数可以是一个字符串或者一个正则式(这边要注意一个问题,如果参数是正则式的话,他所附带的参数将会被传播,你可以不用指定后续的第二个参数,这个马上就会看到),看下面的例子:
test1=Regexp.compile("Bar");
test=Rege ...
gcc对c语言中的switch的优化 在这里:
http://simohayha.javaeye.com/admin/show/146825
接着用上次的代码 switch.c
int switch_eg(int x)
{
int result = x;
switch (x) {
case 100:
result *= 13;
break;
case 102:
result += 10;
/* Fall through */
case 103:
result += 11;
br ...
31 删除指定的字符:
delete方法接受一个字符参数,然后从一个指定的字符串中删除这个字符(是删除所有的,而不只是第一个):
s1 = "To be, or not to be"
puts s2 = s1.delete("b") # "To e, or not to e"
s3 = "Veni, vidi, vici!"
puts s4 = s3.delete(",!") # "Veni vidi vici"
puts s5=s3.delete("b") #不存在b所以返回原字符串
32 打印出指定的字符:
dump方法,打 ...
在c语言中switch语句会被实现为一个跳转表,跳转表是一个数组,这个数组里面存的都是地址,也就是说只要你传递给它一个i,他就会返回给你,你所需要跳转的地址,这样做得好处就是执行语句的时间和条件的个数无关..不过在gcc里面他也只是条件数大于4个,才会生成这个跳转表.
请看下面的代码:
int switch_eg(int x)
{
int result = x;
switch (x) {
case 100:
result *= 13;
break;
case 102:
result += 10;
/* F ...
SCL90自评症状量表
http://news.21cn.com/luntan/liantang/2007/10/10/3712804.shtml
nnd,看起来挺准的,我有强迫症,每天我洗手要洗几十次,而且一定要用洗手液...
看我的得分:
引用你的总分为167分,总均分为1.8555555555555556分 其中JSB单项分12分,JSB因子均分1.2
躯体化分13分均分1.0833333333333333
强迫症状28分均分2.8
人际敏感21分均分2.3333333333333335
抑郁症状24分均分1.8461538461538463
焦虑症状21分均分2.1
敌对症状1 ...
- 18:28
- 浏览 (1252)
- 评论 (1)
- 分类: 心情
- 发布在 八婆们的八卦堡^_^ 圈子
21 在字符串中插入表达式
#{}做的就是这个,在{}中的所有表达式,都会自动计算,看下面的例子:
temp_f="ff"
temp_c="cc"
b=2
a=1
c=3
word="cdafr"
puts "#{temp_f} Fahrenheit is #{temp_c} Celsius" #ff Fahrenheit is cc Celsius
puts "The discriminant has the value #{b*b - 4*a*c}."#The discriminant has the value -8.
puts "#{word} is #{word. ...
接着昨天的。
11 控制字符串的大小写 。
downcase 方法可以转换一个字符串为小写,upcase可以转换一个字符串为大写.capitalize 方法强迫字符串第一个字符为大写,其他的字符为小写。
s1 = "Boston Tea Party"
puts s2 = s1.downcase # "boston tea party"
puts s3 = s2.upcase
puts s1.capitalize #Boston tea party
swapcase 方法可以将一个字符串中的大小写进行翻转,而casecmp方法则是实现了和<=>相同的 ...
ruby本来很早就要开始看了,不过最近才真正开始看,那本宝石书还差最后1章就读完了,于是开始看the ruby way了,于是在这边做个记录,也算是督促自己吧..
ruby中的string可以使用多种方式来表示.
1 单引号,这种表示支持的转义最少,只支持单引号的转义和\的转义:
'bobo' ->bobo
'bobo\'\\' -> bobo'\
'bobo\t' -> bobo\t
2双引号,这种表示支持的转义就比较多了,比如换行,比如制表符..
"aa\tsd" -> aa sd
3 使用%q,%Q,%q相当于单引号,%Q相 ...
昨天去秤体重,没想到又肥了,nnd我要抓狂了,怎么办怎么办(莫非真要打通任督二脉),决定从今以后不吃垃圾食品,每顿饭也尽量少吃,希望体重能降下去,哎,想当年俺是多么的玉树临风,貌似潘安,多吃了点饭就变这样了,真是沧海桑田...
当时高中的时候,非常瘦,整天想着胖,于是就每天狂吃,等到身材变成现在这样了,又想着瘦的时候的好了,不过算起来自己已经3年没有做过任何运动了,而且吃饭的时候战斗力又非常的强,变成这样也是该得的..
上次在西安的时候去买裤子,人家买衣服的小姐,看见我,我还没问呢,那女孩就说我们这里没大号的,妈的,当时我都想打人了。。







评论排行榜