123
 123

Sun 15 March, 2009

Click here to bookmark this link.Channel Image23:17 敏捷 != 敏捷实践» 梦想风暴

说起敏捷,会让人想起什么?
TDD、持续集成、结对编程、Standup、回顾会议……

当人们谈论起敏捷,首先进入大脑的词汇便是这些敏捷实践的名字。

所以,与人交流的过程,经常会有人告诉我们,我们已经敏捷了,我们搞过TDD,我们做过持续集成等等。然后,语重心长的说,敏捷不行啊!我们遇到了这样那样的问题,总之,都是敏捷惹得祸。

这个时侯,我们会耐心的与他们交流一下,问他们一下具体的情况。下面就是一些经常得到的答案:
* TDD就是测试,浪费时间。
* 测试不好写,为了测一个函数需要设置好多东西,太麻烦了。
* 我们的持续集成每天都给我们发报告的。
* 结对编程就是两个坐在一起,太浪费时间了。
* ……

有时,我们会饶有兴致让他们打开一段他们的测试代码给我们看,我们经常可以看到一个一屏都无法容纳的测试用例。

看到这里,我相信,单以敏捷实践而言,他们已经开始做了,但他们却并没有理解敏捷。

曾经,我读Kent Beck的那本书《Extreme Programming Explained: Embrace Change》,我记住的只是那些实践。现在,我开始理解,真正更具价值的部分,实际是那些价值观:沟通、反馈、简单、勇气和尊重:
* 当我们经常发现自己的理解和其他人存在不一致的情况时,也许沟通是最好的解决办法
* 当我们每天才得到一个报告时,我们也就失去了持续集成应有的快速反馈
* 当我们编写一个长长的测试用例时,我们如何还能保证简单
* 当我们准备放弃重构代码的念头时,我们是否需要勇气
* 当我们和pair争执得不可开交时,我们有没有想过尊重

对于敏捷而言,相比于敏捷具体实践的“形”,这些价值观才是“神”。正是有了这些价值观的驱动,我们才会考虑:
* 把测试和代码写得清晰易懂,因为复杂了,就不容易理解
* 不断重构代码,因为一旦腐烂,再想回到干净,就是一件困难重重的任务
* 代码提交了就会在持续集成中验证,出了错,肯定最新提交代码的人破坏的,而不是把大家的工作混杂在一起。
* 选择尽可能的自动化,因为人工是繁琐的
* ……






add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image08:05 Joggle 0.1.0 Released: Jabber to Twitter Relay» Pablotron: News

I just released Joggle version 0.1.0. Joggle is a Jabber to Twitter relay; tweets show up as instant messages, and instant messages are posted as tweets.

Setting up Joggle is easy; all you need is Ruby, five minutes, and a spare Jabber account:

# install joggle, create joggle directory
sudo gem install joggle
mkdir ~/.joggle

# create joggle config file 
# (replace joggle@example.com and abc123 with your spare jabber 
# account and password, respectively)
echo -e "jabber.user joggle@example.com\njabber.pass abc123" > ~/.joggle/joggle.cfg

# run joggle in the background
joggle --daemon --config ~/.joggle/joggle.cfg

Next, add the specified Jabber account (joggle@example.com, in the example above) to the buddy list in your Jabber client.

Finally, register your twitter username and password with Joggle by sending an instant message like this: .register TWITTER_USER TWITTER_PASS (replace TWITTER_USER and TWITTER_PASS with your Twitter username and password).

You can also share your Joggle installation with your friends; have them add the Jabber account to their buddy list and send a .register command.

See the README file for detailed installation instructions and a full list of configuration options.

Files:

Update: Comments for this site are still broken, but I've cross-posted this release announcement on Reddit, so feel free to post a comment over there.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Sat 14 March, 2009

