Technical Tidbits
A collection of code snippets of sometimes rarely used, or perhaps difficult to remember tasks, commands and code snippets.
Deleting Git Branches
Delete the "demo_maintenance" branch on the "origin" remote server.
git push origin :demo_maintenance # deletes the remote branch git branch -d demo_maintenance # deletes the local branch
If you need to 'force' the delete on your local machine, use -D
git branch -D demo_maintenance # deletes the local branch
Checking Out New Git Branches
First locat the branches, then checkout the one you want (e.g. origin/demo1)
git branch -r git checkout --track -b demo1 origin/demo1
Undo a local commit
If you committing a git change locally, you can undo it using the following command:
git reset --soft HEAD^
Undo the last pushed commited
If you already committed the change, then you need to do hard resets:
git reset --hard HEAD~1 git push -f
Create a public / private key
ssh-keygen -t dsa
Clear Your Local DNS Cache
dscacheutil -flushcache
On newer Macs, somethings this works too.
sudo killall -HUP mDNSResponder
Dealing with CSV files and MS Excel (.xls / .xlsx)
When dealing with CSV, you need to get your encodings correct.Excel will typically export to ISO-8859-1. This is not good, and should be converted to UTF-8 to support non english files.
To check the encoding of a file
file -I original_file.csv
To convert between encodings (a few common examples)
iconv --from-code=ISO-8859-1 --to-code=UTF-8 original_file.csv > new_file.utf8.csv iconv --from-code=MacRoman --to-code=UTF-8 original_file.csv > new_file.utf8.csv
When exporting files to be read within Excel, you will need to convert the CSV based on the target platform.
For MAC
iconv --from-code=UTF-8 --to-code=MacRoman downloaded_file.csv > downloaded_file_mac.excel.csv
For PC (untested)
iconv --from-code=UTF-8 --to-code=Windows-1252 downloaded_file.csv > downloaded_file_windows.excel.csv
Run A Script Remotely Using SSH
For simple scripts, just pass them via a quoted string.
ssh name@server.com 'ls -la'
For more complicated scripts, put them in a local file and stream them to the server.
ssh name@server.com 'bash -s' < local_script.sh
Enable FTP on Mac OS X Lion
# enable the ftp server sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist #disable the server when you are done sudo -s launchctl unload -w /System/Library/LaunchDaemons/ftp.plist
Find text in files within a directory
grep -r "some words reward" /path/tp/look/*
Find large files on a Linux / Mac OS X machine
The following should owrk on your Mac OS X
sudo find / -type f -size +20000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
For a linux (tested on Ubuntu), the $9 most liley needs to be an $8
sudo find / -type f -size +20000k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
Which Port is a Process Running On
Find which process is listening on a certain port
lsof -i :12345 # for port 12345
Fixing Mount Issues When Upgrading to From Ubuntu 8.04
The following will get you SSH access back
mount -n -o remount,rw / mkdir /var/run/network /etc/init.d/networking restart mkdir /dev/pts mount /dev/pts /etc/init.d/ssh restart
Next to start-up the services you care about
sudo /etc/init.d/apache2 start sudo /etc/init.d/cron start sudo service mysql start
Destroy All RabbitMQ Queues
Should only be done on a dev machine:
rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl start_app
Tar / Untar a file
Compress a directly into a tar.gz file:
tar cvzf myapp.tar.gz myapp/
Uncompress that file back into a directory:
tar zxfv myapp.tar.gz
Uncompress a gz zip (no tar):
gzcat x.txt.gz >x.txt gunzip -c x.txt.gz >x.txt
Clean / Clear / Delete Rails Databse Sessions
Don't forget to clear your sessions every once in a while
rake db:sessions:clear
See how much memory something consumes in PHP
$start_time = microtime(true);
$start_memory = memory_get_usage();
// INSERT CODE HERE
$end_memory = memory_get_usage();
$end_time = microtime(true);
print_r(array(
'memory (Mb)' => ($end_memory - $start_memory) / (1024 * 1024),
'time (s)' => $end_time - $start_time
));
Memcache in PHP
$memcache = new Memcache();
$memcache->connect('localhost', 11211);
function doSomethingSlow() {
sleep(5);
return "foobar";
}
$name = $memcache->get('name');
if (!$name)
{
$name = doSomethingSlow();
$memcache->set('name',$name);
}
echo $name;
Scratch The Card Below
A simple implementation of a scratch card program using JQuery.
Delete Rails sessions
Remove all old sessions, and then optimize the table.
DELETE FROM sessions WHERE updated_at < DATE_SUB(NOW(), INTERVAL 1 DAY); optimize table sessions;
Changing a YAML file in Ruby
require "yaml"
File.open("./example.yml", 'w') {|f| f.write("
workbook: 5
sheet: 10
header_index: 5
headers:
- hello
- hi
- bye
") }
data = YAML.load_file("./example.yml")
puts "OLD DATA: #{data}"
data["headers"] = [ "Hello", "Hi", "Bye" ]
File.open("./example.yml", 'w') {|f| f.write(data.to_yaml) }
data = YAML.load_file("./example.yml")
puts "NEW DATA: #{data}"
Execute a single MySQL statement from command line
mysql -u myname -pmypassword -D mydb -e "show tables"
Granting access to mysql users
SHOW GRANTS FOR deployer # ALL ACCESS GRANT ALL ON myshop.* TO 'deployer'@'%' IDENTIFIED BY 'pass' ; # SELECT ONLY, and filtered by IP GRANT SELECT ON myshop.* TO deployer@'192.168.1.%' IDENTIFIED BY 'pass'; # Or by domain name GRANT SELECT ON myshop.* TO deployer@'webapp.myserver.com' IDENTIFIED BY 'pass'; FLUSH PRIVILEGES;
Removing access to mysql users
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'deployer'@'%';
Kill a Defunct Process
# Locate defunct processes ps -A | grep defunct # Get the parent ID (UID PID PPID ...) ps -ef | grep defunct | more # for example... deployer 2707 2698 0 2012 ? 00:00:03 [unicorn_rails]deployer 2710 2698 0 2012 ? 00:00:04 [unicorn_rails] # Kill the parent PID (PPID) kill -9 2698
Delete extra properties from a file / directory
Downloaded ZIP files are typically quarantined on Mac OSX, so you might run into forbidden issues when extracting something like a wordpress site.
$ xattr myapp.zip com.apple.quarantine xattr -d com.apple.quarantine myapp.zip # Or, if you already extracted it xattr -rd com.apple.quarantine ./myapp
Faster Macbook Pro Wakeups
A longer discussion at ewal.net.
sudo pmset -a standbydelay 86400 # only standby after 24 hours
Install older version of HTML to PDF (wkhtmltopdf) using Homebrew on a Mac
Bug with current version that will cause the process to not exit properly:
brew uninstall wkhtmltopdf
cd /usr/local/Library/Formula/
git checkout 6e2d550 /usr/local/Library/Formula/wkhtmltopdf.rb
brew install wkhtmltopdf
wkhtmltopdf --version | grep 0.9.9
Ticket described here. Thank you to wearepandr