My Octopress Blog

Keep it simple and stupid.

静态语言和动态语言的区别

| Comments

虽然使用过java和ruby,也知道点静态语言和动态语言之间的那些事,不过了解的很肤浅。当然了,我对java的了解也很肤浅,仅知道一些基础知识,了解一点ejb和hibernate,对于struts和spring(这个是我接下来要了解的)都只有耳闻,并未实际的使用过。对于ruby也是,了解一些用法,最近也在做rails的一些项目,也是停留于会用的层面。今天在读ruby设计模式的时候,看到一句话 “i am what I am “,这句话与 duck typing是同义的,即,你叫起来像鸭子,走起来像鸭子,那么,你就是鸭子!对于duck typing来说,不管你是什么类型的,你的父类是什么,只要是对某个方法有感应,那么你就是我想要的。

这两种形态可以在现实社会中找到类比的,比如求职过程中的 学历 能力 说。重视学历的单位,会强调你的出身,你是哪所大学毕业的,是否985,父亲做什么工作的,有哪些关系(类中的接口),诸如此类的问题。而那些注重能力的单位,则会问,你的能力如何,能否胜任交给你的任务,更加注重你自身的特征。对我应聘者来说,”I am what I am”,不要管我从哪里来,要看我能干什么事情就ok了。

所以动态语言就有那种 英雄不问出处 的高贵品质,体现了一种平等的思想!现如今,都是人作为主体去选择语言,根据流行度,根据那种更能赚钱或者根据自己对哪种语言有更加的偏爱,是否有一天,如果电脑作为主体,有选择语言的权利,它会更加偏爱哪种呢?(当然我所说的是高级语言了)。哈哈,我觉得,这确实是个有意思的问题!

创新意识与技术

| Comments

关于技术与创新。。。以下纯属扯淡。。

我始终认为,坚实的技术是创新的基础。没有技术,任何创新都是不可能的即便是有,也是停留于想象阶段。这个想象与创新,我认为是不一致的,以下的淡都是在这个前提下扯的。

Twitter的出现无疑是社交网络的一个创新,信息的流通更及时和快速!这个想法很好,但是如何实现这个想法,用什么工具实现呢,这个需要技术,真正适合它的技术,rails是个不错的选择!很难想象,如果没有rails,twitter的会推后多少年实现甚至不能实现,在合适的时间,有了合适的想法,采用了合适的技术,于是奇迹就产生了。创新的想法和技术缺一不可,而且我认为,技术更为关键,对于想法的实现至关重要!为什么这么说呢?

Twitter的逻辑其实很简单。确实很简单!其实这个想法我很早之前就有了,这不是盖的!!!!! 在我使用qq的一天,我当时心情非常的好,貌似有件对我而言非常重要的事情,想要告诉所有的朋友,想让我所有的朋友都知道这个事情,如果用qq一个个发的话,非常之麻烦。当时,貌似只有个性签名可以达到这样一个效果。。但是个性签名是非常静态的一个东西,而且,在当时,除了加好友的时候用一下之外,其他情况很少会想到!我那时的想法是,能否把签名这个东西独立出来,单独的成为一个功能,大家可以随时修改自己的个性签名,并让自己所有的好友都收到这个消息。后来twitter出现了,我一用,感觉和我之前的那个想法非常的想像。基本的功能都是一样的。。我当时不禁以欣赏的眼光看twitter和我自己了:我居然有这样超前的想法,同时也欣赏twitter能用rails实现这个想法!

后来我就分析,为什么我当时没有去实现这个想法呢?我也会点程序,会作点网页什么的。不过那点技术对实现那个想法而言,弱暴了!只有当技术达到一定的程度之后,创新的想法才会出来、才有现实意义,技术是创新的基础。我本身非常喜欢数据挖掘、推荐系统,但是目前我不想不搞它,因为我觉得时机还不成熟,只有等我的技术能达到一定程度之后,我才会去尝试一下新鲜的做法,否则,那就是浪费时间!

之前参加数据挖掘面试的时候,有面试官说我是 叶公好龙,我觉得这个词非常好,也很切合我当时的境地! 所以我非常努力的学习开发知识,目的就是想把一些想法实现。我不想务虚名而招实祸!踏实一些,认真一点,也许是我当前唯一、正确的策略!

努力去认识自己

| Comments

记得曾经上组织行为学的时候,教科书上有一些哲人对于人、社会、组织的经典言论。有句话我还有点印象,大意是,人啊,认识你自己吧!当时,我并没有对这句话有多少的理解,一方面感觉这这句话太普通,另一方面也觉得了解自己不是件难事。然而,现在貌似需要对这句话重新的审视,因为我发现了解自己越来越难了!古人们说过,知人者智,自知者明。我以为,这句话的意思是要强调自知,明比智重要。依这么多年所经历的一些事情来看,我认识到我不智,更不明。

