Tuesday, September 29, 2009

cassandra connect to thrift port 9170 instead of 7000 or 7001

cassandra> connect 127.0.0.1/9160
Connected to 127.0.0.1/9160
cassandra> show keyspaces

for cassandra make sure you set the internal address

  <ListenAddress>domU-12-31-38-11-11-A2</ListenAddress>
  <!-- TCP port, for commands and data -->
  <StoragePort>7000</StoragePort>
  <!-- UDP port, for membership communications (gossip) -->
  <ControlPort>7001</ControlPort>

If the listenaddress is set to localhost, the server won't able to discover itself.



cassandra 0.4.0 is out

Mailing list archives
adies and gentlemen, I give you Cassandra 0.4.0. It's hard to imagine that it has only been 2 months since our very first release[1]; an impressive amount of progress has been made. For example: * Nodes can now scale to billions of keys instead of millions. * There is support for multiple keyspaces (formerly known as tables). * You can now create snapshots * A new bootstrap feature for adding nodes to a running cluster * A new multiget API * Numerous improvements to the Thrift API And many, many, more. In fact, don't take my word for it, check out the changelog[2], or the 176 closed Jira issues (176!)[3]. Many thanks to all those that contributed patches, reviewed, tested, documented, or counseled.


Pretty cool.

On my macbook pro, I got about 2400 inserts / s with cassandra 0.4.0. I was not able to get a multinode setup on my ec2 enviroment.



Friday, September 18, 2009

recommended use for hbase htable and cached hbase configuration

RE: HBase Client Concerns
Many thanks again. I think I'll go initially with cached HBaseConfiguration and one new HTable instance per request thread and accept the resulting slowness overhead per request. When the HTablePool pause/retry param issue is resolved, I can switch to that. To workaround the problem of restarting the client app when the HBase servers are restarted, I can then maybe wrap HTablePool into a class which essentially clears the pool cache [forcing instantiating a new HTable] when any of the HTablePool.getTable() client calls time out, so the client app need not be restarted... Cheers,


Thursday, September 17, 2009

Check out javadocs for using hbase with hadoop!

org.apache.hadoop.hbase.mapreduce (HBase 0.20.0 API)
Package org.apache.hadoop.hbase.mapreduce Description

Provides HBase MapReduce Input/OutputFormats, a table indexing MapReduce job, and utility


Sunday, September 13, 2009

struts 2 veloctiy and javarebel rock!

Man java rebel rocks!

By using Javarebel with struts 2 and velocity I can eliminate the whole compile deploy wait cycle!

Use these maven opts at startup.

MAVEN_OPTS="-Xmx712m -XX:MaxPermSize=256m -noverify -Drebel.spring_plugin=false -Drebel.velocity_plugin=true -Drebel.struts2-plugin=true -Drebel.aspectj_plugin=true -javaagent:javarebel203/javareb
el.jar -Drebel.dirs=target/classes,../target/classes

To refresh my struts file.

