mysql,Linux,HighPerformance,ruby on Rails

2010年1月27日星期三

wget工具学习心得--Linux guru必会

 今天看到有分享railscasts下载script,太棒了。但再细看,他使用的是bash script,可我还是对一些参数理解的不透彻,所以很郁闷。细细分析,读man,读别人的分享。把一些思绪记下来,方便大家鞭策!

代码如下:
wget -q -O - http://feeds.feedburner.com/railscasts | awk -F \” ‘/media:content/ {print $4}’ | head -n 2 | wget -i - -c

其中q是沉默模式,实际就是不让wget输出自已的提示格式。在输出到屏幕时,可以只显示目标文件的内容,但wget的统计及分析输出就没有了。

-O是输出到文件,后面要跟参数,但这里后面只跟着一个"-",对,百思不得其解,man中也没有说,幸好有别人的提示,这里"-"表示standard input. 就是输出到屏幕。

-q -O -,这里完全可以重写成-qO-,其中大O跟着的"-",合法。如果你这样写,一定会让你显的更牛!

话说转到awk

-F是表示分断行标识,后面的\"就是,加\是为了不让转义。
'/media:content/ {print $4}' 正则内容。这里很简单,就是直接的字符match,

再转一行==================>到这中间使用|管道可以顺序处理指令,Linux上的,不知道windows下有没有这种特性?

wget -i - -c,-c代表继续执行匹配的,

-i -表示从标准输出端读取链接,实际就是下载喽。

OK.我都感觉太牛了,你认为呢?Linux Guru从你开始!


参考:
http://www.editcorp.com/Personal/Lars_Appel/wget/wget_7.html
man wget
man awk
--
tommy xiao
E-mail: xiaods(AT)gmail.com

剩菜剩饭精彩总结--转的,不得不转!


原文是繁体,仅供翻墙来看的朋友分享! :-)


做饭的人都知道,若是做的刚好,准备有人事事儿的说没吃饱;倘若稍微多做一点点,哪怕是多放三粒米,多切一根葱,这顿饭注定是要
被剩下来──而且就剩一口,倒掉可惜,不倒可气。所以在节俭的厨师那里,剩饭成了脑筋急转弯。通过长年累月和剩饭的交流,我慢慢总结出了战斗经验,和大家share吧:
剩的菜汤汁多?那就用来下面条好了,宽汤窄面是祖训,最后再打个蛋花当礼花,高潮就在干净的盘子和没有浪费的愉悦中到来。剩的米饭不多不少?加一个蛋,做蛋炒饭。可是一人嫌多两人不够的量怎么办?熬成粥,放点青菜肉丝,不多不少,两人正好──如果有剩菜,此刻一并打发了也是快事。剩的稀饭有一小碗?加点牛奶麦片就是早点,有咸菜吗?那就是一天最完美的开端了。煮不完的面条可以包好冻起来,不影响下次食用;没人爱吃的烧鸡胸脯可以切成粒做炒饭,也可以手撕成丝来做汤;干的馒头可以搓错了放在肉馅里炸丸子;常见的剩菜剩饭可以一锅烩了,是一个人最好的晚餐。有时候,洗菜多了,比如芹菜多出一两根,洋葱还剩半个,土豆还有一快,干脆再买点西红柿做成义大利菜汤。否则就是当成配菜,放到别的菜里去炒也是能带来不一样的味道──搭配的窍门,我总怀疑是打发剩菜的托词。剩饭不怕,动动脑子,总会被吃下去──浪费粮食,会让一顿饭以不安做结尾的败笔。
剩的肉馅儿
2、3个人吃用三两就差不多了。提前拿出来化着。晚上回来肉馅放大碗里,放一个鸡蛋、淀粉、胡椒粉、姜粉、鸡精,向一个方向搅,一直找到上劲为止。锅里放水,愿意喝汤就多放,拿个勺把肉馅弄成小丸子下到锅里,好像正宗的动作是用手挤,我不喜欢手油腻腻的感觉,就改用勺了。丸子做好,锅里下切好的白菜丝,鸡精粉或清汤块(我做汤一般都是放鸡精不放盐),胡椒粉,白菜煮熟就可以关火了,吃之前倒点香油。这个菜又是汤又是菜,丸子不腻,白菜和汤吸收了肉味,很鲜。就着米饭吃,热热乎乎的方便又解馋。
剩的肥牛
做水煮不错。锅里放油烧热,放郫县辣酱、葱姜爆香,放一点酱油,加水,盐、鸡精,汤烧开后可以放电冰箱里剩下的绿叶菜,菠菜、油菜都成,实在没有切几个白菜叶放进去也不错。菜烫好后捞出来放碗里,把肥牛用少量嫩肉粉抓一下放汤里烫熟,最好是一片片放,不过我没这耐心,然后连汤带肉一股脑倒在先前盛菜的碗里,表面洒辣椒面花椒粉,把锅刷干净,倒油烧热,乘热浇在碗中。也是个下饭的菜,稍微麻烦一点。

2010年1月25日星期一

一个例外引发的解决方法-Gem View Goo的源码分析及解决,特例

       受朋友之托,非要从网上抓取信息。想来不是很难,就帮帮吧。使用mechanize,nokogiri就能搞定。
因为有一段时间没用了,想起原来使用过的gem views--Goo,开源的,@RobinLu出品。下载0.4版后
在macos上跑了一下,出来的gem list竟然是Library/Ruby/Gems下的。我晕。原来这和我的环境有关系
我把ruby环境全部使用Darwin Ports来安装的。幸好Goo开源的,去github上clone一份,打开xcode分析。

       我对Cocoa/object C不熟悉,当然我只关心它是如何拿到gem list的。没用多久,找到它:gem_helper.rb
关键代码就是:
  def self.specs
    spec_dir = File.join Gem.dir, 'specifications'
    source_index = Gem::SourceIndex.from_gems_in spec_dir
    template = ERB.new TEMPLATE
    puts template.result(binding)
  end
可是我的bash profile已经配置path了,怎么又变成系统原生的路径了呢???
代码没有错,就只能是这个rb第一行的解释不对。是的。ruby是script language,所以第一行解释环境还是很重要的。ok.
改一下,
from #!/usr/bin/env ruby to #!/opt/local/bin/ruby

Done.Goo就跑起来了。这里注意,为了满足个人的喜好,并不需要重新编译,直接去Goo查看内容包,在包里直接改代码即可。

--
tommy xiao
E-mail: xiaods(AT)gmail.com

2010年1月24日星期日

保持简单即最优-Mysql的部署原则

建议在考虑此方案时一定要三思。为什么?参考这里 Kiss KISS KISS. 其实Schema-Less没有错,但不能什么场景都上此方案,要
分析利弊,减少不必要的应用层复杂度。
文中提到的Serialized objects的保存技术,就是(entity-attribute-value) EAV, 说一下总结的缺点:
1.它对搜索不友好(都压缩存在一字段里,肯定不能搜索),这确实是一个问题。FriendFeed使用变相index,解决了它需要解决的问题。但只能是规避。
2.Select精确选择字段是不成了,每次都是SELECT * FROM xx,当然使用Memcache可以很少的解决此问题。
3.不能加约束(constraints),应用层需要作校验,其实就是增加了数据层的复杂库。
4.如果使用Json,不能使用Number和IP的原始形式存储,必须转换成String。这点好像不是那么重要,因为我们可以使用的文本协议有很多。比如Google的
protobuf

其实最重要的原则在Kiss KISS KISS中已经说的很清楚。对于刚开始的应用,使用Master-slaver足以。不要使用什么"优化",那些
其实就是"扯淡"。对于Scaling out方案更是应该简单有效为主,说白了,对于Mysql而言,一台Master及一台或几台slaver就是"最佳方案"。

--
tommy xiao
E-mail: xiaods(AT)gmail.com

2010年1月9日星期六

想找一份Ruby on rails的工作,我应该知道哪些知识?

     新年刚开始,已经有一些生猛的朋友要开始新的职场生涯了,不知道会不会遇到这样的问题: 想找一份Ruby on rails的工作,我应该知道哪些知识?
     还好,我并不是想指点你什么,只是想按我的思维方式展开,让你能"闻"到点东西即成.
古云:知己知彼,百战不殆;不知彼而知己,一胜一负;不知彼,不知己,每战必殆。一句话,想知道自已能不能找到rails的工作,就应该知道别人要什么样的人.对方公司的情况是没法知道的,因为咱们不是"FBI".只有一条路,招聘启事中的Requirements.所谓专家看门道,外行看热闹就是在这些需求上出的.
    正巧看到博文<7 Top Ruby and Rails Jobs for January 2010>有专业ruby on rails公司的招聘启事.那咱们就边走边看.相信会有收获.
1.Billmonitor,英国的手机公司,不错,也就是说在手机应用都需要与web进行交互,所以使用ruby on rails是比较理想的.咱们看看它的Requirements:
  • 3-5 years experience in web development(3-5年是什么概念?也就是说ruby onrails并不是一个web开发新手(Newbie)的最佳进入职场的着陆点,一句话,没做过网站,想来趟这混水很难.)
  • Demonstrable experience developing & deploying Ruby on Rails web sites in the real world(这条很简单,实践经验,你可以通过虚拟机加上server之后,自已动手作作automate deploy试试.)
  • Practical experience in debugging and tuning web sites(这是最核心的技能了,除了动手多写代码之外,可能看书学习可以帮助你.)
  • Understands web security issues(这是基本常识,不会?不知道哪里有?去guides.rubyonrails.com的security知识点看看.)
  • You're smart, gets things done, and agile(人品问题,不展开)
  • We're a team (rogue pirates and ninjas need not apply)(人品问题,不展开)
2.NewRelic,如果在ruby on rails社区玩过一阵,都会知道它.一家作性能监控应用的公司,看它的Requirements:
• Built and deployed commercial RoR applications (please provide your urls) (这家直接要看你之前作的东西,够狠,没有?从现在走就多去看看开源项目,fork下来自已看能不能看懂,跑跑,然后看issue解决它,并提交patch,这些就够证明你的实力了.)
• Strength in all the Rails fundamentals (routing, active record, migrations, ...) (基本功,一本DDH的Agile Web Development with Rails就够了.感觉不踏实的家伙就只能去看rails的源码了,如果还有不踏实的家伙,只能去看ruby源代码了,还不踏实?重写ruby或者rails,自立门户吧)
• A demonstrable knowledge of Javascript and CSS (again, urls) (这个要求太基本了,会作web开发的都会,但其人弱的地方咱们应该强啊,同一起跑线上,勇者胜)
• Experience with user-centered interaction design (这种能力需要常时间泡在应用上才能有所顿悟,和学历无关.)

3.groupon.INC Chicago的一家公司.不了解,直接看需求:
-Thorough knowledge of Ruby on Rails (3yr+) (三年,呵呵,我觉的只要你的web开发经验在3年以上就可以,不强求ruby on rails.)
-Proven track record with high-traffic sites (这条是经验要求,一般人可能不具备,如果你遇到这个,多看看scailing方面的文章就可以了解.)
-Familiarity with agile software methodologies - able to thrive in a fast-paced, highly-collaborative environment(这个需要时间锻炼)
-Strong commitment to quality(提交的代码质量还有要求,说白了就是要求你是老手,如果练手老手?去开源社区去看看别人的代码啊.)
-Thorough understanding of software testing (RSpec, Cucumber, Testing)(这条技能要实践,要多练,核心思路不难,关键是你要去实践.assert大法有好多种样多,不练就是不会.)


4.snapizzi inc ,圣巴巴拉市(美国加利福尼亚州西南海岸城市),软件公司,不了解,咱就直接看需求:
• Proficiency in Ruby on Rails framework(精通?最怕Proficiency,是吧.没关系,认真读完DHH的书Agile Web Development with Rails就应该算精通了.更何况国人的年青人一读就读好多本呢.)
• Proficiency with MySQL or similar database technologies (要求数据库知道,Mysql是指名要的,去看书学吧)
• Ability to produce standards-compliant XHTML, CSS and JavaScript code(网页会做吗?不会,练吧)
• Minimum of Bachelors in Computer Science or Engineering(要求学历了,最好与计算机相关,一个"本"还是很重要的)

5.AlphaSights ,伦敦的公司,英国人看的吧,我估计。不费话直接看需求吧:
  • Demonstrable track record developing with Ruby and/or Rails(之前有作品,需要是ruby on rails的。多写开源代码应该能保证)
  • Understand the key factors in making your code secure(对安全还是不放心啊,这条要求很严格)
  • Unit testing. Preferably with experience of RSpec(test喜欢使用rspec,也算是一种趋势吧,注意,不要被误导,初学test时,用最简单的开始)
  • Experience in Git, SQL, HAML, JQuery/PrototypeJS(这些其实是最基本的,一周后学会。几年就能磨成老手。)
  • Working knowledge of unix-like environments such as Mac OS X and Linux(要是Linux用户,是的,想使用ruby on rails,你必须是linux使用者,让windows去死吧)
That's All.Done!

--
tommy xiao
E-mail: xiaods(AT)gmail.com

2010年1月8日星期五

rails中实现Schemaless 数据的plugin,基于mysql

说话,如果你读到dbanotes关于FriendFeed使用Mysql的博文<FriendFeed 使用 MySQL 的经验>,肯定会知道
FriendFeed巧妙的使用原生Mysql的特性来实现"Schema-less",说白点就是使用一个字段来存一个实体属性集合。
它使用binary格式存储。
上面说了这些,你如果想使用rails来实现,现推荐此rails plugin Dynamic Attributes
就是按上面的思路实现的,挺好,实用,去下一个吧。

另外,对于windows上的一键ruby环境安装,我用virtualBox安装上windows测试了一款日本货,不错,开源的。
rumix,在中文winXP下安装测试,没有问题。vista,win7就不要上了,听其它网友安装上,有点小问题。点击下载吧
Rumix 1.00(通常版)
--
tommy xiao
E-mail: xiaods(AT)gmail.com

2010年1月7日星期四

拯救怡帆:请帮助这位漂亮、坚强的女孩



他的女儿潘怡帆今年5岁。出生第二天就进了急救病房。后诊断为肺动脉高压,一直靠氧气机呼吸。目前她的肺部已经转纤维化,不能提供自己所需的氧气,生命垂 危。她的父母为了挽救女儿的生命,已经倾其所有,卖掉了房子。国内专家已经无能为力,需要转美国治疗此病经验丰富的德州儿童医院进行心肺移植手术。所需资 金约50万美元。

请大家一起帮助她,程序员的下一代。因为病魔的折磨,她还没有学会走路,她的记忆里更多的只是针头和面罩,她更多的是从电视里知道了世界,她还保存着给四川灾区捐款一万元而收到的感谢信。

【捐款方式】

请访问怡帆基金网站捐赠页面 http://www.yifanfund.com/cn/

更多详情请访问 http://www.help-yifan.org

--
tommy xiao
E-mail: xiaods(AT)gmail.com

2010年1月3日星期日

新年第一推,快速创建rails3应用

今天有空读了一篇Yehada Katz的博文, Spinning up a new Rails app。正好合适新年的第一推,所以上来发一下。
目的很明确,就是快速创建rails3项目,按如下操作即可:

Step 1: Check out Rails
$ git clone git://github.com/rails/rails.git

Step 2: Generate a new app

$ ruby rails/railties/bin/rails new_app
$ cd new_app

Step 3: Edit the app's Gemfile

# Add to the top directory "/path/to/rails", :glob => "{*/,}*.gemspec" git "git://github.com/rails/arel.git" git "git://github.com/rails/rack.git"

Step 4: Bundle

$ gem bundle

注意,这里需要先安装gem install bundler,才可以。

最后

Everything should now work: script/server, script/console, etc.如果实在想搞自动化的,需要脚本的朋友,可以看看这里



收工。祝新年好运!

--
tommy xiao
E-mail: xiaods(AT)gmail.com