我不会察言观色(不是说非要懂得后去迎合别人,而是说的一种普通常识),更不懂得如何真正的了解别人在想什么,感觉现在的我总是后知后觉,甚至有时候不知不觉,无知无觉(庄子貌似喜欢这样的生活状态,但是我不喜欢)。在相当长的一段时间里,我荒谬的认为,这只是我缺少阅历的结果,随着你阅历丰富之后,自然而然就会懂得那一套法则,除非自己不想去了解。

读了这么多年的书,我感觉我是越读越糊涂的(真心糊涂)。不懂得如何去思考,没有正真的了解任何一门学问,不知道如何探索未知领域,总是过分的高估事物的难度和低估自己的能力,没有自信,俨然一个懦夫!我妈说我贪生怕死,前怕狼后怕虎,她说得是有道理的!

我感觉我的能力太差了,没有任何一点的信心去完成难度稍微大一点的任务!以前的我可不是这样的啊,以前的我,对困难不敢说有百分之百的把握能搞定,是少还是很有勇气说,愿意尝试,积极的想尽各种办法去解决它。 以前的那个我呢,哪里去了?这个教育真是把我弄成一个窝囊废了!

缺点是有很多,但也非一无是处,起码我认识到,我是个有很多缺点的人!以前我总是不正视自己的缺点,害怕别人指出我的缺点(其实不是面子问题)。不能再这样子了,哥!我意识到,目前我最大的问题是,没有信心,在学校里读书建立起来的一点信心,在进入社会没多久就已经荡然无存了。信心建立的过程是循序渐进的,工作中项目的完成(还不谈出色的完成)等等活动都是树立信心的好机会!

学会如何思考,如何更加有效的、更加清晰的思考,掌握批判性思考是个很好的努力方向,多读,多想,更多的实践。

我现在也不去梦想什么了,只希望能成为一个正常人,找到正真的自己,活出自我,做自己喜欢的事,爱自己喜欢的人!

ps: I am what I am ,leslie cheung一直是我的偶像!珍爱生活,活出自我!

                            I Am What I Am 

                            我永远都爱这样的我 

                            快乐是 快乐的方式不只一种

                            最荣幸是 谁都是造物者的光荣 

                            不用闪躲 为我喜欢的生活而活 

                            不用粉墨 就站在光明的角落 

                            我就是我 是颜色不一样的烟火 

                            天空海阔 要做最坚强的泡沫 

                            我喜欢我 让蔷薇开出一种结果 

                            孤独的沙漠里 一样盛放的赤裸裸 

                            多么高兴 在琉璃屋中快乐生活 

                            对世界说 什么是光明和磊落 

                            我就是我 是颜色不一样的烟火 

                            天空海阔 要做最坚强的泡沫 

                            我喜欢我 让蔷薇开出一种结果 

                            孤独的沙漠里 一样盛放的赤裸裸 

Method_missing 方法的使用

| Comments

之前了解过一点点的ruby元编程,不过仅仅只是了解一些而已,木有实际使用。现在既然我将称为一名正式的ruby程序员,这点东西还是要熟悉一下的。这不,在开发过程中就使用了一点点的技巧。

class Course < ActiveRecord::Base
  belongs_to :orator
  belongs_to :field

  # def orator_name
  #     return "" if self.orator.blank?
  #     return self.orator.name
  #   end
  # 
  #   def orator_intro
  #     return "" if self.orator.blank?
  #     return self.orator.intro
  #   end

  def method_missing(sym, *args, &block)
    case sym
    when /^orator_(.*)/
      eval "self.orator.blank? ? '' : self.orator.#{$1}"
    end
  end

end

尽管这个实现不是那么的高效,但是至少能用。经常有人给我说,直接调用方法是高效的,但是重复了太多,这违背了DRY的原则,所以美观还是比性能重要。

后面再了解一下分派的实现,据说这比起method_missing 效率更高一些

更新: 昨天犯了一个很低级的错误,写method_missing的时候,没有完成很重要的一步,super

    def method_missing(sym, *args, &block)
        case sym
        when /^orator_(.*)/
          eval "self.orator.blank? ? '' : self.orator.#{$1}"
        else
            ***super***
        end
    end

一般的方法中可能不会存在问题,但是在rails中,active record的实现中很多地方用到了method_missing,如果不super的话,就会出现很怪异的错误,如果不是对active_record特别的了解的话,还真不知道如何着手解决呢。。。这点要小心了

Firefox下echofon异常的解决方法