cp src/main/resources/*struts*.xml target/work/webapp/WEB-INF/classes

To reload any classes

mvn compile

To refresh any velocity files

cp src/main/webapp/*.vm target/work/webapp/





Thursday, September 10, 2009

mysql benchmark on mac

Ran a quick benchmark on my macbook pro :P

1,000,000 rows inserted serially.
596023 ms taken.
1677 rows inserted /s.

MySQL is faster on my localhost than memcacheDB.

Monday, September 07, 2009

MemcacheDB benchmark

On ubuntu amazon ec2 large instance - using java and spy memcache client.
Ran memcachedb with command

memcachedb -m 2064 -p 11211 -u memcachedb -l 127.0.0.1 -b 22000

Results - 10,000 puts of 140 characters in 22143 ms.
Roughly..
451 puts / s.

inserted 140 characters with a 5 character key.







key value store time taken to insert 10,000 recordsMB taken for storage inserts /s
memcachedb22143 ms1300 MB451 puts / s


Note - I had to add an artificial 1 ms delay after every insert. The memcache client would throw a queue size exception.
If time took 12143 ms, we would get roughly.

900 puts / s

Sunday, September 06, 2009

How to setup a Single node - hadoop cluster with hBASE

This guy has good instructions - http://blog.ibd.com/Part 1 setup Hadoop1. Get download and untar
wget http://apache.mirrors.hoobly.com/hadoop/core/hadoop-0.20.0/hadoop-0.20.0.tar.gz

tar xvf hadoop-0.20.0.tar.gz


2. Modify configuration files

cd hadoop-0.20.0/conf$edit core-site.xml
Add
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

3. Edit site configuration for replication.

hadoop-0.20.0/conf$edit hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>


4. Set Map reduce node - note even if we are not using it.

hadoop-0.20.0/conf$edit mapred-site.xml

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>

5. Check local ssh access

hadoop-0.20.0/conf$ssh localhost
Last login: Sat Sep 5 11:56:25 2009
LOLCAT@~$exit
logout
Connection to localhost closed.

6. Format / initialize hadoop file system

hadoop-0.20.0$bin/hadoop namenode -format
09/09/05 12:01:28 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = LOLCAT.local/10.0.1.193
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 0.20.0
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/core/branches/branch-0.20 -r 763504; compiled by 'ndaley' on Thu Apr 9 05:18:40 UTC 2009
************************************************************/
09/09/05 12:01:28 INFO namenode.FSNamesystem: fsOwner=spicysquid,staff,com.apple.sharepoint.group.2,admin,com.apple.sharepoint.group.1
09/09/05 12:01:28 INFO namenode.FSNamesystem: supergroup=supergroup
09/09/05 12:01:28 INFO namenode.FSNamesystem: isPermissionEnabled=true
09/09/05 12:01:28 INFO common.Storage: Image file of size 100 saved in 0 seconds.
09/09/05 12:01:28 INFO common.Storage: Storage directory /tmp/hadoop-spicysquid/dfs/name has been successfully formatted.
09/09/05 12:01:28 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at LOLCAT.local/10.0.1.193
************************************************************/

8. Start everything up!
./start-all.sh
starting namenode, logging to /Users/spicysquid/hbase/hadoop20/hadoop-0.20.0/bin/../logs/hadoop-spicysquid-namenode-LOLCAT.local.out
localhost: starting datanode, logging to /Users/spicysquid/hbase/hadoop20/hadoop-0.20.0/bin/../logs/hadoop-spicysquid-datanode-LOLCAT.local.out
localhost: starting secondarynamenode, logging to /Users/spicysquid/hbase/hadoop20/hadoop-0.20.0/bin/../logs/hadoop-spicysquid-secondarynamenode-LOLCAT.local.out
starting jobtracker, logging to /Users/spicysquid/hbase/hadoop20/hadoop-0.20.0/bin/../logs/hadoop-spicysquid-jobtracker-LOLCAT.local.out
localhost: starting tasktracker, logging to /Users/spicysquid/hbase/hadoop20/hadoop-0.20.0/bin/../logs/hadoop-spicysquid-tasktracker-LOLCAT.local.out


9. Check urls to see if they are up:

The Job Tracker can be found at http://localhost:50030
The Task Tracker can be found at http://localhost:50060

The NameNode / Filesystem / log browser can be found at http://localhost:50070



Part 2 - Setup HBASE


1. download hbase 20 and untar

wget http://people.apache.org/~stack/hbase-0.20.0-candidate-3/hbase-0.20.0.tar.gz

tar xvf hbase-0.20.0.tar.gz

2. Modify conf/hbase-site.xml for hdfs server

<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
<description>The directory shared by region servers.
</description>
</property>


3. start hbase
*** optional --- i had to start zookeeper first...
hbase-0.20.0/bin$./hbase-daemon.sh start zookeeper
./start-hbase.sh

4. create a table.
hbase-0.20.0/bin/hbase shell
1 row(s) in 0.0170 seconds

hbase(main):003:0> disable 'test'
09/09/05 13:22:13 INFO client.HBaseAdmin: Disabled test
0 row(s) in 4.0660 seconds
hbase(main):004:0> drop 'test'
09/09/05 13:22:17 INFO client.HBaseAdmin: Deleted test
0 row(s) in 0.0120 seconds
0 row(s) in 0.0040 seconds
0 row(s) in 0.0440 seconds
hbase(main):005:0> create 'test','data'
0 row(s) in 0.0500 seconds
hbase(main):006:0> list

5. Check
Check hdfs web url to see how the files are created
The NameNode / Filesystem / log browser can be found at http://localhost:50070

6. stop hbase
stop hadoop

hadoop-0.20.0/bin$./stop-all.sh
stopping jobtracker
localhost: stopping tasktracker
stopping namenode
localhost: stopping datanode
localhost: stopping secondarynamenode


