DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

Snippets

  • submit to reddit

Recent Snippets

                    If you have too many files in a directory in Linux then 'rm' will not work (at least on older distros...maybe this has been fixed on newer distros).  This snippet uses find in order to remove all files in the specified directory.  Naturally you can change the value of '*' to limit the files you want to delete to particular names.

find $directory -name '*' -exec rm {} \;
                
                    
$new_array = explode('.sep.', implode('.sep', $old_array));
                
                    
defaults write com.apple.frameworks.diskimages skip-verify true
                
                    Adding these two files to your rails project will allow you to start a lighttpd server like you would start webrick. e.g.: './script/lighttpd' or './script/lighttpd -d -e production'

This is ./script/lighttpd:

#!/usr/local/bin/ruby

require 'optparse'

OPTIONS = {
  :port        => 8000,
  :ip          => "0.0.0.0",
  :daemon      => false,
  :environment => "development",
  :app_name    => "myapp",
}

ARGV.options do |opts|
  script_name = File.basename($0)
  opts.banner = "Usage: ruby #{script_name} [options]"

  opts.separator ""

  opts.on("-p", "--port=port", Integer,
          "Runs Rails on the specified port.",
          "Default: 3000") { |OPTIONS[:port]| }
  opts.on("-b", "--binding=ip", String,
          "Binds Rails to the specified ip.",
          "Default: 0.0.0.0") { |OPTIONS[:ip]| }
  opts.on("-e", "--environment=name", String,
          "Specifies the environment to run this server under (test/development/production).",
          "Default: development") { |OPTIONS[:environment]| }
  opts.on("-a", "--app-name=name", String,
          "Specifies the application name.",
          "Default: rails_app") { |OPTIONS[:environment]| }
  opts.on("-d", "--daemon",
          "Make lighttpd / Rails run as a Daemon (only works if fork is available -- meaning on *nix)."
          ) { OPTIONS[:daemon] = true }

  opts.separator ""

  opts.on("-h", "--help",
          "Show this help message.") { puts opts; exit }

  opts.parse!
end

ENV["RAILS_ENV"] = OPTIONS[:environment]
RAILS_ROOT = File.dirname(__FILE__) + "/../"
LIGHTTPD_CONF_FILE = "/tmp/#{OPTIONS[:app_name]}_lighttpd.conf"

File.open("#{RAILS_ROOT}config/lighttpd.conf", "r") do |file|
        conf = file.read
  conf.gsub!(/PORT/, OPTIONS[:port].to_s)
  conf.gsub!(/BINDING/, OPTIONS[:ip])
  conf.gsub!(/RAILS_ROOT/, File.expand_path(RAILS_ROOT))
  conf.gsub!(/APP_NAME/, OPTIONS[:app_name])
  File.open(LIGHTTPD_CONF_FILE, "w") { |output| output.write(conf) }
end

CMD = "lighttpd -f #{LIGHTTPD_CONF_FILE}" 
CMD << " -D" unless OPTIONS[:daemon]
puts CMD
`#{CMD}`

And this is ./config/lighttpd.conf

server.port                = PORT
server.bind                = "BINDING"

server.pid-file             = "/tmp/APP_NAME_lighttpd.pid"
#server.event-handler = "freebsd-kqueue" 

server.modules = ( "mod_rewrite", "mod_redirect", "mod_access", "mod_fastcgi", "mod_accesslog" )

server.document-root        = "RAILS_ROOT/public/"
server.indexfiles           = ( "dispatch.fcgi", "index.html" )
accesslog.filename          = "RAILS_ROOT/log/lighttpd_access.log"
server.errorlog             = "RAILS_ROOT/log/lighttpd_error.log"
server.error-handler-404 = "/dispatch.fcgi"


#### fastcgi module
## read fastcgi.txt for more info
fastcgi.server =  (
  ".fcgi" => (
    "APP_NAME" => ( 
      "socket" => "/tmp/APP_NAME1.socket",
      "bin-path" => "RAILS_ROOT/public/dispatch.fcgi",
      "min-procs" => 1,
      "max_procs" => 2
    )
  )
)