Click here to bookmark this link.Channel Image02:49 ExportToArchive *Does* Work With iPhoto ‘09» Joey Gibson's Blog
I just installed the iLife ‘09 suite, which includes version 8.0 of iPhoto. While I haven’t had time to try out any of the new features, I did check to see if my ExportToArchive plugin still worked. I’m happy to report that it does still work. If you already had it installed, you don’t have [...]
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Fri 13 March, 2009

Click here to bookmark this link.Channel Image20:41 This Week in Edge Rails» Riding Rails - home

March 6, 2009 – March 13, 2009

Things have been pretty busy on the development side since the release of Rails 2.3 RC2. The core team has been making a serious effort to review all of the open bugs and patches with an eye towards getting us a solid release. At this point, the bar for new features is set fairly high, but even so, there have been an incredible 94 commits in the week since RC2 – mostly fixes to ensure expected behavior and stability. Here are some of the highlights.

Swappable Parsers for XMLmini

The support for XML parsing in ActiveSupport has been made more flexible by allowing you to swap in different parsers. By default, it uses the standard REXML implementation, but you can easily specify the faster LibXML or Nokogiri implementations for your own applications, provided you have the appropriate gems installed:


XmlMini.backend = 'LibXML'
XmlMini.backend = 'Nokogiri'

commit commit

rake gem Task Rewrite

The internals of the various rake gem tasks have been substantially revised, to make the system work better for a variety of cases. The gem system now knows the difference between development and runtime dependencies, has a more robust unpacking system, gives better information when querying for the status of gems, and is less prone to “chicken and egg” dependency issues when you’re bringing things up from scratch. There are also fixes for using gem commands under JRuby and for dependencies that try to bring in external copies of gems that are already vendored.

commit commit commit

Routing Fixes

A couple of small fixes to the routing engine. First, member routes with requirements now work (previously the requirements were ignored):


map.resources :orders, 
  :requirements => { :id => %r([^/;,?]+) }, 
  :member => { :accept => :get }

commit

Also, shallow routes now work properly with namespaces (commit) and you can now use the OPTIONS verb in route conditions (commit).

Client-side Caching Improvements

The expires_in, stale, and fresh_when methods now accept a :public option to make them work well with proxy caching.


expires_in 10.minutes, :public => true
fresh_when :last_modified => @user.updated_at.utc, 
  :public => true
fresh_when :etag => @user, :public => true

commit

Odds and Ends

The String#parameterize method now accepts an optional separator character.


"My big duck".parameterize =>      "my-big-duck" 
"My big duck".parameterize('_') => "my_big_duck" 

commit

The ActiveRecord::Base#invalid? method now works as the opposite of ActiveRecord::Base#valid?. (commit)

The ActiveSupport::Json.decode method now handles \u0000 style escape sequences. (commit)

You can now set content types such as multipart/mixed in Action Mailer. (commit)

Rails 2.3 will ship with a bundled version of Rack, but if you have Rack 1.0 installed as a gem it will use the gem version instead. (commit)


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Thu 12 March, 2009

Click here to bookmark this link.Channel Image05:15 Update on Rails Guides and Documentation» Riding Rails - home

We have been working on the Rails guides for some months now. With substantial contributions from a variety of authors, things are looking even better in the next version of the guides. That makes this the right time to take the overall documentation efforts to the next level.

Announcing the Documentation Team
We’re very happy to announce a formal documentation team – consisting of Xavier Noria, Mike Gunderloy and myself. However, eventually Mike and I will be just acting as advisors to the documentation team. So we’re definitely looking to empower some new faces here. If you’ve been working on improving the documentation and guides, keep up the good work and you’ll be on the team soon enough!

The documentation team will be to responsible for keeping the guides and API documentation up-to-date, working to improve the Rails documentation, and also helping more people contribute to the documentation efforts.

Documentation Mailing List and IRC
As part of the renewed documentation effort, we’re launching a mailing list. So go ahead and subscribe to rubyonrails-docs. The mailing list will be the main point of communication with the documentation team. If you have any suggestions or need any help, please post it to the mailing list. For quick questions, you can also find some of the team in the #docrails room on IRC most hours of the day.