| Comments

firefox下的echofon是我非常喜欢的一个twitter工具,操作非常简单的同时也能满足我基本的需要,所以我一直就是用的它。既然说道twitter,那么不得不提一下翻墙那些事。我使用的是goagent,一个google的app engine项目,对于我们这些需求的不高的人来说,还是比较合适的。当然我也希望自己能写一个ruby的,能部署到heroku或者cloudfoundry上面,这是后话了。

今天要说的主要是firefox下echofon出现的问题。之前用这个插件是没有问题的,但最近老是登不上,提示连接被拒绝

SSL routines:SSL3_READ_BYTES:tlsv1 alert access denied 。

网上出现类似错误的也比较少,所以也没有找到解决的方法。今天想把这个小问题解掉,所以多留意了一下它提示的错误,联想到之前firefox升级到了10,估计在这方面会有影响。后来发现也不是。只是自己没有将api.twitter.com.crt设置为信任。所以解决方法就是将它设置为信任即可。。。困扰了我很久了。 以下是图:

wenwen

有时候还是要注意最基本情况

Mac Lion下设置网络共享(mac连网线,提供wifi热点)

| Comments

之前看到朋友在windows笔记本下使用一个叫connectify到软件(该软件可以提供无线访问),所以我想mac上会提供类似的软件,google了一圈,无果。后来听rails公园的朋友说,mac自己就已经提供了这样的功能,于是我就尝试设置了一下,折腾了半天之后,还是把这个整好了。

设置的过程也是很简单,目的就是通过mac连接网线,提供wifi(之前的airport),要注意2点。

  1. 尽量将网络名称设置得简短一些,不要用中文名称。
  2. 有个奇怪的问题是,必须将密码设置成空,否则会出现搜索得到网络名称,但是连接不上的问题。或许还有其他的解决方案,但是目前还没有发现更好的。

Mac下openjdk的fastdebug版本

| Comments

虽然java有很多的缺点,但是它是我最早接触的、开始最喜欢的一门语言。我是个喜新不厌旧的人,尽管我目前更喜欢Ruby和lisp,但是对于java从来也没有放弃过,特别是对于jvm那块的内容,我更是有非常大的热情想了解。。。哈哈

最近在看jrockit和java performance,真想系统的知道jvm的运行原理、调优方面的知识。。。这点真得向淘宝的莫枢学习,他真是很有专研精神,而且在jvm研究上国内能出其由者寥寥无几。。。。

言归正传。。在mac上安装了一个fastdebug版本的jdk,主要用来测试一些东西,如添加一些开发环境下的命令:XX:….等等

其实在哪个平台下java的安装都差不多,无非是java_home,path 的设定。一般情况下,用不到特殊版本,所以只是临时的使用一下:

export JAVA_HOME=/..../
PATH=$JAVA_HOME/bin:$PATH

几点收获

| Comments

今天发现了3个问题:

  • 一个是使用ctrl + space进行搜索的时候,可以使用command 键进入相应的目录(这个我一直想要,但是找不到的功能),现在终于可以有了。

  • 二一个是,使用rake new_post[‘aaa’]的时候,提示

     zsh: no matches found: new_post[search in mac]
    

但是在网上找了一下资料,解决了https://github.com/imathis/octopress/issues/117

可以这样使用:

rake "new_post[在mac下查找文件]"
  • 第三点要说的是,用octopress真好,同时用Mou纪录一些东西真的很爽。。。。

Mysql中case When 的用法

| Comments

今天碰到一个sql题目,分组统计一个表。表的结构如下,

日期 胜负

2011-12-12 胜

2011-12-12 负

2011-12-12 胜

2011-12-12 负

2011-12-13 胜

2011-12-13 负

要求得到如下形式的结果:

日期 胜 负

2011-12-12 2 2

2011-12-13 1 1

当时脑子堵住了,不知道怎么写,后来人家提示说用case when语句,可惜我一时没反应过来,还是不知道怎么弄。

回来之后就查了点资料,搞定了它

select riqi, sum(case when shengfu='sheng' then 1 end ) as sheng, sum(case when shengfu= 'fu' then 1 end ) as fu from bisai group by riqi

主要是不了解case when的用法。。。。其实这跟ruby中的case when基本上是差不多的。。 纪录一下。。。。。

Some Must Step for Rvm in Osx

| Comments

Do you have this line in your ~/.zshrc?

1.[[ -s “$HOME/.rvm/scripts/rvm” ]] && . “$HOME/.rvm/scripts/rvm”

2.One useful thing I did to keep my old settings: “source ~/.profile” and “source ~/.bash_profile” in my ~/.zshrc . It also keep my .zshrc a bit cleaner.