mirror of
https://gitlab.com/MisterBiggs/blog-static.git
synced 2025-06-16 07:06:44 +00:00
866 lines
38 KiB
HTML
866 lines
38 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
<title>Create a Backup of your Chocolatey Packages using Boxstarter</title>
|
|
<meta name="HandheldFriendly" content="True" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<link rel="stylesheet" type="text/css" href="../assets/built/screen.css" />
|
|
<link rel="shortcut icon" href="../favicon.png" type="image/png" />
|
|
<link
|
|
rel="canonical"
|
|
href="https://blog.ansonbiggs.com/create-a-backup-of-your-chocolatey-packages-using-boxstarter/"
|
|
/>
|
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
|
<link
|
|
rel="amphtml"
|
|
href="https://blog.ansonbiggs.com/create-a-backup-of-your-chocolatey-packages-using-boxstarter/amp/"
|
|
/>
|
|
<meta property="og:site_name" content="Anson 3D" />
|
|
<meta property="og:type" content="article" />
|
|
<meta
|
|
property="og:title"
|
|
content="Create a Backup of your Chocolatey Packages using Boxstarter"
|
|
/>
|
|
<meta
|
|
property="og:description"
|
|
content="Introduction
|
|
Chocolatey [https://chocolatey.org/] is command line package manager for Windows
|
|
that gives you a very Linux -esque software installation experience. This guide
|
|
expects that you already are using Chocolatey, but in case you need convincing
|
|
here's what makes it so awesome, for example: choco install google chrome will
|
|
install Google Chrome on your computer without having to wait for the installer.
|
|
You can even get fancy and list as many packages as you would like with a -y
|
|
flag to a"
|
|
/>
|
|
<meta
|
|
property="og:url"
|
|
content="https://blog.ansonbiggs.com/create-a-backup-of-your-chocolatey-packages-using-boxstarter/"
|
|
/>
|
|
<meta
|
|
property="article:published_time"
|
|
content="2019-02-04T14:00:00.000Z"
|
|
/>
|
|
<meta property="article:modified_time" content="2019-02-04T19:45:07.000Z" />
|
|
<meta property="article:tag" content="Code" />
|
|
<meta property="article:tag" content="Fluff" />
|
|
<meta property="article:tag" content="Review" />
|
|
<meta property="article:tag" content="Python" />
|
|
<meta
|
|
property="article:publisher"
|
|
content="https://www.facebook.com/Anson3D"
|
|
/>
|
|
<meta name="twitter:card" content="summary" />
|
|
<meta
|
|
name="twitter:title"
|
|
content="Create a Backup of your Chocolatey Packages using Boxstarter"
|
|
/>
|
|
<meta
|
|
name="twitter:description"
|
|
content="Introduction
|
|
Chocolatey [https://chocolatey.org/] is command line package manager for Windows
|
|
that gives you a very Linux -esque software installation experience. This guide
|
|
expects that you already are using Chocolatey, but in case you need convincing
|
|
here's what makes it so awesome, for example: choco install google chrome will
|
|
install Google Chrome on your computer without having to wait for the installer.
|
|
You can even get fancy and list as many packages as you would like with a -y
|
|
flag to a"
|
|
/>
|
|
<meta
|
|
name="twitter:url"
|
|
content="https://blog.ansonbiggs.com/create-a-backup-of-your-chocolatey-packages-using-boxstarter/"
|
|
/>
|
|
<meta name="twitter:label1" content="Written by" />
|
|
<meta name="twitter:data1" content="Anson Biggs" />
|
|
<meta name="twitter:label2" content="Filed under" />
|
|
<meta name="twitter:data2" content="Code, Fluff, Review, Python" />
|
|
<meta name="twitter:site" content="@Anson_3D" />
|
|
<meta name="twitter:creator" content="@Anson_3D" />
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "Article",
|
|
"publisher": {
|
|
"@type": "Organization",
|
|
"name": "Anson 3D",
|
|
"logo": {
|
|
"@type": "ImageObject",
|
|
"url": "https://blog.ansonbiggs.com/favicon.png",
|
|
"width": 60,
|
|
"height": 60
|
|
}
|
|
},
|
|
"author": {
|
|
"@type": "Person",
|
|
"name": "Anson Biggs",
|
|
"image": {
|
|
"@type": "ImageObject",
|
|
"url": "https://blog.ansonbiggs.com/content/images/2019/09/anson_suit_cropped.jpg",
|
|
"width": 1513,
|
|
"height": 1090
|
|
},
|
|
"url": "https://blog.ansonbiggs.com/author/anson/",
|
|
"sameAs": ["http://ansonbiggs.com", "https://twitter.com/AnsonBiggs"]
|
|
},
|
|
"headline": "Create a Backup of your Chocolatey Packages using Boxstarter",
|
|
"url": "https://blog.ansonbiggs.com/create-a-backup-of-your-chocolatey-packages-using-boxstarter/",
|
|
"datePublished": "2019-02-04T14:00:00.000Z",
|
|
"dateModified": "2019-02-04T19:45:07.000Z",
|
|
"keywords": "Code, Fluff, Review, Python",
|
|
"description": "Introduction\nChocolatey [https://chocolatey.org/] is command line package manager for Windows\nthat gives you a very Linux -esque software installation experience. This guide\nexpects that you already are using Chocolatey, but in case you need convincing\nhere's what makes it so awesome, for example: choco install google chrome will\ninstall Google Chrome on your computer without having to wait for the installer.\nYou can even get fancy and list as many packages as you would like with a -y \nflag to a",
|
|
"mainEntityOfPage": {
|
|
"@type": "WebPage",
|
|
"@id": "https://blog.ansonbiggs.com/"
|
|
}
|
|
}
|
|
</script>
|
|
<script
|
|
src="../public/ghost-sdk.min.js"
|
|
type="8a4a165e83b3fa6cca9c2dab-text/javascript"
|
|
></script>
|
|
<script type="8a4a165e83b3fa6cca9c2dab-text/javascript">
|
|
ghost.init({
|
|
clientId: "ghost-frontend",
|
|
clientSecret: "245af786ee20"
|
|
});
|
|
</script>
|
|
<meta name="generator" content="Ghost 2.31" />
|
|
<link
|
|
rel="alternate"
|
|
type="application/rss+xml"
|
|
title="Anson 3D"
|
|
href="https://blog.ansonbiggs.com/rss/"
|
|
/>
|
|
<script
|
|
async
|
|
src="https://analytics.ansonbiggs.com/tracker.js"
|
|
data-ackee-server="https://analytics.ansonbiggs.com"
|
|
data-ackee-domain-id="0846bb59-c7b6-4a0b-bc05-135f82425319"
|
|
type="8a4a165e83b3fa6cca9c2dab-text/javascript"
|
|
></script>
|
|
<script
|
|
src="https://unpkg.com/mermaid@8.0.0/dist/mermaid.min.js"
|
|
type="8a4a165e83b3fa6cca9c2dab-text/javascript"
|
|
></script>
|
|
<script type="8a4a165e83b3fa6cca9c2dab-text/javascript">
|
|
mermaid.initialize({startOnLoad:true});
|
|
</script>
|
|
|
|
<script
|
|
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.14.0/prism.min.js"
|
|
type="8a4a165e83b3fa6cca9c2dab-text/javascript"
|
|
></script>
|
|
<script
|
|
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.14.0/plugins/line-numbers/prism-line-numbers.min.js"
|
|
type="8a4a165e83b3fa6cca9c2dab-text/javascript"
|
|
></script>
|
|
<link
|
|
rel="stylesheet"
|
|
type="text/css"
|
|
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.14.0/themes/prism.min.css"
|
|
/>
|
|
<link
|
|
rel="stylesheet"
|
|
type="text/css"
|
|
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.14.0/plugins/line-numbers/prism-line-numbers.min.css"
|
|
/>
|
|
<link
|
|
rel="stylesheet"
|
|
type="text/css"
|
|
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.14.0/themes/prism-coy.min.css"
|
|
/>
|
|
<script
|
|
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.14.0/components/prism-powershell.min.js"
|
|
type="8a4a165e83b3fa6cca9c2dab-text/javascript"
|
|
></script>
|
|
<script
|
|
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.14.0/components/prism-css.min.js"
|
|
type="8a4a165e83b3fa6cca9c2dab-text/javascript"
|
|
></script>
|
|
<script
|
|
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.14.0/components/prism-c.min.js"
|
|
type="8a4a165e83b3fa6cca9c2dab-text/javascript"
|
|
></script>
|
|
<script
|
|
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.14.0/components/prism-clike.min.js"
|
|
type="8a4a165e83b3fa6cca9c2dab-text/javascript"
|
|
></script>
|
|
<script
|
|
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.14.0/components/prism-python.min.js"
|
|
type="8a4a165e83b3fa6cca9c2dab-text/javascript"
|
|
></script>
|
|
|
|
<script
|
|
async
|
|
src="https://www.googletagmanager.com/gtag/js?id=UA-99766784-3"
|
|
type="8a4a165e83b3fa6cca9c2dab-text/javascript"
|
|
></script>
|
|
<script type="8a4a165e83b3fa6cca9c2dab-text/javascript">
|
|
window.dataLayer = window.dataLayer || [];
|
|
function gtag(){dataLayer.push(arguments);}
|
|
gtag('js', new Date());
|
|
|
|
gtag('config', 'UA-99766784-3');
|
|
</script>
|
|
|
|
<script
|
|
data-name="BMC-Widget"
|
|
src="https://cdnjs.buymeacoffee.com/1.0.0/widget.prod.min.js"
|
|
data-id="Anson"
|
|
data-description="Support my work on Buy me a coffee!"
|
|
data-message="Please consider donating if you enjoy my content!"
|
|
data-color="#5F7FFF"
|
|
data-position="right"
|
|
data-x_margin="18"
|
|
data-y_margin="18"
|
|
></script>
|
|
</head>
|
|
|
|
<body class="post-template tag-code tag-fluff tag-review tag-python">
|
|
<div class="site-wrapper">
|
|
<header class="site-header outer">
|
|
<div class="inner">
|
|
<nav class="site-nav">
|
|
<div class="site-nav-left">
|
|
<a class="site-nav-logo" href="../">Anson 3D</a>
|
|
<ul class="nav" role="menu">
|
|
<li class="nav-home" role="menuitem"><a href="../">Home</a></li>
|
|
<li class="nav-downloads" role="menuitem">
|
|
<a href="../where-to-download-my-models/">Downloads</a>
|
|
</li>
|
|
<li class="nav-yet-another-test-suite" role="menuitem">
|
|
<a href="../yet-another-test-suite/"
|
|
>Yet Another Test Suite</a
|
|
>
|
|
</li>
|
|
<li class="nav-tags" role="menuitem">
|
|
<a href="../tags/">Tags</a>
|
|
</li>
|
|
<li class="nav-resume" role="menuitem">
|
|
<a href="http://ansonbiggs.com">Resume</a>
|
|
</li>
|
|
<li class="nav-partners" role="menuitem">
|
|
<a href="https://projects.ansonbiggs.com">Projects</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div class="site-nav-right">
|
|
<div class="social-links">
|
|
<a
|
|
class="social-link social-link-fb"
|
|
href="https://www.facebook.com/Anson3D"
|
|
title="Facebook"
|
|
target="_blank"
|
|
rel="noopener"
|
|
><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
|
<path
|
|
d="M19 6h5V0h-5c-3.86 0-7 3.14-7 7v3H8v6h4v16h6V16h5l1-6h-6V7c0-.542.458-1 1-1z"
|
|
/>
|
|
</svg>
|
|
</a>
|
|
<a
|
|
class="social-link social-link-tw"
|
|
href="https://twitter.com/AnsonBiggs"
|
|
title="Twitter"
|
|
target="_blank"
|
|
rel="noopener"
|
|
><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
|
<path
|
|
d="M30.063 7.313c-.813 1.125-1.75 2.125-2.875 2.938v.75c0 1.563-.188 3.125-.688 4.625a15.088 15.088 0 0 1-2.063 4.438c-.875 1.438-2 2.688-3.25 3.813a15.015 15.015 0 0 1-4.625 2.563c-1.813.688-3.75 1-5.75 1-3.25 0-6.188-.875-8.875-2.625.438.063.875.125 1.375.125 2.688 0 5.063-.875 7.188-2.5-1.25 0-2.375-.375-3.375-1.125s-1.688-1.688-2.063-2.875c.438.063.813.125 1.125.125.5 0 1-.063 1.5-.25-1.313-.25-2.438-.938-3.313-1.938a5.673 5.673 0 0 1-1.313-3.688v-.063c.813.438 1.688.688 2.625.688a5.228 5.228 0 0 1-1.875-2c-.5-.875-.688-1.813-.688-2.75 0-1.063.25-2.063.75-2.938 1.438 1.75 3.188 3.188 5.25 4.25s4.313 1.688 6.688 1.813a5.579 5.579 0 0 1 1.5-5.438c1.125-1.125 2.5-1.688 4.125-1.688s3.063.625 4.188 1.813a11.48 11.48 0 0 0 3.688-1.375c-.438 1.375-1.313 2.438-2.563 3.188 1.125-.125 2.188-.438 3.313-.875z"
|
|
/>
|
|
</svg>
|
|
</a>
|
|
</div>
|
|
<a class="subscribe-button" href="#subscribe">Subscribe</a>
|
|
</div>
|
|
</nav>
|
|
</div>
|
|
</header>
|
|
<main id="site-main" class="site-main outer">
|
|
<div class="inner">
|
|
<article
|
|
class="post-full post tag-code tag-fluff tag-review tag-python no-image"
|
|
>
|
|
<header class="post-full-header">
|
|
<section class="post-full-meta">
|
|
<time class="post-full-meta-date" datetime="2019-02-04"
|
|
>4 February 2019</time
|
|
>
|
|
<span class="date-divider">/</span>
|
|
<a href="../tag/code/">Code</a>
|
|
</section>
|
|
<h1 class="post-full-title">
|
|
Create a Backup of your Chocolatey Packages using Boxstarter
|
|
</h1>
|
|
</header>
|
|
<section class="post-full-content">
|
|
<div class="post-content">
|
|
<h2 id="introduction">Introduction</h2>
|
|
<p>
|
|
<strong
|
|
><a href="https://chocolatey.org/">Chocolatey</a></strong
|
|
>
|
|
is command line package manager for Windows that gives you a
|
|
very Linux -esque software installation experience. This guide
|
|
expects that you already are using Chocolatey, but in case you
|
|
need convincing here's what makes it so awesome, for example:
|
|
<code>choco install google chrome</code> will install Google
|
|
Chrome on your computer without having to wait for the
|
|
installer. You can even get fancy and list as many packages as
|
|
you would like with a <code>-y</code> flag to automatically
|
|
accept any prompts:
|
|
<code>choco install -y autohotkey.portable python3 gimp</code>
|
|
Can't undersell how easy this makes to set a computer up for
|
|
the first time.
|
|
</p>
|
|
<p>
|
|
<strong
|
|
><a href="https://boxstarter.org/">Boxstarter</a></strong
|
|
>
|
|
uses Chocolatey packages but adds a few extra tools that allow
|
|
you to install software faster and make changes to
|
|
<a href="https://boxstarter.org/WinConfig">Windows settings</a
|
|
>. Boxstarter has some amazing functionality that I am not
|
|
going to touch on here, but I would recommend
|
|
<a href="https://boxstarter.org/WhyBoxstarter"
|
|
>Checking out their Docs.</a
|
|
>
|
|
</p>
|
|
<h2 id="prerequisitestomakeabackup">
|
|
Prerequisites to make a Backup
|
|
</h2>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
A machine running Windows with software installed using
|
|
<a href="https://chocolatey.org/">Chocolatey</a>
|
|
</p>
|
|
</li>
|
|
<li>
|
|
<p><a href="https://boxstarter.org/">Boxstarter</a></p>
|
|
</li>
|
|
</ul>
|
|
<h2 id="theprocess">The Process</h2>
|
|
<h3 id="1getalistofyourchocolateypackages">
|
|
1. Get a list of your Chocolatey Packages
|
|
</h3>
|
|
<p>
|
|
Open Powershell and enter <code>clist -l</code> and copy the
|
|
output into a file called <code>data.txt</code> Alternatively,
|
|
<code>clist -l > data.txt</code> will automatically make a
|
|
<code>data.txt</code> file in whatever directory Powershell is
|
|
in.
|
|
</p>
|
|
<h3 id="2makeapythonfilewiththefollowingcode">
|
|
2. Make a Python File with the following code:
|
|
</h3>
|
|
<pre><code class="language-Python">import re
|
|
|
|
## Regex to get package names
|
|
regex = re.compile("(?:^|\\n)(\\S{1,})")
|
|
|
|
## Open data.txt
|
|
with open("data.txt", "r") as f:
|
|
data = f.read()
|
|
matchArray = regex.findall(str(data))
|
|
|
|
## Use regex to print package names to text file
|
|
with open("boxstarterScript.txt", "w") as output:
|
|
for match in matchArray:
|
|
output.write("cinst " + match + "\n")
|
|
</code></pre>
|
|
<p>
|
|
Then making sure data.txt is in the same folder, run the
|
|
script. You should get <code>boxstarterScript.txt</code> as an
|
|
output.
|
|
</p>
|
|
<h3 id="3addanyextracommands">3. Add any Extra Commands</h3>
|
|
<p>
|
|
The code will output a file with a ton of lines that just say
|
|
<code>cinst python3</code> which will work perfectly fine by
|
|
itself but we can leverage Boxstarter to do a few other cool
|
|
things. I personally add the code below to the top of my
|
|
Script. It enables a few Windows File Explorer, I think the
|
|
flags are pretty self-explanatory, but if you want more
|
|
details or want to see more flags check out the
|
|
<a href="https://boxstarter.org/WinConfig">Boxstarter docs</a>
|
|
</p>
|
|
<pre><code class="language-Powershell">Set-WindowsExplorerOptions -EnableShowHiddenFilesFoldersDrives -EnableShowProtectedOSFiles -EnableShowFileExtensions
|
|
Enable-RemoteDesktop
|
|
</code></pre>
|
|
<p>
|
|
and at the end of the file, I add a command that forces
|
|
windows to update.
|
|
</p>
|
|
<pre><code class="language-Powershell">Install-WindowsUpdate -AcceptEula
|
|
</code></pre>
|
|
<h3 id="4usingthescript">4. Using the Script.</h3>
|
|
<p>
|
|
Obviously this script that we made doesn't do any good if it
|
|
is not accessible to a new machine so paraphrasing from the
|
|
<a href="https://boxstarter.org/Learn/WebLauncher"
|
|
>Boxstarter guide</a
|
|
>
|
|
I'll give a quick rundown on how to quickly use your backup
|
|
using <a href="https://gist.github.com">gist</a>. If you don't
|
|
want to use Github, my understanding is that any public URL
|
|
that gives a raw <code>.txt</code> page will work, or you can
|
|
use a different method to get the <code>.txt</code> to your
|
|
machine.
|
|
</p>
|
|
<p>
|
|
If you don't have Boxstarter or Chocolatey installed then open
|
|
Powershell and run:
|
|
</p>
|
|
<pre><code class="language-Powershell">. { iwr -useb https://boxstarter.org/bootstrapper.ps1 } | iex; get-boxstarter -Force
|
|
</code></pre>
|
|
<p>
|
|
Then you can run the script we made by opening the Boxstarter
|
|
shell and running the Command below. Replace
|
|
<code>PATH_TO_boxstarterScript.txt</code> with either the URL
|
|
to your script. i.e.
|
|
<code
|
|
>https://gist.githubusercontent.com/MisterBiggs/97e8e065f8a8d1d941a2c3377e229dad/raw/9804bbd5e3131ec9aebbff71395df9e382fbae1b/boxstarterScript.txt</code
|
|
>
|
|
(Make sure you use the raw link to your gist)
|
|
<strong>or</strong>
|
|
<code
|
|
>C:\Users\albig\Documents\backupScript\boxstarterScript.txt</code
|
|
>
|
|
</p>
|
|
<pre><code class="language-Powershell">Install-BoxstarterPackage -PackageName PATH_TO_boxstarterScript.txt -DisableReboots
|
|
</code></pre>
|
|
<h2 id="conclusion">Conclusion</h2>
|
|
<p>
|
|
In this tutorial, we were able to make a backup of all the
|
|
software installed on your machine in a way that is extremely
|
|
easy to replicate and automate the install of on a new
|
|
machine.
|
|
</p>
|
|
</div>
|
|
</section>
|
|
<section class="subscribe-form">
|
|
<h3 class="subscribe-form-title">Subscribe to Anson 3D</h3>
|
|
<p>Get the latest posts delivered right to your inbox</p>
|
|
<form method="post" action="/subscribe/" id class>
|
|
<input class="confirm" type="hidden" name="confirm" /><input
|
|
class="location"
|
|
type="hidden"
|
|
name="location"
|
|
/><input class="referrer" type="hidden" name="referrer" />
|
|
<div class="form-group">
|
|
<input
|
|
class="subscribe-email"
|
|
type="email"
|
|
name="email"
|
|
placeholder="youremail@example.com"
|
|
/>
|
|
</div>
|
|
<button id class type="submit"><span>Subscribe</span></button>
|
|
<script type="8a4a165e83b3fa6cca9c2dab-text/javascript">
|
|
(function(g,h,o,s,t){
|
|
var buster = function(b,m) {
|
|
h[o]('input.'+b).forEach(function (i) {
|
|
i.value=i.value || m;
|
|
});
|
|
};
|
|
buster('location', g.location.href);
|
|
buster('referrer', h.referrer);
|
|
})(window,document,'querySelectorAll','value');
|
|
</script>
|
|
</form>
|
|
</section>
|
|
<footer class="post-full-footer">
|
|
<section class="author-card">
|
|
<img
|
|
class="author-profile-image"
|
|
src="../content/images/size/w100/2019/09/anson_suit_cropped.jpg"
|
|
alt="Anson Biggs"
|
|
/>
|
|
<section class="author-card-content">
|
|
<h4 class="author-card-name">
|
|
<a href="../author/anson/">Anson Biggs</a>
|
|
</h4>
|
|
<p>
|
|
I am an undergraduate Aerospace Engineering student with a
|
|
focus on Astronautics and a minor in Electronic Engineering
|
|
studying at Embry-Riddle Aeronautical University in
|
|
Prescott, Arizona.
|
|
</p>
|
|
</section>
|
|
</section>
|
|
<div class="post-full-footer-right">
|
|
<a class="author-card-button" href="../author/anson/"
|
|
>Read More</a
|
|
>
|
|
</div>
|
|
</footer>
|
|
</article>
|
|
</div>
|
|
</main>
|
|
<aside class="read-next outer">
|
|
<div class="inner">
|
|
<div class="read-next-feed">
|
|
<article
|
|
class="read-next-card"
|
|
style="
|
|
background-image: url(../content/images/size/w600/2018/08/007---3kLkMUL-1.jpg);
|
|
"
|
|
>
|
|
<header class="read-next-card-header">
|
|
<small class="read-next-card-header-sitetitle"
|
|
>— Anson 3D —</small
|
|
>
|
|
<h3 class="read-next-card-header-title">
|
|
<a href="../tag/code/">Code</a>
|
|
</h3>
|
|
</header>
|
|
<div class="read-next-divider">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
<path
|
|
d="M13 14.5s2 3 5 3 5.5-2.463 5.5-5.5S21 6.5 18 6.5c-5 0-7 11-12 11C2.962 17.5.5 15.037.5 12S3 6.5 6 6.5s4.5 3.5 4.5 3.5"
|
|
/>
|
|
</svg>
|
|
</div>
|
|
<div class="read-next-card-content">
|
|
<ul>
|
|
<li>
|
|
<a href="../simple-telegram-stock-bot/"
|
|
>Simple Telegram Stock Bot</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a href="../simple-discord-stock-bot/"
|
|
>Simple Discord Stock Bot</a
|
|
>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<footer class="read-next-card-footer">
|
|
<a href="../tag/code/">See all 2 posts →</a>
|
|
</footer>
|
|
</article>
|
|
<article
|
|
class="post-card post tag-3d-modeling tag-3d-printing tag-functional-print tag-fusion360 tag-oldie featured"
|
|
>
|
|
<a class="post-card-image-link" href="../oldie-vice-v2/">
|
|
<img
|
|
class="post-card-image"
|
|
srcset="
|
|
../content/images/size/w300/2019/02/Oldie-Vice-V2.png 300w,
|
|
../content/images/size/w600/2019/02/Oldie-Vice-V2.png 600w,
|
|
../content/images/size/w1000/2019/02/Oldie-Vice-V2.png 1000w,
|
|
../content/images/size/w2000/2019/02/Oldie-Vice-V2.png 2000w
|
|
"
|
|
sizes="(max-width: 1000px) 400px, 700px"
|
|
src="../content/images/size/w600/2019/02/Oldie-Vice-V2.png"
|
|
alt="Oldie Vice V2"
|
|
/>
|
|
</a>
|
|
<div class="post-card-content">
|
|
<a class="post-card-content-link" href="../oldie-vice-v2/">
|
|
<header class="post-card-header">
|
|
<span class="post-card-tags">3D Modeling</span>
|
|
<h2 class="post-card-title">Oldie Vice V2</h2>
|
|
</header>
|
|
<section class="post-card-excerpt">
|
|
<p>
|
|
SummaryThis is the second iteration of a 3D printable Vice
|
|
made by Machinist Extraordinaire, This Old Tony recently
|
|
put out a video on a cool vice design that I wanted to
|
|
recreate. Now
|
|
</p>
|
|
</section>
|
|
</a>
|
|
<footer class="post-card-meta">
|
|
<ul class="author-list">
|
|
<li class="author-list-item">
|
|
<div class="author-name-tooltip">Anson Biggs</div>
|
|
<a href="../author/anson/" class="static-avatar">
|
|
<img
|
|
class="author-profile-image"
|
|
src="../content/images/size/w100/2019/09/anson_suit_cropped.jpg"
|
|
alt="Anson Biggs"
|
|
/>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
<span class="reading-time">5 min read</span>
|
|
</footer>
|
|
</div>
|
|
</article>
|
|
<article class="post-card post tag-guide tag-fluff">
|
|
<a class="post-card-image-link" href="../how-to-use-mermaid/">
|
|
<img
|
|
class="post-card-image"
|
|
srcset="
|
|
../content/images/size/w300/2019/01/Code_2019-01-06_03-24-26.png 300w,
|
|
../content/images/size/w600/2019/01/Code_2019-01-06_03-24-26.png 600w,
|
|
../content/images/size/w1000/2019/01/Code_2019-01-06_03-24-26.png 1000w,
|
|
../content/images/size/w2000/2019/01/Code_2019-01-06_03-24-26.png 2000w
|
|
"
|
|
sizes="(max-width: 1000px) 400px, 700px"
|
|
src="../content/images/size/w600/2019/01/Code_2019-01-06_03-24-26.png"
|
|
alt="How to use Mermaid on your Ghost Blog"
|
|
/>
|
|
</a>
|
|
<div class="post-card-content">
|
|
<a class="post-card-content-link" href="../how-to-use-mermaid/">
|
|
<header class="post-card-header">
|
|
<span class="post-card-tags">Guide</span>
|
|
<h2 class="post-card-title">
|
|
How to use Mermaid on your Ghost Blog
|
|
</h2>
|
|
</header>
|
|
<section class="post-card-excerpt">
|
|
<p>
|
|
Render Mermaid code into beautiful diagrams on your Ghost
|
|
Blog.
|
|
</p>
|
|
</section>
|
|
</a>
|
|
<footer class="post-card-meta">
|
|
<ul class="author-list">
|
|
<li class="author-list-item">
|
|
<div class="author-name-tooltip">Anson Biggs</div>
|
|
<a href="../author/anson/" class="static-avatar">
|
|
<img
|
|
class="author-profile-image"
|
|
src="../content/images/size/w100/2019/09/anson_suit_cropped.jpg"
|
|
alt="Anson Biggs"
|
|
/>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
<span class="reading-time">1 min read</span>
|
|
</footer>
|
|
</div>
|
|
</article>
|
|
</div>
|
|
</div>
|
|
</aside>
|
|
<div class="floating-header">
|
|
<div class="floating-header-logo">
|
|
<a href="../">
|
|
<img
|
|
src="../content/images/size/w30/2018/08/Anson.png"
|
|
alt="Anson 3D icon"
|
|
/>
|
|
<span>Anson 3D</span>
|
|
</a>
|
|
</div>
|
|
<span class="floating-header-divider">—</span>
|
|
<div class="floating-header-title">
|
|
Create a Backup of your Chocolatey Packages using Boxstarter
|
|
</div>
|
|
<div class="floating-header-share">
|
|
<div class="floating-header-share-label">
|
|
Share this
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
<path
|
|
d="M7.5 15.5V4a1.5 1.5 0 1 1 3 0v4.5h2a1 1 0 0 1 1 1h2a1 1 0 0 1 1 1H18a1.5 1.5 0 0 1 1.5 1.5v3.099c0 .929-.13 1.854-.385 2.748L17.5 23.5h-9c-1.5-2-5.417-8.673-5.417-8.673a1.2 1.2 0 0 1 1.76-1.605L7.5 15.5zm6-6v2m-3-3.5v3.5m6-1v2"
|
|
/>
|
|
</svg>
|
|
</div>
|
|
<a
|
|
class="floating-header-share-tw"
|
|
href="https://twitter.com/share?text=Create%20a%20Backup%20of%20your%20Chocolatey%20Packages%20using%20Boxstarter&url=https://blog.ansonbiggs.com/create-a-backup-of-your-chocolatey-packages-using-boxstarter/"
|
|
onclick="if (!window.__cfRLUnblockHandlers) return false; window.open(this.href, 'share-twitter', 'width=550,height=235');return false;"
|
|
data-cf-modified-8a4a165e83b3fa6cca9c2dab-
|
|
>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
|
<path
|
|
d="M30.063 7.313c-.813 1.125-1.75 2.125-2.875 2.938v.75c0 1.563-.188 3.125-.688 4.625a15.088 15.088 0 0 1-2.063 4.438c-.875 1.438-2 2.688-3.25 3.813a15.015 15.015 0 0 1-4.625 2.563c-1.813.688-3.75 1-5.75 1-3.25 0-6.188-.875-8.875-2.625.438.063.875.125 1.375.125 2.688 0 5.063-.875 7.188-2.5-1.25 0-2.375-.375-3.375-1.125s-1.688-1.688-2.063-2.875c.438.063.813.125 1.125.125.5 0 1-.063 1.5-.25-1.313-.25-2.438-.938-3.313-1.938a5.673 5.673 0 0 1-1.313-3.688v-.063c.813.438 1.688.688 2.625.688a5.228 5.228 0 0 1-1.875-2c-.5-.875-.688-1.813-.688-2.75 0-1.063.25-2.063.75-2.938 1.438 1.75 3.188 3.188 5.25 4.25s4.313 1.688 6.688 1.813a5.579 5.579 0 0 1 1.5-5.438c1.125-1.125 2.5-1.688 4.125-1.688s3.063.625 4.188 1.813a11.48 11.48 0 0 0 3.688-1.375c-.438 1.375-1.313 2.438-2.563 3.188 1.125-.125 2.188-.438 3.313-.875z"
|
|
/>
|
|
</svg>
|
|
</a>
|
|
<a
|
|
class="floating-header-share-fb"
|
|
href="https://www.facebook.com/sharer/sharer.php?u=https://blog.ansonbiggs.com/create-a-backup-of-your-chocolatey-packages-using-boxstarter/"
|
|
onclick="if (!window.__cfRLUnblockHandlers) return false; window.open(this.href, 'share-facebook','width=580,height=296');return false;"
|
|
data-cf-modified-8a4a165e83b3fa6cca9c2dab-
|
|
>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
|
<path
|
|
d="M19 6h5V0h-5c-3.86 0-7 3.14-7 7v3H8v6h4v16h6V16h5l1-6h-6V7c0-.542.458-1 1-1z"
|
|
/>
|
|
</svg>
|
|
</a>
|
|
</div>
|
|
<progress id="reading-progress" class="progress" value="0">
|
|
<div class="progress-container">
|
|
<span class="progress-bar"></span>
|
|
</div>
|
|
</progress>
|
|
</div>
|
|
<footer class="site-footer outer">
|
|
<div class="site-footer-content inner">
|
|
<section class="copyright">
|
|
<a href="../">Anson 3D</a> © 2019
|
|
</section>
|
|
<nav class="site-footer-nav">
|
|
<a href="../">Latest Posts</a>
|
|
<a
|
|
href="https://www.facebook.com/Anson3D"
|
|
target="_blank"
|
|
rel="noopener"
|
|
>Facebook</a
|
|
>
|
|
<a
|
|
href="https://twitter.com/AnsonBiggs"
|
|
target="_blank"
|
|
rel="noopener"
|
|
>Twitter</a
|
|
>
|
|
<a href="https://ghost.org" target="_blank" rel="noopener">Ghost</a>
|
|
</nav>
|
|
</div>
|
|
</footer>
|
|
</div>
|
|
<div id="subscribe" class="subscribe-overlay">
|
|
<a class="subscribe-overlay-close" href="#"></a>
|
|
<div class="subscribe-overlay-content">
|
|
<h1 class="subscribe-overlay-title">Subscribe to Anson 3D</h1>
|
|
<p class="subscribe-overlay-description">
|
|
Stay up to date! Get all the latest & greatest posts delivered
|
|
straight to your inbox
|
|
</p>
|
|
<form method="post" action="/subscribe/" id class>
|
|
<input class="confirm" type="hidden" name="confirm" /><input
|
|
class="location"
|
|
type="hidden"
|
|
name="location"
|
|
/><input class="referrer" type="hidden" name="referrer" />
|
|
<div class="form-group">
|
|
<input
|
|
class="subscribe-email"
|
|
type="email"
|
|
name="email"
|
|
placeholder="youremail@example.com"
|
|
/>
|
|
</div>
|
|
<button id class type="submit"><span>Subscribe</span></button>
|
|
<script type="8a4a165e83b3fa6cca9c2dab-text/javascript">
|
|
(function(g,h,o,s,t){
|
|
var buster = function(b,m) {
|
|
h[o]('input.'+b).forEach(function (i) {
|
|
i.value=i.value || m;
|
|
});
|
|
};
|
|
buster('location', g.location.href);
|
|
buster('referrer', h.referrer);
|
|
})(window,document,'querySelectorAll','value');
|
|
</script>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<script type="8a4a165e83b3fa6cca9c2dab-text/javascript">
|
|
var images = document.querySelectorAll('.kg-gallery-image img');
|
|
images.forEach(function (image) {
|
|
var container = image.closest('.kg-gallery-image');
|
|
var width = image.attributes.width.value;
|
|
var height = image.attributes.height.value;
|
|
var ratio = width / height;
|
|
container.style.flex = ratio + ' 1 0%';
|
|
})
|
|
</script>
|
|
<script
|
|
src="https://code.jquery.com/jquery-3.2.1.min.js"
|
|
crossorigin="anonymous"
|
|
type="8a4a165e83b3fa6cca9c2dab-text/javascript"
|
|
></script>
|
|
<script
|
|
type="8a4a165e83b3fa6cca9c2dab-text/javascript"
|
|
src="../assets/built/jquery.fitvids.js"
|
|
></script>
|
|
<script
|
|
src="../assets/built/infinitescroll.js"
|
|
type="8a4a165e83b3fa6cca9c2dab-text/javascript"
|
|
></script>
|
|
<script type="8a4a165e83b3fa6cca9c2dab-text/javascript">
|
|
|
|
// NOTE: Scroll performance is poor in Safari
|
|
// - this appears to be due to the events firing much more slowly in Safari.
|
|
// Dropping the scroll event and using only a raf loop results in smoother
|
|
// scrolling but continuous processing even when not scrolling
|
|
$(document).ready(function () {
|
|
// Start fitVids
|
|
var $postContent = $(".post-full-content");
|
|
$postContent.fitVids();
|
|
// End fitVids
|
|
|
|
var progressBar = document.querySelector('#reading-progress');
|
|
var header = document.querySelector('.floating-header');
|
|
var title = document.querySelector('.post-full-title');
|
|
|
|
var lastScrollY = window.scrollY;
|
|
var lastWindowHeight = window.innerHeight;
|
|
var lastDocumentHeight = $(document).height();
|
|
var ticking = false;
|
|
|
|
function onScroll() {
|
|
lastScrollY = window.scrollY;
|
|
requestTick();
|
|
}
|
|
|
|
function onResize() {
|
|
lastWindowHeight = window.innerHeight;
|
|
lastDocumentHeight = $(document).height();
|
|
requestTick();
|
|
}
|
|
|
|
function requestTick() {
|
|
if (!ticking) {
|
|
requestAnimationFrame(update);
|
|
}
|
|
ticking = true;
|
|
}
|
|
|
|
function update() {
|
|
var trigger = title.getBoundingClientRect().top + window.scrollY;
|
|
var triggerOffset = title.offsetHeight + 35;
|
|
var progressMax = lastDocumentHeight - lastWindowHeight;
|
|
|
|
// show/hide floating header
|
|
if (lastScrollY >= trigger + triggerOffset) {
|
|
header.classList.add('floating-active');
|
|
} else {
|
|
header.classList.remove('floating-active');
|
|
}
|
|
|
|
progressBar.setAttribute('max', progressMax);
|
|
progressBar.setAttribute('value', lastScrollY);
|
|
|
|
ticking = false;
|
|
}
|
|
|
|
window.addEventListener('scroll', onScroll, {passive: true});
|
|
window.addEventListener('resize', onResize, false);
|
|
|
|
update();
|
|
|
|
});
|
|
</script>
|
|
|
|
<script
|
|
src="https://embedd.io/embedd.min.js"
|
|
type="8a4a165e83b3fa6cca9c2dab-text/javascript"
|
|
></script>
|
|
<a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"
|
|
><img
|
|
alt="Creative Commons License"
|
|
style="border-width: 0"
|
|
src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a
|
|
><br />This work is licensed under a
|
|
<a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"
|
|
>Creative Commons Attribution-ShareAlike 4.0 International License</a
|
|
>.
|
|
<script
|
|
src="https://ajax.cloudflare.com/cdn-cgi/scripts/95c75768/cloudflare-static/rocket-loader.min.js"
|
|
data-cf-settings="8a4a165e83b3fa6cca9c2dab-|49"
|
|
defer
|
|
></script>
|
|
</body>
|
|
</html>
|