hbase-20.0/bin/./stop-hbase.sh

Tuesday, August 11, 2009

hbase benchmarks

on macbook pro.

hbase 19.3
hadoop 19.2

insert one millions rows with one column family with one column.
333 rows / s

read one million rows
52465 ms

Monday, August 10, 2009

how to unlock your vx9800

How can I get past the lock code on my LG Chocolate? - IhAv.NET
This MAY work on your VX series LG phones for verizon. it has been tested on my vx9800 and my girlfriends vx8100. all you need to know is your phone number.

This works on:
vx8100
vx9800

DO:
1. *22899
2. Let it reprogram your phone
3. Now your unlock code should be the last 4 digits of your phone number.


Sunday, April 05, 2009

How to delete old time machine backups

How to Delete Individual Backups from Apple Time Machine « Psychohistory
One of those menu items is “Delete Backup”.

So, to delete a full backup, you just do the following:

1. Navigate to the date you want to delete. In my case, I wanted to delete my oldest backup, from 1/30/2008.
2. Navigate in the Finder window to your overall machine. In my case, it’s called “Powersmash G5″, where I have 2 internal drives that are backed up.
3. Select the “Gear” menu, and select “Delete Backup”
4. Enter the admin password for the Finder, if it asks.

My guess is that Apple wasn’t trying to make this hard - they are just suffering from a non-standard interface, and then an overloading of that “gears” menu, which I’m sure is theoretically supposed to be a “contextual menu”. For me, a menu that showed on on right-click of either the finder window itself or the Time Machine backup marker on the right would have been more obvious to me.

Hope this tip is useful to someone. It sure helped me today.


Thursday, January 29, 2009

pretty cool stuff spring and ruby integration!

Squaremasher: Spring IOC in JRuby - life outside the container
Spring IOC in JRuby - life outside the container
If you're a JRuby aficionado you probably read about the Spring IOC Plugin for rails, but what if you want to get spring IOC running outside a servlet container? Here's how.

Friday, November 28, 2008

how to sms for free

How To Send Email To Any Cell Phone (for Free) | MakeUseOf.com
Free Email To SMS Gateways (Major US Carriers)

Carrier Email to SMS Gateway
Alltel [10-digit phone number]@message.alltel.com
Example: 1234567890@message.alltel.com
AT&T (formerly Cingular) [10-digit phone number]@txt.att.net
[10-digit phone number]@mms.att.net (MMS)
[10-digit phone number]@cingularme.com
Example: 1234567890@txt.att.net
Boost Mobile [10-digit phone number]@myboostmobile.com
Example: 1234567890@myboostmobile.com
Nextel (now Sprint Nextel) [10-digit telephone number]@messaging.nextel.com
Example: 1234567890@messaging.nextel.com
Sprint PCS (now Sprint Nextel) [10-digit phone number]@messaging.sprintpcs.com
[10-digit phone number]@pm.sprint.com (MMS)
Example: 1234567890@messaging.sprintpcs.com
T-Mobile [10-digit phone number]@tmomail.net
Example: 1234567890@tmomail.net
US Cellular [10-digit phone number]email.uscc.net (SMS)
[10-digit phone number]@mms.uscc.net (MMS)
Example: 1234567890@email.uscc.net
Verizon [10-digit phone number]@vtext.com
[10-digit phone number]@vzwpix.com (MMS)
Example: 1234567890@vtext.com
Virgin Mobile USA [10-digit phone number]@vmobl.com
Example: 1234567890@vmobl.com
Free Email To SMS Gateways (International + Smaller US)

These are all I could find from Wikipedia and other sources. If you’re aware of any other ones please share them in comments and I’ll add them to the list.

Carrier Email to SMS Gateway
7-11 Speakout (USA GSM) number@cingularme.com
Airtel (Karnataka, India) number@airtelkk.com
Airtel Wireless (Montana, USA) number@sms.airtelmontana.com
Alaska Communications Systems number@msg.acsalaska.com
Aql number@text.aql.com
AT&T Enterprise Paging number@page.att.net
BigRedGiant Mobile Solutions number@tachyonsms.co.uk
Bell Mobility & Solo Mobile (Canada) number@txt.bell.ca
BPL Mobile (Mumbai, India) number@bplmobile.com
Cellular One (Dobson) number@mobile.celloneusa.com
Cingular (Postpaid) number@cingularme.com
Centennial Wireless number@cwemail.com
Cingular (GoPhone prepaid) number@cingularme.com (SMS)
Claro (Brasil) number@clarotorpedo.com.br
Claro (Nicaragua) number@ideasclaro-ca.com
Comcel number@comcel.com.co
Cricket number@sms.mycricket.com (SMS)
CTI number@sms.ctimovil.com.ar
Emtel (Mauritius) number@emtelworld.net
Fido (Canada) number@fido.ca
General Communications Inc. number@msg.gci.net
Globalstar (satellite) number@msg.globalstarusa.com
Helio number@myhelio.com
Illinois Valley Cellular number@ivctext.com
Iridium (satellite) number@msg.iridium.com
i wireless number.iws@iwspcs.net
Koodo Mobile (Canada) number@msg.koodomobile.com
Meteor (Ireland) number@sms.mymeteor.ie
Mero Mobile (Nepal) 977number@sms.spicenepal.com
MetroPCS number@mymetropcs.com
Movicom number@movimensaje.com.ar
Mobitel (Sri Lanka) number@sms.mobitel.lk
Movistar (Colombia) number@movistar.com.co
MTN (South Africa) number@sms.co.za
MTS (Canada) number@text.mtsmobility.com
Nextel (United States) number@messaging.nextel.com
Nextel (Argentina) TwoWay.11number@nextel.net.ar
Orange Polska (Poland) 9digit@orange.pl
Personal (Argentina) number@alertas.personal.com.ar
Plus GSM (Poland) +48number@text.plusgsm.pl
President’s Choice (Canada) number@txt.bell.ca
Qwest number@qwestmp.com
Rogers (Canada) number@pcs.rogers.com
SL Interactive (Australia) number@slinteractive.com.au
Sasktel (Canada) number@sms.sasktel.com
Setar Mobile email (Aruba) 297+number@mas.aw
Suncom number@tms.suncom.com
T-Mobile (Austria) number@sms.t-mobile.at
T-Mobile (UK) number@t-mobile.uk.net
Telus Mobility (Canada) number@msg.telus.com
Thumb Cellular number@sms.thumbcellular.com
Tigo (Formerly Ola) number@sms.tigo.com.co
Tracfone (prepaid) number@mmst5.tracfone.com
Unicel number@utext.com
Virgin Mobile (Canada) number@vmobile.ca
Vodacom (South Africa) number@voda.co.za
YCC number@sms.ycc.ru
MobiPCS (Hawaii only) number@mobipcs.net

If you are aware of any other free sms to email gateways please add it in comments. Also let us know whether you tried any of the above and your experience with it.

Tuesday, November 04, 2008

how to create a patch file! useful stiff

» How to create and apply a patch with Subversion Ariejan.net
t’s been a while since I posted something new on the use of Subversion. I’ve been working with the tool a lot, and I’ve found that patches are a great way to communicate code changes.

For those of you who are still learning, let me first explain what a patch is. A patch is a text file that contains the alteration that were made to a specific file. It includes the lines that have been removed and the lines that have been added. In short, if you have a ruby script and edited it, you could create a patch file, containing the changes you’ve made.

Why is this useful? You could check in your changes to your repository directly. True, but there are cases that you don’t have write access to the repository. For example, if you wanted to contribute code changes to Acts As Exportable, you should create a new ticket and attach a patch file. I will then review your changes before I apply them to the code and commit them to the repository.

So, how do you go about creating a patch file and how do you later apply it to your source?
Creating a patch file

Creating a patch file is really easy. First, check out the most recent version of the code from Subversion using the ‘checkout’ command.

Make your changes.

Then, in the root the project run the following command. It will store the patch file in your home directory. Make sure to give it meaningful filename.

svn diff > ~/fix_ugly_bug.diff

The file has the .diff extention, which stands for differences. This extension is recognized by many text editors and enables ’syntax highlighting’ automatically. (Give it a try with TextMate and you’ll know what I mean.)

You can send the diff-file to the author of the project by email, or you can create a ticket in Trac and add it as an attachment. The author will review the changes you made and possibly apply them to the source.
Applying a patch

You should never apply patches from any person other than your development team without first reading through the changes, apply them locally and test your application and then commit them. Patches can not only include bug fixes, but also alterations to create back doors or add other exploits to your code.

Always read through a patch before applying it!

