思考着Blog搬家

07月 28, 2008 · Posted in Thinking, something · 9 Comments 

最近手头有点闲钱,想去注册一个域名和买个空间,放上自己的Blog,Wiki。等完成后就会结束自己的Blog搬家历史,从msn space,到csdn blog,到blogjava,再到ruby-lang.org.cn,现在到这里的blog.ubuntu.org.cn,如果自己没有资源,或者还会再搬。因为随着对Blog的使用时间增加,慢慢会清楚自己的对Blog的需求有什么。如果自己有资源,那很多需求就可以自己实现。

Blog可能会用typo,因为比较好折腾,如果用WP,自己想去改也会很麻烦。wiki,不知道会不会自己开发个,或者用instiki,再写些JavaScript,放在greasemonkey,然后就可以像Google Note那样,一选一点就可以把选中的资料加到wiki中。

不知道有什么比较好的Rails主机介绍。。。

最近真的很忙,每天大量的开发,还有学习着很多新的东西(从同事从网络从书本)。有两篇Blog想写,但是没有时间写,一篇是只写了一个开头的《Ruby GUI开发思考》还有一篇关于开发中的测试的心得和思考。本来还想着7月份,Weblog能过百篇,现在看来。。。

我太懒了:P

a bug in attachment_fu

07月 28, 2008 · Posted in Promgramming · 1 Comment 

attachment_fu ,一个Rails插件,帮助你轻松处理文件上传。

最近使用它时遇到一个bug,其中用到了它的s3存储管理,发现如果没有指定缩略的参数时更新会出错,看了一下原来是默认参数nil出的错,当在File#join路径时,会调用每个参数的to_s方法,这样nil.to_s当然就出错了。或许,大家使用s3存储,并使用了attachment_fu时都存的是缩略图,所以没有遇到这个bug吧。这个错误只出现在update时,报的错是type error。

  1. # line 196
  2. def full_filename(thumbnail = nil)
  3.   File.join(base_path, thumbnail_name_for(thumbnail))
  4. end

我已经fix了这个bug,并ci到attachment_fu在github的repo。

fix s3 no thumbnail update error bug

mark一篇文章,关于如何在github上ci path:
http://railsontherun.com/2008/3/3/how-to-use-github-and-submit-a-patch

这是我第一次向开源项目提交代码^_^

about clound computing

07月 21, 2008 · Posted in something · 3 Comments 

Clound computing is so fun. Lots of times it‘s used in web 2.0 servces, as i know, like Yahoo, Google app, Amazon S3 + EC2, etc.

MapReduce,Hadoop,Hbase,Bigtable,Skynet,Solr,…

I need learn more about nutch-solr-hadoop-hbase-weka recently.

I had a kind of holiday in the summer but I couldn’t really relax. I’ve been on the go all this month. -_- But I have learnt much^_^

第6个学期结束

07月 10, 2008 · Posted in Thinking, something · 4 Comments 

今天考完试拉。大学就剩下一年了,唉呀呀。

下面开始发牢骚。

每次考试完了之后总会觉得考试很假,都是学期初看完了书和相关的东西,比较有兴趣的东西才会去深入研究。但身边大多数人不是这样,一般都是到了最后一周左右时间才开始背书,一般这类同学都会得到比较高的分数。这与老师的出题方向也有关,出题基本都是作业题,就算什么也不会,考试前去背背作业就能拿很高分。记得中央台还报道过学校这里考试前打印店就非常热闹,其实最后一两天打印都是字特别小的“资料”。

中午发现了这个东西挺搞笑:http://www.cnbeta.com/articles/59918.htm

原来做游戏的是比魔鬼还魔鬼,应该去枪毙。其实我一直就认为现在社会上很多奇诡的问题和国人的经济水平,文化水平不高有关。想想小时候家里的电器还不多,就电冰箱电视机,想买本十万个为什么还要和爸妈讲几天。然后忽然到了小学到了中学,再到大学,一时间生活完全变了,物质水平面目全非,精神水平也不敢恭维。这种变化速度国人无法适应。他们说游戏是毒品,他们就是为了赚钱让你玩更长时间,他们还在高楼大厦里,这个逻辑如果放到其它行业其实也是成立的。

还想到一个事情,如果中国不存在盗版软件或者盗版没那么猖獗,计算机会不会不那么流行。在国外来说,现在正常人使用的计算机,应该是软件贵过硬件。

