erway and erlin
公告
日历
最新留言
访客
最新文章
文章分类
计数器
          
rss
 
推荐订阅:订阅到RSS阅读
内容
  •  
    2007-01-19 19:56:23

    巧妙利用Google Group的搜索技巧

    ——想找谁就找谁

    提到Google,大家可能会想到很多东西,因为Google的分享精神的确给大家带来很多好的产品。但是,在Google所有的产品中,没有哪一项是可以和它的Search Engine相提并论的。我在本文中所要谈论的就是Google的搜索技巧,千万不要被这个古老而枯燥的话题而吓住,我在这里谈论的可不是一般的搜索技巧哦!

    我是一名编辑,不断地认识IT界的技术精英是工作的需要。然而,网络是我们与这些技术精英们结识的重要途径。对于绝大多数的网名来说,大多都有一个固定的nickname(网名或昵称),当然,有的人不只一个。我们是否曾经有这样的经历,我们在某个论坛上发现了一个技术牛人,但是只有他的nickname,而没有其他的联系方式。此时,我们很想与他取得联系,但是却苦于没有他的联系方式。在这种情况下,我们第一个想到的会是Google。如果这个人在网上名气很大或者是很活跃,借助强大的Google,我们一般都能与这个人取得联系。但是对于那些沉默在网络中的技术高手,有时候Google也无能为力。遇到这样的情况怎么办?请Google Group帮忙吧!

    关于Google Group,大家知道得更多的可能是它的论坛功能。当然,它的论坛功能是非常强大的,这也是它吸引无数用户的重要原因之一。如果你是Google Group的忠实用户,你一定知道几乎所有的IT技术领域都在Group 上安家了。是的,的确是这样。如果不信,你去论坛上Google一下便知。一般搞技术的人,尤其是牛人,都会加入相关领域的某个Google Group。只要他曾在某个Google Group中发过贴,我们在Google Group的论坛搜索中输入目标对象的nickname,我们便会找到他发的帖子。找到了这个帖子,我们就找到了它的主人,我们就可以把他的Gmail找出来。

    下面请允许我做一个简单的示范。也许你曾经在网上看到一个nicknamelinux1689的家伙,你想和他取得联系,可是他的知名度又不高,不足以让Google找到他怎么办呢,那我们就用Google Group的搜索功能试试吧。具体步骤如下所示:


     

  •  
    2006-12-15 11:12:26

    我的第一个Ruby程序(2)

     

     

    第三阶段功能描述:

    查找任意文件中的任意字符串,并返回该字符串所在文件名称、该字符串所在的行号以及该行的内容。

    filename = ARGV[0]

    file = File.open(filename,'r')

      string_to_find = ARGV[1].clone

      file.each{|line|

        if line.include? string_to_find

        puts "#{filename} : line #{$.} #{line}"

    end

    第四阶段功能描述:

    查找任意多个文件(这些文件的名称必须在命令行中指定)中的任意字符串,并返回该字符串所在文件名称、该字符串所在的行号以及该行的内容。

    find_string = ARGV[0]

    def find(find_string, filename)

      file = File.open(filename, "r")

      file.each {|line|

        if line.include? find_string

          puts "#{filename} : line #{$.} #{line}"

        end 

      }

    end

     

    if ARGV.length == 0

      puts "No parameter is input, please input the string to find."

    elsif (ARGV.length - 1) == 0

      puts "No filename is input, please input the filenames."

    end

     

    for i in 1..(ARGV.length - 1)

      find(ARGV[0], ARGV[i])

    end

  •  
    2006-12-15 11:09:48

    我的第一个Ruby程序(1)

    我的第一个Ruby程序,功能逐渐由简单到复杂:

    第一阶段功能描述:

    查找指定文件中的指定字符串,并返回该字符串所在的行号以及该行的内容。

    file = File.open("text_01.txt",'r')

      file.each{|line|

        if line.include? 'yang'

         puts "line #{$.} #{line}"

        end

      }

    file.closed

     

    上面这个程序还可以简化为:

    File.open("text_01.txt", "r").grep(/yang/) do |line|

    puts "line: #{$.} #{line}"

    end

    第二阶段功能描述:

    查找指定文件中的任意字符串,并返回该字符串所在的行号以及该行的内容。

    file = File.open("text_01.txt",'r')

      string_to_find= gets

      string_to_find.chomp!

      lines = []

      file.each{|line|

        if line.include? string_to_find

        puts "line #{$.} #{line}"

        end

     }

    file.close

    puts lines

  •  
    2006-12-07 21:39:51

    6.       abs方法

    abs方法的作用是取得调用它的数字对象的绝对值。例如:

    a = -123

    a.abs     →123

    -123.abs    → 123

    注意,absnum)这种表达方式是错误的。

     

     

    7.       downto()方法

    downto()方法是upto()方法的逆方法。downto()方法有一个参数,调用它的对象的值它的参数的值将与构成一个range,然后再将该range内的值依次赋值给其后block中的变量。该方法是整数支持的集中常用的迭代器之一。

    例如:

    20.downto(15) { |i| print i, “  “}

    输出结果:20  19  18  17  16  15

     

    8.       step()方法

    该方法的形式为:a.step(b,c) {block},它有两个参数,其中第一个参数b与调用该方法的数字对象b构成一个range。相当于是一个以a为首项,b为末项,c为公差的一个等差数列。step方法的作用就是将该等差数列的各项分别传入block中,即进行迭代。

    例如:

    10.step(202) {|i| print i, “,”}

    输出结果:

    101214161820

    注意,从数学的意义上讲,在setp方法中并不要求b = n*c成立(n为整数),只需要满足a < b成立即可。

    例如:

    12.step(265.1) {|i| print i, “,”}

    输出结果:

    12.017.122.2

  •  
    2006-12-07 21:32:01

     

    4.       upto()方法

    upto()方法会有一个参数,它的参数的值将与调用它的对象的值构成一个range,然后再将该range内的值依次赋值给其后block中的变量。该方法是整数支持的集中常用的迭代器之一。

    例如:

    3.upto(8) { |a| print a }

    输出结果为:

    345678

     

    5.       inject方法

    inject方法可以遍历集合中的所有成员以累计出一个值,一般地,他可以求得集合中元素的和或积。例如:

    [2,4,6,8].inject(0) { |sum,element| sum + element }            输出结果:20

    [2,4,6,8].inject(1) { |product,element| product * element }   输出结果:384

    上述两条语句展示了求集合中元素的和或积的方法。

    inject方法的工作原理:

    (1)        inject有参数时,inject后面的block第一次执行时,sumproduct的值被设置为参数的值,而element的值被设置为集合中第一个元素的值。接下来每次再执行block时,sumproduct的值被设置为上次调用block时的返回值,element即为集合中下一个元素的值。inject的最终结果是最后一次调用block的返回值。

    (2)        inject没有参数时,那么sumproduct的初始值即为集合中第一个元素的初始值,表达式将会从第二个元素开始迭代。

    根据上述说明,可以很容易得出下面这些表达式的结果:

    [2,4,6,8].inject(3) { |sum,element| sum + element }            输出结果:23

    [2,4,6,8].inject(2) { |product,element| product * element }   输出结果:768

    [2,4,6,8].inject { |sum,element| sum + element }            输出结果:20

    [2,4,6,8].inject { |product,element| product * element }   输出结果:384

    调用inject方法的是一个集合,这个集合可以是数值Array,同时它还可以是range,例如:

     

    (2..5).inject(3) { |sum,element| sum + element }            输出结果:17

    (2..5).inject(2) { |product,element| product * element }   输出结果:240

    该集合也可以是数值Array的一部分,例如:

    a = [2,4,6,8,10] .

    a[0,2].inject(3) { |sum,element| sum + element }

    输出结果:9

  •  
    2006-12-05 21:52:53

    1.       capitalize方法

    该方法是字符串类String的一个方法,对所有字符串都适用。它的作用是将调用该方法的字符串的首字母改为大写。举例如下:

    s = “ruby”

    s.capitalize  → “Ruby”

     

    又如:

    def say_goodnight(name)

    result = "Good night, #{name.capitalize}"

    #capitalize将参数name所代表的字符串的首字母改为大写

    return result #其实这条语句是多余的,因为一个方法如果没有指定返回值,则默认返回最后一个表达式的值

    end

    puts say_goodnight("mum")

    输出结果:

    Good night,Mum

     

    2.       each方法

    each方法经常与block一起使用,它的最大好处能够在某冲情况下取代for循环的功能。each方法会将调用它的对象中的所有元素依次赋给与each方法相关联的block的变量。

    例如:

    (‘a’..’e’).each {|char| print char}    → abcde  #range中两点表示全闭区间,三点表示前闭后开

    在上面的例子中,range对象(‘a’..’e’)调用each方法,each方法将(‘a’..’e’)对象的每个值依次赋给block {|char| print char}中的char变量。

    再来看下面这个例子:

    file = File.open(“filename”)#打开名称为filename的文件,并将其内容写入到file

    file.each {|line|

    puts line

    }

    file.close  #文件打开后必须关闭

    输出结果:

    this is line one

    this is line two

    this is line three

    and so on……

     

    3.       times方法

    调用times方法的一般是具体的数字(整数)对象,times会按照对象的要求来指定其后block的执行次数。该方法是整数支持的集中常用的迭代器之一。

    例如:

    5.time { print “*” }

    输出结果:

    *****

     

  •  
    2006-11-23 20:02:39

    共享软件变免费软件

    ——让试用软件永不过期

    你是不是经常会有这样的苦恼?一款自己很喜欢的软件,用了30天后(或者更短)它过期了,如果你不给它的著作权所有者付费,你就别想再用它了。这时你心里肯定会很不爽,怎么办呢?你肯定不会为了再装这一款软件而去重装系统,你可能也更不会去购买这款软件的使用权。不用着急,让我来告诉你一个很简单的方法吧!

    在介绍这个方法之前,请允许我简单叙述一下共享软件与免费软件的区别:

    免费软件:没有功能、时间、功能方面的限制,不要钱。软件著作权属于作者,但是用户可以自由使用。

    共享软件:有次数、时间、功能方面的限制,要花钱。用户可以使用部分软件功能 想使用全部功能需要注册

    如果你心爱的软件是一款有时间限制的共享软件,此时你不必再为它的使用时间而担心。只要你明白它为什么会在你的电脑中会过期,你就一定会找到解决的办法。一般的软件在安装过程中,它都会将自身的信息写入到系统的注册表中,注册表会完全监控该软件的使用情况。为了解决共享软件过期的问题,我们可以从修改系统的注册表入手。

    Step one  依次“开始”→“运行”,输入“regedit”打开注册表;

    Step two  依次在注册表的“HEKY_CURRENT_USER”→“Software”目录下找到该软件所在的位置,然后直接利用右键将其删除。(注:注册表中全部是英文,如果你的软件名称是中文,你需要知道它对应的英文名称)

    Step three  依次在注册表的“HEKY_LOCAL_MACHINE”→“SOFTWARE”目录下找到该软件所在的位置,然后直接利用右键将其删除。

    Step three  重新启动或注销你的电脑(这样注册表修改才会生效),然后再重新安装你心爱的软件,你又可以使用它了。

    呵呵,补充一点,建议在执行这四个步骤前,先在控制面板中将该软件卸载掉。

  •  
    2006-09-16 16:21:28

    2.2.5 课后练习

    1.定义一个由abc······26字母组成的字符串practice1,编写一个程序,通过对字符串practice1的操作,形成一个新的字符串practice2,其值为“broadview”,即pracitce2=”broadview”

    2sr“1234567890”,分别求下列各表达式的值:

    1)         sr[0]+ sr[3]+ sr[9]+ sr[5]

    2)         sr[10:]

    3)         sr[:-11]

    4)         sr[7]+sr[2:5]+sr[-2:-6]+sr[3]

    5)         (sr[-1]+sr[0])*10

    3. 利用三引号定一个多行字符串(至少3行),并计算该字符串的长度。

    4 定义一个字符串pracitce3=”Iamagoodstudent!”,编写一个程序,通过对pracitce3进行相关操作,构造一个新字符串pracitce4= “I am a good student

    5.定一个字符串pracitce5=’abcdef\n’,编写一个程序,通过对pracitce5进行相关操作,构造一个新字符串pracitce6=’abcdef’,使这个字符串中不包含换行符。

    6.阅读下列程序:

       a=3

       b=4

       c=5

      b=a*b

      c=b+c

      import string

      d=string.atoi(“55”)*a/c

      c=d-c

    计算变量c