How to Contribute
If you’re new to the Rails documentation process (or want to get involved for the first time!), you might want to have a look at the Contributing to the Rails Documentation section of the Contributing to Rails guide.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Wed 11 March, 2009

Click here to bookmark this link.Channel Image11:32 Wii talk prep III» James Britt - Code, Content, Caffiene

Food!

During the conference, folks will have to fend for themselves to find food. To make life a little simpler I Googled up some maps of various restaurant types near the SLC library.

The library on Google maps: http://is.gd/mlN2

Within 1 mile:

Restaurants http://is.gd/mlO8

Italian http://is.gd/mlOR

Indian http://is.gd/mlP3

Vegetarian http://is.gd/mlPn

Mexican: http://is.gd/mlQ0

Bars and stuff: http://is.gd/mlS7

Food stuff within 2500ft:

All restaurants: http://is.gd/mlRt

Veg: http://is.gd/mlQd

Indian: http://is.gd/mlQy

Mexican: http://is.gd/mlPS

Italian: http://is.gd/mlR3


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image06:47 Rails Magazine #1 is Out» Riding Rails - home

One of the measures of the health of a development platform is its ability to support a vibrant ecosystem of users, contributors, speakers, and authors. By this measure, Rails remains in excellent shape. The latest evidence: the release of the first issue of Rails Magazine – 36 pages of full-color glossy print.

The first issue includes 9 articles covering everything from delegation in Ruby to using Saasy for subscription-based applications to performance analysis and getting started with JRuby. The full content will be available on the web shortly, but if you’d like to support this effort (and help ensure that it doesn’t go away) you can order a paper copy for $8 in the US, UK, or Canada.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Tue 10 March, 2009

Click here to bookmark this link.Channel Image10:43 ZipStream-PHP 0.2.1 Released» Pablotron: News

Version 0.2.1 of ZipStream-PHP is out. There is one change:

  • Generate correct "version needed to extract" header. This fixes extraction problems with WinZip 9.0.

Here are the relevant links:


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Mon 09 March, 2009

Click here to bookmark this link.Channel Image14:37 Fun with Ruby and KDE» James Britt - Code, Content, Caffiene

Every so often I find a need for some small script that will reduce or eliminate some annoyance.

One case is running out of disk space. I really could not tell you what in the world is consuming my laptop drive, but 200G is evidently not enough.

Every so often I think to check the amount of free space, and move off or delete this or that. But sometimes I suddenly find myself with zero free space, and some applications just don’t handle this well.

I decided to create a cron task that would check the disk usage and warn me when free space fell below some set amount.

The Ruby code was simple (though potentially hackish. If there’s a better way to get the amount of free disk I’d like to hear of it).

Here’s grabbing the disk space

def free_diskspace drive
  results = `df -h #{drive}`
  # Filesystem         Size  Used Avail Use% Mounted on
  data = results.split( "\n").last.split(' ')
  value = data[3]
  value.sub!( /G$/, '')
  value
end
 

To issue an alert when space is low, I used KDE’s built-in kdialog command. There’s a Ruby lib that wraps this, but invoking it directly is simple enough.


def alert msg
    puts `kdialog  --display :0 --error "#{msg}"`
end
 

The logic is basic:

space = free_diskspace '/dev/sda1' 
alert "Running low on disk space: #{space}"  if space.to_f < 2.0

One point that wasn’t obvious when I wrote this: the cron task may not be using the same X display as the user, so the message box may not be seen. The fix is the explicit use of --display :0 when calling kdialog.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image01:51 关于 wordpress 可用性分析的一个 slide» Suave's Blog
How Not To Get Noticed View more presentations from edanzico. (tags: informationarchitecture usability) 讲的非常好,关于可用性有两点很重要:findability, consistency。做到这两点,用户就不用满屏找了,这样才是 donR...
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Sources