Protect .svn directories using htaccess
// should be done server-wide if you can (another snippet)
<IfModule mod_rewrite.c> RewriteRule ^(.*/)?\.svn/ - [F,L] ErrorDocument 403 "Access Forbidden" </IfModule>
2760 users tagging and storing useful source code snippets
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 (or not, you can keep them private!)
Jamie Wilkinson http://tramchase.com
<IfModule mod_rewrite.c> RewriteRule ^(.*/)?\.svn/ - [F,L] ErrorDocument 403 "Access Forbidden" </IfModule>
<DirectoryMatch "^/.*/(\.svn|CVS)/"> Order deny,allow Deny from all </DirectoryMatch>
agent = WWW::Mechanize.new agent.get("http://btjunkie.org/") links = agent.page.search('.tor_details tr a') hrefs = links.map { |m| m['href'] }.select { |u| u =~ /\.torrent$/ } # just links ending in .torrent FileUtils.mkdir_p('btjunkie-torrents') # keep it neat hrefs.each { |torrent| filename = "btjunkie-torrents/#{torrent[0].split('/')[-2]}" puts "Saving #{torrent} as #{filename}" agent.get(torrent).save_as(filename) }
agent = WWW::Mechanize.new agent.get("http://myspace.com/graffitiresearchlab") links = agent.page.search('.friendSpace img') # found w/ firebug FileUtils.mkdir_p 'myspace-images' # make the images dir links.each_with_index { |link, index| url = link['src'] puts "Saving thumbnail #{url}" agent.get(url).save_as("myspace-images/top_friend#{index}_#{File.basename url}") }
agent = WWW::Mechanize.new url = "http://gdata.youtube.com/feeds/api/standardfeeds/most_viewed" # all time page = agent.get(url) # parse again w/ Hpcricot for some XML convenience doc = Hpricot.parse(page.body) # pp (doc/:entry) # like "search"; cool division overload images = (doc/'media:thumbnail') # use strings instead of symbols for namespaces FileUtils.mkdir_p 'youtube-images' # make the images dir urls = images.map { |i| i[:url] } urls.each_with_index do |file,index| puts "Saving image #{file}" agent.get(file).save_as("youtube-images/vid#{index}_#{File.basename file}") end
jQuery(’.class’).click(function(){//whatever});
jQuery(’.class’).bind(‘click’, function(){//whatever});
jQuery(’.class’).unbind(‘click’, function(){//});
jQuery(’.class’).bind(‘click.namespace’, function(){//}); jQuery(’.class’).unbind(‘click.namespace’);
jQuery(’.class’)unbind(‘click.namespace’).bind(‘click.namespace’, function(){//});
jQuery.ajaxSetup({ ‘beforeSend’: function(xhr) {xhr.setRequestHeader(“Accept”, “text/javascript”)} })
require 'rss/2.0' require 'open-uri' class RssReader def parseFeed (url, length) feed_url = url output = ""; open(feed_url) do |http| response = http.read result = RSS::Parser.parse(response, false) output = "<span class=\"feedTitle\">#{result.channel.title}</span><br /><ul>" result.items.each_with_index do |item, i| output += "<li><a href=\"#{item.link}\">#{item.title}</a></li>" if ++i < length end output += "</ul>" end return output end end
class Something < ActiveRecord::Base # Validations validate :validate_state_change # State Machine States acts_as_state_machine :initial => :new state :new state :enabled, :after => :after_enabled state :disabled, :after => :after_disabled # State Machine Events event :enabled do transitions :from => :new, :to => :enabled transitions :from => :disabled, :to => :enabled end event :disabled do transitions :from => :new, :to => :disabled transitions :from => :enabled, :to => :disabled end # Instance Methods def validate_state_change return if new_record? old = self.class.find(id) old_state = old.state new_state = self.state self.state = old_state if old_state != new_state begin if self.method("#{new_state}!").call != true errors.add(:state, "cannot transition from #{old_state} to #{new_state}") end rescue NameError end self.state = new_state end end end
javascript:var d=document,f='http://www.facebook.com/share',l=d.location,e=encodeURIComponent,p='.php?src=bm&v=4&i=1190041327&u='+e(l.href)+'&t='+e(d.title);1;try{if(!/^(.*\.)?facebook\.[^.]*$/.test(l.host))throw(0);share_internal_bookmarklet(p)}catch(z){a=function(){if(!window.open(f+'r'+p,'sharer','toolbar=0,status=0,resizable=0,width=626,height=436'))l.href=f+p};if(/Firefox/.test(navigator.userAgent))setTimeout(a,0);else{a()}}void(0) javascript:location.href='http://rickrolldb.com/entries/new?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title);
<h2>Join the XYZ list</h2> <form method="post" action="SERVER/mailman/subscribe/LISTNAME"> <p> Your E-mail address: <input type="text" name="email" size="30" value=""><br /> Your Name (optional): <input type="text" name="fullname" size="30" value=""><br /> </p> <p>You may enter a privacy password below. This provides only mild security, but should<br /> prevent others from messing with your subscription. <b>Do not use a valuable password</b> as it<br /> will occasionally be emailed back to you in cleartext.</p> <p>If you choose not to enter a password, one will be automatically generated for you, and it will<br /> be sent to you once you've confirmed your subscription. You can always request a mail-back<br /> of your password when you edit your personal options.</p> <p> Password choice: <input type="password" name="pw" size="15"><br /> Confirm Password: <input type="password" name="pw-conf" size="15"> </p> <p> Would you like to receive list mail batched in a daily digest? (You may choose NoMail after you join.)<br /> <input type="radio" name="digest" value="0" checked> No <input type="radio" name="digest" value="1"> Yes <br /> </p> <p><input type="submit" name="email-button" value="Subscribe"></p> </form>
for t in $(mysql --batch --column-names=false -e "show tables" mydbname |grep -v "exclude_this"); do mysql -e "alter table $t type=InnoDB" mydbname; done
CREATE TABLE new_table AS SELECT * FROM old_table WHERE 1 GROUP BY [COLUMN TO remove duplicates BY]; DROP TABLE old_table; RENAME TABLE new_table TO old_table;
# load production data, still needs some polish # based on code from http://push.cx/2007/capistrano-task-to-load-production-data # cap 2.0 compatible # exec is being weird, had to end w/ a syscall :\ any ideas? desc "Load production data into development database" task :load_production_data, :roles => :db, :only => { :primary => true } do require 'yaml' ['config/database.yml'].each do |file| database = YAML::load_file(file) filename = "dump.#{Time.now.strftime '%Y-%m-%d_%H:%M:%S'}.sql.gz" # on_rollback { delete "/tmp/#{filename}" } # run "mysqldump -u #{database['production']['username']} --password=#{database['production']['password']} #{database['production']['database']} > /tmp/#{filename}" do |channel, stream, data| run "mysqldump -h #{database['production']['host']} -u #{database['production']['username']} --password=#{database['production']['password']} #{database['production']['database']} | gzip > /tmp/#{filename}" do |channel, stream, data| puts data end get "/tmp/#{filename}", filename # exec "/tmp/#{filename}" password = database['development']['password'].nil? ? '' : "--password=#{database['development']['password']}" # FIXME pass shows up in process list, do not use in shared hosting!!! Use a .my.cnf instead # FIXME exec and run w/ localhost as host not working :\ # exec "mysql -u #{database['development']['username']} #{password} #{database['development']['database']} < #{filename}; rm -f #{filename}" `gunzip -c #{filename} | mysql -u #{database['development']['username']} #{password} #{database['development']['database']} && rm -f gunzip #{filename}` end end
function get_remote_file_size($url, $readable = true){ $parsed = parse_url($url); $host = $parsed["host"]; $fp = @fsockopen($host, 80, $errno, $errstr, 20); if(!$fp) return false; else { @fputs($fp, "HEAD $url HTTP/1.1\r\n"); @fputs($fp, "HOST: $host\r\n"); @fputs($fp, "Connection: close\r\n\r\n"); $headers = ""; while(!@feof($fp))$headers .= @fgets ($fp, 128); } @fclose ($fp); $return = false; $arr_headers = explode("\n", $headers); foreach($arr_headers as $header) { // follow redirect $s = 'Location: '; if(substr(strtolower ($header), 0, strlen($s)) == strtolower($s)) { $url = trim(substr($header, strlen($s))); return get_remote_file_size($url, $readable); } // parse for content length $s = "Content-Length: "; if(substr(strtolower ($header), 0, strlen($s)) == strtolower($s)) { $return = trim(substr($header, strlen($s))); break; } } if($return && $readable) { $size = round($return / 1024, 2); $sz = "KB"; // Size In KB if ($size > 1024) { $size = round($size / 1024, 2); $sz = "MB"; // Size in MB } $return = "$size $sz"; } return $return; }
def render(*args) args.first[:layout] = false if request.xhr? and args.first[:layout].nil? super end
/********* helpers *********/ .floatRight { float: right; } .floatLeft { float: left; } .right { text-align: right; } .left { text-align: left; } .center { text-align: center; } .clear, .clearer { clear: both; } .block { display: block; }
tell application "System Events" to (name of processes) contains "iTunes"
tell application "System Events" to (creator type of processes) contains "InDn"
tell application "Finder" to creator type of (selection as alias)
#!/bin/sh # urchin.js local caching by Jamie Wilkinson <http://tramchase.com> # config DIR=/directory/where/you/want/js # work URCHIN=$DIR/urchin.js wget http://www.google-analytics.com/urchin.js -O $URCHIN.tmp if [ -s $URCHIN.tmp ]; then rm $URCHIN mv $URCHIN.tmp $URCHIN chmod 644 $URCHIN fi exit 0;
find ~ -type d -depth 1 | while read filename; do # ls ~ | while read filename; do echo $filename # other stuff done