When you are sure the patch will bring no harm to you, your application or your customers, go ahead an apply it to your working copy. Here, I assume that you downloaded the patch file we previously generated, and placed it in your home directory. In the root of your application now run:

patch -p0 -i ~/fix_ugly_bug.diff

This will apply all the changes in the patch to your source. The -p0 option makes sure that all files can be found correctly (this has to do with something called ‘zero directories’, I won’t get into that right now). The -i option tells ‘patch’ what to use as input, in this case the ‘fix_ugly_bug.diff’ file in your home directory.

With the code changes in place, run your tests and make sure everything works as expected. If it does, commit your changes and celebrate with a cup of coffee.

Please share the love of this post by bookmarking it, and sharing it with others. Thanks!

Sunday, November 02, 2008

Monday, October 27, 2008

How to setup Streaming for media - xbox 360, xbox, ps3, wii - movies, videos, music, pictures

How to set up a streaming media network | News | TechRadar UK
Software streaming

What if you only want to stream to a laptop or another PC? All you need is some software.

A dedicated media streamer is all well and good, but most of them cost in the the region of £100 to £200, which certainly doesn't make them the cheapest solution. If you want to view pictures or listen to audio on your laptop, or another PC in the house, then all you need to do is set up a shared folder, then browse to it on the network and open the files in the same way that you would do on the local machine.

As long as your network has the range, taking your laptop into the garden and plugging in some external speakers, is possibly the simplest way of getting music to your garden party. However, Windows networking is notoriously fickle, especially if you are mixing operating systems, so a dedicated software solution may be better.

Windows Media Player 11 is built into Windows Vista and can be downloaded for XP and once set up for sharing, WMP11 turns your PC with the media library into a media server. A Vista laptop will usually automatically detect a shared library and ask whether you want to connect to it. You can also share your iTunes library, and then access it from another PC or laptop running iTunes.

However, one of our favourite solutions for sharing media is Orb, which enables you to share music, video, pictures and documents, not just across your local network, but across the internet as well. It's a great way to listen to your music collection when you're at work, a friend's house or anywhere else that you can get a respectible internet connection.

Not only is Orb free, but you can use it to stream your files to the Xbox 360, Playstation 3, Nintendo Wii and even some handhelds, like the iPod touch and mobile phones. An alternative is TVersity, which will also work with any internet connected device that has a web browser that supports Flash.

Xbox 360

Got an Xbox 360? Then there's no need to buy yourself a separate media streamer. It's not just a games console you know.

While the Xbox 360 might have enjoyed phenomenal success as a games console, it has some other rather nifty tricks up its sleeve. Although the Xbox 360 has no built-in wireless, it does have an Ethernet connection, and there's a wireless adaptor available, although it does only use the 802.11g standard.

The Xbox 360 is designed to connect to a PC running Windows Media Center, and if you have a PC running that (either Vista, or Windows XP MCE) then the system works very well. The Xbox's interface is pretty much the same as Media Centre and it is slick and easy to use. If you don't have a PC running any form of media centre, then you can use Windows Media Player 11 instead.

Once sharing has been setup, the Xbox is able to connect and browse the folders in much the same way as any other media streamer. It's not nearly as good as the Media Centre Interface, and it has a nasty habit of failing to connect to our shared library, but when it works, it's pretty good. Since Microsoft updated the firmware, the Xbox is able to play Xvid and DivX content, but cannot play some other file formats. In this case, you can use a program called Tversity which can transcode incompatible file formats on the fly, into ones the Xbox can play.

Using Tversity, the Xbox can even stream live video feeds, which is a pretty unique feature. An alternative is to use Orb, which enables you to view almost any content you wish to share, by using folder sharing. You may not think that the Xbox is a natural contender for streaming audio and video to your TV and stereo, but after testing a large number of media streamers, we have to say the Xbox is actually one of the best devices we've ever used, especially when you decide to use it with Media Centre.

Playstation 3

Playstation 3 owners rejoice! You too can stream all your media with ease. Don't let the Microsoft fanboys have all the fun.

The last few months has seen a number of significant updates released for the PS3, all of which have increased the console's functionality. Like the Xbox 360, you can use Windows Media Player 11 to share your media and view it using the PS3. However, just as with the Xbox, Windows Media is a temperamental beast and can cause irrational anger and the urge to chuck the controller at the TV when it stops working properly.

