Archive for August, 2008
Open Source Project Hosting and Management
Some suggestions for open source hosting and project management sites and software:
Amazon EC2 vs SoftLayer vs Slicehost
A while back I did a bit of research on how much it would cost to run a modest application on each of the following services:
- Amazon EC2 - elastic compute cloud, provides resizable compute capacity in the cloud.
- SoftLayer.com - cheaper alternative to Rackspace.com, various configurations of dedicated machines available.
- Slicehost.com - “Built for developers”, VPS via Xen virtualization software and RAID 10 (or 1+0) disks.
Although the comparison isn’t exactly apples to apples, it still gives you a rough idea.
| Feature | Amazon EC2 Small | Amazon EC2 Large | SoftLayer | Slicehost |
|---|---|---|---|---|
| RAM (GB) | 1.7 | 7.5 | 2 | 2 |
| Disk space (GB) | 160 | 850 | 250 | 80 |
| CPU Type | 1.2 GHz Xenon | 4×1.2GHZ | 2.4 GHz Xenon | n/a |
| Kernel | 32 bit | 64 bit | 64 bit | varies |
| Bandwidth (GB/month) | 2000 | 2000 | 2000 | 800 |
| CPU Cost (per month) | $73.20 | $292.80 | $179.00 | $140.00 |
| Bandwidth Cost ($/month) | $352.00 | $352.00 | $0.00 * | $0.00 * |
| Total Monthly Cost | $425.20 | $644.80 | $179.00 | $140.00 |
* Bandwidth overage fees: SoftLayer charges $0.10/GB, Slicehost charges $0.30/GB
Ruby One-Liner: Download from FTP server through a proxy
If you need to download a file or view an http page source through a proxy, something like the following one-liner will help:
require 'open-uri'
open("somefile.zip","wb").write(open("ftp://username:password@host:port/remotefile.zip", :proxy=>"http://proxyhost:proxyport").read)
SQL*Loader-704 Error
While using Oracle’s SQL Loader utility the other day, I ran into a subtlety which wasn’t obvious. Most of the documentation out there describes the userid param as just taking user/pass. But it actually can take the user/pass@SID form as well. If you get an exception message something like the following:
SQL*Loader-704: Internal error: ulconnect: OCIServerAttach [0]
ORA-12541: TNS:no listener
try qualifying your sqlldr command with .world:
so
sqlldr userid=user/pass@yourSID control=test.ctl
becomes
sqlldr userid=user/pass@yourSID.world control=test.ctl