picture-20.png
Back in 2007 I started using git after watching linus speak about it.

Currently there are 11 domains that I’m working on and I needed a quick way to create directories to store the apps, make a blank README file, and then create the remote repository. You may find this post helpful for setting up a remote git repository with gitosis.

create_to_git.rb

#!/usr/bin/env ruby
def run_subdir(command, subdir)
  `cd #{subdir};#{command}`
end
subdir = ARGV[0]
`mkdir #{subdir}`
run_subdir("git init", subdir)
run_subdir("git remote add origin git@server.yourdomain.com:#{subdir}.git", subdir)
run_subdir("touch README.txt",subdir)
run_subdir("git add .", subdir)
run_subdir('git commit -m "added blank readme"', subdir)
run_subdir("git push origin master:refs/heads/master", subdir)

Here is my Capistrano deploy.rb thats used to deploy to a remote server from one of my git repositories. The app is a simple merb app without a DB.

deploy.rb

set :application, "yourappname"
set :scm, :git
set :repository,  "/home/git/repositories/yourappname.git"
set :deploy_to, "/www/apps/#{application}"

#put the user you use to do deployments here
set :user, "deploy"

role :app, "server.yourdomain.com"
role :web, "server.yourdomain.com"
role :db,  "server.yourdomain.com", :primary => true

#no mongrel cluster in this app
#set :mongrel_conf, "#{deploy_to}/current/config/mongrel_cluster.yml"
 set :runner, nil

task :after_update_code do
  # no need for a database in this app
  #  run "rm #{current_release}/config/database.yml"
  #  run "ln -s #{deploy_to}/#{shared_dir}/config/database.yml #{current_release}/config/database.yml"
end

# I added the task below because the cleanup task was trying to sudo which I didn't need
desc <<-DESC
  Clean up old releases without sudo. By default, the last 5 releases are kept on each \
  server (though you can change this with the keep_releases variable). All \
  other deployed revisions are removed from the servers. By default, this \
  will use sudo to clean up the old releases, but if sudo is not available \
  for your environment, set the :use_sudo variable to false instead.
DESC
task :cleanup, :except => { :no_release => true } do
  count = fetch(:keep_releases, 5).to_i
  if count >= releases.length
    logger.important "no old releases to clean up"
  else
    logger.info "keeping #{count} of #{releases.length} deployed releases"

    directories = (releases - releases.last(count)).map { |release|
      File.join(releases_path, release) }.join(" ")

    run "rm -rf #{directories}", :via => run_method
  end
end

namespace :deploy do
  desc "Merb it up"
  task :restart do
    #restart_mongrel_cluster
    run "cd #{current_path};merb -k 9090"
    # run "cd #{current_path};env EVENT=1 merb -e production -c 1" # for evented mongrel
    run "cd #{current_path};merb -e production -c 1 -p 9090" # plain old mongrel
    #run "mongrel_rails cluster::restart -C #{mongrel_conf}"
  end
end

Now a directory called websites is on my Mac Pro and MacBook, in that I have 11 subdirectories where I can do most site changes without logging on to the remote DB/Application/Web server. When you want to run 100 unique sites, everything possible must be automated.

{ 0 comments }

If you ever need to get past some firewall or proxy blocking MySpace or any other site, checkout my new site ClearMyPath.com. Using this simple web app, you can bypass screens like the one below. Another plus is that your browsing also becomes anonymous to the sites you are visiting because your IP address is hidden.

myspace_blocked.gif

This site launch comes 4 days after my last site IsWebsiteDown.com.

{ 1 comment }

My Crazy Neighbour Tried to Attack Me

by dan on March 18, 2008


This lady was screaming because she was woken up. Since I had my camera out from filming some spring break stuff the night before I decided to antagonize her a bit.If you look in her hand, you will see the pepper spray she was trying to get me with.

{ 0 comments }

Launch of IsWebSiteDown.com

by dan on March 15, 2008

What do you do when you see a screen like this?

Page not Found Firefox

Over the weekend I made a new site called IsWebsiteDown.com that lets you see if there is a problem with a website or your connection to that site. A toolbar widget for one click checking of sites is available. No install is necessary, you just click and drag a link on the homepage of IsWebsiteDown to your browser’s toolbar.

The site was build in ruby with the merb framework in just a few hours. The design needs work, and I’m working on a few new features. In the next few months, I hope to launch more small sites as a foundation for launching some larger projects.

-dan

{ 0 comments }

Wordpress Ping List

by dan on March 14, 2008

In WordPress the default ping list is small but can easily be changed by going to Options > Writing > Update Services. A ping lets other services like searching engines know you have added new content to a website.

I ping the following popular ping services:

http://api.feedster.com/ping
http://api.moreover.com/RPC2
http://api.my.yahoo.com/RPC2
http://xping.pubsub.com/ping/
http://ping.blo.gs/
http://ping.feedburner.com
http://ping.syndic8.com/xmlrpc.php
http://ping.weblogalot.com/rpc.php
http://rpc.blogrolling.com/pinger/
http://rpc.icerocket.com:10080/
http://rpc.newsgator.com/
http://rpc.technorati.com/rpc/ping
http://rpc.weblogs.com/RPC2
http://topicexchange.com/RPC2
http://www.blogdigger.com/RPC2
http://www.blogstreet.com/xrbin/xmlrpc.cgi
http://www.newsisfree.com/RPCCloud
http://ping.weblogs.se/
http://blogmatcher.com/u.php
http://coreblog.org/ping/
http://www.blogpeople.net/servlet/weblogUpdates
http://bulkfeeds.net/rpc
http://trackback.bakeinu.jp/bakeping.php
http://ping.myblog.jp
http://ping.bitacoras.com
http://ping.bloggers.jp/rpc/
http://ping.blogmura.jp/rpc/
http://xmlrpc.blogg.de
http://1470.net/api/ping
http://bblog.com/ping.php
http://blog.goo.ne.jp/XMLRPC

If you were curious, here is what the HTTP Request Header and the XML Message looks like for a ping:

xml / http request header for ping

{ 0 comments }

Wordpress Performance is Garbage!

by dan on March 14, 2008

apache benchmark on WP

I just switched away from Mephisto for my blog (Ruby on Rails based) to WordPress but found the default install horifically slow. I switched to WP because its popular (powering 1.8% of the internet) and its coded in PHP instead of Perl (Movable Type).

apache benchmark on WP-Super-Cache

The WordPress slowness can be fixed by installing WP-Super-Cache. The initial install yielded only 16.45 requests/second (on a very powerful server). After installing WP-Super-Cache performance jumps to 1587.07 requests/second.

-dan

{ 0 comments }