目前国人的所谓家长群体,认为上网就是玩游戏,用电脑就是玩游戏。特别是目前大学生这个群体,很多人买计算机就是买了一部多功能游戏机,目的主要是娱乐。这是个性价比超低的买卖,花五千块去买部计算机打游戏看A片还不如花一千买部psp爽。但大部分人还是买了,用的是家长的血汗钱,就算是家庭经济水平不高的同学也为了面子也会购入计算机,理由是查资料。然后大学宿舍楼就会出现这样的喊声:“XX,建图阿”,“XX,我在X场X桌”,学生会为了娱乐(不单游戏,还有其他),逃课,通宵等等。大学生玩游戏时一般也会有比较多噪音出来,比如我常听见的“你会不会的阿?”,“你们这群傻13/垃圾”,“那么厉害不去打第一名”,“我踢,我踢,看你们还敢打我”……祖国未来的花朵就是这么成长的。

最近sourceforge还给封了。

这个世界太假拉。

发完牢骚,该干嘛干嘛去,END

FxRuby初体验Part4

07月 2, 2008 · Posted in something · 1 Comment 

之前的:FxRuby初体验Part1Part2Part3

到了PictureBook的V0.4了。这个版本算是基本的功能都做足了,包括了加上了相册选择,相册持久化等等。

#album_list_view.rb
require 'fox16'
 
include Fox
 
class AlbumListView < FXList
  attr_reader :album_list
  def initialize(p, opts)
    super(p, :opts => opts)
  end
  def switcher=(sw)
    @switcher = sw
  end
 
  def add_album(album)
    appendItem(album.title)
    AlbumView.new(@switcher, album)
  end
   
  def album_list=(albums)
    @album_list = albums
    @album_list.each_album do |album|
      add_album(album)
    end
  end
end
   
#picture_book.rb
$KCODE = "U"
require 'fox16'
require 'yaml'
   
include Fox
   
require 'album'
require 'album_list'
require 'photo'
require 'photo_view'
require 'album_view'
require 'album_list_view'
   
class PictureBook < FXMainWindow
  def initialize(app)
    super(app, "Picture Book" , :width => 600, :height => 400)
    add_menu_bar
    begin
      @album_list = YAML.load_file("picturebook.yml" )
    rescue
      @album_list = AlbumList.new
      @album_list.add_album(Album.new("My Photos" ))
    end
    splitter = FXSplitter.new(self,
      :opts => SPLITTER_HORIZONTAL|LAYOUT_FILL)
    @album_list_view = AlbumListView.new(splitter, LAYOUT_FILL)
    @switcher = FXSwitcher.new(splitter, :opts => LAYOUT_FILL)
    @switcher.connect(SEL_UPDATE) do
      @switcher.current = @album_list_view.currentItem
    end
    @album_list_view.switcher = @switcher
    @album_list_view.album_list = @album_list
  end
   
   
  def create
    super
    show(PLACEMENT_SCREEN)
  end
   
    def add_menu_bar
      # 创建一个菜单栏的实例
      menu_bar = FXMenuBar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
      # 创建一个菜单栏项
      file_menu = FXMenuPane.new(self)
      FXMenuTitle.new(menu_bar, "文件" , :popupMenu => file_menu)
      # 下面是一个创建菜单栏项和所关联动作的绑定
      import_cmd = FXMenuCommand.new(file_menu, "导入..." )
      import_cmd.connect(SEL_COMMAND) do
        dialog = FXFileDialog.new(self, "导入图片" )
        dialog.selectMode = SELECTFILE_MULTIPLE
        dialog.patternList = ["JPEG Images (*.jpg, *.jpeg)" ]
        if dialog.execute != 0
          import_photos(dialog.filenames)
        end
      end
      new_album_command = FXMenuCommand.new(file_menu, “New Album…” )
      new_album_command.connect(SEL_COMMAND) do
        album_title = FXInputDialog.getString(”My Album” , self, “New Album” , “Name:” )
        if album_title
          album = Album.new(album_title)
          @album_list.add_album(album)
          @album_list_view.add_album(album)
          AlbumView.new(@switcher, album)
        end
      end
     exit_cmd = FXMenuCommand.new(file_menu, “退出” )# 一个简单的退出项
     exit_cmd.connect(SEL_COMMAND) do
      store_album_list
      exit
    end
  end
     
  def import_photos(filenames)
    filenames.each do |filename|
      photo = Photo.new(filename)
      current_album.add_photo(photo)
      current_album_view.add_photo(photo)
    end
    current_album_view.create
  end
 
  def current_album_view
    @switcher.childAtIndex(@switcher.current)
  end
   
  def current_album
    current_album_view.album
  end
   
  def store_album_list
    File.open(”picturebook.yml” , “w” ) do |io|
      io.write(YAML.dump(@album_list))
    end
  end
 
end
 
if __FILE__ == $0
  FXApp.new do |app|
    PictureBook.new(app)
    app.create
    app.run
  end
end

剩下的晚上再写。。。

下一页 »