In our expericene, you are much better off using Tversity, which also works with the Xbox. However, you will need to configure your router to make it work correctly, but it's a two minute job and is pretty simple. First of all download Tversity and leave all the settings at the defaults.

You may want to download FFDShow and any other additional codecs you use regularly. You'll need to change your Windows or third-party firewall settings to allow mediaserver.exe, which is found in the Tversity folder, access to the internet. Configure your router, by typing its IP address into your web browser's address bar, it's usually 192.168.0.1, but if it isn't, run ipconfig from a command prompt to determine your PC's IP address and use the first IP in that range for your router.

Within your router's control panel you find that you'll need to edit the section for virtual servers or port forwarding, and allow access to port 41952. In addition, just as with the Xbox, you can use Orb with the PS3, although instead of using the folder sharing, you use the built-in browser and navigate to mycast.orb.com.

Wednesday, October 08, 2008

how to escape lucenes search characters

Lucene: Escaping Special Characters | RealJenius.com
Thankfully, the necessary code to fix this isn't all that difficult. There are two scenarios at this point: 1.) You are using Lucene 1.9 or newer., or 2.) You are using Lucene 1.4 or prior

If you are using Lucene 1.9, the task of escaping user input for the query parser is very straightforward:

Lucene 1.9 Escaping

String userQuery = // ...
String escaped = QueryParser.escape(userQuery);
Query query = QueryParser.parse(escaped);
// ...

Thursday, October 02, 2008

best subversion merge guide

Domain of the Bored » Blog Archive » How to use svn merge
How to use svn merge

2006-10-29 23:49:10 UTC

A number of my fellow Adium developers have observed that svn merge is hard to use. I think the main problem is that the command is quite general (it can be put to several different uses) and the documentation not particularly clear. In order to promote better understanding of the svn merge command, here's what I know about it.

The command in a nutshell: svn merge is essentially svn diff $ARGS | patch -p0; the only real difference is that svn merge will handle addition, movement, and deletion of files, whereas patch won't.

This now having been stated up front, let's get into details.
Summary of tasks and how to do them

1. svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH]
2. svn merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]
3. svn merge [-c M | -r N:M] SOURCE[@REV] [WCPATH]

*

To apply changes from another directory (branch, tag, trunk): Use format #1 (or #2 if you have a checkout of it), supplying at least the first revision (N), and the second (M) if it is not HEAD. With format #1, you should not need to be using the same repository URL as the CWD for either one or both; you should be able to merge between two URLs, or between a single URL into your checkout of a different URL.
*

To travel back in time to a previous revision: Use format #3, with -rHEAD:THEN. For example, -rHEAD:42000.
*

To cherry-pick a changeset (apply only that changeset, not any others): Use format #3, with -cTHEN.
*

To undo a particular changeset without disturbing things that happened after it (hopefully): Use format #3, with -c -THEN. Note the minus sign. For example, to revert r42000, use “svn merge -c -42000 .”. You can also use the -r flag: “svn merge -r 42000:41999 .”. This may be advisable, for clarity reasons, if you have a script that must always revert a particular revision.

In both examples, note the “.” and the space before it. “.” means the current directory, and is used here as the SOURCE argument to format #3. It's a separate argument from the revision, so you need the space.
*

All formats apply their changes to the CWD by default. I don't know what happens if the CWD is not a WC. You can specify a different destination for the changes by specifying a different WCPATH (the last argument in all the formats above).
*

In format #3, the first path that it accepts is a URL or local WC path to the object you want to diff. (Remember my initial statement about svn merge being essentially svn diff | patch -p0.) The second path is a local WC path to the destination for the changes that are observed.

Updated 2007-07-12: Fixed error in traveling back in time (I had the revs backward); added cherry-picking technique.
svn help merge, in RTF

The “svn help merge” text is an invaluable summary of the command's operation, but it's plain-text, and therefore somewhat hard to read on a screen. To that end, I created an RTF version and printed it out, and decided to put it up here in case anyone else wants to do the same.

Sunday, September 21, 2008

dont eat the white rabbit candy

Nearly 53,000 Chinese children sick from milk - Yahoo! News
Over the weekend, the Chinese territory of Hong Kong reported the first known illness outside mainland China — a 3-year-old girl who developed kidney stones after drinking Chinese dairy products. She was discharged from the hospital, the Hong Kong government said.

Singapore said Sunday that it had found traces of melamine in another Chinese-made dairy product, milk-based White Rabbit brand candy.