<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Shell on Bridge</title><link>https://quarternotecoda.com/tags/shell/</link><description>Recent content in Shell on Bridge</description><generator>Hugo -- 0.160.1</generator><language>en-us</language><lastBuildDate>Thu, 06 Jun 2013 00:00:00 +0000</lastBuildDate><atom:link href="https://quarternotecoda.com/tags/shell/index.xml" rel="self" type="application/rss+xml"/><item><title>Quick Script for TMUX pair sessions</title><link>https://quarternotecoda.com/posts/2013-06-06-quick-script-for-tmux-pair-sessions/</link><pubDate>Thu, 06 Jun 2013 00:00:00 +0000</pubDate><guid>https://quarternotecoda.com/posts/2013-06-06-quick-script-for-tmux-pair-sessions/</guid><description>&lt;p&gt;&lt;strong&gt;Update 2013-06-14:&lt;/strong&gt; &lt;em&gt;&lt;a href="https://gist.github.com/marksim/5785406"&gt;Improved the script&lt;/a&gt;, removing the github-auth dependency, some of the OS X dependencies, and added firewall punch-through (user specific) and ssh-command with external IP auto-copy to clipboard&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I wanted a quick and easy way to set up a new TMUX session with a brand new pair, so I came up with this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;#!/bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gh-auth add &lt;span style="color:#bb60d5"&gt;$1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo cp ~/.ssh/authorized_keys /Users/pair/.ssh/authorized_keys
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo chown pair:staff /Users/pair/.ssh/authorized_keys
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gh-auth remove &lt;span style="color:#bb60d5"&gt;$1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tmux -S /tmp/pairing new -ds pairing &lt;span style="color:#666"&gt;&amp;amp;&amp;amp;&lt;/span&gt; chgrp staff /tmp/pairing &lt;span style="color:#666"&gt;&amp;amp;&amp;amp;&lt;/span&gt; tmux -S /tmp/pairing attach -t pairing
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo rm -f /Users/pair/.ssh/authorized_keys
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That will download ssh keys, create a tmux session, and attach to it. When you&amp;rsquo;re done it will cleanup so the other person has no access to your box.&lt;/p&gt;</description></item><item><title>Git Bisect For Great Justice</title><link>https://quarternotecoda.com/posts/2012-04-12-git-bisect-for-great-justice/</link><pubDate>Thu, 12 Apr 2012 00:00:00 +0000</pubDate><guid>https://quarternotecoda.com/posts/2012-04-12-git-bisect-for-great-justice/</guid><description>&lt;p&gt;About a week ago, we had an elusive error that appeared when we deployed our latest app to staging. Suddenly, any submission resulted in a &amp;ldquo;Stack trace too deep&amp;rdquo; error that gave no meaningful way to determine where the issue was coming from. We were stuck for a couple of days, but then I was reminded of &lt;code&gt;git bisect&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git bisect&lt;/code&gt; is a great way to trace down problems to a specific commit for purposes of isolation or blame (though I&amp;rsquo;d suggest against the latter). Like you&amp;rsquo;d expect from a programmer, it even searches efficiently, using a binary search, hence bisect.&lt;/p&gt;</description></item><item><title>Installing memcached 1.4.4 on Mac OS X 10.6 Snow Leopard</title><link>https://quarternotecoda.com/posts/2009-12-02-installing-memcached-1-4-4-on-mac-os-x-10-6-snow-leopard/</link><pubDate>Wed, 02 Dec 2009 00:00:00 +0000</pubDate><guid>https://quarternotecoda.com/posts/2009-12-02-installing-memcached-1-4-4-on-mac-os-x-10-6-snow-leopard/</guid><description>&lt;p&gt;&lt;a href="https://wincent.com/wiki/Installing_memcached_1.4.1_on_Mac_OS_X_10.6_Snow_Leopard"&gt;Wincent.com has a great article on how to install memcached 1.4.1 on Mac OS X 10.6 Snow Leopard&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now that memcached 1.4.4 is out, I thought it would be nice to update it:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -O http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar xzvf libevent-1.4.13-stable.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;cd&lt;/span&gt; libevent-1.4.13-stable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;./configure
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make verify
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo make install
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -O http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar xzvf memcached-1.4.4.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;cd&lt;/span&gt; memcached-1.4.4
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;./configure
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make &lt;span style="color:#007020"&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo make install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;#!/usr/bin/env ruby&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;require&lt;/span&gt; &lt;span style="color:#4070a0"&gt;&amp;#39;pathname&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# memcached requires an absolute path for the -P switch&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;root &lt;span style="color:#666"&gt;=&lt;/span&gt; (&lt;span style="color:#60add5"&gt;Pathname&lt;/span&gt;&lt;span style="color:#666"&gt;.&lt;/span&gt;new(&lt;span style="color:#007020"&gt;__FILE__&lt;/span&gt;)&lt;span style="color:#666"&gt;.&lt;/span&gt;dirname &lt;span style="color:#666"&gt;+&lt;/span&gt; &lt;span style="color:#4070a0"&gt;&amp;#39;..&amp;#39;&lt;/span&gt;)&lt;span style="color:#666"&gt;.&lt;/span&gt;realpath
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pidfile &lt;span style="color:#666"&gt;=&lt;/span&gt; root &lt;span style="color:#666"&gt;+&lt;/span&gt; &lt;span style="color:#4070a0"&gt;&amp;#39;tmp&amp;#39;&lt;/span&gt; &lt;span style="color:#666"&gt;+&lt;/span&gt; &lt;span style="color:#4070a0"&gt;&amp;#39;memcached.pid&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;if&lt;/span&gt; &lt;span style="color:#007020;font-weight:bold"&gt;not&lt;/span&gt; pidfile&lt;span style="color:#666"&gt;.&lt;/span&gt;exist?
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#007020"&gt;puts&lt;/span&gt; &lt;span style="color:#4070a0"&gt;&amp;#34;memcached not running: starting&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#007020"&gt;system&lt;/span&gt; &lt;span style="color:#4070a0"&gt;&amp;#39;memcached&amp;#39;&lt;/span&gt;, &lt;span style="color:#4070a0"&gt;&amp;#39;-d&amp;#39;&lt;/span&gt;, &lt;span style="color:#4070a0"&gt;&amp;#39;-P&amp;#39;&lt;/span&gt;, pidfile, &lt;span style="color:#4070a0"&gt;&amp;#39;-l&amp;#39;&lt;/span&gt;, &lt;span style="color:#4070a0"&gt;&amp;#39;127.0.0.1&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#007020"&gt;puts&lt;/span&gt; &lt;span style="color:#4070a0"&gt;&amp;#34;memcached running: stopping&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; pid &lt;span style="color:#666"&gt;=&lt;/span&gt; pidfile&lt;span style="color:#666"&gt;.&lt;/span&gt;read&lt;span style="color:#666"&gt;.&lt;/span&gt;chomp
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#007020"&gt;system&lt;/span&gt; &lt;span style="color:#4070a0"&gt;&amp;#39;kill&amp;#39;&lt;/span&gt;, pid
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#60a0b0;font-style:italic"&gt;# it appears that memcached doesn&amp;#39;t clean up its pid file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#60a0b0;font-style:italic"&gt;# unless you send it a QUIT signal (TERM, KILL, HUP don&amp;#39;t)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#60a0b0;font-style:italic"&gt;# unfortuantely, QUIT on Mac OS X causes memcached to crash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; pidfile&lt;span style="color:#666"&gt;.&lt;/span&gt;delete
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>25 Tips for Intermediate Git Users</title><link>https://quarternotecoda.com/posts/2009-11-23-25-tips-for-intermediate-git-users/</link><pubDate>Mon, 23 Nov 2009 00:00:00 +0000</pubDate><guid>https://quarternotecoda.com/posts/2009-11-23-25-tips-for-intermediate-git-users/</guid><description>&lt;p&gt;Version Control Systems are critical when it comes to keeping your code in a place you can actually use it.   Git is one of those systems that will change how you think about VCS because it suddenly makes it easy and fast to branch and merge.&lt;/p&gt;
&lt;p&gt;Become more efficient at &lt;code&gt;git&lt;/code&gt; and quit wasting time with Subversion merges and remote repositories:&lt;a href="http://andyjeffries.co.uk/articles/25-tips-for-intermediate-git-users"&gt; 25 Tips for Intermediate Git Users&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>