<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>git &#8211; Other Things</title>
	<atom:link href="https://blog.adamzolo.com/category/git/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.adamzolo.com</link>
	<description>Blog about Things by Adam Zolotarev</description>
	<lastBuildDate>Sat, 14 Sep 2019 12:28:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>
	<item>
		<title>Deploying React to Linux Server with Git Push</title>
		<link>https://blog.adamzolo.com/deploy-react-to-linux-server-git-deploy/</link>
					<comments>https://blog.adamzolo.com/deploy-react-to-linux-server-git-deploy/#respond</comments>
		
		<dc:creator><![CDATA[Adam Zolo]]></dc:creator>
		<pubDate>Wed, 06 Sep 2017 01:37:39 +0000</pubDate>
				<category><![CDATA[git]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[React]]></category>
		<guid isPermaLink="false">http://blog.adamzolo.com/?p=663</guid>

					<description><![CDATA[Selected VPS: Linode, 1GB Ram, 20 GB SSD, 1 TB transfer OS: Ubuntu 17.04 Web Server: Ngnix If you’d like to try Linode, I would greatly appreciate using this referral link – Linode: SSD Cloud Hosting &#038; Linux Servers Start with regular updates Set up fail2ban and Firewall I&#8217;m installing fail2ban 0.10 since it supports&#8230;<p><a class="more-link" href="https://blog.adamzolo.com/deploy-react-to-linux-server-git-deploy/" title="Continue reading &#8216;Deploying React to Linux Server with Git Push&#8217;">Continue reading <span class="meta-nav">&#8594;</span></a></p>]]></description>
										<content:encoded><![CDATA[<p>Selected VPS: Linode, 1GB Ram, 20 GB SSD, 1 TB transfer<br />
OS: Ubuntu 17.04<br />
Web Server: Ngnix<br />
If you’d like to try Linode, I would greatly appreciate using this referral link – <a href="https://www.linode.com/?r=1e7f26b4b71e72c400ad072b526b5b846cceae1e" target="_blank">Linode: SSD Cloud Hosting &#038; Linux Servers</a></p>
<p>Start with regular updates</p>
<pre class="brush: plain; title: ; notranslate">
apt-get update &amp;&amp; apt-get upgrade
</pre>
<h3>Set up fail2ban and Firewall</h3>
<p>I&#8217;m installing fail2ban 0.10 since it supports ipv6. At the time of this post, it is not available as a regular package.</p>
<pre class="brush: plain; title: ; notranslate">
wget https://github.com/fail2ban/fail2ban/archive/0.10.0.tar.gz
tar -xvzf 0.10.0.tar.gz
python3 setup.py install

#To enable fail2ban as an automatic service, copy the script for your distro from the files directory to /etc/init.d.

cp files/debian-initd /etc/init.d/fail2ban
update-rc.d fail2ban defaults
service fail2ban start

#Add local jail
awk '{ printf &quot;# &quot;; print; }' /etc/fail2ban/jail.conf | sudo tee /etc/fail2ban/jail.local
vim /etc/fail2ban/jail.local
</pre>
<p>uncomment sshd section and add<br />
enabled = true</p>
<pre class="brush: plain; title: ; notranslate">
sudo apt-get install sendmail iptables-persistent
sudo service fail2ban start
</pre>
<p><strong>Firewall </strong>( allow established connections, traffic generated by the server itself, traffic destined for our SSH and web server ports. We will drop all other traffic):</p>
<pre class="brush: plain; title: ; notranslate">
sudo service fail2ban stop
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
sudo iptables -A INPUT -j DROP

# easy way to rate-limit ssh with ufw:
# technically, we could do all of the iptables stuff with ufw
ufw enable
ufw limit ssh
</pre>
<p><strong>If using IPv6:</strong></p>
<pre class="brush: plain; title: ; notranslate">
ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT # (replace with your undisclosed port)
ip6tables -A INPUT -p icmpv6 -j ACCEPT
ip6tables -A INPUT -j REJECT
ip6tables -A FORWARD -j REJECT
</pre>
<p>View iptables rules:</p>
<pre class="brush: plain; title: ; notranslate">
sudo iptables -S
</pre>
<p>Save iptables rules:</p>
<pre class="brush: plain; title: ; notranslate">
sudo dpkg-reconfigure iptables-persistent
sudo service fail2ban start
</pre>
<h3>SSH</h3>
<pre class="brush: plain; title: ; notranslate">
vim /etc/ssh/sshd_config

#Add or uncomment (if using Ubuntu &lt; 17.04)
protocol 2

#Add allowed ciphers
Ciphers aes128-ctr,aes192-ctr,aes256-ctr
KexAlgorithms ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256
MACs hmac-sha2-256,hmac-sha2-512
</pre>
<p><strong>Restart and test ssh config:</strong></p>
<pre class="brush: plain; title: ; notranslate">
service sshd restart
#returns nothing if everything configured properly
sshd -t
</pre>
<h3>NGINX</h3>
<pre class="brush: plain; title: ; notranslate">
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:nginx/stable
sudo apt-get install nginx
service nginx status
</pre>
<p>Update /etc/nginx/sites-enabled/default</p>
<pre class="brush: plain; title: ; notranslate">
root /var/www/html/your_site;

location / {
# Some comments...
try_files $uri /index.html;   # ADD THIS
}

sudo service nginx restart

</pre>
<h3>Installing React Dependencies</h3>
<pre class="brush: plain; title: ; notranslate">
# install yarn
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo &quot;deb https://dl.yarnpkg.com/debian/ stable main&quot; | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update &amp;&amp; sudo apt-get install yarn
 
#install node (apt-get repo has an older version of Node)
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential

</pre>
<h3>GIT Push Deploy</h3>
<p>Let&#8217;s set up git on the server</p>
<pre class="brush: plain; title: ; notranslate">
apt-get install git-core
mkdir repos &amp;&amp; cd repos
mkdir your_site.git
cd your_site.git
git init --bare
</pre>
<p><b>Set up a post-push hook</b><br />
cd /repos/your_app.git/hooks<br />
touch post-receive</p>
<pre class="brush: plain; title: ; notranslate">
#!/bin/bash -l

GIT_REPO=$HOME/repos/your_app.git
TMP_GIT_CLONE=$HOME/tmp/git/your_app
PUBLIC_WWW=/var/www/html

git clone $GIT_REPO $TMP_GIT_CLONE
cd $TMP_GIT_CLONE
yarn install
yarn build
rm -rf $PUBLIC_WWW/your_app_bup
mv $PUBLIC_WWW/your_app $PUBLIC_WWW/your_app_bup
cp -a build/. $PUBLIC_WWW/your_app
rm -Rf $TMP_GIT_CLONE
exit
</pre>
<p>Run on post-receiv:</p>
<pre class="brush: plain; title: ; notranslate">
chmod +x post-receive
</pre>
<p>On your local machine:</p>
<pre class="brush: plain; title: ; notranslate">
git remote add linode root@remote_server_address:repos/your_app.git
git push linode master
</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.adamzolo.com/deploy-react-to-linux-server-git-deploy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Setting Up My Mac Dev Environment</title>
		<link>https://blog.adamzolo.com/setting-up-my-mac-dev-environment/</link>
					<comments>https://blog.adamzolo.com/setting-up-my-mac-dev-environment/#respond</comments>
		
		<dc:creator><![CDATA[Adam Zolo]]></dc:creator>
		<pubDate>Sat, 05 Nov 2016 14:37:48 +0000</pubDate>
				<category><![CDATA[Development Setup]]></category>
		<category><![CDATA[git]]></category>
		<guid isPermaLink="false">http://blog.adamzolo.com/?p=401</guid>

					<description><![CDATA[Set up a package manager: Homebrew Istall iterm2 ZSH Replace bash with zsh (it offers some nice plugins and themes). brew install zsh zsh-completions Install oh-my-zsh &#8211; &#8220;A delightful community-driven (with 1,000+ contributors) framework for managing your zsh configuration.&#8221; sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" To update oh-my-zsh, run upgrade_oh_my_zsh in zsh shell. Pick your set&#8230;<p><a class="more-link" href="https://blog.adamzolo.com/setting-up-my-mac-dev-environment/" title="Continue reading &#8216;Setting Up My Mac Dev Environment&#8217;">Continue reading <span class="meta-nav">&#8594;</span></a></p>]]></description>
										<content:encoded><![CDATA[<h6>Set up a package manager: <a href="http://brew.sh/" target="_blank" rel="noopener noreferrer">Homebrew</a></h6>
<p>Istall <a href="https://www.iterm2.com/downloads.html" target="_blank" rel="noopener noreferrer">iterm2</a></p>
<h3>ZSH</h3>
<p>Replace bash with zsh (it offers some nice plugins and themes).</p>
<pre><pre class="brush: plain; title: ; notranslate">
brew install zsh zsh-completions
</pre></pre>
<p>Install <a href="https://github.com/robbyrussell/oh-my-zsh" target="_blank" rel="noopener noreferrer">oh-my-zsh </a>&#8211; &#8220;A delightful community-driven (with 1,000+ contributors) framework for managing your zsh configuration.&#8221;</p>
<pre><pre class="brush: plain; title: ; notranslate">
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
</pre></pre>
<p>To update oh-my-zsh, run upgrade_oh_my_zsh in zsh shell.</p>
<p>Pick your set of plugins (edit .zshrc file):<br />plugins=(git brew gem ruby rvm rails yarn npm)</p>
<p>Pick a theme (.zshrc):</p>
<pre><pre class="brush: plain; title: ; notranslate">
ZSH_THEME="af-magic"
</pre></pre>
<pre>If you're on OSX Sierra, then you need another step:
create ~/.ssh/config with this content:
</pre>
<pre><pre class="brush: plain; title: ; notranslate">
Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa
</pre></pre>
<p>Generate github SSH Keys &#8211; <a href="https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/" target="_blank" rel="noopener noreferrer">https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/</a></p>
<p>Add generated ssh key to your keychain, so you don&#8217;t have to reenter your ssh passphrase:</p>
<pre><pre class="brush: plain; title: ; notranslate"> ssh-add -K ~/.ssh/id_rsa </pre></pre>
<h3>Rails/Ruby/RVM/rbenv</h3>
<p>If using rvm with zsh, add this to your .zshrc:<br /><code><br />
[[ -s "$HOME/.rvm/scripts/rvm" ]] &amp;&amp; . "$HOME/.rvm/scripts/rvm"<br />
</code><br />If you use rbenv, you may need to add this to your .zshrc:<br /><code><br />
export PATH="$HOME/.rbenv/shims :$PATH"<br />
eval "$(rbenv init -)"<br />
</code></p>
<h3>Exercism</h3>
<p>For exercism zsh completions, add<br /><code><br />
if [ -f ~/.config/exercism/exercism_completion.zsh ]; then<br />
. ~/.config/exercism/exercism_completion.zsh<br />
fi<br />
</code><br />And run<br /><code><br />
$ mkdir -p ~/.config/exercism/<br />
$ curl http://cli.exercism.io/exercism_completion.zsh &gt; ~/.config/exercism/exercism_completion.zsh<br />
</code></p>
<h3>git standup</h3>
<p><a href="https://github.com/kamranahmedse/git-standup" target="_blank" rel="noopener noreferrer">git-standup</a></p>
<pre><pre class="brush: plain; title: ; notranslate">
brew install git-standup
</pre></pre>
<h3>fzf is a general-purpose command-line fuzzy finder</h3>
<p><a href="https://github.com/junegunn/fzf#key-bindings-for-command-line" target="_blank" rel="noopener noreferrer">https://github.com/junegunn/fzf#key-bindings-for-command-line</a></p>
<pre><pre class="brush: plain; title: ; notranslate">
brew install fzf
# Install shell extensions
/usr/local/opt/fzf/install
</pre></pre>
<h3>autojump &#8211; a faster way to navigate your filesystem</h3>
<p><a href="https://github.com/wting/autojump" target="_blank" rel="noopener noreferrer">https://github.com/wting/autojump</a></p>
<pre><pre class="brush: plain; title: ; notranslate">
brew install autojump

# add autoload to .zshrc
&#x5B;&#x5B; -s $(brew --prefix)/etc/profile.d/autojump.sh ]] &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp; . $(brew --prefix)/etc/profile.d/autojump.sh
</pre></pre>
<h3>fkill &#8211; Fabulously kill processes</h3>
<p><a href="https://github.com/sindresorhus/fkill-cli" target="_blank" rel="noopener noreferrer">https://github.com/sindresorhus/fkill-cli</a><br /><a href="https://github.com/SamVerschueren/alfred-fkill" target="_blank" rel="noopener noreferrer">https://github.com/SamVerschueren/alfred-fkill</a></p>
<pre><pre class="brush: plain; title: ; notranslate">
npm install --global fkill-cli
npm install --global alfred-fkill
</pre></pre>
<h3>Mac apps</h3>
<ul>
<li><a href="https://bahoom.com/hyperdock/" target="_blank" rel="noopener noreferrer">HyperDock</a></li>
<li><a href="https://www.spectacleapp.com/" target="_blank" rel="noopener noreferrer">Spectacles</a></li>
<li>Atom</li>
<li><a href="https://bjango.com/mac/istatmenus/" target="_blank" rel="noopener noreferrer">iStat Menus (not free)</a></li>
<li><a href="https://www.alfredapp.com/" target="_blank" rel="noopener noreferrer">Alfred</a></li>
<li>SourceTree</li>
<li>VSCode</li>
<li><a href="https://github.com/tonsky/FiraCode" target="_blank" rel="noopener noreferrer">FiraCode</a></li>
<li><a href="https://postgresapp.com/" target="_blank" rel="noopener noreferrer">Postgres.app </a>(if using pg gem, then &#8216;gem install pg &#8212; &#8211;with-pg-config=/Applications/Postgres.app/Contents/Versions/11/bin/pg_config&#8217;)</li>
</ul>
<h3>Git alias (add to .gitconfig)</h3>
<p>Show recent branches:<br />[alias]<br />recent = &#8220;for-each-ref &#8211;sort=-committerdate &#8211;count=10 &#8211;format=&#8217;%(refname:short)&#8217; refs/heads/&#8221;</p>
<h3>Python</h3>
<p>Install Anaconda &#8211; https://www.anaconda.com/distribution/#download-section</p>
<p>Update your .bashrc or .zshrc with</p>
<pre><pre class="brush: plain; title: ; notranslate">
export PATH="$HOME/anaconda3/bin:$PATH"
</pre></pre>


<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.adamzolo.com/setting-up-my-mac-dev-environment/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Analyzing Git with GitInspector</title>
		<link>https://blog.adamzolo.com/analyzing-git-gitinspector/</link>
					<comments>https://blog.adamzolo.com/analyzing-git-gitinspector/#respond</comments>
		
		<dc:creator><![CDATA[Adam Zolo]]></dc:creator>
		<pubDate>Sat, 21 May 2016 18:43:55 +0000</pubDate>
				<category><![CDATA[git]]></category>
		<guid isPermaLink="false">http://www.eazolo.com/blog/?p=286</guid>

					<description><![CDATA[Pretty cool tool for analyzing your Git repos &#8211; GitInspector. Thanks to @zachdevelop for discovering, figuring out how to use, and sharing it. Here&#8217;s a sample command for analyzing some C#, JavaScript, .NET web services, ASP.Net, and F#: Windows: py C:\pathToGitInspector\gitinspector.py --format=html -r -m --file-types=&#34;cs,js,asax,ascx,asmx,aspx,cshtml,fs&#34; &#124; Out-File C:\git_output.html Mac: gitinspector.py --format=html -f=&#34;coffee,rb,js,json,feature,haml,erb,html&#34; -r &#62; inspector.html]]></description>
										<content:encoded><![CDATA[<p>Pretty cool tool for analyzing your Git repos &#8211; <a href="https://github.com/ejwa/gitinspector" target="_blank">GitInspector</a>. Thanks to <a href="https://twitter.com/zachdevelop" target="_blank">@zachdevelop</a> for discovering, figuring out how to use, and sharing it.</p>
<p>Here&#8217;s a sample command for analyzing some C#, JavaScript, .NET web services, ASP.Net, and F#:</p>
<p>Windows:</p>
<pre class="brush: plain; title: ; notranslate">
py C:\pathToGitInspector\gitinspector.py --format=html -r -m --file-types=&quot;cs,js,asax,ascx,asmx,aspx,cshtml,fs&quot; | Out-File C:\git_output.html
</pre>
<p>Mac:</p>
<pre class="brush: plain; title: ; notranslate">
gitinspector.py --format=html -f=&quot;coffee,rb,js,json,feature,haml,erb,html&quot; -r &gt; inspector.html
</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.adamzolo.com/analyzing-git-gitinspector/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