# mimetype mapping
mimetype.assign             = (
  ".rpm"          =>      "application/x-rpm",
  ".pdf"          =>      "application/pdf",
  ".sig"          =>      "application/pgp-signature",
  ".spl"          =>      "application/futuresplash",
  ".class"        =>      "application/octet-stream",
  ".ps"           =>      "application/postscript",
  ".torrent"      =>      "application/x-bittorrent",
  ".dvi"          =>      "application/x-dvi",
  ".gz"           =>      "application/x-gzip",
  ".pac"          =>      "application/x-ns-proxy-autoconfig",
  ".swf"          =>      "application/x-shockwave-flash",
  ".tar.gz"       =>      "application/x-tgz",
  ".tgz"          =>      "application/x-tgz",
  ".tar"          =>      "application/x-tar",
  ".zip"          =>      "application/zip",
  ".mp3"          =>      "audio/mpeg",
  ".m3u"          =>      "audio/x-mpegurl",
  ".wma"          =>      "audio/x-ms-wma",
  ".wax"          =>      "audio/x-ms-wax",
  ".ogg"          =>      "audio/x-wav",
  ".wav"          =>      "audio/x-wav",
  ".gif"          =>      "image/gif",
  ".jpg"          =>      "image/jpeg",
  ".jpeg"         =>      "image/jpeg",
  ".png"          =>      "image/png",
  ".xbm"          =>      "image/x-xbitmap",
  ".xpm"          =>      "image/x-xpixmap",
  ".xwd"          =>      "image/x-xwindowdump",
  ".css"          =>      "text/css",
  ".html"         =>      "text/html",
  ".htm"          =>      "text/html",
  ".js"           =>      "text/javascript",
  ".asc"          =>      "text/plain",
  ".c"            =>      "text/plain",
  ".conf"         =>      "text/plain",
  ".text"         =>      "text/plain",
  ".txt"          =>      "text/plain",
  ".dtd"          =>      "text/xml",
  ".xml"          =>      "text/xml",
  ".mpeg"         =>      "video/mpeg",
  ".mpg"          =>      "video/mpeg",
  ".mov"          =>      "video/quicktime",
  ".qt"           =>      "video/quicktime",
  ".avi"          =>      "video/x-msvideo",
  ".asf"          =>      "video/x-ms-asf",
  ".asx"          =>      "video/x-ms-asf",
  ".wmv"          =>      "video/x-ms-wmv",
  ".bz2"          =>      "application/x-bzip",
  ".tbz"          =>      "application/x-bzip-compressed-tar",
  ".tar.bz2"      =>      "application/x-bzip-compressed-tar"
 )
                
                    def bottle(x)
  case x
  when 0 then "no more bottles"
  when 1 then "1 bottle"
  else        "#{x} bottles"
  end + " of beer"
end

99.downto(1) do |i|
  puts <<T
#{bottle(i)} on the wall, #{bottle(i)},
take one down, pass it around,
#{bottle(i - 1)} on the wall.\n
T
end
                
                    ElementTree is becoming python's standard XML framework.
It also supports processing data as it coming/loading.
import cElementTree

for event, elem in cElementTree.iterparse(file):
    if elem.tag == "record":
        ... process record element ...
        elem.clear()
                
                    
<script language='javascript'>
alert('hello world')
</script>
                
                    
javascript:q = "" + (window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : document.selection.createRange().text); if (!q) q = prompt("Enter a phrase:", ""); if (q!=null) location="http://dict.leo.org/?search=" + escape(q).replace(/ /g, "+"); void 0
                
                    Absurdly simple but utilitarian function returns a numeric array of associative arrays containing an entire result set.

function mysql_fetch_all($result) {
    $all = array();
    while ($all[] = mysql_fetch_assoc($result)) {}
    return $all;
}