104 changed files with 19978 additions and 1569 deletions
@ -0,0 +1 @@
|
||||
/nix/store/2kk6k544kgd4qig5rx812qn2qcwjx5qh-source |
||||
@ -0,0 +1 @@
|
||||
/nix/store/p1ranb8qkpgcwh3lag39jjmcajk7rsjx-source |
||||
@ -0,0 +1 @@
|
||||
/nix/store/pnwyi8fcq1v0b9i4905b3yxkaw29dmly-source |
||||
@ -0,0 +1 @@
|
||||
/nix/store/h22lwjkqqckazfmbpj95i36zzwwkvq1z-nix-shell-env |
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,43 @@
|
||||
{ |
||||
"nodes": { |
||||
"flake-utils": { |
||||
"locked": { |
||||
"lastModified": 1642700792, |
||||
"narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", |
||||
"owner": "numtide", |
||||
"repo": "flake-utils", |
||||
"rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", |
||||
"type": "github" |
||||
}, |
||||
"original": { |
||||
"owner": "numtide", |
||||
"repo": "flake-utils", |
||||
"type": "github" |
||||
} |
||||
}, |
||||
"nixpkgs": { |
||||
"locked": { |
||||
"lastModified": 1643000262, |
||||
"narHash": "sha256-8hrbufiCcZgicU8UvHaRkruYuzM8z3lJvQkSh9ezMEg=", |
||||
"owner": "NixOS", |
||||
"repo": "nixpkgs", |
||||
"rev": "cc68710784ffe0ee035ee7b726656c44566cac94", |
||||
"type": "github" |
||||
}, |
||||
"original": { |
||||
"owner": "NixOS", |
||||
"ref": "nixpkgs-unstable", |
||||
"repo": "nixpkgs", |
||||
"type": "github" |
||||
} |
||||
}, |
||||
"root": { |
||||
"inputs": { |
||||
"flake-utils": "flake-utils", |
||||
"nixpkgs": "nixpkgs" |
||||
} |
||||
} |
||||
}, |
||||
"root": "root", |
||||
"version": 7 |
||||
} |
||||
@ -0,0 +1,15 @@
|
||||
{ |
||||
description = "A basic flake with a shell"; |
||||
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; |
||||
inputs.flake-utils.url = "github:numtide/flake-utils"; |
||||
|
||||
outputs = { self, nixpkgs, flake-utils }: |
||||
flake-utils.lib.eachDefaultSystem (system: let |
||||
pkgs = nixpkgs.legacyPackages.${system}; |
||||
in { |
||||
devShell = pkgs.mkShell { |
||||
nativeBuildInputs = with pkgs; [ hugo ]; |
||||
buildInputs = [ ]; |
||||
}; |
||||
}); |
||||
} |
||||
@ -0,0 +1,395 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
Mount with automount (autofs) // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content="Kristof Vandam"> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="Mount with automount (autofs)" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/administration/autofs/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
|
||||
|
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
|
||||
|
||||
<div id="toc" class="pure-u-1 pure-u-md-1-4"> |
||||
<small class="toc-label">Contents</small> |
||||
<nav id="TableOfContents"> |
||||
<ul> |
||||
<li><a href="#install-the-required-pakages">Install the required pakages</a></li> |
||||
<li><a href="#create-the-entry-file">Create the entry file</a></li> |
||||
<li><a href="#create-the-mapper-file">Create the mapper file</a></li> |
||||
<li><a href="#enable-and-start-the-service">Enable and start the service</a></li> |
||||
<li><a href="#wrapping-up">Wrapping up</a></li> |
||||
</ul> |
||||
</nav> |
||||
</div> |
||||
|
||||
|
||||
<section class="post"> |
||||
<h1 class="post-title"> |
||||
<a href="/administration/autofs/">Mount with automount (autofs)</a> |
||||
</h1> |
||||
<h3 class="post-subtitle"> |
||||
|
||||
</h3> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>9</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
<span class="post-author-single">By <a class="post-author" target="">Kristof Vandam</a></span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>Automagically mount remote directories on login.</p> |
||||
<h2 id="install-the-required-pakages">Install the required pakages</h2> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">sudo yum -y install autofs |
||||
</code></pre><h2 id="create-the-entry-file">Create the entry file</h2> |
||||
<p>the mapper file is a file where we specify the directory where all our mounts should be placed.</p> |
||||
<p>This file should be stored in <em>/etc/auto.master.d</em>, note that the extension is required to be <em>.autofs</em></p> |
||||
<p>for example: <em>/etc/auto.master.d/home.autofs</em></p> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">/home/guests /etc/auto.home |
||||
|
||||
</code></pre><p>The value for <em>/home/guests</em> is the file where we specify our mount options.</p> |
||||
<p><strong>Note</strong>: Make sure the <em>/home/guests</em> directory exists, if not create it with:</p> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">mkdir /home/guests |
||||
</code></pre><h2 id="create-the-mapper-file">Create the mapper file</h2> |
||||
<p>We earlier specified where our map file should be stored (<em>/etc/auto.home</em>), create this file.</p> |
||||
<p>Say we want to auto mount the home directories stored on <strong>serverA</strong> on /home/guests/[<em>USER</em>] when [<em>USER</em>] logs in.</p> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">* -rw,sync serverA:/home/guests/& |
||||
</code></pre><ul> |
||||
<li>The wildcards task is to create the directory based on the users homedirectory on serverA (specified with <strong>&</strong>)</li> |
||||
<li>We give option like: read/write and sync</li> |
||||
<li>As last param we have to say where we want to mount to, again, the <strong>&</strong> is dynamic and maps to the logged in user.</li> |
||||
</ul> |
||||
<h2 id="enable-and-start-the-service">Enable and start the service</h2> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">sudo systemctl enable autofs |
||||
sudo systemctl start autofs |
||||
</code></pre><h2 id="wrapping-up">Wrapping up</h2> |
||||
<p>Log in as a user, and check if the mount is present as expected.</p> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">df -h |
||||
</code></pre><p>Should output something like:</p> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">Filesystem Size Used Avail Use% Mounted on |
||||
/dev/xvda1 8.0G 5.6G 2.5G 70% / |
||||
devtmpfs 224M 0 224M 0% /dev |
||||
tmpfs 244M 0 244M 0% /dev/shm |
||||
tmpfs 244M 41M 204M 17% /run |
||||
tmpfs 244M 0 244M 0% /sys/fs/cgroup |
||||
tmpfs 49M 0 49M 0% /run/user/1000 |
||||
tmpfs 49M 0 49M 0% /run/user/0 |
||||
/serverA:/home/guests/user1 200M 0 200M 0% /home/guests/user1 |
||||
</code></pre><p>Note the last line where we see that the mount is present</p> |
||||
|
||||
|
||||
|
||||
|
||||
<div class="tags-list"> |
||||
<span class="dark-red">Tags</span><span class="decorative-marker">//</span> |
||||
|
||||
<a class="post-tag post-tag-linux" href="https://blog.hagfi.sh//tags/linux">linux</a>, |
||||
|
||||
<a class="post-tag post-tag-data" href="https://blog.hagfi.sh//tags/data">data</a>, |
||||
|
||||
<a class="post-tag post-tag-mount" href="https://blog.hagfi.sh//tags/mount">mount</a>, |
||||
|
||||
<a class="post-tag post-tag-shares" href="https://blog.hagfi.sh//tags/shares">shares</a>, |
||||
|
||||
</div> |
||||
|
||||
|
||||
|
||||
<div class="paging"> |
||||
<span class="paging-label">More Reading</span> |
||||
|
||||
<div class="paging-newer"> |
||||
<span class="dark-red">Newer</span><span class="decorative-marker">//</span> |
||||
<a class="paging-link" href="/tools/fatrace/">Fatrace: Report system wide file access events</a> |
||||
</div> |
||||
|
||||
|
||||
|
||||
<div class="paging-older"> |
||||
<span class="dark-red">Older</span><span class="decorative-marker">//</span> |
||||
<a class="paging-link" href="/administration/boot-targets/">Changing boot targets</a> |
||||
</div> |
||||
|
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<div id="disqus_thread"></div> |
||||
<script type="application/javascript"> |
||||
var disqus_config = function () { |
||||
|
||||
|
||||
|
||||
}; |
||||
(function() { |
||||
if (["localhost", "127.0.0.1"].indexOf(window.location.hostname) != -1) { |
||||
document.getElementById('disqus_thread').innerHTML = 'Disqus comments not available by default when the website is previewed locally.'; |
||||
return; |
||||
} |
||||
var d = document, s = d.createElement('script'); s.async = true; |
||||
s.src = '//' + "hagfish" + '.disqus.com/embed.js'; |
||||
s.setAttribute('data-timestamp', +new Date()); |
||||
(d.head || d.body).appendChild(s); |
||||
})(); |
||||
</script> |
||||
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> |
||||
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a> |
||||
|
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,463 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
Bash Tips & Tricks // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content="Olivier De Ram"> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="Bash Tips & Tricks" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/administration/bash/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
|
||||
|
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
|
||||
|
||||
<div id="toc" class="pure-u-1 pure-u-md-1-4"> |
||||
<small class="toc-label">Contents</small> |
||||
<nav id="TableOfContents"> |
||||
<ul> |
||||
<li> |
||||
<ul> |
||||
<li><a href="#usefull-cli-shortcuts">Usefull CLI shortcuts:</a></li> |
||||
<li><a href="#redirect-output">Redirect output:</a></li> |
||||
<li><a href="#create-a-function">Create a function:</a></li> |
||||
<li><a href="#short-scripts">Short scripts:</a></li> |
||||
</ul> |
||||
</li> |
||||
</ul> |
||||
</nav> |
||||
</div> |
||||
|
||||
|
||||
<section class="post"> |
||||
<h1 class="post-title"> |
||||
<a href="/administration/bash/">Bash Tips & Tricks</a> |
||||
</h1> |
||||
<h3 class="post-subtitle"> |
||||
|
||||
</h3> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>11</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
<span class="post-author-single">By <a class="post-author" target="">Olivier De Ram</a></span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
<a class="post-category post-category-development" href="https://blog.hagfi.sh//categories/development">development</a> |
||||
|
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>Usefull bash tips & tricks</p> |
||||
<h3 id="usefull-cli-shortcuts">Usefull CLI shortcuts:</h3> |
||||
<table> |
||||
<thead> |
||||
<tr> |
||||
<th>Shortcut</th> |
||||
<th>Description</th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
<tr> |
||||
<td>Ctrl+a</td> |
||||
<td>Jump to the beginning of the command line.</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Ctrl+e</td> |
||||
<td>Jump to the end of the command line.</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Ctrl+u</td> |
||||
<td>Clear from the cursor to the beginning of the command line.</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Ctrl+k</td> |
||||
<td>Clear from the cursor to the end of the command line.</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Ctrl+Left Arrow</td> |
||||
<td>Jump to the beginning of the previous word on the command line.</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Ctrl+Right Arrow</td> |
||||
<td>Jump to the end of the next word on the command line.</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Ctrl+r</td> |
||||
<td>Search the history list of commands for a pattern.</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Esc + .</td> |
||||
<td>Copy the last word of the previous command on the current command line where the cursor is</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
<h3 id="redirect-output">Redirect output:</h3> |
||||
<table> |
||||
<thead> |
||||
<tr> |
||||
<th>Command</th> |
||||
<th>result</th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
<tr> |
||||
<td><code>> file</code></td> |
||||
<td>redirect stdout to overwrite a file</td> |
||||
</tr> |
||||
<tr> |
||||
<td><code>>> file</code></td> |
||||
<td>redirect stdout to append to a file</td> |
||||
</tr> |
||||
<tr> |
||||
<td><code>2> file</code></td> |
||||
<td>redirect stderr to overwrite a file</td> |
||||
</tr> |
||||
<tr> |
||||
<td><code>2> /dev/null</code></td> |
||||
<td>discard stderr error messages by redirecting to /dev/null</td> |
||||
</tr> |
||||
<tr> |
||||
<td><code>&> file</code> <em>(OR <code>> file 2>&1</code>)</em></td> |
||||
<td>redirect stdout and stderr to overwrite the same file</td> |
||||
</tr> |
||||
<tr> |
||||
<td><code>&>></code> <em>(OR <code>>> file 2>&1</code>)</em></td> |
||||
<td>redirect stdout and stderr to append to the same file</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
<h3 id="create-a-function">Create a function:</h3> |
||||
<p>It’s straightforward, use function to create a function, give it a usefull short name and put the statemants between curly brackets.<br> |
||||
Use $1 for the first argument, $2 for the second argument and so on…</p> |
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#66d9ef">function</span> <name> <span style="color:#f92672">{</span> |
||||
<bashcommands> |
||||
<span style="color:#f92672">}</span> |
||||
</code></pre></div><p>For example the function logsearch which searches for the given string whitin all logfiles in the current directory:</p> |
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#66d9ef">function</span> logsearch <span style="color:#f92672">{</span> |
||||
zgrep $1 ./*log |
||||
<span style="color:#f92672">}</span> |
||||
</code></pre></div><h3 id="short-scripts">Short scripts:</h3> |
||||
<ul> |
||||
<li>Loop every file in path:</li> |
||||
</ul> |
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#66d9ef">for</span> F in /path/to/files/*; |
||||
<span style="color:#66d9ef">do</span> |
||||
echo <span style="color:#e6db74">"Files </span>$F<span style="color:#e6db74">"</span>; |
||||
<span style="color:#66d9ef">done</span> |
||||
</code></pre></div><ul> |
||||
<li>Loop file line per line:</li> |
||||
</ul> |
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#66d9ef">while</span> read LINE; |
||||
<span style="color:#66d9ef">do</span> |
||||
echo $LINE; |
||||
<span style="color:#66d9ef">done</span> < file.txt |
||||
</code></pre></div> |
||||
|
||||
|
||||
|
||||
|
||||
<div class="tags-list"> |
||||
<span class="dark-red">Tags</span><span class="decorative-marker">//</span> |
||||
|
||||
<a class="post-tag post-tag-bash" href="https://blog.hagfi.sh//tags/bash">bash</a>, |
||||
|
||||
<a class="post-tag post-tag-script" href="https://blog.hagfi.sh//tags/script">script</a>, |
||||
|
||||
</div> |
||||
|
||||
|
||||
|
||||
<div class="paging"> |
||||
<span class="paging-label">More Reading</span> |
||||
|
||||
<div class="paging-newer"> |
||||
<span class="dark-red">Newer</span><span class="decorative-marker">//</span> |
||||
<a class="paging-link" href="/administration/boot-targets/">Changing boot targets</a> |
||||
</div> |
||||
|
||||
|
||||
|
||||
<div class="paging-older"> |
||||
<span class="dark-red">Older</span><span class="decorative-marker">//</span> |
||||
<a class="paging-link" href="/administration/yet-another-arch-guide/">Yet Another Arch Guide</a> |
||||
</div> |
||||
|
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<div id="disqus_thread"></div> |
||||
<script type="application/javascript"> |
||||
var disqus_config = function () { |
||||
|
||||
|
||||
|
||||
}; |
||||
(function() { |
||||
if (["localhost", "127.0.0.1"].indexOf(window.location.hostname) != -1) { |
||||
document.getElementById('disqus_thread').innerHTML = 'Disqus comments not available by default when the website is previewed locally.'; |
||||
return; |
||||
} |
||||
var d = document, s = d.createElement('script'); s.async = true; |
||||
s.src = '//' + "hagfish" + '.disqus.com/embed.js'; |
||||
s.setAttribute('data-timestamp', +new Date()); |
||||
(d.head || d.body).appendChild(s); |
||||
})(); |
||||
</script> |
||||
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> |
||||
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a> |
||||
|
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,372 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
Changing boot targets // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content="Kristof Vandam"> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="Changing boot targets" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/administration/boot-targets/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
|
||||
|
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
|
||||
|
||||
<div id="toc" class="pure-u-1 pure-u-md-1-4"> |
||||
<small class="toc-label">Contents</small> |
||||
<nav id="TableOfContents"> |
||||
<ul> |
||||
<li><a href="#on-the-fly">On the fly</a></li> |
||||
<li><a href="#permanently-change-environments">Permanently change environments</a></li> |
||||
<li><a href="#set-target-on-boot">Set target on boot</a></li> |
||||
</ul> |
||||
</nav> |
||||
</div> |
||||
|
||||
|
||||
<section class="post"> |
||||
<h1 class="post-title"> |
||||
<a href="/administration/boot-targets/">Changing boot targets</a> |
||||
</h1> |
||||
<h3 class="post-subtitle"> |
||||
|
||||
</h3> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>9</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
<span class="post-author-single">By <a class="post-author" target="">Kristof Vandam</a></span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>Switch between run levels / environments.</p> |
||||
<h1 id="changing-boot-targets">Changing boot targets</h1> |
||||
<h2 id="on-the-fly">On the fly</h2> |
||||
<p>Goto a graphical environment</p> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">systemctl isolate graphical.target |
||||
</code></pre><p>Goto a text based environment</p> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">systemctl isolate multi-user.target |
||||
</code></pre><h2 id="permanently-change-environments">Permanently change environments</h2> |
||||
<p>Graphical environment</p> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">systemctl set-default graphical.target |
||||
</code></pre><p>Text based environment</p> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">systemctl set-default multi-user.target |
||||
</code></pre><h2 id="set-target-on-boot">Set target on boot</h2> |
||||
<ol> |
||||
<li>Interrupt the bootloader (GRUB) and edit the kernel entry before booting. Press <em>e</em> to edit the entry</li> |
||||
<li>Goto the line that starts with <em>linux16</em> suffix the line with your desired target as followed:</li> |
||||
</ol> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">systemd.unit=rescue.target |
||||
</code></pre> |
||||
|
||||
|
||||
|
||||
|
||||
<div class="tags-list"> |
||||
<span class="dark-red">Tags</span><span class="decorative-marker">//</span> |
||||
|
||||
<a class="post-tag post-tag-linux" href="https://blog.hagfi.sh//tags/linux">linux</a>, |
||||
|
||||
<a class="post-tag post-tag-security" href="https://blog.hagfi.sh//tags/security">security</a>, |
||||
|
||||
<a class="post-tag post-tag-boot" href="https://blog.hagfi.sh//tags/boot">boot</a>, |
||||
|
||||
</div> |
||||
|
||||
|
||||
|
||||
<div class="paging"> |
||||
<span class="paging-label">More Reading</span> |
||||
|
||||
<div class="paging-newer"> |
||||
<span class="dark-red">Newer</span><span class="decorative-marker">//</span> |
||||
<a class="paging-link" href="/administration/autofs/">Mount with automount (autofs)</a> |
||||
</div> |
||||
|
||||
|
||||
|
||||
<div class="paging-older"> |
||||
<span class="dark-red">Older</span><span class="decorative-marker">//</span> |
||||
<a class="paging-link" href="/administration/bash/">Bash Tips & Tricks</a> |
||||
</div> |
||||
|
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<div id="disqus_thread"></div> |
||||
<script type="application/javascript"> |
||||
var disqus_config = function () { |
||||
|
||||
|
||||
|
||||
}; |
||||
(function() { |
||||
if (["localhost", "127.0.0.1"].indexOf(window.location.hostname) != -1) { |
||||
document.getElementById('disqus_thread').innerHTML = 'Disqus comments not available by default when the website is previewed locally.'; |
||||
return; |
||||
} |
||||
var d = document, s = d.createElement('script'); s.async = true; |
||||
s.src = '//' + "hagfish" + '.disqus.com/embed.js'; |
||||
s.setAttribute('data-timestamp', +new Date()); |
||||
(d.head || d.body).appendChild(s); |
||||
})(); |
||||
</script> |
||||
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> |
||||
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a> |
||||
|
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,354 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
Troubles with interfaces after a VM clone // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content="Kristof Vandam"> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="Troubles with interfaces after a VM clone" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/administration/toubles-with-interfaces-after-clone/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
|
||||
|
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
|
||||
|
||||
<div id="toc" class="pure-u-1 pure-u-md-1-4"> |
||||
<small class="toc-label">Contents</small> |
||||
<nav id="TableOfContents"></nav> |
||||
</div> |
||||
|
||||
|
||||
<section class="post"> |
||||
<h1 class="post-title"> |
||||
<a href="/administration/toubles-with-interfaces-after-clone/">Troubles with interfaces after a VM clone</a> |
||||
</h1> |
||||
<h3 class="post-subtitle"> |
||||
|
||||
</h3> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
<span class="post-author-single">By <a class="post-author" target="">Kristof Vandam</a></span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>Remapping interfaces and their MAC address.</p> |
||||
<p>Often, when you clone a VM you could stumble against errors like:</p> |
||||
<pre tabindex="0"><code class="language-.language-command.line-numbers" data-lang=".language-command.line-numbers">[FAILED] Device eth0 does not seem to be present, delaying initialization |
||||
</code></pre><p>You could change your network configuration to match the correct interface or let Linux reread the available interfaces</p> |
||||
<p><em>/etc/udev/rules.d/70-persistent-net.rules</em> holds the configuration of available devices. Make sure that the MAC address is correct and that the name maches your configuration</p> |
||||
|
||||
|
||||
|
||||
|
||||
<div class="tags-list"> |
||||
<span class="dark-red">Tags</span><span class="decorative-marker">//</span> |
||||
|
||||
<a class="post-tag post-tag-network" href="https://blog.hagfi.sh//tags/network">network</a>, |
||||
|
||||
<a class="post-tag post-tag-networking" href="https://blog.hagfi.sh//tags/networking">networking</a>, |
||||
|
||||
<a class="post-tag post-tag-interfaces" href="https://blog.hagfi.sh//tags/interfaces">interfaces</a>, |
||||
|
||||
<a class="post-tag post-tag-ifconfig" href="https://blog.hagfi.sh//tags/ifconfig">ifconfig</a>, |
||||
|
||||
</div> |
||||
|
||||
|
||||
|
||||
<div class="paging"> |
||||
<span class="paging-label">More Reading</span> |
||||
|
||||
<div class="paging-newer"> |
||||
<span class="dark-red">Newer</span><span class="decorative-marker">//</span> |
||||
<a class="paging-link" href="/tools/ncdu/">NCDU: NCurses Disk Usage</a> |
||||
</div> |
||||
|
||||
|
||||
|
||||
<div class="paging-older"> |
||||
<span class="dark-red">Older</span><span class="decorative-marker">//</span> |
||||
<a class="paging-link" href="/tools/fatrace/">Fatrace: Report system wide file access events</a> |
||||
</div> |
||||
|
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<div id="disqus_thread"></div> |
||||
<script type="application/javascript"> |
||||
var disqus_config = function () { |
||||
|
||||
|
||||
|
||||
}; |
||||
(function() { |
||||
if (["localhost", "127.0.0.1"].indexOf(window.location.hostname) != -1) { |
||||
document.getElementById('disqus_thread').innerHTML = 'Disqus comments not available by default when the website is previewed locally.'; |
||||
return; |
||||
} |
||||
var d = document, s = d.createElement('script'); s.async = true; |
||||
s.src = '//' + "hagfish" + '.disqus.com/embed.js'; |
||||
s.setAttribute('data-timestamp', +new Date()); |
||||
(d.head || d.body).appendChild(s); |
||||
})(); |
||||
</script> |
||||
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> |
||||
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a> |
||||
|
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,478 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
Yet Another Arch Guide // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content="Kristof Vandam - Adam Verbeeck"> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="Yet Another Arch Guide" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/administration/yet-another-arch-guide/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
|
||||
|
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
|
||||
|
||||
<div id="toc" class="pure-u-1 pure-u-md-1-4"> |
||||
<small class="toc-label">Contents</small> |
||||
<nav id="TableOfContents"> |
||||
<ul> |
||||
<li><a href="#target">Target</a></li> |
||||
<li><a href="#pre-requirements">Pre-requirements</a></li> |
||||
<li><a href="#first-things-first">First things first</a> |
||||
<ul> |
||||
<li><a href="#keyboard-layout">Keyboard layout</a></li> |
||||
<li><a href="#check-your-internet-connection">Check your internet connection</a></li> |
||||
<li><a href="#set-timezone">Set timezone</a></li> |
||||
</ul> |
||||
</li> |
||||
<li><a href="#prepairing-your-disks">Prepairing your disks</a> |
||||
<ul> |
||||
<li><a href="#check-which-disks-you-have-available">Check which disks you have available</a></li> |
||||
<li><a href="#partitioning">Partitioning</a></li> |
||||
<li><a href="#lvm">LVM</a></li> |
||||
<li><a href="#filesystems">Filesystems</a></li> |
||||
<li><a href="#mount-your-disks-and-strap-your-seatbelt-we-gonna-pacstrap">Mount your disks and strap your seatbelt, we gonna pacstrap</a></li> |
||||
<li><a href="#make-sure-it-boots">Make sure it boots!</a></li> |
||||
<li><a href="#making-it-yours">making it yours</a></li> |
||||
<li><a href="#grub">Grub</a></li> |
||||
<li><a href="#fstab">fstab</a></li> |
||||
<li><a href="#lvm-cant-bot">LVM can’t bot</a></li> |
||||
<li><a href="#cross-fingers---reboot">Cross fingers - reboot</a></li> |
||||
<li><a href="#enable-services">Enable services</a></li> |
||||
</ul> |
||||
</li> |
||||
</ul> |
||||
</nav> |
||||
</div> |
||||
|
||||
|
||||
<section class="post"> |
||||
<h1 class="post-title"> |
||||
<a href="/administration/yet-another-arch-guide/">Yet Another Arch Guide</a> |
||||
</h1> |
||||
<h3 class="post-subtitle"> |
||||
|
||||
</h3> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>30</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
<span class="post-author-single">By <a class="post-author" target="">Kristof Vandam - Adam Verbeeck</a></span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>Setting up Arch with other bells and whistles.</p> |
||||
<h2 id="target">Target</h2> |
||||
<p>Lenovo X240 |
||||
i5-4300U |
||||
8GB DDR3 RAM |
||||
500GB SSD</p> |
||||
<h2 id="pre-requirements">Pre-requirements</h2> |
||||
<ul> |
||||
<li>Bootable USB with Arch installer installed</li> |
||||
<li>Cabled connection</li> |
||||
<li>Device connected to a power supply</li> |
||||
</ul> |
||||
<h2 id="first-things-first">First things first</h2> |
||||
<h3 id="keyboard-layout">Keyboard layout</h3> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">loadkeys [keyboard-identifier] |
||||
</code></pre><h3 id="check-your-internet-connection">Check your internet connection</h3> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">ping archlinux.org |
||||
</code></pre><h3 id="set-timezone">Set timezone</h3> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">timedatectl set-timezone Europe/Brussels |
||||
</code></pre><h2 id="prepairing-your-disks">Prepairing your disks</h2> |
||||
<h3 id="check-which-disks-you-have-available">Check which disks you have available</h3> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">fdisk -l |
||||
</code></pre><h3 id="partitioning">Partitioning</h3> |
||||
<p>Device your disk into individual partitions:</p> |
||||
<ol> |
||||
<li>boot</li> |
||||
<li>arch</li> |
||||
<li>windows</li> |
||||
</ol> |
||||
<h4 id="some-letters-we-gonna-use">Some letters we gonna use</h4> |
||||
<ul> |
||||
<li><strong>p</strong> show your partition</li> |
||||
<li><strong>n</strong> new partition</li> |
||||
<li><strong>a</strong> set the bootflag</li> |
||||
<li><strong>t</strong> set the type</li> |
||||
<li><strong>L</strong> show available types</li> |
||||
<li><strong>w</strong> write the changes</li> |
||||
</ul> |
||||
<h4 id="the-actual-work">The actual work</h4> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">fdisk [your-disk] |
||||
</code></pre><p>press <strong>n</strong> to create a new partition, the first prompt asks the type of partition, use <strong>p</strong> for Primary |
||||
Partition number, enter. |
||||
first sector, enter. |
||||
goto ‘Specify your sizes’.</p> |
||||
<h4 id="specify-your-sizes">Specify your sizes</h4> |
||||
<p>+[SIZE][TGMK]</p> |
||||
<h4 id="set-the-bootflag">Set the bootflag</h4> |
||||
<p>A partition needs a bootflag for the MBR know which partition use at startup</p> |
||||
<h4 id="set-the-types">Set the types</h4> |
||||
<p>Use <strong>t</strong> to set the type:</p> |
||||
<p><strong>83</strong> for boot <em>(linux)</em> |
||||
<strong>8e</strong> for arch <em>(lvm)</em> |
||||
<strong>7</strong> for windows <em>(HPFS/NTFS/exFAT)</em></p> |
||||
<h3 id="lvm">LVM</h3> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">pvcreate /dev/sda2 |
||||
vgcreate vg0 /dev/sda2 |
||||
lvcreate -L +2G -n swap vg0 |
||||
lvcreate -l 100%FREE -n swap vg0 |
||||
</code></pre><h3 id="filesystems">Filesystems</h3> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">mkswap /dev/mapper/vg0-swap |
||||
mkfs.ext4 /dev/sda1 |
||||
mkfs.xfs /dev/mapper/vg0-root |
||||
</code></pre><h3 id="mount-your-disks-and-strap-your-seatbelt-we-gonna-pacstrap">Mount your disks and strap your seatbelt, we gonna pacstrap</h3> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">mount /dev/mapper/vg0-root /mnt |
||||
mkdir /mnt/boot |
||||
mount /dev/sda1 /mnt/boot |
||||
</code></pre><pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">pacstrap /mnt base base-devel vim bash-completion networkmanager |
||||
</code></pre><h3 id="make-sure-it-boots">Make sure it boots!</h3> |
||||
<p>genfstab -U /mnt » /mnt/etc/fstab</p> |
||||
<h3 id="making-it-yours">making it yours</h3> |
||||
<p>arch-chroot /mnt</p> |
||||
<h4 id="time-date-region">Time, Date, Region</h4> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">ln -sf /usr/share/zoneinfo/Europe/Brussels /etc/localtime |
||||
hwclock --systohc |
||||
locale-gen |
||||
</code></pre><p>/etc/locale.conf</p> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">LANG=en_US.UTF-8 UTF-8 |
||||
</code></pre><p>/etc/vconsole.conf</p> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">KEYMAP=be-latin1 |
||||
</code></pre><p>/etc/hostname</p> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">myhostname |
||||
</code></pre><p>/etc/hosts</p> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">127.0.0.1 localhost |
||||
::1 localhost |
||||
127.0.0.1 myhostname.localdomain myhostname |
||||
</code></pre><pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">passwd |
||||
</code></pre><h3 id="grub">Grub</h3> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">pacman -S grub |
||||
grub-install /dev/sda |
||||
grub-mkconfig > /boot/grub/grub.cfg |
||||
</code></pre><p><em>Ignore warnings</em></p> |
||||
<h3 id="fstab">fstab</h3> |
||||
<p>Add swap to fstab</p> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">/dev/mapper/vg0-swap swap swap default 0 0 |
||||
</code></pre><p>Check your work by swapping the swap</p> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">swapoff -a |
||||
mount -a |
||||
swapon -a |
||||
free |
||||
</code></pre><p>does your swap have bytes?</p> |
||||
<h3 id="lvm-cant-bot">LVM can’t bot</h3> |
||||
<p>Add the LVM module to the mkinitcpio config file at /etc/mkinitcpio.conf</p> |
||||
<p>add <em>lvm2</em> to the HOOKS Array before filestystems</p> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">... |
||||
HOOKS=(base udev autodetect modconf block lvm2 filestystems keyboard fsck) |
||||
... |
||||
</code></pre><pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">mkinitcpio -p linux |
||||
</code></pre><h3 id="cross-fingers---reboot">Cross fingers - reboot</h3> |
||||
<h3 id="enable-services">Enable services</h3> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">systemctl enable NetworkManager |
||||
systemctl start NetworkManager |
||||
</code></pre> |
||||
|
||||
|
||||
|
||||
|
||||
<div class="tags-list"> |
||||
<span class="dark-red">Tags</span><span class="decorative-marker">//</span> |
||||
|
||||
<a class="post-tag post-tag-arch" href="https://blog.hagfi.sh//tags/arch">arch</a>, |
||||
|
||||
</div> |
||||
|
||||
|
||||
|
||||
<div class="paging"> |
||||
<span class="paging-label">More Reading</span> |
||||
|
||||
<div class="paging-newer"> |
||||
<span class="dark-red">Newer</span><span class="decorative-marker">//</span> |
||||
<a class="paging-link" href="/administration/bash/">Bash Tips & Tricks</a> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<div id="disqus_thread"></div> |
||||
<script type="application/javascript"> |
||||
var disqus_config = function () { |
||||
|
||||
|
||||
|
||||
}; |
||||
(function() { |
||||
if (["localhost", "127.0.0.1"].indexOf(window.location.hostname) != -1) { |
||||
document.getElementById('disqus_thread').innerHTML = 'Disqus comments not available by default when the website is previewed locally.'; |
||||
return; |
||||
} |
||||
var d = document, s = d.createElement('script'); s.async = true; |
||||
s.src = '//' + "hagfish" + '.disqus.com/embed.js'; |
||||
s.setAttribute('data-timestamp', +new Date()); |
||||
(d.head || d.body).appendChild(s); |
||||
})(); |
||||
</script> |
||||
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> |
||||
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a> |
||||
|
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,551 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
administration // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="administration" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/categories/administration/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/categories/administration/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/yet-another-arch-guide/">Yet Another Arch Guide</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>30</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam - Adam Verbeeck</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>2 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Setting up Arch with other bells and whistles.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/yet-another-arch-guide/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/bash/">Bash Tips & Tricks</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>11</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Olivier De Ram</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>2 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
<a class="post-category post-category-development" href="https://blog.hagfi.sh//categories/development">development</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Usefull bash tips & tricks</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/bash/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/boot-targets/">Changing boot targets</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>9</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>1 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Switch between run levels / environments.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/boot-targets/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/autofs/">Mount with automount (autofs)</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>9</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>2 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Automagically mount remote directories on login.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/autofs/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tools/fatrace/">Fatrace: Report system wide file access events</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>1 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-tools" href="https://blog.hagfi.sh//categories/tools">tools</a> |
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>fatrace watches every file on server (except from itself and other kernel file systems).</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/tools/fatrace/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/toubles-with-interfaces-after-clone/">Troubles with interfaces after a VM clone</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>1 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Remapping interfaces and their MAC address.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/toubles-with-interfaces-after-clone/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tools/ncdu/">NCDU: NCurses Disk Usage</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>17</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Sep</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>2 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-tools" href="https://blog.hagfi.sh//categories/tools">tools</a> |
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>ncdu is a command line tool to scan and calculate directory and file sizes.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/tools/ncdu/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/luks-encryption/">Luks Encryption</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>23</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>4 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Create an encrypted partition that will automatically mount at boot.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/luks-encryption/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,83 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>administration on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/categories/administration/</link> |
||||
<description>Recent content in administration on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Fri, 30 Nov 2018 10:08:22 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/categories/administration/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Yet Another Arch Guide</title> |
||||
<link>https://blog.hagfi.sh/administration/yet-another-arch-guide/</link> |
||||
<pubDate>Fri, 30 Nov 2018 10:08:22 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/yet-another-arch-guide/</guid> |
||||
<description><p>Setting up Arch with other bells and whistles.</p></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>Bash Tips & Tricks</title> |
||||
<link>https://blog.hagfi.sh/administration/bash/</link> |
||||
<pubDate>Sun, 11 Nov 2018 16:01:15 +0100</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/bash/</guid> |
||||
<description><p>Usefull bash tips &amp; tricks</p></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>Changing boot targets</title> |
||||
<link>https://blog.hagfi.sh/administration/boot-targets/</link> |
||||
<pubDate>Fri, 09 Nov 2018 10:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/boot-targets/</guid> |
||||
<description><p>Switch between run levels / environments.</p></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>Mount with automount (autofs)</title> |
||||
<link>https://blog.hagfi.sh/administration/autofs/</link> |
||||
<pubDate>Fri, 09 Nov 2018 10:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/autofs/</guid> |
||||
<description><p>Automagically mount remote directories on login.</p></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>Fatrace: Report system wide file access events</title> |
||||
<link>https://blog.hagfi.sh/tools/fatrace/</link> |
||||
<pubDate>Mon, 05 Nov 2018 22:13:49 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tools/fatrace/</guid> |
||||
<description><p>fatrace watches every file on server (except from itself and other kernel file systems).</p></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>Troubles with interfaces after a VM clone</title> |
||||
<link>https://blog.hagfi.sh/administration/toubles-with-interfaces-after-clone/</link> |
||||
<pubDate>Mon, 05 Nov 2018 22:13:49 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/toubles-with-interfaces-after-clone/</guid> |
||||
<description><p>Remapping interfaces and their MAC address.</p></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>NCDU: NCurses Disk Usage</title> |
||||
<link>https://blog.hagfi.sh/tools/ncdu/</link> |
||||
<pubDate>Mon, 17 Sep 2018 22:18:38 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tools/ncdu/</guid> |
||||
<description><p>ncdu is a command line tool to scan and calculate directory and file sizes.</p></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>Luks Encryption</title> |
||||
<link>https://blog.hagfi.sh/administration/luks-encryption/</link> |
||||
<pubDate>Thu, 23 Aug 2018 22:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/luks-encryption/</guid> |
||||
<description><p>Create an encrypted partition that will automatically mount at boot.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,320 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
development // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="development" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/categories/development/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/categories/development/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/bash/">Bash Tips & Tricks</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>11</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Olivier De Ram</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>2 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
<a class="post-category post-category-development" href="https://blog.hagfi.sh//categories/development">development</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Usefull bash tips & tricks</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/bash/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/development/live-search-with-hugo/">Live Search With HUGO</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>29</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>5 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-development" href="https://blog.hagfi.sh//categories/development">development</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>HUGO is static, that’s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that’s why I wanted a fast and fuzzy search implementation.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/development/live-search-with-hugo/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>development on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/categories/development/</link> |
||||
<description>Recent content in development on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Sun, 11 Nov 2018 16:01:15 +0100</lastBuildDate><atom:link href="https://blog.hagfi.sh/categories/development/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Bash Tips & Tricks</title> |
||||
<link>https://blog.hagfi.sh/administration/bash/</link> |
||||
<pubDate>Sun, 11 Nov 2018 16:01:15 +0100</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/bash/</guid> |
||||
<description><p>Usefull bash tips &amp; tricks</p></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>Live Search With HUGO</title> |
||||
<link>https://blog.hagfi.sh/development/live-search-with-hugo/</link> |
||||
<pubDate>Wed, 29 Aug 2018 22:44:46 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/development/live-search-with-hugo/</guid> |
||||
<description><p>HUGO is static, that&rsquo;s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that&rsquo;s why I wanted a fast and fuzzy search implementation.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,319 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
Categories // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="Categories" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/categories/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/categories/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/categories/administration/">administration</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>30</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/categories/development/">development</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>11</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/categories/tools/">tools</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>Categories on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/categories/</link> |
||||
<description>Recent content in Categories on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Fri, 30 Nov 2018 10:08:22 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/categories/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>administration</title> |
||||
<link>https://blog.hagfi.sh/categories/administration/</link> |
||||
<pubDate>Fri, 30 Nov 2018 10:08:22 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/categories/administration/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>development</title> |
||||
<link>https://blog.hagfi.sh/categories/development/</link> |
||||
<pubDate>Sun, 11 Nov 2018 16:01:15 +0100</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/categories/development/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>tools</title> |
||||
<link>https://blog.hagfi.sh/categories/tools/</link> |
||||
<pubDate>Mon, 05 Nov 2018 22:13:49 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/categories/tools/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,321 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
tools // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="tools" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/categories/tools/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/categories/tools/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tools/fatrace/">Fatrace: Report system wide file access events</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>1 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-tools" href="https://blog.hagfi.sh//categories/tools">tools</a> |
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>fatrace watches every file on server (except from itself and other kernel file systems).</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/tools/fatrace/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tools/ncdu/">NCDU: NCurses Disk Usage</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>17</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Sep</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>2 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-tools" href="https://blog.hagfi.sh//categories/tools">tools</a> |
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>ncdu is a command line tool to scan and calculate directory and file sizes.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/tools/ncdu/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>tools on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/categories/tools/</link> |
||||
<description>Recent content in tools on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Mon, 05 Nov 2018 22:13:49 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/categories/tools/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Fatrace: Report system wide file access events</title> |
||||
<link>https://blog.hagfi.sh/tools/fatrace/</link> |
||||
<pubDate>Mon, 05 Nov 2018 22:13:49 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tools/fatrace/</guid> |
||||
<description><p>fatrace watches every file on server (except from itself and other kernel file systems).</p></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>NCDU: NCurses Disk Usage</title> |
||||
<link>https://blog.hagfi.sh/tools/ncdu/</link> |
||||
<pubDate>Mon, 17 Sep 2018 22:18:38 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tools/ncdu/</guid> |
||||
<description><p>ncdu is a command line tool to scan and calculate directory and file sizes.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,259 @@
|
||||
/* PrismJS 1.15.0 |
||||
https://prismjs.com/download.html#themes=prism-okaidia&languages=markup+css+clike+javascript+markup-templating+php+puppet+pug+yaml&plugins=line-numbers+toolbar+show-language */ |
||||
/** |
||||
* okaidia theme for JavaScript, CSS and HTML |
||||
* Loosely based on Monokai textmate theme by http://www.monokai.nl/ |
||||
* @author ocodia |
||||
*/ |
||||
|
||||
code[class*="language-"], |
||||
pre[class*="language-"] { |
||||
color: #f8f8f2; |
||||
background: none; |
||||
text-shadow: 0 1px rgba(0, 0, 0, 0.3); |
||||
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; |
||||
text-align: left; |
||||
white-space: pre; |
||||
word-spacing: normal; |
||||
word-break: normal; |
||||
word-wrap: normal; |
||||
line-height: 1.5; |
||||
|
||||
-moz-tab-size: 4; |
||||
-o-tab-size: 4; |
||||
tab-size: 4; |
||||
|
||||
-webkit-hyphens: none; |
||||
-moz-hyphens: none; |
||||
-ms-hyphens: none; |
||||
hyphens: none; |
||||
} |
||||
|
||||
/* Code blocks */ |
||||
pre[class*="language-"] { |
||||
padding: 1em; |
||||
margin: 0; |
||||
overflow: auto; |
||||
border-radius: 0.3em; |
||||
} |
||||
|
||||
:not(pre) > code[class*="language-"], |
||||
pre[class*="language-"] { |
||||
background: #2E303A; |
||||
} |
||||
|
||||
/* Inline code */ |
||||
:not(pre) > code[class*="language-"] { |
||||
padding: .1em; |
||||
border-radius: .3em; |
||||
white-space: normal; |
||||
} |
||||
|
||||
.token.comment, |
||||
.token.prolog, |
||||
.token.doctype, |
||||
.token.cdata { |
||||
color: slategray; |
||||
} |
||||
|
||||
.token.punctuation { |
||||
color: #f8f8f2; |
||||
} |
||||
|
||||
.namespace { |
||||
opacity: .7; |
||||
} |
||||
|
||||
.token.property, |
||||
.token.tag, |
||||
.token.constant, |
||||
.token.symbol, |
||||
.token.deleted { |
||||
color: #f92672; |
||||
} |
||||
|
||||
.token.boolean, |
||||
.token.number { |
||||
color: #ae81ff; |
||||
} |
||||
|
||||
.token.selector, |
||||
.token.attr-name, |
||||
.token.string, |
||||
.token.char, |
||||
.token.builtin, |
||||
.token.inserted { |
||||
color: #a6e22e; |
||||
} |
||||
|
||||
.token.operator, |
||||
.token.entity, |
||||
.token.url, |
||||
.language-css .token.string, |
||||
.style .token.string, |
||||
.token.variable { |
||||
color: #f8f8f2; |
||||
} |
||||
|
||||
.token.atrule, |
||||
.token.attr-value, |
||||
.token.function, |
||||
.token.class-name { |
||||
color: #e6db74; |
||||
} |
||||
|
||||
.token.keyword { |
||||
color: #66d9ef; |
||||
} |
||||
|
||||
.token.regex, |
||||
.token.important { |
||||
color: #fd971f; |
||||
} |
||||
|
||||
.token.important, |
||||
.token.bold { |
||||
font-weight: bold; |
||||
} |
||||
.token.italic { |
||||
font-style: italic; |
||||
} |
||||
|
||||
.token.entity { |
||||
cursor: help; |
||||
} |
||||
|
||||
pre[class*="language-"].line-numbers { |
||||
position: relative; |
||||
padding-left: 3.8em; |
||||
counter-reset: linenumber; |
||||
} |
||||
|
||||
pre[class*="language-"].line-numbers > code { |
||||
position: relative; |
||||
white-space: inherit; |
||||
} |
||||
|
||||
.line-numbers .line-numbers-rows { |
||||
position: absolute; |
||||
pointer-events: none; |
||||
top: 0; |
||||
font-size: 100%; |
||||
left: -3.8em; |
||||
width: 3em; /* works for line-numbers below 1000 lines */ |
||||
letter-spacing: -1px; |
||||
|
||||
-webkit-user-select: none; |
||||
-moz-user-select: none; |
||||
-ms-user-select: none; |
||||
user-select: none; |
||||
|
||||
} |
||||
|
||||
.line-numbers-rows > span { |
||||
pointer-events: none; |
||||
display: block; |
||||
counter-increment: linenumber; |
||||
} |
||||
|
||||
.line-numbers-rows > span:before { |
||||
content: counter(linenumber); |
||||
color: #999; |
||||
display: block; |
||||
padding-right: 0.8em; |
||||
text-align: right; |
||||
} |
||||
|
||||
div.code-toolbar { |
||||
border-radius: 0.3em; |
||||
overflow: hidden; |
||||
position: relative; |
||||
} |
||||
|
||||
div.code-toolbar > .toolbar { |
||||
position: absolute; |
||||
top: 5px; |
||||
right: -2px; |
||||
transition: opacity 0.1s ease-in-out; |
||||
opacity: 0; |
||||
} |
||||
|
||||
div.code-toolbar:hover > .toolbar { |
||||
opacity: 1; |
||||
} |
||||
|
||||
div.code-toolbar > .toolbar .toolbar-item { |
||||
display: inline-block; |
||||
} |
||||
|
||||
div.code-toolbar > .toolbar a { |
||||
cursor: pointer; |
||||
} |
||||
|
||||
div.code-toolbar > .toolbar button { |
||||
background: none; |
||||
border: 0; |
||||
color: inherit; |
||||
font: inherit; |
||||
line-height: normal; |
||||
overflow: visible; |
||||
padding: 0; |
||||
-webkit-user-select: none; /* for button */ |
||||
-moz-user-select: none; |
||||
-ms-user-select: none; |
||||
} |
||||
|
||||
div.code-toolbar > .toolbar a, |
||||
div.code-toolbar > .toolbar button, |
||||
div.code-toolbar > .toolbar span { |
||||
color: #FFF; |
||||
font-size: .8em; |
||||
padding: 0 .5em; |
||||
background: #64C2A0; |
||||
padding: 1em; |
||||
border-top-right-radius: 0.4em; |
||||
border-bottom-left-radius: 0.5em; |
||||
} |
||||
|
||||
div.code-toolbar > .toolbar a:hover, |
||||
div.code-toolbar > .toolbar a:focus, |
||||
div.code-toolbar > .toolbar button:hover, |
||||
div.code-toolbar > .toolbar button:focus, |
||||
div.code-toolbar > .toolbar span:hover, |
||||
div.code-toolbar > .toolbar span:focus { |
||||
text-decoration: none; |
||||
} |
||||
|
||||
.command-line-prompt { |
||||
border-right: 1px solid #999; |
||||
display: block; |
||||
float: left; |
||||
font-size: 100%; |
||||
letter-spacing: -1px; |
||||
margin-right: 1em; |
||||
pointer-events: none; |
||||
|
||||
-webkit-user-select: none; |
||||
-moz-user-select: none; |
||||
-ms-user-select: none; |
||||
user-select: none; |
||||
} |
||||
|
||||
.command-line-prompt > span:before { |
||||
color: #999; |
||||
content: ' '; |
||||
display: block; |
||||
padding-right: 0.8em; |
||||
} |
||||
|
||||
.command-line-prompt > span[data-user]:before { |
||||
content: "[" attr(data-user) "@" attr(data-host) "] $"; |
||||
} |
||||
|
||||
.command-line-prompt > span[data-user="root"]:before { |
||||
content: "[" attr(data-user) "@" attr(data-host) "] #"; |
||||
} |
||||
|
||||
.command-line-prompt > span[data-prompt]:before { |
||||
content: attr(data-prompt); |
||||
} |
||||
@ -0,0 +1,564 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
Live Search With HUGO // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content="Kristof Vandam"> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="Live Search With HUGO" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/development/live-search-with-hugo/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
|
||||
|
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
|
||||
|
||||
<div id="toc" class="pure-u-1 pure-u-md-1-4"> |
||||
<small class="toc-label">Contents</small> |
||||
<nav id="TableOfContents"> |
||||
<ul> |
||||
<li><a href="#research">Research</a></li> |
||||
<li><a href="#create-a-json-object-containing-all-articles">Create a JSON object containing all articles</a></li> |
||||
<li><a href="#add-the-required-dependencies-we-use-cdns">Add the required dependencies (we use CDN’s)</a></li> |
||||
<li><a href="#add-the-actual-search-logic">Add the actual search logic</a> |
||||
<ul> |
||||
<li><a href="#create-the-vue-instance">Create the Vue instance</a></li> |
||||
<li><a href="#create-a-data-object">Create a data object</a></li> |
||||
<li><a href="#what-todo-when-everything-is-ready">What todo when everything is ready</a></li> |
||||
<li><a href="#when-something-is-entered-inside-the-search-field">When something is entered inside the search field</a></li> |
||||
<li><a href="#ok-cool-now-how-do-i-showcase-the-results">Ok, cool, now how do I showcase the results?</a></li> |
||||
</ul> |
||||
</li> |
||||
</ul> |
||||
</nav> |
||||
</div> |
||||
|
||||
|
||||
<section class="post"> |
||||
<h1 class="post-title"> |
||||
<a href="/development/live-search-with-hugo/">Live Search With HUGO</a> |
||||
</h1> |
||||
<h3 class="post-subtitle"> |
||||
|
||||
</h3> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>29</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
<span class="post-author-single">By <a class="post-author" target="">Kristof Vandam</a></span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
<a class="post-category post-category-development" href="https://blog.hagfi.sh//categories/development">development</a> |
||||
|
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>HUGO is static, that’s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that’s why I wanted a fast and fuzzy search implementation.</p> |
||||
<h2 id="research">Research</h2> |
||||
<p>Some this I found which helped to get there are:</p> |
||||
<ul> |
||||
<li><a href="https://gohugo.io/tools/search/">here</a> <em>more specific</em> <a href="https://gist.github.com/eddiewebb/735feb48f50f0ddd65ae5606a1cb41ae">here</a></li> |
||||
<li><a href="https://vuejs.org/">https://vuejs.org/</a></li> |
||||
<li><a href="http://fusejs.io/">http://fusejs.io/</a></li> |
||||
<li><a href="https://momentjs.com/">https://momentjs.com/</a></li> |
||||
<li><a href="https://github.com/axios/axios">https://github.com/axios/axios</a></li> |
||||
</ul> |
||||
<h2 id="create-a-json-object-containing-all-articles">Create a JSON object containing all articles</h2> |
||||
<p>Actually every data you want to search, in this guide (and on this website) I use the following data:</p> |
||||
<ol> |
||||
<li>Title</li> |
||||
<li>Date</li> |
||||
<li>Author</li> |
||||
<li>Tags</li> |
||||
<li>Content</li> |
||||
</ol> |
||||
<p>This is specified in a custom <em>layout</em>. Note the <code>(dict "title" ...)</code> line. You can add any data that HUGO processes (for each article). Its a list of key/values, the keys are presented between the quotes, the value as first value.</p> |
||||
<p><strong>layouts/json/single.html</strong></p> |
||||
<pre tabindex="0"><code class="language-.language-none.line-numbers" data-lang=".language-none.line-numbers">{{- $.Scratch.Add "index" slice -}} |
||||
{{- range where .Site.Pages "Type" "not in" (slice "page" "json") -}} |
||||
{{- $.Scratch.Add "index" (dict "title" .Title "date" .Date "author" .Params.author "href" .Permalink "tags" .Params.tags "content" .Plain) -}} |
||||
{{- end -}} |
||||
{{- $.Scratch.Get "index" | jsonify -}} |
||||
</code></pre><p>Now, with this file in place the next thing to do is to create a content page, where this layout is used. This file triggers the creation of “index.json”.</p> |
||||
<p><strong>content/search.md</strong></p> |
||||
<pre tabindex="0"><code class="language-.language-yaml.line-numbers" data-lang=".language-yaml.line-numbers">--- |
||||
date: "2017-03-05T21:10:52+01:00" |
||||
type: "json" |
||||
url: "index.json" |
||||
--- |
||||
</code></pre><p><strong>Example of the data returned</strong> |
||||
<em>You can checkout the json object for this website, just go to</em> <a href="https://hagfi.sh/index.json">https://hagfi.sh/index.json</a></p> |
||||
<pre tabindex="0"><code class="language-.language-json.line-numbers" data-lang=".language-json.line-numbers">[ |
||||
{ |
||||
"author": "Kristof Vandam", |
||||
"content": "HUGO is static, that\u0026rsquo;s a fact. How can I implement a live search? Searching the internet provided me only solutions that require a page refresh, this time of age performance is key, so that\u0026rsquo;s why I wanted a fast and fuzzy search implementation. Research Some this I found which helped to get there are:\n https://gohugo.io/tools/search/ ", |
||||
"date": "2018-08-29T22:44:46+02:00", |
||||
"href": "http://localhost:1313/development/live-search-with-hugo/", |
||||
"tags": null, |
||||
"title": "Live Search With HUGO" |
||||
} |
||||
] |
||||
</code></pre><h2 id="add-the-required-dependencies-we-use-cdns">Add the required dependencies (we use CDN’s)</h2> |
||||
<p>Make sure the following dependencies are loaded between the head tags. We use a little trick to let the browser decide if http or https is used. These are called <em>Protocol-Relative URL’s</em>.</p> |
||||
<pre tabindex="0"><code class="language-.language-markup.line-numbers" data-lang=".language-markup.line-numbers"><script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdn.bootcss.com/fuse.js/3.2.0/fuse.min.js"></script> |
||||
</code></pre><h2 id="add-the-actual-search-logic">Add the actual search logic</h2> |
||||
<p>It’s a best practice to add the JavaScript right before the closing body tags. I highly suggest checking out VueJS with Webpack, but in this case a some simple JS inside script tags will do just fine.</p> |
||||
<p>I will go over each section to clarify.</p> |
||||
<pre tabindex="0"><code class="language-.language-javascript.line-numbers" data-lang=".language-javascript.line-numbers">var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [] |
||||
}, |
||||
mounted() { |
||||
|
||||
let self = this |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options); |
||||
self.result = fuse.search(""); |
||||
}) |
||||
.catch(function (error) { |
||||
console.log(error) |
||||
}) |
||||
}, |
||||
watch: { |
||||
search(nval, oval) { |
||||
if (nval.length > 0) { |
||||
this.result = this.fuse.search(nval) |
||||
} else { |
||||
this.result = [] |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</code></pre><h3 id="create-the-vue-instance">Create the Vue instance</h3> |
||||
<p>When creating a new Vue instance we assign Vue to a DOM element, most of the time an ID on your body tag is used.</p> |
||||
<pre tabindex="0"><code class="language-.language-javascript.line-numbers" data-lang=".language-javascript.line-numbers">var app = new Vue({ |
||||
el: '#app', |
||||
... |
||||
}) |
||||
</code></pre><h3 id="create-a-data-object">Create a data object</h3> |
||||
<p>This object is accesible across your DOM and Vue instance. Inside functions you can reffer to these with <code>this.*</code>.language-<br> |
||||
I initiated some variables like ‘fuse’ so it can be used inside <em>watch</em> and <em>methods</em>.</p> |
||||
<pre tabindex="0"><code class="language-.language-javascript.line-numbers" data-lang=".language-javascript.line-numbers">data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [] |
||||
}, |
||||
</code></pre><h3 id="what-todo-when-everything-is-ready">What todo when everything is ready</h3> |
||||
<p>The <code>mounted()</code> function is triggered when everything ready to start processing your custom code. <em>(This function used to name ‘ready()')</em>.<br> |
||||
We assign <code>this</code> to <code>self</code> to handle some scope issues in the axios promise.<br> |
||||
We polulate some options for FuseJS, note that the keys array is important here. Here we specify which keys of our index.json we want to search.<br> |
||||
The index.json file is loaded with AJAX, this way the page should not wait for content that is not required immediately.<br> |
||||
When axios retrieves the date we create a Fuse instance (assigned to <code>self.fuse</code> (or <code>this.fuse</code>)).</p> |
||||
<pre tabindex="0"><code class="language-.language-javascript.line-numbers" data-lang=".language-javascript.line-numbers">mounted() { |
||||
|
||||
let self = this |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options); |
||||
self.result = fuse.search(""); |
||||
}) |
||||
.catch(function (error) { |
||||
console.log(error) |
||||
}) |
||||
}, |
||||
</code></pre><h3 id="when-something-is-entered-inside-the-search-field">When something is entered inside the search field</h3> |
||||
<p>We watch for <code>this.search</code> to change, if it changes this function is called. Remember we set <code>search: ""</code> inside our data object? |
||||
If the ‘nval’ (New VALue) is larger than 0 characters we trigger the search function of fuse, which will return a new data set, but filtered. |
||||
This dataset is stored inside <code>this.result</code>.language-</p> |
||||
<p>If the length of ‘nval’ changes to 0 characters we hardcode the result to be an empty array (to prevent possible edgecases).</p> |
||||
<pre tabindex="0"><code class="language-.language-javascript.line-numbers" data-lang=".language-javascript.line-numbers">watch: { |
||||
search(nval, oval) { |
||||
if (nval.length > 0) { |
||||
this.result = this.fuse.search(nval) |
||||
} else { |
||||
this.result = [] |
||||
} |
||||
} |
||||
} |
||||
</code></pre><h3 id="ok-cool-now-how-do-i-showcase-the-results">Ok, cool, now how do I showcase the results?</h3> |
||||
<p>Well, it’s up to you. The most important parts in this example are:</p> |
||||
<ol> |
||||
<li>Bind <code>this.search</code> to the input field (with <code>v-model</code>)</li> |
||||
<li>Loop through <code>this.result</code> with <code>v-for</code>, it will recreate the li tag ‘for each’ result item.</li> |
||||
<li>Use the result item, reffered as <code>r</code>.</li> |
||||
<li>Links are extracted from the result item by the ‘href’ key and bound to the href attribute. <code>:href="r.href"</code></li> |
||||
</ol> |
||||
<p>We use Moment.js to format the default (can be changed) HUGO date format to ‘D’ (Day), ‘MMM’ (Month, max 3 characters), ‘YYYY’ (Full Year).</p> |
||||
<pre tabindex="0"><code class="language-.language-markup.line-numbers" data-lang=".language-markup.line-numbers"><div class="search-wrapper"> |
||||
<input type="text" placeholder="Search ..." v-model="search" class="search"/> |
||||
<ul class="result-items"> |
||||
<li v-for="r of result" class="result-item"> |
||||
<div class="result-item-wrapper"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator">/</span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="nav-item-separator">//</span><a :href="r.href" v-text="r.title"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
</code></pre> |
||||
|
||||
|
||||
|
||||
|
||||
<div class="tags-list"> |
||||
<span class="dark-red">Tags</span><span class="decorative-marker">//</span> |
||||
|
||||
<a class="post-tag post-tag-vue" href="https://blog.hagfi.sh//tags/vue">vue</a>, |
||||
|
||||
<a class="post-tag post-tag-vuejs" href="https://blog.hagfi.sh//tags/vuejs">vuejs</a>, |
||||
|
||||
<a class="post-tag post-tag-prism" href="https://blog.hagfi.sh//tags/prism">prism</a>, |
||||
|
||||
<a class="post-tag post-tag-prismjs" href="https://blog.hagfi.sh//tags/prismjs">prismjs</a>, |
||||
|
||||
<a class="post-tag post-tag-hugo" href="https://blog.hagfi.sh//tags/hugo">hugo</a>, |
||||
|
||||
<a class="post-tag post-tag-javascript" href="https://blog.hagfi.sh//tags/javascript">javascript</a>, |
||||
|
||||
<a class="post-tag post-tag-js" href="https://blog.hagfi.sh//tags/js">js</a>, |
||||
|
||||
<a class="post-tag post-tag-json" href="https://blog.hagfi.sh//tags/json">json</a>, |
||||
|
||||
</div> |
||||
|
||||
|
||||
|
||||
<div class="paging"> |
||||
<span class="paging-label">More Reading</span> |
||||
|
||||
<div class="paging-newer"> |
||||
<span class="dark-red">Newer</span><span class="decorative-marker">//</span> |
||||
<a class="paging-link" href="/administration/letsencrypt/">Let's Encrypt</a> |
||||
</div> |
||||
|
||||
|
||||
|
||||
<div class="paging-older"> |
||||
<span class="dark-red">Older</span><span class="decorative-marker">//</span> |
||||
<a class="paging-link" href="/tools/ncdu/">NCDU: NCurses Disk Usage</a> |
||||
</div> |
||||
|
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<div id="disqus_thread"></div> |
||||
<script type="application/javascript"> |
||||
var disqus_config = function () { |
||||
|
||||
|
||||
|
||||
}; |
||||
(function() { |
||||
if (["localhost", "127.0.0.1"].indexOf(window.location.hostname) != -1) { |
||||
document.getElementById('disqus_thread').innerHTML = 'Disqus comments not available by default when the website is previewed locally.'; |
||||
return; |
||||
} |
||||
var d = document, s = d.createElement('script'); s.async = true; |
||||
s.src = '//' + "hagfish" + '.disqus.com/embed.js'; |
||||
s.setAttribute('data-timestamp', +new Date()); |
||||
(d.head || d.body).appendChild(s); |
||||
})(); |
||||
</script> |
||||
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> |
||||
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a> |
||||
|
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,53 +1,158 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> |
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> |
||||
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" |
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml"> |
||||
<url> |
||||
<loc>https://hagfi.sh/administration/letsencrypt/</loc> |
||||
<loc>https://blog.hagfi.sh/categories/administration/</loc> |
||||
<lastmod>2018-11-30T10:08:22+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/administration/</loc> |
||||
<lastmod>2018-11-30T10:08:22+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/arch/</loc> |
||||
<lastmod>2018-11-30T10:08:22+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/categories/</loc> |
||||
<lastmod>2018-11-30T10:08:22+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/</loc> |
||||
<lastmod>2018-11-30T10:08:22+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/</loc> |
||||
<lastmod>2018-11-30T10:08:22+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/administration/yet-another-arch-guide/</loc> |
||||
<lastmod>2018-11-30T10:08:22+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/bash/</loc> |
||||
<lastmod>2018-11-11T16:01:15+01:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/administration/bash/</loc> |
||||
<lastmod>2018-11-11T16:01:15+01:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/categories/development/</loc> |
||||
<lastmod>2018-11-11T16:01:15+01:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/script/</loc> |
||||
<lastmod>2018-11-11T16:01:15+01:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/boot/</loc> |
||||
<lastmod>2018-11-09T10:08:15+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/administration/boot-targets/</loc> |
||||
<lastmod>2018-11-09T10:08:15+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/data/</loc> |
||||
<lastmod>2018-11-09T10:08:15+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/linux/</loc> |
||||
<lastmod>2018-11-09T10:08:15+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/mount/</loc> |
||||
<lastmod>2018-11-09T10:08:15+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/administration/autofs/</loc> |
||||
<lastmod>2018-11-09T10:08:15+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/security/</loc> |
||||
<lastmod>2018-11-09T10:08:15+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/shares/</loc> |
||||
<lastmod>2018-11-09T10:08:15+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/directory/</loc> |
||||
<lastmod>2018-11-05T22:13:49+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tools/fatrace/</loc> |
||||
<lastmod>2018-11-05T22:13:49+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/ifconfig/</loc> |
||||
<lastmod>2018-11-05T22:13:49+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/interfaces/</loc> |
||||
<lastmod>2018-11-05T22:13:49+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/inventory/</loc> |
||||
<lastmod>2018-11-05T22:13:49+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/network/</loc> |
||||
<lastmod>2018-11-05T22:13:49+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/networking/</loc> |
||||
<lastmod>2018-11-05T22:13:49+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/size/</loc> |
||||
<lastmod>2018-11-05T22:13:49+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tools/</loc> |
||||
<lastmod>2018-11-05T22:13:49+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/categories/tools/</loc> |
||||
<lastmod>2018-11-05T22:13:49+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/administration/toubles-with-interfaces-after-clone/</loc> |
||||
<lastmod>2018-11-05T22:13:49+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/du/</loc> |
||||
<lastmod>2018-09-17T22:18:38+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/ncdu/</loc> |
||||
<lastmod>2018-09-17T22:18:38+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tools/ncdu/</loc> |
||||
<lastmod>2018-09-17T22:18:38+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/development/</loc> |
||||
<lastmod>2018-08-29T22:44:46+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/hugo/</loc> |
||||
<lastmod>2018-08-29T22:44:46+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/javascript/</loc> |
||||
<lastmod>2018-08-29T22:44:46+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/js/</loc> |
||||
<lastmod>2018-08-29T22:44:46+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/json/</loc> |
||||
<lastmod>2018-08-29T22:44:46+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/development/live-search-with-hugo/</loc> |
||||
<lastmod>2018-08-29T22:44:46+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/prism/</loc> |
||||
<lastmod>2018-08-29T22:44:46+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/prismjs/</loc> |
||||
<lastmod>2018-08-29T22:44:46+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/vue/</loc> |
||||
<lastmod>2018-08-29T22:44:46+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/vuejs/</loc> |
||||
<lastmod>2018-08-29T22:44:46+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/administration/letsencrypt/</loc> |
||||
<lastmod>2018-08-25T22:08:15+02:00</lastmod> |
||||
</url> |
||||
|
||||
<url> |
||||
<loc>https://hagfi.sh/administration/mysql_tuner/</loc> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/administration/mysql_tuner/</loc> |
||||
<lastmod>2018-08-25T22:08:15+02:00</lastmod> |
||||
</url> |
||||
|
||||
<url> |
||||
<loc>https://hagfi.sh/administration/windows_troubleshooting/</loc> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/administration/windows_troubleshooting/</loc> |
||||
<lastmod>2018-08-25T22:08:15+02:00</lastmod> |
||||
</url> |
||||
|
||||
<url> |
||||
<loc>https://hagfi.sh/administration/dont-let-your-application-interfere-with-letsencrypt/</loc> |
||||
<lastmod>2018-08-23T22:46:41+02:00</lastmod> |
||||
</url> |
||||
|
||||
<url> |
||||
<loc>https://hagfi.sh/development/vue-js/</loc> |
||||
<lastmod>2018-08-23T22:44:46+02:00</lastmod> |
||||
</url> |
||||
|
||||
<url> |
||||
<loc>https://hagfi.sh/administration/luks-encryption/</loc> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/disk/</loc> |
||||
<lastmod>2018-08-23T22:08:15+02:00</lastmod> |
||||
<priority>0.1</priority> |
||||
</url> |
||||
|
||||
<url> |
||||
<loc>https://hagfi.sh/administration/</loc> |
||||
<lastmod>2018-08-25T22:08:15+02:00</lastmod> |
||||
<priority>0</priority> |
||||
</url> |
||||
|
||||
<url> |
||||
<loc>https://hagfi.sh/development/</loc> |
||||
<lastmod>2018-08-23T22:44:46+02:00</lastmod> |
||||
<priority>0</priority> |
||||
</url> |
||||
|
||||
<url> |
||||
<loc>https://hagfi.sh/</loc> |
||||
<lastmod>2018-08-25T22:08:15+02:00</lastmod> |
||||
<priority>0</priority> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/encryption/</loc> |
||||
<lastmod>2018-08-23T22:08:15+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/administration/luks-encryption/</loc> |
||||
<lastmod>2018-08-23T22:08:15+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/tags/partition/</loc> |
||||
<lastmod>2018-08-23T22:08:15+02:00</lastmod> |
||||
</url><url> |
||||
<loc>https://blog.hagfi.sh/index.json</loc> |
||||
<lastmod>2017-03-05T21:10:52+01:00</lastmod> |
||||
</url> |
||||
|
||||
</urlset> |
||||
@ -0,0 +1,279 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
arch // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="arch" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/arch/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/arch/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/yet-another-arch-guide/">Yet Another Arch Guide</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>30</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam - Adam Verbeeck</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>2 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Setting up Arch with other bells and whistles.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/yet-another-arch-guide/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>arch on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/arch/</link> |
||||
<description>Recent content in arch on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Fri, 30 Nov 2018 10:08:22 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/arch/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Yet Another Arch Guide</title> |
||||
<link>https://blog.hagfi.sh/administration/yet-another-arch-guide/</link> |
||||
<pubDate>Fri, 30 Nov 2018 10:08:22 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/yet-another-arch-guide/</guid> |
||||
<description><p>Setting up Arch with other bells and whistles.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,281 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
bash // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="bash" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/bash/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/bash/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/bash/">Bash Tips & Tricks</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>11</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Olivier De Ram</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>2 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
<a class="post-category post-category-development" href="https://blog.hagfi.sh//categories/development">development</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Usefull bash tips & tricks</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/bash/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>bash on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/bash/</link> |
||||
<description>Recent content in bash on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Sun, 11 Nov 2018 16:01:15 +0100</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/bash/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Bash Tips & Tricks</title> |
||||
<link>https://blog.hagfi.sh/administration/bash/</link> |
||||
<pubDate>Sun, 11 Nov 2018 16:01:15 +0100</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/bash/</guid> |
||||
<description><p>Usefull bash tips &amp; tricks</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,279 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
boot // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="boot" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/boot/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/boot/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/boot-targets/">Changing boot targets</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>9</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>1 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Switch between run levels / environments.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/boot-targets/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>boot on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/boot/</link> |
||||
<description>Recent content in boot on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Fri, 09 Nov 2018 10:08:15 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/boot/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Changing boot targets</title> |
||||
<link>https://blog.hagfi.sh/administration/boot-targets/</link> |
||||
<pubDate>Fri, 09 Nov 2018 10:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/boot-targets/</guid> |
||||
<description><p>Switch between run levels / environments.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,279 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
data // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="data" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/data/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/data/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/autofs/">Mount with automount (autofs)</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>9</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>2 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Automagically mount remote directories on login.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/autofs/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>data on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/data/</link> |
||||
<description>Recent content in data on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Fri, 09 Nov 2018 10:08:15 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/data/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Mount with automount (autofs)</title> |
||||
<link>https://blog.hagfi.sh/administration/autofs/</link> |
||||
<pubDate>Fri, 09 Nov 2018 10:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/autofs/</guid> |
||||
<description><p>Automagically mount remote directories on login.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,321 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
directory // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="directory" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/directory/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/directory/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tools/fatrace/">Fatrace: Report system wide file access events</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>1 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-tools" href="https://blog.hagfi.sh//categories/tools">tools</a> |
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>fatrace watches every file on server (except from itself and other kernel file systems).</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/tools/fatrace/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tools/ncdu/">NCDU: NCurses Disk Usage</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>17</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Sep</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>2 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-tools" href="https://blog.hagfi.sh//categories/tools">tools</a> |
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>ncdu is a command line tool to scan and calculate directory and file sizes.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/tools/ncdu/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>directory on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/directory/</link> |
||||
<description>Recent content in directory on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Mon, 05 Nov 2018 22:13:49 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/directory/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Fatrace: Report system wide file access events</title> |
||||
<link>https://blog.hagfi.sh/tools/fatrace/</link> |
||||
<pubDate>Mon, 05 Nov 2018 22:13:49 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tools/fatrace/</guid> |
||||
<description><p>fatrace watches every file on server (except from itself and other kernel file systems).</p></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>NCDU: NCurses Disk Usage</title> |
||||
<link>https://blog.hagfi.sh/tools/ncdu/</link> |
||||
<pubDate>Mon, 17 Sep 2018 22:18:38 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tools/ncdu/</guid> |
||||
<description><p>ncdu is a command line tool to scan and calculate directory and file sizes.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,279 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
disk // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="disk" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/disk/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/disk/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/luks-encryption/">Luks Encryption</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>23</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>4 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Create an encrypted partition that will automatically mount at boot.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/luks-encryption/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>disk on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/disk/</link> |
||||
<description>Recent content in disk on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Thu, 23 Aug 2018 22:08:15 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/disk/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Luks Encryption</title> |
||||
<link>https://blog.hagfi.sh/administration/luks-encryption/</link> |
||||
<pubDate>Thu, 23 Aug 2018 22:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/luks-encryption/</guid> |
||||
<description><p>Create an encrypted partition that will automatically mount at boot.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,281 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
du // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="du" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/du/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/du/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tools/ncdu/">NCDU: NCurses Disk Usage</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>17</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Sep</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>2 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-tools" href="https://blog.hagfi.sh//categories/tools">tools</a> |
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>ncdu is a command line tool to scan and calculate directory and file sizes.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/tools/ncdu/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>du on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/du/</link> |
||||
<description>Recent content in du on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Mon, 17 Sep 2018 22:18:38 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/du/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>NCDU: NCurses Disk Usage</title> |
||||
<link>https://blog.hagfi.sh/tools/ncdu/</link> |
||||
<pubDate>Mon, 17 Sep 2018 22:18:38 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tools/ncdu/</guid> |
||||
<description><p>ncdu is a command line tool to scan and calculate directory and file sizes.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,279 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
encryption // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="encryption" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/encryption/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/encryption/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/luks-encryption/">Luks Encryption</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>23</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>4 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Create an encrypted partition that will automatically mount at boot.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/luks-encryption/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>encryption on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/encryption/</link> |
||||
<description>Recent content in encryption on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Thu, 23 Aug 2018 22:08:15 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/encryption/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Luks Encryption</title> |
||||
<link>https://blog.hagfi.sh/administration/luks-encryption/</link> |
||||
<pubDate>Thu, 23 Aug 2018 22:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/luks-encryption/</guid> |
||||
<description><p>Create an encrypted partition that will automatically mount at boot.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,280 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
hugo // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="hugo" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/hugo/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/hugo/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/development/live-search-with-hugo/">Live Search With HUGO</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>29</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>5 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-development" href="https://blog.hagfi.sh//categories/development">development</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>HUGO is static, that’s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that’s why I wanted a fast and fuzzy search implementation.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/development/live-search-with-hugo/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>hugo on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/hugo/</link> |
||||
<description>Recent content in hugo on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Wed, 29 Aug 2018 22:44:46 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/hugo/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Live Search With HUGO</title> |
||||
<link>https://blog.hagfi.sh/development/live-search-with-hugo/</link> |
||||
<pubDate>Wed, 29 Aug 2018 22:44:46 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/development/live-search-with-hugo/</guid> |
||||
<description><p>HUGO is static, that&rsquo;s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that&rsquo;s why I wanted a fast and fuzzy search implementation.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,279 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
ifconfig // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="ifconfig" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/ifconfig/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/ifconfig/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/toubles-with-interfaces-after-clone/">Troubles with interfaces after a VM clone</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>1 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Remapping interfaces and their MAC address.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/toubles-with-interfaces-after-clone/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>ifconfig on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/ifconfig/</link> |
||||
<description>Recent content in ifconfig on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Mon, 05 Nov 2018 22:13:49 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/ifconfig/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Troubles with interfaces after a VM clone</title> |
||||
<link>https://blog.hagfi.sh/administration/toubles-with-interfaces-after-clone/</link> |
||||
<pubDate>Mon, 05 Nov 2018 22:13:49 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/toubles-with-interfaces-after-clone/</guid> |
||||
<description><p>Remapping interfaces and their MAC address.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,995 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
Tags // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="Tags" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/arch/">arch</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>30</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/bash/">bash</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>11</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/script/">script</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>11</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/boot/">boot</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>9</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/data/">data</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>9</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/linux/">linux</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>9</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/mount/">mount</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>9</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/security/">security</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>9</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/shares/">shares</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>9</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/directory/">directory</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/ifconfig/">ifconfig</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/interfaces/">interfaces</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/inventory/">inventory</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/network/">network</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/networking/">networking</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/size/">size</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/du/">du</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>17</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Sep</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/ncdu/">ncdu</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>17</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Sep</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/hugo/">hugo</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>29</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/javascript/">javascript</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>29</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/js/">js</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>29</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/json/">json</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>29</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/prism/">prism</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>29</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/prismjs/">prismjs</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>29</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/vue/">vue</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>29</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/vuejs/">vuejs</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>29</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/disk/">disk</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>23</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/encryption/">encryption</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>23</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tags/partition/">partition</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>23</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>0 min. read</em></span> |
||||
|
||||
|
||||
</p> |
||||
|
||||
|
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,272 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>Tags on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/</link> |
||||
<description>Recent content in Tags on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Fri, 30 Nov 2018 10:08:22 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>arch</title> |
||||
<link>https://blog.hagfi.sh/tags/arch/</link> |
||||
<pubDate>Fri, 30 Nov 2018 10:08:22 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/arch/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>bash</title> |
||||
<link>https://blog.hagfi.sh/tags/bash/</link> |
||||
<pubDate>Sun, 11 Nov 2018 16:01:15 +0100</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/bash/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>script</title> |
||||
<link>https://blog.hagfi.sh/tags/script/</link> |
||||
<pubDate>Sun, 11 Nov 2018 16:01:15 +0100</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/script/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>boot</title> |
||||
<link>https://blog.hagfi.sh/tags/boot/</link> |
||||
<pubDate>Fri, 09 Nov 2018 10:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/boot/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>data</title> |
||||
<link>https://blog.hagfi.sh/tags/data/</link> |
||||
<pubDate>Fri, 09 Nov 2018 10:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/data/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>linux</title> |
||||
<link>https://blog.hagfi.sh/tags/linux/</link> |
||||
<pubDate>Fri, 09 Nov 2018 10:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/linux/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>mount</title> |
||||
<link>https://blog.hagfi.sh/tags/mount/</link> |
||||
<pubDate>Fri, 09 Nov 2018 10:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/mount/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>security</title> |
||||
<link>https://blog.hagfi.sh/tags/security/</link> |
||||
<pubDate>Fri, 09 Nov 2018 10:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/security/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>shares</title> |
||||
<link>https://blog.hagfi.sh/tags/shares/</link> |
||||
<pubDate>Fri, 09 Nov 2018 10:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/shares/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>directory</title> |
||||
<link>https://blog.hagfi.sh/tags/directory/</link> |
||||
<pubDate>Mon, 05 Nov 2018 22:13:49 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/directory/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>ifconfig</title> |
||||
<link>https://blog.hagfi.sh/tags/ifconfig/</link> |
||||
<pubDate>Mon, 05 Nov 2018 22:13:49 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/ifconfig/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>interfaces</title> |
||||
<link>https://blog.hagfi.sh/tags/interfaces/</link> |
||||
<pubDate>Mon, 05 Nov 2018 22:13:49 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/interfaces/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>inventory</title> |
||||
<link>https://blog.hagfi.sh/tags/inventory/</link> |
||||
<pubDate>Mon, 05 Nov 2018 22:13:49 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/inventory/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>network</title> |
||||
<link>https://blog.hagfi.sh/tags/network/</link> |
||||
<pubDate>Mon, 05 Nov 2018 22:13:49 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/network/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>networking</title> |
||||
<link>https://blog.hagfi.sh/tags/networking/</link> |
||||
<pubDate>Mon, 05 Nov 2018 22:13:49 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/networking/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>size</title> |
||||
<link>https://blog.hagfi.sh/tags/size/</link> |
||||
<pubDate>Mon, 05 Nov 2018 22:13:49 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/size/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>du</title> |
||||
<link>https://blog.hagfi.sh/tags/du/</link> |
||||
<pubDate>Mon, 17 Sep 2018 22:18:38 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/du/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>ncdu</title> |
||||
<link>https://blog.hagfi.sh/tags/ncdu/</link> |
||||
<pubDate>Mon, 17 Sep 2018 22:18:38 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/ncdu/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>hugo</title> |
||||
<link>https://blog.hagfi.sh/tags/hugo/</link> |
||||
<pubDate>Wed, 29 Aug 2018 22:44:46 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/hugo/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>javascript</title> |
||||
<link>https://blog.hagfi.sh/tags/javascript/</link> |
||||
<pubDate>Wed, 29 Aug 2018 22:44:46 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/javascript/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>js</title> |
||||
<link>https://blog.hagfi.sh/tags/js/</link> |
||||
<pubDate>Wed, 29 Aug 2018 22:44:46 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/js/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>json</title> |
||||
<link>https://blog.hagfi.sh/tags/json/</link> |
||||
<pubDate>Wed, 29 Aug 2018 22:44:46 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/json/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>prism</title> |
||||
<link>https://blog.hagfi.sh/tags/prism/</link> |
||||
<pubDate>Wed, 29 Aug 2018 22:44:46 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/prism/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>prismjs</title> |
||||
<link>https://blog.hagfi.sh/tags/prismjs/</link> |
||||
<pubDate>Wed, 29 Aug 2018 22:44:46 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/prismjs/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>vue</title> |
||||
<link>https://blog.hagfi.sh/tags/vue/</link> |
||||
<pubDate>Wed, 29 Aug 2018 22:44:46 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/vue/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>vuejs</title> |
||||
<link>https://blog.hagfi.sh/tags/vuejs/</link> |
||||
<pubDate>Wed, 29 Aug 2018 22:44:46 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/vuejs/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>disk</title> |
||||
<link>https://blog.hagfi.sh/tags/disk/</link> |
||||
<pubDate>Thu, 23 Aug 2018 22:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/disk/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>encryption</title> |
||||
<link>https://blog.hagfi.sh/tags/encryption/</link> |
||||
<pubDate>Thu, 23 Aug 2018 22:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/encryption/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>partition</title> |
||||
<link>https://blog.hagfi.sh/tags/partition/</link> |
||||
<pubDate>Thu, 23 Aug 2018 22:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tags/partition/</guid> |
||||
<description></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,279 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
interfaces // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="interfaces" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/interfaces/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/interfaces/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/toubles-with-interfaces-after-clone/">Troubles with interfaces after a VM clone</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>1 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Remapping interfaces and their MAC address.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/toubles-with-interfaces-after-clone/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>interfaces on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/interfaces/</link> |
||||
<description>Recent content in interfaces on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Mon, 05 Nov 2018 22:13:49 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/interfaces/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Troubles with interfaces after a VM clone</title> |
||||
<link>https://blog.hagfi.sh/administration/toubles-with-interfaces-after-clone/</link> |
||||
<pubDate>Mon, 05 Nov 2018 22:13:49 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/toubles-with-interfaces-after-clone/</guid> |
||||
<description><p>Remapping interfaces and their MAC address.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,321 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
inventory // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="inventory" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/inventory/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/inventory/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tools/fatrace/">Fatrace: Report system wide file access events</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>1 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-tools" href="https://blog.hagfi.sh//categories/tools">tools</a> |
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>fatrace watches every file on server (except from itself and other kernel file systems).</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/tools/fatrace/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tools/ncdu/">NCDU: NCurses Disk Usage</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>17</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Sep</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>2 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-tools" href="https://blog.hagfi.sh//categories/tools">tools</a> |
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>ncdu is a command line tool to scan and calculate directory and file sizes.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/tools/ncdu/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>inventory on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/inventory/</link> |
||||
<description>Recent content in inventory on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Mon, 05 Nov 2018 22:13:49 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/inventory/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Fatrace: Report system wide file access events</title> |
||||
<link>https://blog.hagfi.sh/tools/fatrace/</link> |
||||
<pubDate>Mon, 05 Nov 2018 22:13:49 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tools/fatrace/</guid> |
||||
<description><p>fatrace watches every file on server (except from itself and other kernel file systems).</p></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>NCDU: NCurses Disk Usage</title> |
||||
<link>https://blog.hagfi.sh/tools/ncdu/</link> |
||||
<pubDate>Mon, 17 Sep 2018 22:18:38 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tools/ncdu/</guid> |
||||
<description><p>ncdu is a command line tool to scan and calculate directory and file sizes.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,280 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
javascript // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="javascript" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/javascript/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/javascript/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/development/live-search-with-hugo/">Live Search With HUGO</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>29</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>5 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-development" href="https://blog.hagfi.sh//categories/development">development</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>HUGO is static, that’s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that’s why I wanted a fast and fuzzy search implementation.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/development/live-search-with-hugo/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>javascript on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/javascript/</link> |
||||
<description>Recent content in javascript on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Wed, 29 Aug 2018 22:44:46 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/javascript/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Live Search With HUGO</title> |
||||
<link>https://blog.hagfi.sh/development/live-search-with-hugo/</link> |
||||
<pubDate>Wed, 29 Aug 2018 22:44:46 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/development/live-search-with-hugo/</guid> |
||||
<description><p>HUGO is static, that&rsquo;s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that&rsquo;s why I wanted a fast and fuzzy search implementation.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,280 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
js // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="js" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/js/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/js/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/development/live-search-with-hugo/">Live Search With HUGO</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>29</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>5 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-development" href="https://blog.hagfi.sh//categories/development">development</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>HUGO is static, that’s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that’s why I wanted a fast and fuzzy search implementation.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/development/live-search-with-hugo/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>js on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/js/</link> |
||||
<description>Recent content in js on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Wed, 29 Aug 2018 22:44:46 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/js/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Live Search With HUGO</title> |
||||
<link>https://blog.hagfi.sh/development/live-search-with-hugo/</link> |
||||
<pubDate>Wed, 29 Aug 2018 22:44:46 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/development/live-search-with-hugo/</guid> |
||||
<description><p>HUGO is static, that&rsquo;s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that&rsquo;s why I wanted a fast and fuzzy search implementation.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,280 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
json // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="json" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/json/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/json/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/development/live-search-with-hugo/">Live Search With HUGO</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>29</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>5 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-development" href="https://blog.hagfi.sh//categories/development">development</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>HUGO is static, that’s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that’s why I wanted a fast and fuzzy search implementation.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/development/live-search-with-hugo/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>json on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/json/</link> |
||||
<description>Recent content in json on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Wed, 29 Aug 2018 22:44:46 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/json/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Live Search With HUGO</title> |
||||
<link>https://blog.hagfi.sh/development/live-search-with-hugo/</link> |
||||
<pubDate>Wed, 29 Aug 2018 22:44:46 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/development/live-search-with-hugo/</guid> |
||||
<description><p>HUGO is static, that&rsquo;s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that&rsquo;s why I wanted a fast and fuzzy search implementation.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,317 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
linux // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="linux" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/linux/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/linux/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/boot-targets/">Changing boot targets</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>9</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>1 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Switch between run levels / environments.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/boot-targets/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/autofs/">Mount with automount (autofs)</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>9</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>2 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Automagically mount remote directories on login.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/autofs/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>linux on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/linux/</link> |
||||
<description>Recent content in linux on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Fri, 09 Nov 2018 10:08:15 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/linux/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Changing boot targets</title> |
||||
<link>https://blog.hagfi.sh/administration/boot-targets/</link> |
||||
<pubDate>Fri, 09 Nov 2018 10:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/boot-targets/</guid> |
||||
<description><p>Switch between run levels / environments.</p></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>Mount with automount (autofs)</title> |
||||
<link>https://blog.hagfi.sh/administration/autofs/</link> |
||||
<pubDate>Fri, 09 Nov 2018 10:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/autofs/</guid> |
||||
<description><p>Automagically mount remote directories on login.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,279 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
mount // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="mount" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/mount/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/mount/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/autofs/">Mount with automount (autofs)</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>9</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>2 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Automagically mount remote directories on login.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/autofs/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>mount on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/mount/</link> |
||||
<description>Recent content in mount on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Fri, 09 Nov 2018 10:08:15 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/mount/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Mount with automount (autofs)</title> |
||||
<link>https://blog.hagfi.sh/administration/autofs/</link> |
||||
<pubDate>Fri, 09 Nov 2018 10:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/autofs/</guid> |
||||
<description><p>Automagically mount remote directories on login.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,281 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
ncdu // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="ncdu" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/ncdu/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/ncdu/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tools/ncdu/">NCDU: NCurses Disk Usage</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>17</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Sep</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>2 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-tools" href="https://blog.hagfi.sh//categories/tools">tools</a> |
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>ncdu is a command line tool to scan and calculate directory and file sizes.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/tools/ncdu/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>ncdu on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/ncdu/</link> |
||||
<description>Recent content in ncdu on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Mon, 17 Sep 2018 22:18:38 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/ncdu/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>NCDU: NCurses Disk Usage</title> |
||||
<link>https://blog.hagfi.sh/tools/ncdu/</link> |
||||
<pubDate>Mon, 17 Sep 2018 22:18:38 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tools/ncdu/</guid> |
||||
<description><p>ncdu is a command line tool to scan and calculate directory and file sizes.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,279 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
network // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="network" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/network/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/network/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/toubles-with-interfaces-after-clone/">Troubles with interfaces after a VM clone</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>1 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Remapping interfaces and their MAC address.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/toubles-with-interfaces-after-clone/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>network on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/network/</link> |
||||
<description>Recent content in network on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Mon, 05 Nov 2018 22:13:49 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/network/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Troubles with interfaces after a VM clone</title> |
||||
<link>https://blog.hagfi.sh/administration/toubles-with-interfaces-after-clone/</link> |
||||
<pubDate>Mon, 05 Nov 2018 22:13:49 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/toubles-with-interfaces-after-clone/</guid> |
||||
<description><p>Remapping interfaces and their MAC address.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,279 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
networking // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="networking" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/networking/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/networking/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/toubles-with-interfaces-after-clone/">Troubles with interfaces after a VM clone</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>1 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Remapping interfaces and their MAC address.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/toubles-with-interfaces-after-clone/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>networking on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/networking/</link> |
||||
<description>Recent content in networking on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Mon, 05 Nov 2018 22:13:49 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/networking/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Troubles with interfaces after a VM clone</title> |
||||
<link>https://blog.hagfi.sh/administration/toubles-with-interfaces-after-clone/</link> |
||||
<pubDate>Mon, 05 Nov 2018 22:13:49 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/toubles-with-interfaces-after-clone/</guid> |
||||
<description><p>Remapping interfaces and their MAC address.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,279 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
partition // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="partition" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/partition/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/partition/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/luks-encryption/">Luks Encryption</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>23</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>4 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Create an encrypted partition that will automatically mount at boot.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/luks-encryption/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>partition on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/partition/</link> |
||||
<description>Recent content in partition on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Thu, 23 Aug 2018 22:08:15 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/partition/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Luks Encryption</title> |
||||
<link>https://blog.hagfi.sh/administration/luks-encryption/</link> |
||||
<pubDate>Thu, 23 Aug 2018 22:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/luks-encryption/</guid> |
||||
<description><p>Create an encrypted partition that will automatically mount at boot.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,280 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
prism // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="prism" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/prism/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/prism/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/development/live-search-with-hugo/">Live Search With HUGO</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>29</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>5 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-development" href="https://blog.hagfi.sh//categories/development">development</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>HUGO is static, that’s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that’s why I wanted a fast and fuzzy search implementation.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/development/live-search-with-hugo/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>prism on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/prism/</link> |
||||
<description>Recent content in prism on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Wed, 29 Aug 2018 22:44:46 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/prism/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Live Search With HUGO</title> |
||||
<link>https://blog.hagfi.sh/development/live-search-with-hugo/</link> |
||||
<pubDate>Wed, 29 Aug 2018 22:44:46 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/development/live-search-with-hugo/</guid> |
||||
<description><p>HUGO is static, that&rsquo;s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that&rsquo;s why I wanted a fast and fuzzy search implementation.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,280 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
prismjs // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="prismjs" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/prismjs/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/prismjs/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/development/live-search-with-hugo/">Live Search With HUGO</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>29</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>5 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-development" href="https://blog.hagfi.sh//categories/development">development</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>HUGO is static, that’s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that’s why I wanted a fast and fuzzy search implementation.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/development/live-search-with-hugo/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>prismjs on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/prismjs/</link> |
||||
<description>Recent content in prismjs on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Wed, 29 Aug 2018 22:44:46 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/prismjs/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Live Search With HUGO</title> |
||||
<link>https://blog.hagfi.sh/development/live-search-with-hugo/</link> |
||||
<pubDate>Wed, 29 Aug 2018 22:44:46 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/development/live-search-with-hugo/</guid> |
||||
<description><p>HUGO is static, that&rsquo;s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that&rsquo;s why I wanted a fast and fuzzy search implementation.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,281 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
script // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="script" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/script/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/script/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/bash/">Bash Tips & Tricks</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>11</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Olivier De Ram</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>2 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
<a class="post-category post-category-development" href="https://blog.hagfi.sh//categories/development">development</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Usefull bash tips & tricks</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/bash/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>script on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/script/</link> |
||||
<description>Recent content in script on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Sun, 11 Nov 2018 16:01:15 +0100</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/script/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Bash Tips & Tricks</title> |
||||
<link>https://blog.hagfi.sh/administration/bash/</link> |
||||
<pubDate>Sun, 11 Nov 2018 16:01:15 +0100</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/bash/</guid> |
||||
<description><p>Usefull bash tips &amp; tricks</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,317 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
security // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="security" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/security/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/security/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/boot-targets/">Changing boot targets</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>9</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>1 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Switch between run levels / environments.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/boot-targets/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/luks-encryption/">Luks Encryption</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>23</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>4 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Create an encrypted partition that will automatically mount at boot.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/luks-encryption/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>security on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/security/</link> |
||||
<description>Recent content in security on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Fri, 09 Nov 2018 10:08:15 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/security/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Changing boot targets</title> |
||||
<link>https://blog.hagfi.sh/administration/boot-targets/</link> |
||||
<pubDate>Fri, 09 Nov 2018 10:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/boot-targets/</guid> |
||||
<description><p>Switch between run levels / environments.</p></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>Luks Encryption</title> |
||||
<link>https://blog.hagfi.sh/administration/luks-encryption/</link> |
||||
<pubDate>Thu, 23 Aug 2018 22:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/luks-encryption/</guid> |
||||
<description><p>Create an encrypted partition that will automatically mount at boot.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,279 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
shares // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="shares" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/shares/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/shares/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/administration/autofs/">Mount with automount (autofs)</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>9</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>2 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>Automagically mount remote directories on login.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/administration/autofs/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>shares on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/shares/</link> |
||||
<description>Recent content in shares on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Fri, 09 Nov 2018 10:08:15 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/shares/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Mount with automount (autofs)</title> |
||||
<link>https://blog.hagfi.sh/administration/autofs/</link> |
||||
<pubDate>Fri, 09 Nov 2018 10:08:15 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/administration/autofs/</guid> |
||||
<description><p>Automagically mount remote directories on login.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,321 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
size // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="size" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/size/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/size/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tools/fatrace/">Fatrace: Report system wide file access events</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>1 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-tools" href="https://blog.hagfi.sh//categories/tools">tools</a> |
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>fatrace watches every file on server (except from itself and other kernel file systems).</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/tools/fatrace/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/tools/ncdu/">NCDU: NCurses Disk Usage</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>17</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Sep</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>2 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-tools" href="https://blog.hagfi.sh//categories/tools">tools</a> |
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>ncdu is a command line tool to scan and calculate directory and file sizes.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/tools/ncdu/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>size on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/size/</link> |
||||
<description>Recent content in size on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Mon, 05 Nov 2018 22:13:49 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/size/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Fatrace: Report system wide file access events</title> |
||||
<link>https://blog.hagfi.sh/tools/fatrace/</link> |
||||
<pubDate>Mon, 05 Nov 2018 22:13:49 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tools/fatrace/</guid> |
||||
<description><p>fatrace watches every file on server (except from itself and other kernel file systems).</p></description> |
||||
</item> |
||||
|
||||
<item> |
||||
<title>NCDU: NCurses Disk Usage</title> |
||||
<link>https://blog.hagfi.sh/tools/ncdu/</link> |
||||
<pubDate>Mon, 17 Sep 2018 22:18:38 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/tools/ncdu/</guid> |
||||
<description><p>ncdu is a command line tool to scan and calculate directory and file sizes.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,280 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
vue // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="vue" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/vue/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/vue/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/development/live-search-with-hugo/">Live Search With HUGO</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>29</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>5 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-development" href="https://blog.hagfi.sh//categories/development">development</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>HUGO is static, that’s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that’s why I wanted a fast and fuzzy search implementation.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/development/live-search-with-hugo/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>vue on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/vue/</link> |
||||
<description>Recent content in vue on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Wed, 29 Aug 2018 22:44:46 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/vue/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Live Search With HUGO</title> |
||||
<link>https://blog.hagfi.sh/development/live-search-with-hugo/</link> |
||||
<pubDate>Wed, 29 Aug 2018 22:44:46 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/development/live-search-with-hugo/</guid> |
||||
<description><p>HUGO is static, that&rsquo;s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that&rsquo;s why I wanted a fast and fuzzy search implementation.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,280 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
vuejs // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content=""> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="vuejs" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tags/vuejs/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="https://blog.hagfi.sh/tags/vuejs/index.xml" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
<div class="posts"> |
||||
|
||||
<section class="post"> |
||||
<header class="post-header"> |
||||
|
||||
<h1 class="post-title"> |
||||
<a href="/development/live-search-with-hugo/">Live Search With HUGO</a> |
||||
</h1> |
||||
</header> |
||||
<p class="post-meta"> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>29</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Aug</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
By <a class="post-author" >Kristof Vandam</a> |
||||
|
||||
|
||||
<span class="post-reading-time"><i class="fa fa-clock-o"></i> <em>5 min. read</em></span> |
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
|
||||
<a class="post-category post-category-development" href="https://blog.hagfi.sh//categories/development">development</a> |
||||
|
||||
</div> |
||||
|
||||
</p> |
||||
|
||||
<article class="post-summary"> |
||||
<p>HUGO is static, that’s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that’s why I wanted a fast and fuzzy search implementation.</p> |
||||
</article> |
||||
<div class="read-more-link"> |
||||
<a href="/development/live-search-with-hugo/"><span class="read-more-slashes">//</span>Read More...</a> |
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> |
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
||||
<channel> |
||||
<title>vuejs on Hagfi.sh</title> |
||||
<link>https://blog.hagfi.sh/tags/vuejs/</link> |
||||
<description>Recent content in vuejs on Hagfi.sh</description> |
||||
<generator>Hugo -- gohugo.io</generator> |
||||
<language>en-us</language> |
||||
<lastBuildDate>Wed, 29 Aug 2018 22:44:46 +0200</lastBuildDate><atom:link href="https://blog.hagfi.sh/tags/vuejs/index.xml" rel="self" type="application/rss+xml" /> |
||||
<item> |
||||
<title>Live Search With HUGO</title> |
||||
<link>https://blog.hagfi.sh/development/live-search-with-hugo/</link> |
||||
<pubDate>Wed, 29 Aug 2018 22:44:46 +0200</pubDate> |
||||
|
||||
<guid>https://blog.hagfi.sh/development/live-search-with-hugo/</guid> |
||||
<description><p>HUGO is static, that&rsquo;s a fact. How can I implement a live search? Searching the internet provided me only solutions |
||||
that require a page refresh, this time of age performance is key, so that&rsquo;s why I wanted a fast and fuzzy search implementation.</p></description> |
||||
</item> |
||||
|
||||
</channel> |
||||
</rss> |
||||
@ -0,0 +1,439 @@
|
||||
<!DOCTYPE html> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us"> |
||||
<head> |
||||
<title> |
||||
Fatrace: Report system wide file access events // Hagfi.sh |
||||
</title> |
||||
|
||||
<link href="http://gmpg.org/xfn/11" rel="profile"> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> |
||||
|
||||
<meta name="description" content=""> |
||||
<meta name="keywords" content=""> |
||||
<meta name="author" content="Kristof Vandam"> |
||||
<meta name="generator" content="Hugo 0.92.0" /> |
||||
|
||||
<meta property="og:title" content="Fatrace: Report system wide file access events" /> |
||||
<meta property="og:description" content="" /> |
||||
<meta property="og:type" content="website" /> |
||||
<meta property="og:locale" content="en_US" /> |
||||
<meta property="og:url" content="https://blog.hagfi.sh/tools/fatrace/" /> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/base-min.css"> |
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"> |
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/grids-responsive-min.css"> |
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/redlounge.css"> |
||||
<link rel="stylesheet" href="https://blog.hagfi.sh//css/prism.css"> |
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> |
||||
<link href='//fonts.googleapis.com/css?family=Raleway:400,200,100,700,300,500,600,800' rel='stylesheet' type='text/css'> |
||||
<link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> |
||||
|
||||
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/touch-icon-144-precomposed.png"> |
||||
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.png"> |
||||
|
||||
|
||||
<link href="" rel="alternate" type="application/rss+xml" title="Hagfi.sh" /> |
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script> |
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script> |
||||
<script src="//cdn.jsdelivr.net/npm/vuewordcloud@18.7.11/VueWordCloud.js"></script> |
||||
<script src="https://blog.hagfi.sh//js/prism.js"></script> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript"> |
||||
var doNotTrack = false; |
||||
if (!doNotTrack) { |
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
||||
ga('create', 'UA-124890410-1', 'auto'); |
||||
|
||||
ga('send', 'pageview'); |
||||
} |
||||
</script> |
||||
|
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
|
||||
|
||||
<div id="layout" class="pure-g"> |
||||
<div class="sidebar pure-u-1 pure-u-md-1-4" id="app"> |
||||
<div class="header"> |
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="brand-title"><a href="/">Hagfi.sh</a></h1> |
||||
<h2 class="brand-tagline">A devops guide to the galaxy</h2> |
||||
|
||||
<div class="counters"> |
||||
<a class="counter" href="/">13 |
||||
<div class="counter-sub">Documents</div> |
||||
</a> |
||||
<a class="counter" href="/tags">29 |
||||
<div class="counter-sub">Tags</div> |
||||
</a> |
||||
<a class="counter" href="/categories">3 |
||||
<div class="counter-sub">Categories</div> |
||||
</a> |
||||
</div> |
||||
|
||||
<nav class="nav"> |
||||
|
||||
</nav> |
||||
|
||||
<div class="search-wrapper"> |
||||
<input |
||||
type="text" |
||||
placeholder="Search ..." |
||||
v-model="search" |
||||
@keydown.down.prevent="navigate(1)" |
||||
@keydown.up.prevent="navigate(-1)" |
||||
@keyup.enter.prevent="navigate(result[selected].href)" |
||||
ref="searchInput" |
||||
class="search" |
||||
/> |
||||
|
||||
<svg height="100" width="100" ref="resultPoint" class="result-point"> |
||||
<circle cx="5" cy="5" r="5" fill="#FFF" /> |
||||
</svg> |
||||
|
||||
<ul class="result-items"> |
||||
<li v-for="r, i of result" class="result-item" ref="resultItem"> |
||||
<div class="result-item-wrapper" :class="{ 'result-item-selected': selected === i }"> |
||||
<div class="result-item-left"> |
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup v-text="moment(r.date).format('D')"></sup></span><span class="post-date-separator" v-text="'/'"></span><span class="post-date-month" v-text="moment(r.date).format('MMM')"></span> <span class="post-date-year" v-text="moment(r.date).format('YYYY')"></span> |
||||
</span> |
||||
<template v-if="r.author">By <a class="post-author" v-text="r.author"></a></template> |
||||
</div> |
||||
<div class="result-item-left"> |
||||
<span class="result-item-separator nav-item-separator" v-text="'//'"></span><a :href="r.href" v-text="r.title" class="result-item-link"></a> |
||||
</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
<div class="content pure-u-1 pure-u-md-3-4"> |
||||
<a name="top"></a> |
||||
|
||||
|
||||
|
||||
|
||||
<div id="toc" class="pure-u-1 pure-u-md-1-4"> |
||||
<small class="toc-label">Contents</small> |
||||
<nav id="TableOfContents"> |
||||
<ul> |
||||
<li><a href="#install-on-centos7">Install on Centos7</a></li> |
||||
<li><a href="#usage">Usage</a> |
||||
<ul> |
||||
<li><a href="#output">Output</a></li> |
||||
</ul> |
||||
</li> |
||||
<li><a href="#usecases">Usecases</a></li> |
||||
<li><a href="#references">References</a></li> |
||||
</ul> |
||||
</nav> |
||||
</div> |
||||
|
||||
|
||||
<section class="post"> |
||||
<h1 class="post-title"> |
||||
<a href="/tools/fatrace/">Fatrace: Report system wide file access events</a> |
||||
</h1> |
||||
<h3 class="post-subtitle"> |
||||
|
||||
</h3> |
||||
|
||||
<span class="post-date"> |
||||
<span class="post-date-day"><sup>5</sup></span><span class="post-date-separator">/</span><span class="post-date-month">Nov</span> <span class="post-date-year">2018</span> |
||||
</span> |
||||
|
||||
|
||||
|
||||
<span class="post-author-single">By <a class="post-author" target="">Kristof Vandam</a></span> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-categories"> |
||||
|
||||
<a class="post-category post-category-tools" href="https://blog.hagfi.sh//categories/tools">tools</a> |
||||
|
||||
<a class="post-category post-category-administration" href="https://blog.hagfi.sh//categories/administration">administration</a> |
||||
|
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>fatrace watches every file on server (except from itself and other kernel file systems).</p> |
||||
<p><em>fatrace</em> watches every file on server (except from itself and other kernel file systems).</p> |
||||
<h2 id="install-on-centos7">Install on Centos7</h2> |
||||
<p>Download the repo file from <em>fedorainfracloud.org</em></p> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">sudo curl https://copr.fedorainfracloud.org/coprs/ifas/fatrace/repo/epel-7/ifas-fatrace-epel-7.repo > /etc/yum.repos.d/ifas.repo |
||||
sudo yum install fatrace -y |
||||
</code></pre><h2 id="usage">Usage</h2> |
||||
<table> |
||||
<thead> |
||||
<tr> |
||||
<th>Option</th> |
||||
<th>Description</th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
<tr> |
||||
<td>-c, –current-mount</td> |
||||
<td>Only record events on partition/mount of current directory. Without this option, all (real) partitions/mount points are being watched.</td> |
||||
</tr> |
||||
<tr> |
||||
<td>-o FILE, –output=FILE</td> |
||||
<td>Write events to given file instead of standard output.</td> |
||||
</tr> |
||||
<tr> |
||||
<td>-s SECONDS, –seconds=SECONDS</td> |
||||
<td>Stop after the given number of seconds.</td> |
||||
</tr> |
||||
<tr> |
||||
<td>-t, –timestamp</td> |
||||
<td>Add timestamp to events. When this option is given once, the format will be a humanreadable</td> |
||||
</tr> |
||||
<tr> |
||||
<td>-p PID, –ignore-pid=PID</td> |
||||
<td>Ignore events for this process ID. Can be specified multiple times.</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
<h3 id="output">Output</h3> |
||||
<p>The output should look something like the following. My action was reloading this page while watching with fatrace.</p> |
||||
<pre tabindex="0"><code class="language-.language-command" data-lang=".language-command">$ fatrace -t |
||||
12:58:20.859174 pickup(7666): CO /var/spool/postfix/maildrop |
||||
12:58:21.017572 caddy(7472): CO /var/www/vhosts/blog/tools/fatrace |
||||
12:58:21.017572 caddy(7472): CO /var/www/vhosts/blog/tools/fatrace/index.html |
||||
12:58:21.017572 caddy(7472): W /var/log/caddy/blog.log |
||||
12:58:21.213908 caddy(7472): CO /var/www/vhosts/blog/index.json |
||||
12:58:21.213908 caddy(7472): W /var/log/caddy/blog.log |
||||
12:58:21.305848 caddy(7472): RCO /var/www/vhosts/blog/img/favicon.png |
||||
12:58:21.305848 caddy(7472): W /var/log/caddy/blog.log |
||||
</code></pre><table> |
||||
<thead> |
||||
<tr> |
||||
<th>Letter</th> |
||||
<th>Description</th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
<tr> |
||||
<td>R</td> |
||||
<td>Read</td> |
||||
</tr> |
||||
<tr> |
||||
<td>W</td> |
||||
<td>Write</td> |
||||
</tr> |
||||
<tr> |
||||
<td>O</td> |
||||
<td>Open</td> |
||||
</tr> |
||||
<tr> |
||||
<td>C</td> |
||||
<td>Close</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
<p>Action identifiers can be combined</p> |
||||
<h2 id="usecases">Usecases</h2> |
||||
<p>identifying which files are accessed by a process.</p> |
||||
<h2 id="references">References</h2> |
||||
<p><a href="http://manpages.ubuntu.com/manpages/trusty/man1/fatrace.1.html">Manpage fatrace</a></p> |
||||
|
||||
|
||||
|
||||
|
||||
<div class="tags-list"> |
||||
<span class="dark-red">Tags</span><span class="decorative-marker">//</span> |
||||
|
||||
<a class="post-tag post-tag-directory" href="https://blog.hagfi.sh//tags/directory">directory</a>, |
||||
|
||||
<a class="post-tag post-tag-size" href="https://blog.hagfi.sh//tags/size">size</a>, |
||||
|
||||
<a class="post-tag post-tag-inventory" href="https://blog.hagfi.sh//tags/inventory">inventory</a>, |
||||
|
||||
</div> |
||||
|
||||
|
||||
|
||||
<div class="paging"> |
||||
<span class="paging-label">More Reading</span> |
||||
|
||||
<div class="paging-newer"> |
||||
<span class="dark-red">Newer</span><span class="decorative-marker">//</span> |
||||
<a class="paging-link" href="/administration/toubles-with-interfaces-after-clone/">Troubles with interfaces after a VM clone</a> |
||||
</div> |
||||
|
||||
|
||||
|
||||
<div class="paging-older"> |
||||
<span class="dark-red">Older</span><span class="decorative-marker">//</span> |
||||
<a class="paging-link" href="/administration/autofs/">Mount with automount (autofs)</a> |
||||
</div> |
||||
|
||||
</div> |
||||
|
||||
</section> |
||||
|
||||
<div id="disqus_thread"></div> |
||||
<script type="application/javascript"> |
||||
var disqus_config = function () { |
||||
|
||||
|
||||
|
||||
}; |
||||
(function() { |
||||
if (["localhost", "127.0.0.1"].indexOf(window.location.hostname) != -1) { |
||||
document.getElementById('disqus_thread').innerHTML = 'Disqus comments not available by default when the website is previewed locally.'; |
||||
return; |
||||
} |
||||
var d = document, s = d.createElement('script'); s.async = true; |
||||
s.src = '//' + "hagfish" + '.disqus.com/embed.js'; |
||||
s.setAttribute('data-timestamp', +new Date()); |
||||
(d.head || d.body).appendChild(s); |
||||
})(); |
||||
</script> |
||||
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> |
||||
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a> |
||||
|
||||
|
||||
<div class="footer"> |
||||
<hr class="thin" /> |
||||
<div class="pure-menu pure-menu-horizontal pure-menu-open"> |
||||
<ul class="footer-menu"> |
||||
|
||||
</ul> |
||||
</div> |
||||
|
||||
<p>© 2022. All rights reserved.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
<script> |
||||
var app = new Vue({ |
||||
el: '#app', |
||||
data: { |
||||
fuse: null, |
||||
search: "", |
||||
result: [], |
||||
index: [], |
||||
selected: 0 |
||||
}, |
||||
mounted() { |
||||
let self = this |
||||
|
||||
|
||||
window.addEventListener("keypress", function(e) { |
||||
self.$refs.searchInput.focus() |
||||
}) |
||||
|
||||
let options = { |
||||
shouldSort: true, |
||||
threshold: 0.6, |
||||
location: 0, |
||||
distance: 100, |
||||
maxPatternLength: 32, |
||||
minMatchCharLength: 1, |
||||
keys: [ |
||||
"title", |
||||
"author", |
||||
"date", |
||||
"content" |
||||
] |
||||
} |
||||
axios.get('/index.json') |
||||
.then(function (response) { |
||||
self.index = response.data |
||||
self.fuse = new Fuse(response.data, options) |
||||
}) |
||||
.catch(function (error) { |
||||
}) |
||||
}, |
||||
watch: { |
||||
result(nval, oval) { |
||||
nval.length > 0 ? this.pointer(0) : this.pointer(-1) |
||||
}, |
||||
search(nval, oval) { |
||||
this.result = this.fuse.search(nval) |
||||
} |
||||
}, |
||||
methods: { |
||||
navigate(val) { |
||||
switch (val) { |
||||
case 1: if (this.selected < this.result.length - 1) { this.selected++ }; break; |
||||
case -1: if (this.selected > 0 ) { this.selected-- }; break; |
||||
default: window.location.href = val; break; |
||||
} |
||||
this.pointer(this.selected) |
||||
}, |
||||
pointer(selected) { |
||||
let self = this |
||||
|
||||
if (selected >= 0) { |
||||
Vue.nextTick().then(function() { |
||||
let height = self.$refs.resultItem[selected].clientHeight |
||||
let top = self.$refs.resultItem[selected].getBoundingClientRect().top |
||||
let left = self.$refs.resultItem[selected].getBoundingClientRect().left |
||||
|
||||
self.$refs.resultPoint.style.top = (top+height/2)+'px' |
||||
self.$refs.resultPoint.style.left = (left-20)+'px' |
||||
}) |
||||
} else { |
||||
this.$refs.resultPoint.style.left = '-50px' |
||||
return |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
</script> |
||||
</body> |
||||
</html> |
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue