自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 收藏
  • 关注

原创 性能监控的好工具 - NewRelic简介

我们[url=http://chanyouji.com]蝉游记[/url]服务器端性能监控一直用[url=http://newrelic.com/]NewRelic[/url],用它的免费版本N长时间,有必要为好工具义务宣传一下。首先你需要在网站上注册一个新帐号,根据服务器端的应用框架选择安装对应的插件,它提供了很多常见应用框架插件,以Rails为例子,只需要在Gemfile配置,执行bu...

2014-10-31 15:36:44 526

升级 Ruby 2.1 以及GC调整

Ruby从1.8 => 1.9 => 2.0 => 2.1 一直在GC上不断地改进,最近2.1.1刚刚发布,抽空将我们的应用从2.0升级了一下,记录一下相关改动。我们在服务器使用的是rvm,首先更新一下rvm:rvm get head淘宝提供了ruby相关的镜像,可以更新一下源,后续安装会快很多:sed -i 's!cache.ruby-lang.org/pub/ruby!...

2014-02-28 16:53:22 269

蝉游记网站的部署 Nginx,Unicorn,Capistrano,OOB,Graceful Restart

蝉游记( [url]http://chanyouji.com[/url] )网站之前用Nginx+Passenger+自制script来部署,随着用户增多,移动app的api调用增加,服务器增多和无缝部署重启的需求,转移到了Nginx+Unicorn+Capistrano,写篇博客记录一下各种细节和需要注意的地方。1. Nginx的配置[code="conf"]gzip on;...

2013-06-27 12:15:08 1224

原创 蝉游记创业一周年流水帐

去年2月份,朋友推荐了@纯银V的这篇[url=http://firecacada.blog.163.com/blog/static/707437620121802010410/]找技术合伙人[/url]的文章给我,说:他找得就是你啊。然后和纯银见面,多次交流,完善整个想法,招募团队,找投资,在去年4月底正式开工,这一年里,产品从无到有,从羞于见人到能够自豪地推荐给亲朋好友使用,其中的酸甜苦...

2013-04-29 22:11:15 199

试用zopfli - 更高效的zlib压缩工具

[url]https://code.google.com/p/zopfli/[/url] 是Google最新推出的zlib压缩工具,和之前的gzip算法相比,能够节约3~8%的压缩空间,压缩时间差不多要慢100~1000倍。虽然压缩时间要慢很多,但是它很适合用来做网页静态资源压缩,节约用户下载时间和运营中的流量带宽成本。第一时间在我们的一个生产环境试用了一下,对于js和css文件可以节约5%的si...

2013-03-04 12:53:21 240

七牛云存储的使用心得

蝉游记的图片和静态资源都是使用七牛云存储,七牛提供了很多方便开发人员的存储特性,省去了大量的基础架构搭建和开发时间,记录一下在近半年使用过程中的心得。1. 客户端自传常见的云存储上传文件流程一般如下:用户 => 应用服务器 => 云存储提供商这样多了一次上传的流程,和本地存储相比,会相对慢一些。而七牛提供了客户端自传的功能,流程可以改成:用户 => 七牛 => 应用服务...

2013-02-27 17:40:59 497

ruby arduino hacking - 串口通讯

ruby和串口通讯可以通过[url=http://ruby-serialport.rubyforge.org/]serialport[/url]这个gem来实现,这个gem的用法很简单,先来看一个简单的串口输入输出例子:[code="ruby"]require 'rubygems'require 'serialport'sp = SerialPort.new "/dev/t...

2012-10-06 21:40:58 213

ruby arduino hacking - 入门篇

我对[url=http://arduino.cc]Arduino[/url]一直很有兴趣,它简单容易上手,不折腾实在对不起我大学的电子工程专业(虽然专业课程都60分,补考什么的...),最近终于有空可以开始写系列博客,记录我的折腾之路。什么是arduino,已经有很多文章了:[quote="arduino.cc"]Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(...

2012-09-16 17:34:57 142

60行代码实现分享到微博,QQ空间,豆瓣 - 介绍好用的Faraday

因为项目需要在后台实现自动将内容同时分享到微博,QQ空间,豆瓣等各个社交网络,一开始准备找个现成的gem,发现了hooopo写的:[url]https://github.com/hooopo/oauth_china[/url] 但是这个项目微博用的是OAuth 1,新浪很快就不支持了,原准备fork一下修改,但觉得依赖太多,而且我们的项目本身用了Omniauth做登录,用户的token等信息都...

2012-07-28 12:24:06 181

原创 珍惜时间,远离盛大云计算平台

7月初将我们的一个网站应用放到了盛大云平台,用的是华北机房,主要是考虑它是BGP机房,覆盖率以及带宽情况会好一点。选择了大型主机和5M带宽,没想到遇到一系列的问题,将它记录下来,供参考:1. 连接国外网站速度极慢,比如用ubuntu的官方源速度只有20K/s,或者rubygems.org下载gems都会超时,这些问题还能通过国内源镜像解决,但是如果你有国外用户的需求,请谨慎考虑。2...

2012-07-26 14:34:15 128

Rails 3.2 性能优化记录

将一个项目从[url=http://quake.iteye.com/blog/1445681]rails2.3+ruby1.8升级到rails3.2+ruby1.9[/url] 之后,性能测试发现原先平均500ms的请求,变成了750ms,性能损失达到了50%,经过一些性能优化以后,改善到了400ms左右,记录一下优化的3个地方。[size=large]1. GC调整[/size]...

2012-04-02 14:04:58 121

一个rails2.3+ruby1.8项目升级到rails3.2+ruby1.9的记录

经过2个星期的折腾,终于将一个项目从rails2.3+ruby1.8升级到rails3.2+ruby1.9,记录一下过程和踩到的地雷:升级流程:1. 在ruby1.8和rails2.3的环境下,在项目下安装rails_upgrade插件: [url]https://github.com/rails/rails_upgrade[/url] 运行下列命令,将输出的内容保存供后续使用。...

2012-03-08 11:42:55 141

给OpenStack扩展自定义功能

得益于OpenStack的良好架构,对OpenStack进行扩展非常方便,每个模块都留出了各种接口和扩展点,能够让用户扩展自定义功能。下面以操作记录为例子,介绍一下如何扩展nova-api组件。需求:用户的一些重要操作必须记录下来,方便进行事后查询,比如instance的创建、销毁,比如公网IP的申请、分配等等。实现:因为所有的这些操作都是通过调用nova-api进行,我们...

2012-01-12 16:03:11 191

用Haproxy+OpenStack实现web application auto scaling

这个是根据本文章内容在china openstack user group会议上做的演讲:[url]http://quake.github.com/slides/cosug-2012/[/url]======分割线======前面写过[url=http://quake.iteye.com/category/189914]2篇文章[/url]介绍过OpenStack,今天介绍一下...

2011-12-16 10:58:57 131

做了一个脚本,方便大家用sunpot做中文全文索引

sunspot ( [url]https://github.com/sunspot/sunspot[/url] ) 经过这几年的发展,已经非常完善,在ruby做全文索引属于首选方案,但是原始配置不支持中文分词,我做了一个脚本,可以很方便build一个带mmseg4j ( [url]http://code.google.com/p/mmseg4j/[/url] ) 分词算法的solr server:...

2011-12-02 12:13:11 133

为OpenStack制作自定义的镜像(centos/windows)

在OpenStack平台搭建好以后,我们可以用下载一些现成的镜像来进行测试,比如ubuntu,比如centos,但是每个应用都需要不同的环境,记录一下如何制作自定义的镜像。因为我们现有的应用大多运行在Centos5.5和Windows2008上,所以以这2个为例子:[size=large]1. Centos5.5[/size]整个安装流程是按照OpenStack的官方文档,制作am...

2011-11-18 17:42:57 268

OpenStack简介和相关资料

最近2个星期在尝试用OpenStack搭建私有云,提供方便的虚拟机部署和管理。写一篇博客记录一下相关资料。[size=medium]1. OpenStack简介[/size][url=http://openstack.org/]OpenStack[/url]是一个开源软件,它提供了一个部署云的平台。为虚拟计算或存储服务的公有/私有云,提供可扩展的、灵活的云计算。OpenStack包...

2011-11-17 11:41:22 145

从C#.net到RoR - GuruDigger的的迁移经验分享

===广告部分,想看技术部分的可以直接跳过 :) ===[url=http://gurudigger.com]GuruDigger[/url]是一个面向web开发者的社区,能够从用户认证通过的Email 出发,自动爬遍互联网,根据用户在互联网上的活动进行分析,对掌握的每项编程语言技能进行评分和排名:[img]http://dl.iteye.com/upload/attachment...

2011-07-18 09:33:56 149

在Android系统上安装Ubuntu/RoR(兼EeePad评测)

最近2周都在折腾刚刚入手的Android平板EeePad TF101,累计刷机无数次,尝试了无数应用,今天刚刚折腾完在平板上运行Ubuntu和RoR,写篇短文介绍一下。先上2张图:合体前:[img]http://dl.iteye.com/upload/attachment/508574/3e178a6a-d0df-36cf-b726-c5b175124db6.jpg[/im...

2011-07-01 17:11:15 245

原创 Ruby vs Python 第2波 - 贪吃蛇AI平台冲刺

[url=http://rubyvspython.org/]ruby vs python[/url] 是[url=http://gurudigger.com]Gurudigger[/url]网站推出的一个编程活动,今年是一个[url=https://bitbucket.org/linjunhalida/snake-challenge/wiki/Home]贪吃蛇AI平台[/url],我之前写过一篇[...

2011-06-21 09:36:47 254

让Net::HTTP自动使用代理

拜和谐的大防火墙所赐,调用微薄,人人等国外克隆网站的api需要用代理,而老外写的第3方lib通常没有考虑代理支持。一个小技巧,只要这些lib是用Net::HTTP来访问的,那么只要用一段小代码就能自动切换到Net::HTTP::Proxy,而无需改动原始代码:[code="ruby"]#这里从环境变量读取,可以改成从配置文件读取if ENV['http_proxy'] ...

2011-05-20 12:09:11 321

介绍一个Python v.s Ruby的编程活动

[url=http://pythonvsruby.org/]Snake Challenge - Python v.s Ruby[/url]是一个通过程序来控制贪吃蛇的编程活动,具体规则如下:参赛选手需选择自己是Pythoner还是Rubyist.通过[url=https://bitbucket.org/linjunhalida/snake-challenge/wiki/API/CN]API...

2011-03-29 14:15:50 105

Bambook开发比赛简记

最近参加了[url=http://bbsdk.sdo.com/]盛大的Bambook开发比赛[/url],记录一下这次比赛的经历。因为一直是在做web应用,所以我参加比赛的创意自然和web脱离不了关系:开发一个浏览器插件,用户安装好这个插件以后,就能够通过网页管理、分享Bambook上的书籍。最终完成的作品: [url=http://bambook.cnprog.com/]http...

2011-02-27 19:12:07 179

原创 HandlerSocket - 基于Mysql的NoSQL插件

在今年3月份shanghai on rails的活动上,我对叶玎玎的[url=http://www.slideshare.net/sishen/no-sql-introduction]NoSQL: Re-think about the world[/url]的演讲提过一个问题:和基于MySQL的Plugin相比,NoSQL有什么优势。我提这个问题是因为当时知道有人在这样作,但是不了解实现的具体细节...

2010-11-10 18:01:33 106

JavaEye的Firefox插件开源了

JavaEye的[url=http://www.iteye.com/wiki/JavaEye/1364-javaeye-firefox-addon-help]Firefox插件[/url]是我在JavaEye写的第一个firefox插件作品,基本上都是参考(或者说抄袭 :oops: )twitterfox和delicious的插件源代码。由于工作繁忙的原因,没有时间持续维护,现在我将它开源...

2010-09-22 10:01:21 148

建造模型玩具

小时候有过一套“[url=http://tieba.baidu.com/f?kz=585855789]建造模型[/url]”玩具,非常喜欢这个玩具,玩了好几年[img]http://dl.iteye.com/upload/attachment/222664/33400b8e-dca3-3352-8e5a-6316d07d732a.png[/img]长大以后才知道这个玩具是仿[url...

2010-03-22 21:13:47 532

原创 Ruby 1.9 String Encoding (WIP)

[code="ruby"]"你好".force_encoding("GBK") == "你好" #>> false "Hello".force_encoding("GBK") == "Hello" #>> true"你好".force_encoding("GBK") "你好&quot

2010-03-03 10:27:11 73

原创 will_paginate 国际化 i18n

在做i18n的时候遇到will_paginate插件的问题,google一下发现这个解决方法:[url]http://lawrencesong.net/2009/01/enable-i18n-in-will_paginate-plugin/[/url]不过这个方法只能指定一个locale,无法根据用户选择locale,显示不同的翻译.通过查看will_paginate源代码,发现了...

2009-12-28 17:02:29 95

CodeRack - 一个Rack中间件的代码比赛

[url]http://coderack.org/[/url] 是10月份举行的一个Rack Middleware的代码比赛,在截止日前共有95个代码提交,然后评委从中选择了10个,目前正在进行公开投票选前3名。简单介绍一下这10个Rack Middleware:[url=http://coderack.org/users/chriskottom/entries/66-rackdomain...

2009-12-07 17:04:41 317

将常用功能插件化 - 提高开发效率

虽然Rails提供了很多便利的内置方法,能够让我们快速处理开发中常见的需求,但还是会有要写大量相似代码的情景。利用ruby语言的动态特性,我们可以将这些代码组件化,举一个active record扩展的实际例子:枚举类型的属性,比如用户的性别属性,在数据库里面用0/1表示男/女,我们有很多地方要用到这个属性:[code="ruby"]#在模型中我们需要写validatevali...

2009-08-14 14:50:15 207

强大的有限状态机 - state_machine

在推荐Ruby on Rails给做企业应用的朋友时候,比较常见的问题有"Ruby有没有好用的开源工作流引擎?",基于有限状态机([url=http://en.wikipedia.org/wiki/Finite_state_machine]Finite State Machine - FSM[/url])构建工作流引擎是经常使用的实现方法,写篇短文介绍一下Ruby世界里的有限状态机:首先列...

2009-06-21 23:30:50 222

解决Rack在Lighttpd / fastcgi下的参数错误

Rails2.3开始支持Rack,今天尝试了一下将原先基于Controller/Action做ajax校验的部分代码迁移到Rack,改动还是蛮简单的,假设原先的请求如下:/ajax_validator/check_login?value=quake考虑到兼容,改写成通过PATH_INFO和QUERY_STRING拿数据,代码如下:[code="ruby"]class AjaxV...

2009-06-18 21:32:52 216

最好的RoR IDE - Netbeans

记录几个常用的Netbeans贴心功能1. 快速打开类文件,比如找一个UsersController,Ctrl+O打开,输入UC/UsC/UseC等缩写就可以快速定位2. 打开文件,比如要编辑routes.rb,直接用Alt+Shift+O,输入rou*.rb,就可以快速打开3. 寻找方法所在的类,Ctrl+O,输入#method_name4. options ->...

2009-06-11 21:44:23 94

热情和享受 -- RubyConfChina流水帐

早上7:40左右到了会场,ouspec正在准备登记表,抓紧时间测试了一下无线路由器。不到8点就陆续有参会人员来登记了。本以为国内的Ruby社区是个小众社区,而这次大会令我感到了很多意外:1. 大会登记的第2位朋友来自澳门,在行政公署工作,据说他们有一些应用是基于RubyOnRails做的。2. 有超过400人到会,除了上海周边的杭州和南京等城市以外,还有来自北京,重庆,成都等遥远城市的朋友...

2009-05-23 20:49:34 163

批了淘宝批支付宝

上次批了[url=http://www.iteye.com/topic/364426]淘宝首页的源代码[/url]以后,在支付宝的一同学很有信心地和我在MSN说:欢迎来批支付宝,支付宝在UED方面是阿里集团最优秀的。今天上支付宝发现多了一个可以在线缴水电煤的功能,就从用户体验方面来批一批吧:先上截图,这个是缴通信费刚刚进去的截图:[img]/upload/attachment/94...

2009-04-15 19:58:47 112

原创 用Ruby算一个有趣的数列

看到一个很有趣的猜数列题目:[url]http://www.iteye.com/topic/346772[/url]原文引用如下:[quote]111211211111221312211131122211113213211聪明的你,请找出其中的规律,并把下一行数字写出来用你的人品保证,先别搜,先想想....... [/quote]我找...

2009-04-14 22:01:24 132

批一批淘宝首页的源代码

[url=http://ued.taobao.com/blog/]淘宝UED[/url]团队经常写一些很棒的技术文章,令我印象深刻的有一句话,大意如下:[quote]虽然这种方法比较hack,但是可以减少2个HTML标签,考虑到我们是做超大流量的互联网应用,这样可以节省大量的带宽[/quote]可是打开淘宝首页,查看源代码,从大流量互联网应用来看,有很多地方可以批一批:1. 内嵌大...

2009-04-09 15:47:43 1796

Twitter性能提升的秘籍

Twitter在过去很长的一段时间中由于高访问量的而导致严重性能问题,甚至宕机,在经过了一些优化以后,目前Twitter在这方面已经有了很大的改善。来自Twitter的开发人员[url=http://blog.evanweaver.com]Evan[/url]最近在QCon做了一个演讲,介绍了优化细节:[url]http://www.slideshare.net/Eweaver/impro...

2009-04-02 11:16:13 161

Memcached的另类用途 - Rate Limit

我们通常用memcached来做缓存来提高系统性能,其实它不仅仅是一个缓存工具,我们还可以用它来做其他用途,比如下列常见的需求:1. 避免服务器的负担太大,限制Open [url=http://www.iteye.com/wiki/JavaEye/1499-javaeye-api-help]API[/url]的调用次数2. 避免恶意尝试密码,限制登录错误次数这2个需求的共同特点是要...

2009-03-29 21:34:30 81

用libmemcached做rails的cache store client

libmemcached是一个基于C库memcache client,ruby有一个封装:[url]http://github.com/fauna/memcached/tree/master[/url]趁这次对于Rails 2.3.2自带client性能比较的机会,也对它做了一个评测,对比下来它的性能是最好的,然后2.2.2带的次之,2.3.2带的最差。记录一下安装过程,首先最新版本和...

2009-03-26 09:56:45 71

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除