Compare commits
45 commits
Author | SHA1 | Date | |
---|---|---|---|
52dda1a7f2 | |||
eabc5ba217 | |||
3fcebe8bad | |||
|
af3f7d5250 | ||
4f1d0c8f2a | |||
3293cd49e5 | |||
|
3c7af26650 | ||
|
53647566bc | ||
|
e0b1a91024 | ||
|
4b1fa03b8a | ||
|
6bcd6b927b | ||
|
489c0f488f | ||
|
673bb136ea | ||
|
84a5fa1a33 | ||
|
785df83e39 | ||
|
948d1ae931 | ||
|
4f70864203 | ||
|
4e46051e19 | ||
|
0f0300a23a | ||
|
5be82c6fb2 | ||
|
4f15e02965 | ||
|
4a509ba6f0 | ||
|
6371d64e64 | ||
|
5ae11fd831 | ||
|
d38fab3a22 | ||
|
4a25160c9a | ||
|
b1483fc339 | ||
c8bb7168ba | |||
|
73a5ec2c37 | ||
|
9f43036e11 | ||
|
16f24469a9 | ||
|
3d0cda5a1f | ||
|
6e15f2e684 | ||
|
a057dafb56 | ||
|
52cf6abdfa | ||
|
8558e881dc | ||
|
b413388506 | ||
|
701e5fb72c | ||
|
97858dd3b2 | ||
|
c04a7848b9 | ||
|
48f648cae3 | ||
|
8f0c71f664 | ||
|
79f78a4a7d | ||
|
1002fb23a6 | ||
|
1f26ff08c2 |
6
.gitignore
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
.DS_Store
|
||||
.jekyll-cache/
|
||||
.sass-cache/
|
||||
_site/
|
||||
.jekyll-metadata
|
||||
node_modules/
|
25
404.html
Normal file
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
layout: main
|
||||
permalink: /404.html
|
||||
---
|
||||
|
||||
<h1>404 - page not found</h1>
|
||||
|
||||
<p>
|
||||
If you didn't come on purpose I apologise, but the page you are searching
|
||||
doesn't exist. If you came on purpose enjoy this minimal <code>gif</code> of a
|
||||
dancing Rick Astley.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<img
|
||||
class="block-center"
|
||||
src="{{ '/astley.gif' | prepend:site.baseurl | prepend:site.url }}"
|
||||
alt="Rick Astley gif"
|
||||
/>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Thanks to <a href="https://github.com/Giorgio-Croci">Giorgio Croci </a> for
|
||||
the <code>gif</code>!
|
||||
</p>
|
22
404.md
|
@ -1,22 +0,0 @@
|
|||
---
|
||||
layout: main
|
||||
permalink: /404.html
|
||||
---
|
||||
|
||||
# 404 - page not found
|
||||
|
||||
If you didn't come on purpose I apologise, but the page you are searching doesn't exist.
|
||||
But, if you came on purpose, enjoy a flat Rick Astley gif dancing.
|
||||
|
||||
![Rick gif](/astley.gif)
|
||||
|
||||
<style>
|
||||
img{
|
||||
display: inline-block
|
||||
}
|
||||
main{
|
||||
text-align: center
|
||||
}
|
||||
</style>
|
||||
|
||||
Thanks [Giorgio Croci!](https://github.com/Giorgio-Croci)
|
7
LICENSE.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
Copyright 2018 Claudio Maggioni
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
11
README.md
Normal file
|
@ -0,0 +1,11 @@
|
|||
<!-- vim: set et sw=2 ts=2 tw=80 : -->
|
||||
|
||||
# maggioni.xyz
|
||||
|
||||
Jekyll source of website https://maggioni.xyz.
|
||||
|
||||
## Licensing
|
||||
|
||||
Content of articles is licensed under
|
||||
[CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/). HTML code is
|
||||
licensed under the MIT license.
|
23
_config.yml
|
@ -1,3 +1,4 @@
|
|||
# vim: set ts=2 sw=2 et tw=80:
|
||||
# Welcome to Jekyll!
|
||||
#
|
||||
# This config file is meant for settings that affect your whole blog, values
|
||||
|
@ -6,15 +7,23 @@
|
|||
# 'jekyll serve'. If you change this file, please restart the server process.
|
||||
|
||||
# Site settings
|
||||
title: Ramblings of an archer archer
|
||||
#email: maggioniclaudio1999[at]gmail.com
|
||||
description: > # this means to ignore newlines until "baseurl:"
|
||||
Things which an Arch Linux user that also owns an recurve bow can write.
|
||||
title: maggioni.xyz
|
||||
email: contact@maggioni.xyz
|
||||
description: # this means to ignore newlines until "baseurl:"
|
||||
baseurl: "" # the subpath of your site, e.g. /blog
|
||||
url: "http://praticamentetilde.github.io" # the base hostname & protocol for your site
|
||||
github_username: praticamentetilde
|
||||
url: "https://maggioni.xyz" # the base hostname & protocol for your site
|
||||
github_username: maggicl
|
||||
future: true
|
||||
# Build settings
|
||||
markdown: kramdown
|
||||
exclude:
|
||||
- hooks/
|
||||
- node_modules/
|
||||
- package.json
|
||||
- package-lock.json
|
||||
- .gitignore
|
||||
collections:
|
||||
- slides
|
||||
portfolio:
|
||||
output: true
|
||||
gems:
|
||||
- jekyll-tidy
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
<div id="disqus_thread"></div>
|
||||
<script>
|
||||
/**
|
||||
* RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
|
||||
* LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables
|
||||
*/
|
||||
/*
|
||||
var disqus_config = function () {
|
||||
this.page.url = PAGE_URL; // Replace PAGE_URL with your page's canonical URL variable
|
||||
this.page.identifier = PAGE_IDENTIFIER; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
|
||||
};
|
||||
*/
|
||||
(function() { // DON'T EDIT BELOW THIS LINE
|
||||
var d = document, s = d.createElement('script');
|
||||
|
||||
s.src = '//ramblingsofanarcherarcher.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" rel="nofollow">comments powered by Disqus.</a></noscript>
|
|
@ -1,7 +1,35 @@
|
|||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<div class="icons">
|
||||
<a class="icon" href="https://github.com/praticamentetilde"><i class="fa fa-github"></i></a>
|
||||
<a class="icon" href="https://www.reddit.com/user/praticamentetilde"><i class="fa fa-reddit"></i></a>
|
||||
<a target="_blank" class="icon" href="https://tea.maggioni.xyz/maggicl">
|
||||
<i class="fab fa-git"></i
|
||||
></a>
|
||||
<a target="_blank" class="icon" href="https://github.com/maggicl">
|
||||
<i class="fab fa-github"></i
|
||||
></a>
|
||||
<a target="_blank" class="icon" href="https://gitlab.com/maggicl">
|
||||
<i class="fab fa-gitlab"></i
|
||||
></a>
|
||||
<a
|
||||
target="_blank"
|
||||
class="icon"
|
||||
href="https://www.linkedin.com/in/claudio-maggioni/"
|
||||
>
|
||||
<i class="fab fa-linkedin"></i
|
||||
></a>
|
||||
</div>
|
||||
<h6 class="author">Claudio Maggioni 2016</h6>
|
||||
<div class="author">
|
||||
Last updated on {{ site.time | date: '%Y-%m-%d' }}<br />
|
||||
Content under
|
||||
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
|
||||
CC BY-NC-SA 4.0</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script src="https://unpkg.com/konami@1.6.3/konami.js"></script>
|
||||
<script>
|
||||
const easterEgg = new Konami(() => window.location.href =
|
||||
"https://www.youtube.com/watch?v=uUTDCOBI1ZI");
|
||||
</script>
|
||||
{% comment %} vim: set ts=2 sw=2 et tw=80: {% endcomment %}
|
||||
|
|
|
@ -1,33 +1,52 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<title>{% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %}</title>
|
||||
<meta name="description" content="{% if page.excerpt %}{{ page.excerpt | strip_html | strip_newlines | truncate: 160 }}{% else %}{{ site.description }}{% endif %}">
|
||||
<title>
|
||||
{% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape
|
||||
}}{% endif %}
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
content="{% if page.excerpt %}{{ page.excerpt | strip_html | strip_newlines | truncate: 160 }}{% else %}{{ site.description }}{% endif %}"
|
||||
/>
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css">
|
||||
<link rel="stylesheet" href="{{ "/css/main.css" | prepend: site.baseurl }}">
|
||||
<link href='https://fonts.googleapis.com/css?family=Hammersmith+One' rel='stylesheet' type='text/css'>
|
||||
<link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}">
|
||||
<link rel="alternate" type="application/rss+xml" title="{{ site.title }}" href="{{ "/feed.xml" | prepend: site.baseurl | prepend: site.url }}">
|
||||
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
|
||||
<script src="https://rawgit.com/snaptortoise/konami-js/master/konami.js"></script>
|
||||
<!-- Favicon -->
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
<meta name="msapplication-TileColor" content="#ffffff">
|
||||
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="/css/bombardier.css?v={{ site.time | date: '%s' }}"
|
||||
/>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="/css/font-awesome.css?v={{ site.time | date: '%s' }}"
|
||||
/>
|
||||
<link rel="stylesheet" href="/css/main.css?v={{ site.time | date: '%s' }}" />
|
||||
|
||||
<link
|
||||
rel="canonical"
|
||||
href="{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}"
|
||||
/>
|
||||
<link rel="alternate" type="application/rss+xml" title="{{ site.title }}"
|
||||
href="{{ "/feed.xml" | prepend: site.baseurl | prepend: site.url }}">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png" />
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png" />
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png" />
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png" />
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png" />
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png" />
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png" />
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png" />
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="192x192"
|
||||
href="/android-icon-192x192.png"
|
||||
/>
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png" />
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
|
||||
<link rel="manifest" href="/manifest.json" />
|
||||
<meta name="msapplication-TileColor" content="#ffffff" />
|
||||
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png" />
|
||||
</head>
|
||||
|
|
|
@ -1,17 +1,9 @@
|
|||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<ul class="navbar-list">
|
||||
<li class="navbar-item">
|
||||
<a href="/">home</a>
|
||||
</li>
|
||||
{% for my_page in site.pages %}
|
||||
{% if my_page.title %}
|
||||
<li class="navbar-item">
|
||||
<a href="{{ my_page.url | prepend: site.baseurl }}">{{ my_page.title }}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% include links.html %}
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="links">
|
||||
{% for my_page in site.pages %} {% if my_page.title %}
|
||||
<a href="{{ my_page.url }}">{{ my_page.title }}</a>
|
||||
{% endif %} {% endfor %}
|
||||
<a href="/cv.pdf?v={{ site.time | date: '%s' }}">CV</a>
|
||||
<a href="https://git.maggioni.xyz">Git</a>
|
||||
<a href="https://cloud.maggioni.xyz">Cloud</a>
|
||||
</div>
|
||||
{% comment %} vim: set ts=2 sw=2 et tw=80: {% endcomment %}
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
<a href="https://github.com/{{ include.username }}"><span class="icon icon--github">{% include icon-github.svg %}</span><span class="username">{{ include.username }}</span></a>
|
|
@ -1 +0,0 @@
|
|||
<svg viewBox="0 0 16 16"><path fill="#828282" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32 c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472 c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037 C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65 c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261 c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082 c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129 c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"/></svg>
|
Before Width: | Height: | Size: 926 B |
|
@ -1,3 +0,0 @@
|
|||
<a href="https://linkedin.com/in/{{ include.username }}">
|
||||
<span><i class="fa fa-linkedin"></i> {{ include.name }}</span>
|
||||
</a>
|
|
@ -1,6 +0,0 @@
|
|||
<li class="navbar-item">
|
||||
<a href="http://www.burarco.it">My archery club</a>
|
||||
</li>
|
||||
<li class="navbar-item">
|
||||
<a href="{{ "/feed.xml" | prepend: site.baseurl }}">RSS</a>
|
||||
</li>
|
|
@ -1,21 +1,16 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
{% include head.html %}
|
||||
<body>
|
||||
<header class="header">
|
||||
<section class="head">
|
||||
<h2 class="title">{{ site.title }}</h2>
|
||||
<p>{{ site.description }}</p>
|
||||
</section>
|
||||
{% include header.html %}
|
||||
</header>
|
||||
<main class="container">
|
||||
{{ content }}
|
||||
</main>
|
||||
{% include footer.html %}
|
||||
<script>
|
||||
var easter_egg = new Konami();
|
||||
easter_egg.load("https://www.youtube.com/watch?v=URTcCh6QVwM");
|
||||
</script>
|
||||
</body>
|
||||
<body>
|
||||
<header class="header">
|
||||
<nav class="head navbar container">
|
||||
<h1 class="title container"><a href="/">{{ site.title }}</a></h1>
|
||||
{% include header.html %}
|
||||
</nav>
|
||||
</header>
|
||||
<main class="container">{{ content }}</main>
|
||||
{% include footer.html %}
|
||||
</body>
|
||||
</html>
|
||||
|
||||
{% comment %} vim: set ts=2 sw=2 et tw=80: {% endcomment %}
|
||||
|
|
|
@ -1,14 +1,11 @@
|
|||
---
|
||||
layout: main
|
||||
---
|
||||
<article class="post">
|
||||
|
||||
<article class="post">
|
||||
<header class="post-header">
|
||||
<h2 class="post-title">{{ page.title }}</h2>
|
||||
</header>
|
||||
|
||||
<div class="post-content">
|
||||
{{ content }}
|
||||
</div>
|
||||
|
||||
<div class="post-content">{{ content }}</div>
|
||||
</article>
|
||||
|
|
44
_layouts/portfolio.html
Normal file
|
@ -0,0 +1,44 @@
|
|||
---
|
||||
layout: main
|
||||
---
|
||||
|
||||
<div class="portfolio">
|
||||
<section class="port-elem">
|
||||
<div class="side">
|
||||
<div class="date">{{ page.date-start }} ⭢ {{ page.date-end }}</div>
|
||||
<div class="category {{ page.category }}">
|
||||
{% case page.category %} {% when 'usi' %}University project {% when
|
||||
'high-school' %}High school project {% when 'internship' %}Internship {%
|
||||
when 'personal' %}Personal project {% endcase %}
|
||||
</div>
|
||||
<div class="languages">{{ page.languages }}</div>
|
||||
<div class="authors">
|
||||
<h4>Authors:</h4>
|
||||
<ul>
|
||||
<li>Claudio Maggioni</li>
|
||||
{% for author in page.authors %}
|
||||
<li>{{ author }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="repo">
|
||||
<a target="_blank" href="{{ page.repo-url }}">
|
||||
<i class="fab fa-{{ page.repo-type }}"></i> {{ page.title }}</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<div class="description">
|
||||
<div class="images">
|
||||
{% for img in page.images %}
|
||||
<a target="_blank" href="/images/portfolio/{{ img }}">
|
||||
<img src="/images/portfolio/{{ img }}"
|
||||
/></a>
|
||||
|
||||
{% endfor %}
|
||||
</div>
|
||||
<h2>{{ page.title }}</h2>
|
||||
<h3>{{ page.description }}</h3>
|
||||
{{ content }}
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
|
@ -1,16 +1,21 @@
|
|||
---
|
||||
layout: main
|
||||
---
|
||||
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
|
||||
|
||||
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
|
||||
<header class="post-header">
|
||||
<h2 class="post-title" itemprop="name headline">{{ page.title }}</h2>
|
||||
<p class="post-meta"><time datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">{{ page.date | date: "%b %-d, %Y" }}</time>{% if page.author %} • <span itemprop="author" itemscope itemtype="http://schema.org/Person"><span itemprop="name">{{ page.author }}</span></span>{% endif %}</p>
|
||||
<h4 class="post-meta">
|
||||
<time
|
||||
datetime="{{ page.date | date_to_xmlschema }}"
|
||||
itemprop="datePublished"
|
||||
>{{ page.date | date: "%b %-d, %Y" }}</time
|
||||
>{% if page.author %} •
|
||||
<span itemprop="author" itemscope itemtype="http://schema.org/Person"
|
||||
><span itemprop="name">{{ page.author }}</span></span
|
||||
>{% endif %}
|
||||
</h4>
|
||||
</header>
|
||||
|
||||
<div class="post-content" itemprop="articleBody">
|
||||
{{ content }}
|
||||
</div>
|
||||
|
||||
<div class="post-content" itemprop="articleBody">{{ content }}</div>
|
||||
</article>
|
||||
{% include disqus.html %}
|
||||
|
|
28
_portfolio/arrowcounter.md
Normal file
|
@ -0,0 +1,28 @@
|
|||
---
|
||||
layout: portfolio
|
||||
title: Arrowcounter
|
||||
date-start: 2018-07
|
||||
date-end: now
|
||||
category: personal
|
||||
languages: Python (Django)
|
||||
images:
|
||||
- arrowcounter/home.png
|
||||
- arrowcounter/counts.png
|
||||
- arrowcounter/counter.png
|
||||
- arrowcounter/stats.png
|
||||
description: Simple AJAX counter with some backend storage and statistics, intended to count the number of arrows shot in an archery training session.
|
||||
repo-type: git
|
||||
repo-url: https://tea.maggioni.xyz/maggicl/arrowcounter
|
||||
---
|
||||
|
||||
This website is a counter web application I developed in my spare time using the
|
||||
python framework Django. The application is intended to be used as a counter for
|
||||
arrows shot in an archery training session.
|
||||
|
||||
The application features a counter interface with multi-increment counter
|
||||
buttons, a basic trend analyzer that measures the difference between the total
|
||||
number of arrows shot and a yearly goal, CSV export capabilities,
|
||||
and a statistics page.
|
||||
|
||||
The frontend was built with plain HTML/CSS/Javascript, aside the use of the
|
||||
Charts.js api and Materialize as a CSS library.
|
29
_portfolio/drbf.md
Normal file
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
layout: portfolio
|
||||
title: Dr Brainf-ck
|
||||
date-start: 2018-11
|
||||
date-end: 2018-12
|
||||
category: usi
|
||||
languages: Racket
|
||||
authors:
|
||||
- Tommaso Rodolfo Masera
|
||||
images:
|
||||
- drbf/gui.png
|
||||
- drbf/doc.png
|
||||
- drbf/gui_diagram.png
|
||||
description: Brainf-ck interpreter with integrated editor and stepper
|
||||
repo-type: gitlab
|
||||
repo-url: https://gitlab.com/maggicl/DrBrainf-ck
|
||||
---
|
||||
|
||||
This application was built as the final project of _Programming Fundamentals 1_
|
||||
class in USI. This was a pair project done with my colleague Tommaso Rodolfo
|
||||
Masera.
|
||||
|
||||
This is a fully operational [Brainf-ck](https://en.wikipedia.org/wiki/Brainfuck)
|
||||
interpreter, complete with a GUI editor interface and some debugging tools, such
|
||||
as a memory tape inspector and a stepper.
|
||||
|
||||
The application was built using Racket, a Scheme dialect in the Lisp family of
|
||||
programming languages. The interpreter portion of the program is fully
|
||||
functional and lacks explicit mutability of variables.
|
26
_portfolio/scuolatest.md
Normal file
|
@ -0,0 +1,26 @@
|
|||
---
|
||||
layout: portfolio
|
||||
title: Scuolatest
|
||||
date-start: 2017-09
|
||||
date-end: 2017-12
|
||||
category: high-school
|
||||
languages: PHP (Symfony 3) + HTML/CSS/JS
|
||||
images:
|
||||
- scuolatest/benvenuto.png
|
||||
- scuolatest/test-list.jpg
|
||||
- scuolatest/test-matematica.png
|
||||
- scuolatest/esito-matematica.png
|
||||
- scuolatest/stats-matematica.png
|
||||
authors:
|
||||
- Davide Fiori
|
||||
- Giorgio Croci
|
||||
repo-type: gitlab
|
||||
repo-url: https://gitlab.com/staccastacca/scuolatest
|
||||
description: Self assessment quiz platform with integrated statistical review.
|
||||
---
|
||||
|
||||
This project is a self-assessment tool intended for middle school students that wished to enroll in my high school. The website could be used by students (to take the test) and teachers (to review aggregated results in the tests, in order to tailor their curriculum.
|
||||
|
||||
The project was developed using Symfony 3, JQuery and ChartJS. The CSS library used is Materialize.
|
||||
|
||||
Credits to Davide Fiori and Giorgio Croci which helped me in building this application.
|
31
_portfolio/smarthut.md
Normal file
|
@ -0,0 +1,31 @@
|
|||
---
|
||||
layout: portfolio
|
||||
title: Smarthut
|
||||
date-start: 2020-03
|
||||
date-end: 2020-06
|
||||
category: usi
|
||||
languages: Spring + ReactJS
|
||||
authors:
|
||||
- Andrea Brites Marto
|
||||
- Matteo Omenetti
|
||||
- Jacob Salvi
|
||||
- Tommaso Rodolfo Masera
|
||||
- Nicola Brunner
|
||||
- Filippo Cesana
|
||||
- Christian Capeáns Pérez
|
||||
images:
|
||||
- smarthut/home-frontend.png
|
||||
- smarthut/devices.png
|
||||
- smarthut/scenes.png
|
||||
- smarthut/automations.png
|
||||
- smarthut/swagger.png
|
||||
description: Smart home manager for (mocked) smart devices, complete with user-definable rooms, presets, and events.
|
||||
repo-type: git
|
||||
repo-url: https://tea.maggioni.xyz/smarthut
|
||||
---
|
||||
|
||||
This is a 3 month software engineering project part of the second year of USI's curriculum. As a team leader, I had to manage a team of 8 people to develop Smarthut, a full-stack Spring + ReactJS web application that manages smart devices.
|
||||
|
||||
Smarthut is able to direcly control (mocked) smart devices, but it can also group devices in rooms, configure and apply pre-made settings to a group of devices, and trigger user-defined actions based on a user-defined condition on pre-selected devices.
|
||||
|
||||
Smarthut's backend is a Spring REST application, complete with JWT sessions, CRUD APIs for the different types of device, and a WebSocket API that propagates device status updates. The frontend is a ReactJS application with Redux storage to handle active and passive device updates.
|
38
_portfolio/vimtok.md
Normal file
|
@ -0,0 +1,38 @@
|
|||
---
|
||||
layout: portfolio
|
||||
title: Vimtok
|
||||
date-start: 2019-11
|
||||
date-end: 2019-12
|
||||
category: usi
|
||||
languages: ExpressJS (Node.js) + JS
|
||||
authors:
|
||||
- Mejrima Smajilbasic
|
||||
- Renato Iannace
|
||||
- Matteo Omenetti
|
||||
images:
|
||||
- vimtok/home.png
|
||||
- vimtok/gallery.png
|
||||
- vimtok/post.png
|
||||
- vimtok/user.png
|
||||
description: Video snippet sharing social media website prototype
|
||||
repo-type: github
|
||||
repo-url: https://github.com/Carrisiland/vimtok
|
||||
---
|
||||
|
||||
This website is a 4-week project for the _Software Atelier 3_ class in USI. This
|
||||
was a group project of 4 people, in which I took turn at being the team leader.
|
||||
|
||||
The function of this website is to allow sharing parts of videos already
|
||||
uploaded on _Youtube_ or _Vimeo_ without _freebooting_ the original content
|
||||
creator. The user can specify a video link and a start-end time, and publish a
|
||||
post on the platform. The post will appear as an either _Youtube_ or _Vimeo_
|
||||
embedded video player looping automatically in the specified interval. Users can
|
||||
also like and comment on posts, create playlists/albums of posts, and follow other
|
||||
users and get notified of their uploads.
|
||||
|
||||
The website also features a special GIF generation feature implemented through
|
||||
`youtube-dl` and `ffmpeg`.
|
||||
|
||||
The website is currently online [here](https://vimtok.maggioni.xyz), but signup
|
||||
and creation of anonymous posts are disabled due to the unmoderated nature of
|
||||
the website.
|
|
@ -0,0 +1,78 @@
|
|||
---
|
||||
layout: post
|
||||
title: "Get a Bluetooth keyboard work with Arch Linux"
|
||||
date: 2016-07-07 14:49:18 +0200
|
||||
categories: linux
|
||||
---
|
||||
|
||||
<p>
|
||||
I've recently got a Rapoo E6100. This is a minimal and space saving Bluetooth
|
||||
3.0 keyboard. If you pair it with Windows 10, it will remain paired after
|
||||
reboot, giving the possibility to use it since the login screen. After
|
||||
installing the Bluetooth stack on my Arch via the <code>bluez</code> and
|
||||
<code>bluez-utils</code> packages I thought the pairing process would be as
|
||||
simple as Windows if I used the KDE GUI menus for Bluetooth management. That's
|
||||
not true. The keyboard, once paired, will reconnect automatically just after
|
||||
<code>plasmashell</code> loaded, leaving me without keyboard during the SDDM
|
||||
login screen and, of course, during a non-graphical session.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
As usual, i've searched help in the ArchWiki, founding
|
||||
<a href="https://wiki.archlinux.org/index.php/Bluetooth_keyboard">this</a>
|
||||
article. With that, i've succesfully reconnected my Bluetooth keyboard using
|
||||
the <code>bluetoothctl</code> utility. The next step was configuring the
|
||||
service for auto connection during boot. I've created the
|
||||
<code>btkbd.conf</code> and the <code>btkbd.service</code> files, enabling the
|
||||
last one with systemd. Let's give a look to the service file:
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{% highlight bash linenos %} [Unit] Description=systemd Unit to automatically
|
||||
start a Bluetooth keyboard
|
||||
Documentation=https://wiki.archlinux.org/index.php/Bluetooth_Keyboard
|
||||
Requires=dbus-org.bluez.service After=dbus-org.bluez.service
|
||||
ConditionPathExists=/etc/btkbd.conf ConditionPathExists=/usr/bin/hcitool
|
||||
ConditionPathExists=/usr/bin/hciconfig [Service] Type=oneshot
|
||||
EnvironmentFile=/etc/btkbd.conf ExecStart=/usr/bin/hciconfig ${HCIDEVICE} up #
|
||||
ignore errors on connect, spurious problems with bt? # so start next command
|
||||
with - ExecStart=-/usr/bin/hcitool cc ${BTKBDMAC} [Install]
|
||||
WantedBy=multi-user.target {% endhighlight %}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Line 13 enables the Bluetooth dongle, and line 16 connects it to the keyboard
|
||||
we gave the mac address in <code>/etc/btkbd.conf</code>. This should work
|
||||
flawlessly, right? Of course it doesn't. The service starts before the
|
||||
<code>dbus-org.bluez.service</code> is loaded and fails. However, if the
|
||||
service is started manually after login the Bluetooth keyboard works. After
|
||||
hours of trying figuring out what was wrong I've almost asked for a return on
|
||||
Amazon! The last attempt I made was with sddm disabled and involved built from
|
||||
scratch service:
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{% highlight bash linenos %} [Unit] Description=systemd Unit to automatically
|
||||
start a Bluetooth keyboard [Service] Type=oneshot ExecStart=/bin/hciconfig
|
||||
hci0 up ExecStart=/bin/hcitool cc 00:11:22:33:44:55 [Install]
|
||||
WantedBy=bluetooth.target {% endhighlight %}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This incredibly worked. I think the problem was that
|
||||
<code>multi-user.target</code> that needs to be reached earlier than
|
||||
<code>bluetooth.target</code>. I got rid of all the tidiness of the ArchWiki
|
||||
solution just to be sure that was not the problem, but I think you can use all
|
||||
of that just correcting <code>WantedBy=</code>. Currently I haven't an
|
||||
ArchWiki account nor a forum one, but as soon as I'll register I'll correct
|
||||
the article.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Last thing: I discovered that my Bluetooth dongle is CSR 8510 A10 based so
|
||||
expect some ramblings about
|
||||
<a
|
||||
href="http://www.0xf8.org/2014/02/the-crux-of-finding-a-hid-proxy-capable-usb-bluetooth-adapter/"
|
||||
>hid proxy</a
|
||||
>.
|
||||
</p>
|
|
@ -1,51 +0,0 @@
|
|||
---
|
||||
layout: post
|
||||
title: "Get a Bluetooth keyboard work with Arch Linux"
|
||||
date: 2016-07-07 14:49:18 +0200
|
||||
categories: linux
|
||||
---
|
||||
I've recently got a Rapoo E6100. This is a minimal and space saving Bluetooth 3.0 keyboard. If you pair it with Windows 10, it will remain paired after reboot, giving the possibility to use it since the login screen. After installing the Bluetooth stack on my Arch via the `bluez` and `bluez-utils` packages I thought the pairing process would be as simple as Windows if I used the KDE GUI menus for Bluetooth management. That's not true. The keyboard, once paired, will reconnect automatically just after `plasmashell` loaded, leaving me without keyboard during the SDDM login screen and, of course, during a non-graphical session.
|
||||
|
||||
As usual, i've searched help in the ArchWiki, founding [this](https://wiki.archlinux.org/index.php/Bluetooth_keyboard) article. With that, i've succesfully reconnected my Bluetooth keyboard using the `bluetoothctl` utility. The next step was configuring the service for auto connection during boot. I've created the `btkbd.conf` and the `btkbd.service` files, enabling the last one with systemd. Let's give a look to the service file:
|
||||
|
||||
{% highlight bash linenos %}
|
||||
[Unit]
|
||||
Description=systemd Unit to automatically start a Bluetooth keyboard
|
||||
Documentation=https://wiki.archlinux.org/index.php/Bluetooth_Keyboard
|
||||
Requires=dbus-org.bluez.service
|
||||
After=dbus-org.bluez.service
|
||||
ConditionPathExists=/etc/btkbd.conf
|
||||
ConditionPathExists=/usr/bin/hcitool
|
||||
ConditionPathExists=/usr/bin/hciconfig
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
EnvironmentFile=/etc/btkbd.conf
|
||||
ExecStart=/usr/bin/hciconfig ${HCIDEVICE} up
|
||||
# ignore errors on connect, spurious problems with bt?
|
||||
# so start next command with -
|
||||
ExecStart=-/usr/bin/hcitool cc ${BTKBDMAC}
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
{% endhighlight %}
|
||||
|
||||
Line 13 enables the Bluetooth dongle, and line 16 connects it to the keyboard we gave the mac address in `/etc/btkbd.conf`. This should work flawlessly, right? Of course it doesn't. The service starts before the `dbus-org.bluez.service` is loaded and fails. However, if the service is started manually after login the Bluetooth keyboard works. After hours of trying figuring out what was wrong I've almost asked for a return on Amazon! The last attempt I made was with sddm disabled and involved built from scratch service:
|
||||
|
||||
{% highlight bash linenos %}
|
||||
[Unit]
|
||||
Description=systemd Unit to automatically start a Bluetooth keyboard
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/bin/hciconfig hci0 up
|
||||
ExecStart=/bin/hcitool cc 00:11:22:33:44:55
|
||||
|
||||
[Install]
|
||||
WantedBy=bluetooth.target
|
||||
{% endhighlight %}
|
||||
|
||||
This incredibly worked. I think the problem was that `multi-user.target` that needs to be reached earlier than `bluetooth.target`. I got rid of all the tidiness of the ArchWiki solution just to be sure that was not the problem, but I think you can use all of that just correcting `WantedBy=`. Currently I haven't an ArchWiki account nor a forum one, but as soon as I'll register I'll correct the article.
|
||||
|
||||
Let me know in the comments if this solution is well made or if it's just a bodge.
|
||||
Last thing: I discovered that my Bluetooth dongle is CSR 8510 A10 based so expect some ramblings about [hid proxy](http://www.0xf8.org/2014/02/the-crux-of-finding-a-hid-proxy-capable-usb-bluetooth-adapter/).
|
104
_posts/2016-07-12-installing-gentoo-on-a-thinkpad-x60s.html
Normal file
|
@ -0,0 +1,104 @@
|
|||
---
|
||||
layout: post
|
||||
title: "Installing Gentoo on a Lenovo ThinkPad X60s"
|
||||
date: 2016-07-12 13:00:00 +0200
|
||||
categories: linux
|
||||
---
|
||||
|
||||
<p>
|
||||
Currently, my only laptop is a
|
||||
<a href="http://www.thinkwiki.org/wiki/Category:X60s"
|
||||
>IBM/Lenovo ThinkPad X60s</a
|
||||
>, a top line <em>ultrabook</em> from 2006 that features:
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>An Intel Core Duo L2400 dual core 32 bit CPU, clocked at 1.66 Ghz;</li>
|
||||
<li>2GB of RAM;</li>
|
||||
<li>60GB of SATA1 hard drive;</li>
|
||||
<li>
|
||||
Wifi, Bluetooth, trackpoint mouse only, 56k modem, and a decent set of I/0
|
||||
ports (including a CardBus slot!).
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
<img src="/images/thinkpad1.jpg" alt="An image of the ThinkPad X60s" />
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<img src="/images/thinkpad2.jpg" alt="Another image of the ThinkPad X60s" />
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This machine had an installation on <em>Arch Linux</em>, and I was using it
|
||||
for school stuff. It runned smoothly <em>KDE5</em>, <em>Atom</em> (great
|
||||
editor, I am using it to write this article), and it was usable even with
|
||||
<em>PhpStorm</em>. Pretty impressive for such an old thing, right?
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Since now I don't need this laptop every day I decided to give a try at
|
||||
Gentoo, another rolling relase, DIY install distro. This was both a test of my
|
||||
skills, my patience and the performances of the machine. For those of you that
|
||||
don't know, Gentoo hasn't binary packages: imagine using Arch with just a
|
||||
developer mantained AUR.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
I followed the
|
||||
<a href="https://wiki.gentoo.org/wiki/Handbook:Main_Page">
|
||||
installation guide</a
|
||||
>
|
||||
without any problem until I had to <em>emerge</em> and install 309 packets
|
||||
from my <code>@world</code> set: it took 15 hours! The compilation of
|
||||
<code>cmake</code> crashed because of memory starvation, and so I had to use a
|
||||
spare USB stick as swap (the root file system was not resizable as it was
|
||||
JFS). After some research and a couple of seconds in <code>top</code> I
|
||||
discovered that
|
||||
<a href="https://en.wikipedia.org/wiki/Physical_Address_Extension">PAE</a>
|
||||
was not implemented in the install disk kernel. <strong>TIP:</strong> if you
|
||||
want to use a nicer install enviroment, use the <em>Arch</em> ISO. With
|
||||
<em>Gentoo</em>, the initialisation of the file system is made with a
|
||||
<a href="https://wiki.gentoo.org/wiki/Stage_tarball#Stage_3"
|
||||
><em>stage 3 tarball</em></a
|
||||
>
|
||||
and not by tools like
|
||||
<a
|
||||
href="https://wiki.archlinux.org/index.php/beginners'_guide#Install_the_base_packages"
|
||||
>
|
||||
<code>pacstrap</code></a
|
||||
>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
I had another problem with <code>make menuconfig</code>, the tool used to
|
||||
specify what features add or remove in your compiled from source Linux kernel.
|
||||
The <code>ncurses</code> menu showed me 64bit options, even if the install
|
||||
disk and the CPU were both 32 bit. If you have this issue too, you can set the
|
||||
<code>ARCH</code> variable by your own:
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{% highlight bash %}
|
||||
make ARCH=i386 menuconfig
|
||||
make ARCH=i386
|
||||
make ARCH=i386 install
|
||||
{% endhighlight %}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
At the end, I made it! I only have a base install, but i can show you
|
||||
<code>screenfetch</code>:
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<img src="/images/screenfetch.jpg" alt="The laptop running 'screenfetch'" />
|
||||
</p>
|
||||
|
||||
<p>
|
||||
I have not installed <em>Gentoo</em> in dual boot because I did not figure out
|
||||
how to switch my bluetooth dongle in HID mode yet, so I can't select the OS
|
||||
with <code>rEFInd</code>. Hope this rambling was, if not useful, at least
|
||||
entertaining!
|
||||
</p>
|
|
@ -1,37 +0,0 @@
|
|||
---
|
||||
layout: post
|
||||
title: "Installing Gentoo on a Lenovo ThinkPad X60s"
|
||||
date: 2016-07-12 13:00:00 +0200
|
||||
categories: linux
|
||||
---
|
||||
|
||||
My only laptop is a [IBM/Lenovo ThinkPad X60s](http://www.thinkwiki.org/wiki/Category:X60s), a top line "ultrabook" from 2006 that features:
|
||||
|
||||
* An Intel Core Duo L2400 dual core 32 bit CPU, clocked at 1.66 Ghz;
|
||||
* 2GB of RAM;
|
||||
* 60GB of SATA1 hard drive;
|
||||
* Wifi, Bluetooth, trackpoint mouse only, 56k modem, and a decent set of I/0 ports (including a CardBus slot!).
|
||||
|
||||
![Think1](https://dl.dropboxusercontent.com/s/vkm6phz5yb2k4oq/IMG_20160712_143708.jpg?dl=0)
|
||||
|
||||
![Think2](https://dl.dropboxusercontent.com/s/wfjj1wih90lrzax/IMG_20160712_143618.jpg?dl=0)
|
||||
|
||||
This machine had an installation on Arch Linux, and I was using it for school stuff. It runned smoothly KDE5, Atom (great editor, I'm using it to write this article), and it was usable even with Phpstorm. Pretty impressive for such an old thing, right?
|
||||
|
||||
Since now I don't need this laptop every day I decided to give a try at Gentoo, another rolling relase, DIY install distro. This was both a test of my skills, my patience and the performances of the machine. For those of you that don't know, Gentoo hasn't binary packages: imagine using Arch with just a developer mantained AUR.
|
||||
|
||||
I followed the [installation guide](https://wiki.gentoo.org/wiki/Handbook:Main_Page) without any problem until I had to emerge and install 309 packets from my `@world` set: it took 15 hours! The compilation of `cmake` crashed because of memory starvation, and so I had to use a spare USB stick as swap (the root file system wasn't resizable as it was JFS). After some research and a couple of seconds in `top` I discovered that [PAE](https://en.wikipedia.org/wiki/Physical_Address_Extension) was not implemented in the install disk kernel. TIP: if you want to use a nicer install enviroment, use the Arch ISO. With gentoo, the initialisation of the file system is made with a [stage 3 tarball](https://wiki.gentoo.org/wiki/Stage_tarball#Stage_3) and not by tools like [pacstrap](https://wiki.archlinux.org/index.php/beginners'_guide#Install_the_base_packages).
|
||||
|
||||
I had another problem with `make menuconfig`, the tool used to specify what features add or remove in your compiled from source Linux kernel. The ncurses menu showed me 64bit options, even if the install disk and the CPU were both 32 bit. If you have this issue too, you can set the `ARCH` variable by your own:
|
||||
|
||||
{% highlight bash %}
|
||||
# make ARCH=i386 menuconfig
|
||||
# make ARCH=i386
|
||||
# make ARCH=i386 install
|
||||
{% endhighlight %}
|
||||
|
||||
At the end, I made it! I only have a base install, but i can show you `screenfetch`:
|
||||
|
||||
![Screenfetch](https://dl.dropboxusercontent.com/s/fbysnd58sj4g3kl/IMG_20160711_162733.jpg?dl=0)
|
||||
|
||||
I've not installed Gentoo in dual boot because I didn't figured out how to switch my bluetooth dongle in HID mode yet, so I can't select the OS with `rEFInd`. Hope this rambling was, if not useful, at least entertaining!
|
|
@ -0,0 +1,133 @@
|
|||
---
|
||||
layout: post
|
||||
title: 'How to rickroll people that try to run "rm -rf" on your system'
|
||||
date: 2016-07-28 16:00:00 +0200
|
||||
categories: linux
|
||||
---
|
||||
|
||||
<strong>
|
||||
WARNING: The method showed here could not prevent the actual execution of "rm
|
||||
-rf" if the "UNIX vandal" is clever enough. Proceed at your own risk, and make
|
||||
backups!
|
||||
</strong>
|
||||
|
||||
<p>
|
||||
I like Rick Astley late 80's songs, and you can see them here in my Spotify:
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<img
|
||||
src="/images/spotify_rickastley.png"
|
||||
alt="My Spotify with a bunch of Rick Astley songs"
|
||||
/>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
I like rickrolling people too, especially if they are trying to delete my
|
||||
entire
|
||||
<code>/home</code> directory or, even worse, <code>/</code>. Since I learned
|
||||
how to use the <code>alias</code> built-in, I wanted a way to prevent that
|
||||
random people tinkering with my laptop (that I may forget to lock) could
|
||||
delete potentially important stuff, just for fun or boredom.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The method that I will show will lock any <code>rm</code> command runned in
|
||||
both recursive and force mode, so <code>rm -rf</code>,
|
||||
<code>rm -f -r</code> and <code>rm -r --force</code> are all blocked, even if
|
||||
they are runned with <code>sudo</code>. I am going to alias the rm command in
|
||||
<code>/etc/profile</code>, <code>/etc/bash.bashrc</code> and in
|
||||
<code>/etc/zsh/zshrc</code> (I am a zsh user) so that the rickroll will be
|
||||
possible from all users, even root and the ones with a brand new
|
||||
<code>.bashrc</code> or <code>.zshrc</code>. Here is the code I appended to
|
||||
those files:
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{% highlight bash %}
|
||||
alias rm=/bin/rmAlias
|
||||
|
||||
# this enables aliases in sudo, see http://askubuntu.com/q/22037/
|
||||
alias sudo='sudo '
|
||||
{% endhighlight %}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Since <code>alias</code> is not able to control the flags of the aliases (see
|
||||
<a
|
||||
href="http://apple.stackexchange.com/questions/50963/how-do-i-add-a-flag-to-an-alias"
|
||||
>here</a
|
||||
>, we are going to redirect each call of <code>rm</code> to
|
||||
<code>/bin/rmAlias</code>, that would run the command if it is safe. I did not
|
||||
use a function because it is a bit tricky to make that work with
|
||||
<code>sudo</code>. So, let's see the code I put in <code>rmAlias</code>:
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{% highlight bash %}
|
||||
#!/bin/bash
|
||||
# Rickroll whoever tries to desert this system, even root.
|
||||
# To achieve this, set the appropriate aliases in /etc/profile and others.
|
||||
|
||||
# Video played when rickrolling: it's just Never Gonna Give You Up on my system,
|
||||
# but be free to customize this!
|
||||
ROLLVIDEO=/opt/anti-rm/serious-video.mkv
|
||||
|
||||
rickroll() {
|
||||
echo "Never gonna desert this system..."
|
||||
xdg-open $ROLLVIDEO 2>&1 & exit 0
|
||||
}
|
||||
|
||||
while getopts ":rf-" opt; do
|
||||
# Prevent '--force' to be detected as -r and -f
|
||||
if [ "$opt" = "-" ]; then
|
||||
OPTIND=$OPTIND+1
|
||||
continue
|
||||
fi
|
||||
if [ "$opt" = "r" ] || [ "$opt" = "f" ]; then
|
||||
if [ "$tmp" = "" ]; then
|
||||
tmp=$opt
|
||||
continue
|
||||
elif [ "$tmp" != "$opt" ]; then
|
||||
rickroll
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
for var in "$@" do
|
||||
if [[ "$var" = "--force" && "$tmp" = "r" ]]; then
|
||||
rickroll
|
||||
fi
|
||||
done
|
||||
|
||||
# If it's safe, just run rm
|
||||
/bin/rm "$@"
|
||||
exit $?
|
||||
{% endhighlight %}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
It may look messy to a <em>UNIX</em> guy more experienced than me, but it
|
||||
works. The <code>getopts</code> built-in sees if both the <code>-r</code> and
|
||||
the <code>-f</code> flags are used and, if so, it starts
|
||||
<code>rickroll()</code>, which opens with <code>xdg-open</code> that amazing
|
||||
clip from <em>RickAstleyVEVO</em>. From line 30 and below, the script checks
|
||||
if the <code>--force</code> flag is used instead of <code>-f</code>.
|
||||
</p>
|
||||
|
||||
<p>Let's give execution permissions to the script we have just created:</p>
|
||||
|
||||
<p>{% highlight bash %}chmod +x /bin/rmAlias{% endhighlight %}</p>
|
||||
|
||||
<p>
|
||||
Restart your shell, and enjoy. If you want to test safely, I suggest trying to
|
||||
run <code>rm -rf</code> with no folders or a nonexistant one, since this
|
||||
script stops even these commands.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
If you want even more security, you can rename this script to
|
||||
<code>/bin/rm</code> and move the original one in some other place, getting
|
||||
rid of all the aliases. I prefer the solution above because it's tidier: you
|
||||
haven't to move anything. In fact, this could be just an AUR package...
|
||||
</p>
|
|
@ -1,77 +0,0 @@
|
|||
---
|
||||
layout: post
|
||||
title: "How to rickroll people that try to run \"rm -rf\" on your system"
|
||||
date: 2016-07-28 16:00:00 +0200
|
||||
categories: linux
|
||||
---
|
||||
|
||||
**WARNING: The method showed here could not prevent the actual execution of "rm -rf" if the "UNIX vandal" is clever enough. Proceed at your own risk, and make backups!**
|
||||
|
||||
I like Rick Astley late 80's songs, and you can see them here in my Spotify:
|
||||
|
||||
![dQw4w9WgXcQ](https://dl.dropboxusercontent.com/s/t9vywa4yjotxv0o/Screenshot_20160728_154506.png?dl=0)
|
||||
|
||||
I like rickrolling people myself too, especially if they're trying to delete my entire `/home` directory or, even worse, `/`. Since I learned how to use the `alias` built-in, I wanted a way to prevent that random people tinkering with my laptop (that I may forgot to lock) could delete potentially important stuff, just for fun or boredom.
|
||||
|
||||
The method that I'll show will lock any `rm` command runned in both recursive and force mode, so `rm -rf`, `rm -f -r` and `rm -r --force` are all blocked, even if they are launched by `sudo`. I'm going to alias the rm command in `/etc/profile` `/etc/bash.bashrc` and in `/etc/zsh/zshrc` (I'm a zsh user) so that the rickroll will be possible from all users, even root and the ones with a brand new `bashrc` or `zshrc`. Here is the code I appended to those files:
|
||||
|
||||
{% highlight bash %}
|
||||
alias rm=/bin/rmAlias
|
||||
alias sudo='sudo ' # this enables aliases in sudo, see http://askubuntu.com/questions/22037/aliases-not-available-when-using-sudo
|
||||
{% endhighlight %}
|
||||
|
||||
Since `alias` is not able to control the flags of the aliases (see [here](http://apple.stackexchange.com/questions/50963/how-do-i-add-a-flag-to-an-alias)), we're going to redirect each call of `rm` to `/bin/rmAlias`, that would run the command if it's safe. I didn't use a function because it's a bit tricky to make that work with `sudo`. So, let's see the code I put in `rmAlias`:
|
||||
|
||||
{% highlight bash %}
|
||||
#! /bin/bash
|
||||
# Rickroll whoever tries to desert this system, even root.
|
||||
# To achieve this, set the appropriate aliases even in /etc/profile and similars.
|
||||
|
||||
# Video played when rickrolling
|
||||
ROLLVIDEO=/opt/anti-rm/serious-video.mkv # it's just Never Gonna Give You Up on my system, but be free to customize this!
|
||||
|
||||
rickroll(){
|
||||
echo "Never gonna desert this system..."
|
||||
xdg-open $ROLLVIDEO 2>&1 &
|
||||
exit 0
|
||||
}
|
||||
|
||||
while getopts ":rf-" opt; do
|
||||
# Prevent '--force' to be detected as -r and -f
|
||||
if [ "$opt" = "-" ]; then
|
||||
OPTIND=$OPTIND+1
|
||||
continue
|
||||
fi
|
||||
if [ "$opt" = "r" ] || [ "$opt" = "f" ]; then
|
||||
if [ "$tmp" = "" ]; then
|
||||
tmp=$opt
|
||||
continue
|
||||
elif [ "$tmp" != "$opt" ]; then
|
||||
rickroll
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
for var in "$@"
|
||||
do
|
||||
if [[ "$var" = "--force" && "$tmp" = "r" ]]; then
|
||||
rickroll
|
||||
fi
|
||||
done
|
||||
|
||||
# If it's safe, just run rm
|
||||
/bin/rm "$@"
|
||||
exit $?
|
||||
{% endhighlight %}
|
||||
|
||||
It may look messy to a UNIX guy more experienced than me, but it works. The `getopts` built-in sees if both the `-r` and the `-f` flags are used and, if so, it starts `rickroll()`, which opens with `xdg-open` that amazing clip from RickAstleyVEVO. From line 30 and below, the script checks if the `--force` flag is used instead of `-f`.
|
||||
|
||||
Give execute permissions to the script we've just created:
|
||||
|
||||
{% highlight bash %}
|
||||
# chmod +x /bin/rmAlias
|
||||
{% endhighlight %}
|
||||
|
||||
Restart your shell, and enjoy. If you want to test safely, I suggest trying to run `rm -rf` with no folders or one nonexistant, since this script stop even these commands.
|
||||
|
||||
If you want even more security, you can rename this script to `/bin/rm` and move the original one in some other place, getting rid of all the aliases. I prefer the solution above because it's tidier: you haven't to move anything. In fact, this could be just an AUR package...
|
|
@ -1,25 +0,0 @@
|
|||
---
|
||||
layout: post
|
||||
title: "My archery setup!"
|
||||
date: 2016-08-15 12:00:00 +0200
|
||||
categories: archery
|
||||
---
|
||||
Hey there! This is my first post about archery, so I thought that I could have done a tour of my setup. As I wrote in the about page, I'm a Olmpic recurve archer based in Italy. I do this for almost five years! If you don't understand everything I say, you can check out the youtube channel [Nusensei](https://www.youtube.com/user/NUSensei/). It's a very good source, especially for beginners.
|
||||
|
||||
![Bow1](https://dl.dropboxusercontent.com/s/efmap2qqvz6yapn/IMG_20160809_164942.jpg?dl=0)
|
||||
|
||||
Ok, the setup. I own a *Fiberbow 5.99* LH (yes, I'm left handed) as my `riser`, the *central* part of the bow. It's made by carbon fiber so it's very lightweight. And is not painted too: It looks kinda cool. Many experienced archers could complain saying that carbon fiber bends and this is a bad thing. Instead, I think this gives you a nice feedback when you release. Also I tried to raise a friend's *Hoyt Prodigy XT*, and there's no way I'm going to lift such a weight on a regular base. Both the risers mentioned are high-range ones: I got mine 50% off because it wasn't the latest model and it had some minor ahestetic flaws. Also, this isn't my first one. In fact, I used to shoot with an Orange SF Premium: great bow for beginners!
|
||||
|
||||
As limbs, I use a pair of *EXE College* rated at 34 pounds. Since I'm quite tall (limbs and riser toghether make a 70" tall bow), my draw length is around 29.5" and my draw weight is around 38 pounds.
|
||||
|
||||
The sight is a *Shibuya Dual Click*. You can check out [this](https://www.youtube.com/watch?v=_ZvAnyxazpY) review by Nusensei (by the way, I knew his channel from this very video).
|
||||
|
||||
As stabilizers, I use a set of *Fiberbow S.3* ones with yellow dampeners (for those who know the difference between the colours).
|
||||
|
||||
As plunger button, I use a *EXE* one. It's a middle range one, but it seems very well built and it works fine! Also, I'm not going to spend 90€ for a `Cartel` one.
|
||||
|
||||
My current arrows are a set of *Easton X7 Eclipse* spined at 2213. These are winter alluminium arrows, but since they are cheaper than carbon ones, I bought these as a total replacement of my *VAP V6* 600. Those, due to form flaws, were 2 inches too short. Oh, and I always used *Spin Wings* and *Elivanes*, a stiffer plastic italian replacement.
|
||||
|
||||
Here's an image of the complete bow at the archery range:
|
||||
|
||||
![Bow2](https://dl.dropboxusercontent.com/s/ril7kk9zd0l4vrf/IMG_20160809_175554.jpg?dl=0)
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
layout: post
|
||||
title: "Just a quick post. BAM!, my first web app (still in development) is on Github!"
|
||||
date: 2016-08-31 12:00:00 +0200
|
||||
categories: programming
|
||||
---
|
||||
As you can read from the title, I'm publishing the uncompleted code of my first webapp. I'm working on this since 3 weeks, and I'm proud of what I've done so far.
|
||||
|
||||
If you want to check out the repository, click [here](https://github.com/praticamentetilde/BAM).
|
||||
|
||||
Maybe I can use Materialize css also for this jekyll site, or maybe this is another thing I say but I'm not going to do. Who knows.
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
layout: post
|
||||
title: "Css updated!"
|
||||
date: 2016-09-13 21:30:00 +0200
|
||||
categories: update
|
||||
---
|
||||
As you can see, now the css is decent! Now I'm using [Skeleton](http://getskeleton.com) and a couple of custom sass lines that you can check out on Github. Currently, I'm a bit busy with BAM! so I'm not sure I'll find the time for this. Anyway, enjoy the new look!
|
293
_sass/_base.scss
|
@ -1,204 +1,185 @@
|
|||
/**
|
||||
* Reset some basic elements
|
||||
*/
|
||||
body, h1, h2, h3, h4, h5, h6,
|
||||
p, blockquote, pre, hr,
|
||||
dl, dd, ol, ul, figure {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
/* vim: set ts=2 sw=2 et tw=80: */
|
||||
|
||||
/* Reset some basic elements */
|
||||
body,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
p,
|
||||
blockquote,
|
||||
pre,
|
||||
hr,
|
||||
dl,
|
||||
dd,
|
||||
ol,
|
||||
ul,
|
||||
figure {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Basic styling
|
||||
*/
|
||||
body {
|
||||
font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;
|
||||
color: $text-color;
|
||||
background-color: $background-color;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-webkit-font-feature-settings: "kern" 1;
|
||||
-moz-font-feature-settings: "kern" 1;
|
||||
-o-font-feature-settings: "kern" 1;
|
||||
font-feature-settings: "kern" 1;
|
||||
font-kerning: normal;
|
||||
/* Basic styling */
|
||||
html {
|
||||
font-weight: $base-font-weight;
|
||||
font-size: $base-font-size;
|
||||
line-height: $base-line-height;
|
||||
font-family: $base-font-family;
|
||||
color: $text-color;
|
||||
background-color: $background-color;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Set `margin-bottom` to maintain vertical rhythm
|
||||
*/
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
p, blockquote, pre,
|
||||
ul, ol, dl, figure,
|
||||
%vertical-rhythm {
|
||||
margin-bottom: $spacing-unit / 2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Images
|
||||
*/
|
||||
/* Images */
|
||||
img {
|
||||
max-width: 100%;
|
||||
vertical-align: middle;
|
||||
max-width: 100%;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Figures
|
||||
*/
|
||||
figure > img {
|
||||
display: block;
|
||||
/* Lists */
|
||||
ul,
|
||||
ol {
|
||||
margin-left: $spacing-unit;
|
||||
}
|
||||
|
||||
figcaption {
|
||||
font-size: $small-font-size;
|
||||
/* Disable margin for lists */
|
||||
li > ul,
|
||||
li > ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Lists
|
||||
*/
|
||||
ul, ol {
|
||||
margin-left: $spacing-unit;
|
||||
/* Headings */
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-weight: $base-font-weight;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
li {
|
||||
> ul,
|
||||
> ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Headings
|
||||
*/
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-weight: $base-font-weight;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Links
|
||||
*/
|
||||
/* Links */
|
||||
a {
|
||||
color: $brand-color;
|
||||
text-decoration: none;
|
||||
color: $brand-color;
|
||||
background: $background-color;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
|
||||
&:visited {
|
||||
color: darken($brand-color, 15%);
|
||||
}
|
||||
&:visited {
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: $text-color;
|
||||
text-decoration: underline;
|
||||
}
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Blockquotes
|
||||
*/
|
||||
blockquote {
|
||||
color: $grey-color;
|
||||
border-left: 4px solid $grey-color-light;
|
||||
padding-left: $spacing-unit / 2;
|
||||
font-size: 18px;
|
||||
letter-spacing: -1px;
|
||||
font-style: italic;
|
||||
color: white;
|
||||
background: $top-col;
|
||||
border-left: 4px solid $brand-color;
|
||||
letter-spacing: -1px;
|
||||
font-style: italic;
|
||||
margin: 1rem 0;
|
||||
padding: 1em;
|
||||
|
||||
> :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
> :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Code formatting
|
||||
*/
|
||||
pre,
|
||||
code {
|
||||
font-size: 15px;
|
||||
/*border: 1px solid $grey-color-light;*/
|
||||
border-radius: 3px;
|
||||
background: rgb(66,66,66);
|
||||
/* do not put padding around the table with line numbers and the code */
|
||||
code table {
|
||||
margin: -8px -12px;
|
||||
}
|
||||
|
||||
code {
|
||||
padding: 1px 5px;
|
||||
pre table.rouge-table td {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
pre {
|
||||
padding: 8px 12px;
|
||||
overflow-x: auto;
|
||||
padding: 8px 12px;
|
||||
overflow-x: auto;
|
||||
|
||||
> code {
|
||||
border: 0;
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
> code {
|
||||
border: 0;
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* pull a nice monospace font from the internets, plus set font and
|
||||
* background */
|
||||
pre,
|
||||
code {
|
||||
font-size: 0.95rem;
|
||||
background: $background-color;
|
||||
}
|
||||
|
||||
a code {
|
||||
background: $background-color;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper
|
||||
*/
|
||||
.wrapper {
|
||||
max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2));
|
||||
max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
padding-right: $spacing-unit;
|
||||
padding-left: $spacing-unit;
|
||||
@extend %clearfix;
|
||||
/* Disable borders between line numbers and code when
|
||||
* line numbers are shown */
|
||||
code .rouge-table,
|
||||
code .rouge-table td {
|
||||
border: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
@include media-query($on-laptop) {
|
||||
max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit}));
|
||||
max-width: calc(#{$content-width} - (#{$spacing-unit}));
|
||||
padding-right: $spacing-unit / 2;
|
||||
padding-left: $spacing-unit / 2;
|
||||
}
|
||||
code .rouge-table {
|
||||
border-spacing: 0;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clearfix
|
||||
* Basic layout rules
|
||||
*/
|
||||
%clearfix {
|
||||
|
||||
&:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
/* Padding for the main content in the page */
|
||||
.container {
|
||||
padding: 0.4rem 2em;
|
||||
}
|
||||
|
||||
|
||||
/* Header sizes */
|
||||
|
||||
/**
|
||||
* Icons
|
||||
* General style for the content inside main
|
||||
*/
|
||||
.icon {
|
||||
|
||||
> svg {
|
||||
display: inline-block;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
vertical-align: middle;
|
||||
|
||||
path {
|
||||
fill: $grey-color;
|
||||
}
|
||||
}
|
||||
/* separate article metadata to the article itself with some space */
|
||||
article .post-header {
|
||||
margin-bottom: 3rem;
|
||||
}
|
||||
|
||||
/* put some space at the end of each article and at the end of each section */
|
||||
main article,
|
||||
main section {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
/* justify text */
|
||||
p {
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
/* put a space between paragraphs and images */
|
||||
p,
|
||||
figure {
|
||||
margin-top: 1.2rem;
|
||||
}
|
||||
|
||||
/* the first paragraph has no space at the top (since that is provided
|
||||
* by either main or h? */
|
||||
p:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
/* make strongly emphasized elements REALLY STRONG */
|
||||
strong {
|
||||
background: #faa;
|
||||
}
|
||||
|
|
|
@ -1,105 +1,325 @@
|
|||
$header-border: 1px solid #eee;
|
||||
|
||||
body{
|
||||
background-color: #333;
|
||||
font-family: 'Hammersmith One', sans-serif;
|
||||
color: white;
|
||||
display: flex;
|
||||
min-height: 100vh;
|
||||
flex-direction: column;
|
||||
/* vim: set ts=2 sw=2 et tw=80: */
|
||||
body {
|
||||
background-color: $background-color;
|
||||
font-family: "Radio Canada", sans-serif;
|
||||
display: flex;
|
||||
min-height: 100vh;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
main {
|
||||
flex: 1 0 auto;
|
||||
flex: 1 0 auto;
|
||||
}
|
||||
|
||||
.navbar-list .navbar-item{
|
||||
text-transform: uppercase;
|
||||
font-weight: 400;
|
||||
display: inline-block;
|
||||
margin: 1em;
|
||||
.navbar-list .navbar-item {
|
||||
text-transform: uppercase;
|
||||
font-weight: 400;
|
||||
margin: 1em;
|
||||
}
|
||||
|
||||
ul.navbar-list{
|
||||
border-top: $header-border;
|
||||
border-bottom: $header-border;
|
||||
margin-bottom: 2rem;
|
||||
ul.navbar-list {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.header {
|
||||
padding-top: 6rem;
|
||||
text-align: center;
|
||||
}
|
||||
background: $top-col;
|
||||
color: $top-col;
|
||||
|
||||
@media (min-width: 700px){
|
||||
.header {
|
||||
padding-top: 14rem;
|
||||
.head.navbar {
|
||||
display: flex;
|
||||
|
||||
@include media-query($on-palm) {
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
}
|
||||
h1 {
|
||||
flex: 2;
|
||||
font-size: 1.5rem;
|
||||
display: inline;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
.head{
|
||||
padding: 0 1rem 6rem 1rem;
|
||||
}
|
||||
|
||||
@media (max-width: 700px){
|
||||
.navbar-list .navbar-item {
|
||||
width: calc(100% - 2em);
|
||||
a {
|
||||
background: $top-col;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
|
||||
.links {
|
||||
white-space: nowrap;
|
||||
text-align: right;
|
||||
|
||||
a {
|
||||
text-transform: uppercase;
|
||||
display: inline-block;
|
||||
padding: 0.25rem 0.5rem;
|
||||
background: $top-col;
|
||||
color: white;
|
||||
}
|
||||
|
||||
a:first-child {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
a:last-child {
|
||||
padding-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-item a{
|
||||
color: $brand-color;
|
||||
.homequote {
|
||||
display: flex;
|
||||
color: $text-color;
|
||||
align-items: stretch;
|
||||
margin-bottom: 1rem;
|
||||
|
||||
figure {
|
||||
margin: 0;
|
||||
flex: 0;
|
||||
background-image: url(/images/claudio.jpg);
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
figure .blur {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
backdrop-filter: blur(10px) contrast(0.7) brightness(1.3);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-width: 300px;
|
||||
}
|
||||
|
||||
.quote {
|
||||
flex: 1;
|
||||
padding: 1rem 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
ul.post-list, ul.navbar-list{
|
||||
list-style-type: none;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
@include media-query($on-laptop) {
|
||||
.homequote {
|
||||
flex-direction: column;
|
||||
|
||||
figure img {
|
||||
filter: none;
|
||||
object-fit: cover;
|
||||
height: 300px;
|
||||
width: 300px;
|
||||
object-position: center top;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.header, footer{
|
||||
background-color: rgba(0,0,0,0.25);
|
||||
.portfolio {
|
||||
position: relative;
|
||||
padding-top: 2rem;
|
||||
|
||||
.line {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 1rem;
|
||||
border: 3px solid #aaa;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.line-end,
|
||||
.line-end-bottom {
|
||||
position: absolute;
|
||||
left: 0.675rem;
|
||||
width: 1rem;
|
||||
height: 1rem;
|
||||
border-radius: 1rem;
|
||||
background: #aaa;
|
||||
z-index: 200;
|
||||
}
|
||||
|
||||
.line-end {
|
||||
top: 0;
|
||||
}
|
||||
.line-end-bottom {
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.port-elem {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
|
||||
.side > *,
|
||||
.description {
|
||||
padding: 0.5rem;
|
||||
z-index: 200;
|
||||
}
|
||||
|
||||
.side {
|
||||
width: 12rem;
|
||||
min-width: 12rem;
|
||||
display: flex;
|
||||
flex-grow: 0;
|
||||
flex-direction: column;
|
||||
align-items: stretch;
|
||||
text-align: right;
|
||||
|
||||
.date {
|
||||
background: $top-col;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.category,
|
||||
.authors,
|
||||
.repo,
|
||||
.languages {
|
||||
background: white;
|
||||
border: 3px solid #7cafe4;
|
||||
border-top: 0px;
|
||||
}
|
||||
|
||||
.authors {
|
||||
text-align: left;
|
||||
|
||||
ul {
|
||||
margin: 0 0 0 1rem;
|
||||
list-style-type: square;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
border: $border;
|
||||
flex-grow: 1;
|
||||
background: $background-color;
|
||||
|
||||
.images {
|
||||
background: $brand-color;
|
||||
padding: 0.5rem;
|
||||
margin: -0.5rem -0.5rem 0.5rem -0.5rem;
|
||||
text-align: center;
|
||||
|
||||
a {
|
||||
background: none;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 175px;
|
||||
margin: 0.25rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
footer{
|
||||
padding-top: 1rem;
|
||||
}
|
||||
|
||||
footer .author{
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
|
||||
}
|
||||
|
||||
.container{
|
||||
padding-top: 1rem;
|
||||
@include media-query($on-laptop) {
|
||||
.portfolio {
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
|
||||
.port-elem {
|
||||
flex-direction: column;
|
||||
|
||||
.icons{
|
||||
text-align: center;
|
||||
}
|
||||
.side {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
|
||||
a.icon{
|
||||
display: inline-table;
|
||||
background-color: rgba(255,255,255,0.5);
|
||||
border-radius: 1.75em;
|
||||
width: 3.5em;
|
||||
height: 3.5em;
|
||||
text-align: center;
|
||||
line-height: 3.5em;
|
||||
margin: .5em;
|
||||
color: white;
|
||||
cursor: pointer;
|
||||
.authors {
|
||||
text-align: center;
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
ul {
|
||||
list-style-type: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a.icon i.fa{
|
||||
font-size: 2em;
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
@media (max-width: 700px) {
|
||||
.navbar-list .navbar-item {
|
||||
width: calc(100% - 2em);
|
||||
}
|
||||
}
|
||||
|
||||
ul.post-list,
|
||||
ul.navbar-list {
|
||||
list-style-type: none;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
ul.post-list li {
|
||||
padding-top: 2rem;
|
||||
}
|
||||
|
||||
ul.post-list li:first-child {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
footer {
|
||||
justify-content: space-between;
|
||||
background: $brand-color;
|
||||
|
||||
.container {
|
||||
display: flex;
|
||||
|
||||
.author {
|
||||
flex: 1;
|
||||
font-size: 1rem;
|
||||
text-align: right;
|
||||
background: $brand-color;
|
||||
color: white;
|
||||
|
||||
a {
|
||||
background: $brand-color;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
|
||||
@include media-query($on-palm) {
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
.author {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.icons {
|
||||
text-align: center;
|
||||
flex: 0;
|
||||
white-space: nowrap;
|
||||
|
||||
.icon {
|
||||
display: inline-table;
|
||||
color: $brand-color;
|
||||
background: white;
|
||||
width: 2.5em;
|
||||
height: 2.5em;
|
||||
text-align: center;
|
||||
line-height: 2.5em;
|
||||
margin: 0.25em;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.container {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 1rem;
|
||||
max-width: min(1280px, 100%);
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1280px) {
|
||||
main.container {
|
||||
margin: 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Utility class for centering block elements */
|
||||
.block-center {
|
||||
display: block;
|
||||
margin: auto;
|
||||
}
|
||||
|
|
|
@ -2,78 +2,212 @@
|
|||
* Syntax highlighting styles
|
||||
*/
|
||||
.highlight {
|
||||
background: #fff;
|
||||
@extend %vertical-rhythm;
|
||||
background: #eee;
|
||||
border: 3px solid #ddd;
|
||||
|
||||
.highlighter-rouge & {
|
||||
background: #eef;
|
||||
}
|
||||
.highlighter-rouge & {
|
||||
background: #eef;
|
||||
}
|
||||
|
||||
td.code > pre{
|
||||
background: #323232;
|
||||
}
|
||||
td.code > pre {
|
||||
background: #222;
|
||||
}
|
||||
|
||||
pre.lineno{
|
||||
background: #212121;
|
||||
}
|
||||
pre.lineno {
|
||||
background: #111;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.c { color: #998; font-style: italic } // Comment
|
||||
.err { color: #a61717; background-color: #e3d2d2 } // Error
|
||||
.k { font-weight: bold } // Keyword
|
||||
.o { font-weight: bold } // Operator
|
||||
.cm { color: #998; font-style: italic } // Comment.Multiline
|
||||
.cp { color: #999; font-weight: bold } // Comment.Preproc
|
||||
.c1 { color: #998; font-style: italic } // Comment.Single
|
||||
.cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special
|
||||
.gd { color: #000; background-color: #fdd } // Generic.Deleted
|
||||
.gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific
|
||||
.ge { font-style: italic } // Generic.Emph
|
||||
.gr { color: #a00 } // Generic.Error
|
||||
.gh { color: #999 } // Generic.Heading
|
||||
.gi { color: #000; background-color: #dfd } // Generic.Inserted
|
||||
.gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific
|
||||
.go { color: #888 } // Generic.Output
|
||||
.gp { color: #555 } // Generic.Prompt
|
||||
.gs { font-weight: bold } // Generic.Strong
|
||||
.gu { color: #aaa } // Generic.Subheading
|
||||
.gt { color: #a00 } // Generic.Traceback
|
||||
.kc { font-weight: bold } // Keyword.Constant
|
||||
.kd { font-weight: bold } // Keyword.Declaration
|
||||
.kp { font-weight: bold } // Keyword.Pseudo
|
||||
.kr { font-weight: bold } // Keyword.Reserved
|
||||
.kt { color: #458; font-weight: bold } // Keyword.Type
|
||||
.m { color: #099 } // Literal.Number
|
||||
.s { color: #d14 } // Literal.String
|
||||
.na { color: #008080 } // Name.Attribute
|
||||
.nb { color: #0086B3 } // Name.Builtin
|
||||
.nc { color: #458; font-weight: bold } // Name.Class
|
||||
.no { color: #008080 } // Name.Constant
|
||||
.ni { color: #800080 } // Name.Entity
|
||||
.ne { color: #900; font-weight: bold } // Name.Exception
|
||||
.nf { color: #900; font-weight: bold } // Name.Function
|
||||
.nn { color: #555 } // Name.Namespace
|
||||
.nt { color: #000080 } // Name.Tag
|
||||
.nv { color: #008080 } // Name.Variable
|
||||
.ow { font-weight: bold } // Operator.Word
|
||||
.w { color: #bbb } // Text.Whitespace
|
||||
.mf { color: #099 } // Literal.Number.Float
|
||||
.mh { color: #099 } // Literal.Number.Hex
|
||||
.mi { color: #099 } // Literal.Number.Integer
|
||||
.mo { color: #099 } // Literal.Number.Oct
|
||||
.sb { color: #d14 } // Literal.String.Backtick
|
||||
.sc { color: #d14 } // Literal.String.Char
|
||||
.sd { color: #d14 } // Literal.String.Doc
|
||||
.s2 { color: #d14 } // Literal.String.Double
|
||||
.se { color: #d14 } // Literal.String.Escape
|
||||
.sh { color: #d14 } // Literal.String.Heredoc
|
||||
.si { color: #d14 } // Literal.String.Interpol
|
||||
.sx { color: #d14 } // Literal.String.Other
|
||||
.sr { color: #009926 } // Literal.String.Regex
|
||||
.s1 { color: #d14 } // Literal.String.Single
|
||||
.ss { color: #990073 } // Literal.String.Symbol
|
||||
.bp { color: #999 } // Name.Builtin.Pseudo
|
||||
.vc { color: #008080 } // Name.Variable.Class
|
||||
.vg { color: #008080 } // Name.Variable.Global
|
||||
.vi { color: #008080 } // Name.Variable.Instance
|
||||
.il { color: #099 } // Literal.Number.Integer.Long
|
||||
.c {
|
||||
color: #777;
|
||||
font-style: italic;
|
||||
} // Comment
|
||||
.err {
|
||||
color: #a61717;
|
||||
background-color: #e3d2d2;
|
||||
} // Error
|
||||
.k {
|
||||
font-weight: bold;
|
||||
} // Keyword
|
||||
.o {
|
||||
font-weight: bold;
|
||||
} // Operator
|
||||
.cm {
|
||||
color: #998;
|
||||
font-style: italic;
|
||||
} // Comment.Multiline
|
||||
.cp {
|
||||
color: #999;
|
||||
font-weight: bold;
|
||||
} // Comment.Preproc
|
||||
.c1 {
|
||||
color: #998;
|
||||
font-style: italic;
|
||||
} // Comment.Single
|
||||
.cs {
|
||||
color: #999;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
} // Comment.Special
|
||||
.gd {
|
||||
color: #000;
|
||||
background-color: #fdd;
|
||||
} // Generic.Deleted
|
||||
.gd .x {
|
||||
color: #000;
|
||||
background-color: #faa;
|
||||
} // Generic.Deleted.Specific
|
||||
.ge {
|
||||
font-style: italic;
|
||||
} // Generic.Emph
|
||||
.gr {
|
||||
color: #a00;
|
||||
} // Generic.Error
|
||||
.gh {
|
||||
color: #999;
|
||||
} // Generic.Heading
|
||||
.gi {
|
||||
color: #000;
|
||||
background-color: #dfd;
|
||||
} // Generic.Inserted
|
||||
.gi .x {
|
||||
color: #000;
|
||||
background-color: #afa;
|
||||
} // Generic.Inserted.Specific
|
||||
.go {
|
||||
color: #888;
|
||||
} // Generic.Output
|
||||
.gp {
|
||||
color: #555;
|
||||
} // Generic.Prompt
|
||||
.gs {
|
||||
font-weight: bold;
|
||||
} // Generic.Strong
|
||||
.gu {
|
||||
color: #aaa;
|
||||
} // Generic.Subheading
|
||||
.gt {
|
||||
color: #a00;
|
||||
} // Generic.Traceback
|
||||
.kc {
|
||||
font-weight: bold;
|
||||
} // Keyword.Constant
|
||||
.kd {
|
||||
font-weight: bold;
|
||||
} // Keyword.Declaration
|
||||
.kp {
|
||||
font-weight: bold;
|
||||
} // Keyword.Pseudo
|
||||
.kr {
|
||||
font-weight: bold;
|
||||
} // Keyword.Reserved
|
||||
.kt {
|
||||
color: #458;
|
||||
font-weight: bold;
|
||||
} // Keyword.Type
|
||||
.m {
|
||||
color: #099;
|
||||
} // Literal.Number
|
||||
.s {
|
||||
color: #d14;
|
||||
} // Literal.String
|
||||
.na {
|
||||
color: #008080;
|
||||
} // Name.Attribute
|
||||
.nb {
|
||||
color: #00a6d3;
|
||||
} // Name.Builtin
|
||||
.nc {
|
||||
color: #458;
|
||||
font-weight: bold;
|
||||
} // Name.Class
|
||||
.no {
|
||||
color: #008080;
|
||||
} // Name.Constant
|
||||
.ni {
|
||||
color: #800080;
|
||||
} // Name.Entity
|
||||
.ne {
|
||||
color: #900;
|
||||
font-weight: bold;
|
||||
} // Name.Exception
|
||||
.nf {
|
||||
color: #900;
|
||||
font-weight: bold;
|
||||
} // Name.Function
|
||||
.nn {
|
||||
color: #555;
|
||||
} // Name.Namespace
|
||||
.nt {
|
||||
color: #0000d0;
|
||||
} // Name.Tag
|
||||
.nv {
|
||||
color: #0bb;
|
||||
} // Name.Variable
|
||||
.ow {
|
||||
font-weight: bold;
|
||||
} // Operator.Word
|
||||
.w {
|
||||
color: #bbb;
|
||||
} // Text.Whitespace
|
||||
.mf {
|
||||
color: #099;
|
||||
} // Literal.Number.Float
|
||||
.mh {
|
||||
color: #099;
|
||||
} // Literal.Number.Hex
|
||||
.mi {
|
||||
color: #099;
|
||||
} // Literal.Number.Integer
|
||||
.mo {
|
||||
color: #099;
|
||||
} // Literal.Number.Oct
|
||||
.sb {
|
||||
color: #f54;
|
||||
} // Literal.String.Backtick
|
||||
.sc {
|
||||
color: #f54;
|
||||
} // Literal.String.Char
|
||||
.sd {
|
||||
color: #f54;
|
||||
} // Literal.String.Doc
|
||||
.s2 {
|
||||
color: #f54;
|
||||
} // Literal.String.Double
|
||||
.se {
|
||||
color: #f54;
|
||||
} // Literal.String.Escape
|
||||
.sh {
|
||||
color: #f54;
|
||||
} // Literal.String.Heredoc
|
||||
.si {
|
||||
color: #f54;
|
||||
} // Literal.String.Interpol
|
||||
.sx {
|
||||
color: #f54;
|
||||
} // Literal.String.Other
|
||||
.sr {
|
||||
color: #009926;
|
||||
} // Literal.String.Regex
|
||||
.s1 {
|
||||
color: #f54;
|
||||
} // Literal.String.Single
|
||||
.ss {
|
||||
color: #990073;
|
||||
} // Literal.String.Symbol
|
||||
.bp {
|
||||
color: #999;
|
||||
} // Name.Builtin.Pseudo
|
||||
.vc {
|
||||
color: #008080;
|
||||
} // Name.Variable.Class
|
||||
.vg {
|
||||
color: #008080;
|
||||
} // Name.Variable.Global
|
||||
.vi {
|
||||
color: #008080;
|
||||
} // Name.Variable.Instance
|
||||
.il {
|
||||
color: #099;
|
||||
} // Literal.Number.Integer.Long
|
||||
}
|
||||
|
|
111
_site/404.html
|
@ -1,111 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>Ramblings of an archer archer</title>
|
||||
<meta name="description" content="Things which an Arch Linux user that also owns an recurve bow can write.
|
||||
">
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css">
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Hammersmith+One' rel='stylesheet' type='text/css'>
|
||||
<link rel="canonical" href="http://praticamentetilde.github.io/404.html">
|
||||
<link rel="alternate" type="application/rss+xml" title="Ramblings of an archer archer" href="http://praticamentetilde.github.io/feed.xml">
|
||||
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
|
||||
<script src="https://rawgit.com/snaptortoise/konami-js/master/konami.js"></script>
|
||||
<!-- Favicon -->
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
<meta name="msapplication-TileColor" content="#ffffff">
|
||||
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="header">
|
||||
<section class="head">
|
||||
<h2 class="title">Ramblings of an archer archer</h2>
|
||||
<p>Things which an Arch Linux user that also owns an recurve bow can write.
|
||||
</p>
|
||||
</section>
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<ul class="navbar-list">
|
||||
<li class="navbar-item">
|
||||
<a href="/">home</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="navbar-item">
|
||||
<a href="/about/">About</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="navbar-item">
|
||||
<a href="http://www.burarco.it">My archery club</a>
|
||||
</li>
|
||||
<li class="navbar-item">
|
||||
<a href="/feed.xml">RSS</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main class="container">
|
||||
<h1 id="page-not-found">404 - page not found</h1>
|
||||
|
||||
<p>If you didn’t come on purpose I apologise, but the page you are searching doesn’t exist.
|
||||
But, if you came on purpose, enjoy a flat Rick Astley gif dancing.</p>
|
||||
|
||||
<p><img src="/astley.gif" alt="Rick gif" /></p>
|
||||
|
||||
<style>
|
||||
img{
|
||||
display: inline-block
|
||||
}
|
||||
main{
|
||||
text-align: center
|
||||
}
|
||||
</style>
|
||||
|
||||
<p>Thanks <a href="https://github.com/Giorgio-Croci">Giorgio Croci!</a></p>
|
||||
|
||||
</main>
|
||||
<footer class="site-footer">
|
||||
<div class="icons">
|
||||
<a class="icon" href="https://github.com/praticamentetilde"><i class="fa fa-github"></i></a>
|
||||
<a class="icon" href="https://www.reddit.com/user/praticamentetilde"><i class="fa fa-reddit"></i></a>
|
||||
</div>
|
||||
<h6 class="author">Claudio Maggioni 2016</h6>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
var easter_egg = new Konami();
|
||||
easter_egg.load("https://www.youtube.com/watch?v=URTcCh6QVwM");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,110 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>About</title>
|
||||
<meta name="description" content="Things which an Arch Linux user that also owns an recurve bow can write.
|
||||
">
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css">
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Hammersmith+One' rel='stylesheet' type='text/css'>
|
||||
<link rel="canonical" href="http://praticamentetilde.github.io/about/">
|
||||
<link rel="alternate" type="application/rss+xml" title="Ramblings of an archer archer" href="http://praticamentetilde.github.io/feed.xml">
|
||||
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
|
||||
<script src="https://rawgit.com/snaptortoise/konami-js/master/konami.js"></script>
|
||||
<!-- Favicon -->
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
<meta name="msapplication-TileColor" content="#ffffff">
|
||||
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="header">
|
||||
<section class="head">
|
||||
<h2 class="title">Ramblings of an archer archer</h2>
|
||||
<p>Things which an Arch Linux user that also owns an recurve bow can write.
|
||||
</p>
|
||||
</section>
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<ul class="navbar-list">
|
||||
<li class="navbar-item">
|
||||
<a href="/">home</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="navbar-item">
|
||||
<a href="/about/">About</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="navbar-item">
|
||||
<a href="http://www.burarco.it">My archery club</a>
|
||||
</li>
|
||||
<li class="navbar-item">
|
||||
<a href="/feed.xml">RSS</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main class="container">
|
||||
<article class="post">
|
||||
|
||||
<header class="post-header">
|
||||
<h2 class="post-title">About</h2>
|
||||
</header>
|
||||
|
||||
<div class="post-content">
|
||||
<p>My name is Claudio Maggioni and I am both an Arch Linux user and an <a href="http://www.fitarco-italia.org/arcieri/situazione.php?Codice=91647">recurve archer</a>. I define myself an “archer archer”. This site will collect my own occasional thoughts about the two worlds, hoping someone will found them useful.</p>
|
||||
|
||||
<p>If you are curious about the code i produce my personal Github account is <a href="https://github.com/praticamentetilde/">here</a>. This particular site is made with jekyll and hosted by Github pages, as you can see.</p>
|
||||
|
||||
<p>PRO tip: try performing a Konami code in the home page (for phones slide up, slide up, slide down, slide down, slide left, slide right, slide left, slide right, tap, tap; made with <a href="https://github.com/snaptortoise/konami-js">this</a>)…</p>
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
|
||||
</main>
|
||||
<footer class="site-footer">
|
||||
<div class="icons">
|
||||
<a class="icon" href="https://github.com/praticamentetilde"><i class="fa fa-github"></i></a>
|
||||
<a class="icon" href="https://www.reddit.com/user/praticamentetilde"><i class="fa fa-reddit"></i></a>
|
||||
</div>
|
||||
<h6 class="author">Claudio Maggioni 2016</h6>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
var easter_egg = new Konami();
|
||||
easter_egg.load("https://www.youtube.com/watch?v=URTcCh6QVwM");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 4.9 KiB |
|
@ -1,147 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>My archery setup!</title>
|
||||
<meta name="description" content="Hey there! This is my first post about archery, so I thought that I could have done a tour of my setup. As I wrote in the about page, I’m a Olmpic recurve ar...">
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css">
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Hammersmith+One' rel='stylesheet' type='text/css'>
|
||||
<link rel="canonical" href="http://praticamentetilde.github.io/archery/2016/08/15/my-archery-setup.html">
|
||||
<link rel="alternate" type="application/rss+xml" title="Ramblings of an archer archer" href="http://praticamentetilde.github.io/feed.xml">
|
||||
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
|
||||
<script src="https://rawgit.com/snaptortoise/konami-js/master/konami.js"></script>
|
||||
<!-- Favicon -->
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
<meta name="msapplication-TileColor" content="#ffffff">
|
||||
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="header">
|
||||
<section class="head">
|
||||
<h2 class="title">Ramblings of an archer archer</h2>
|
||||
<p>Things which an Arch Linux user that also owns an recurve bow can write.
|
||||
</p>
|
||||
</section>
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<ul class="navbar-list">
|
||||
<li class="navbar-item">
|
||||
<a href="/">home</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="navbar-item">
|
||||
<a href="/about/">About</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="navbar-item">
|
||||
<a href="http://www.burarco.it">My archery club</a>
|
||||
</li>
|
||||
<li class="navbar-item">
|
||||
<a href="/feed.xml">RSS</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main class="container">
|
||||
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
|
||||
|
||||
<header class="post-header">
|
||||
<h2 class="post-title" itemprop="name headline">My archery setup!</h2>
|
||||
<p class="post-meta"><time datetime="2016-08-15T12:00:00+02:00" itemprop="datePublished">Aug 15, 2016</time></p>
|
||||
</header>
|
||||
|
||||
<div class="post-content" itemprop="articleBody">
|
||||
<p>Hey there! This is my first post about archery, so I thought that I could have done a tour of my setup. As I wrote in the about page, I’m a Olmpic recurve archer based in Italy. I do this for almost five years! If you don’t understand everything I say, you can check out the youtube channel <a href="https://www.youtube.com/user/NUSensei/">Nusensei</a>. It’s a very good source, especially for beginners.</p>
|
||||
|
||||
<p><img src="https://dl.dropboxusercontent.com/s/efmap2qqvz6yapn/IMG_20160809_164942.jpg?dl=0" alt="Bow1" /></p>
|
||||
|
||||
<p>Ok, the setup. I own a <em>Fiberbow 5.99</em> LH (yes, I’m left handed) as my <code class="highlighter-rouge">riser</code>, the <em>central</em> part of the bow. It’s made by carbon fiber so it’s very lightweight. And is not painted too: It looks kinda cool. Many experienced archers could complain saying that carbon fiber bends and this is a bad thing. Instead, I think this gives you a nice feedback when you release. Also I tried to raise a friend’s <em>Hoyt Prodigy XT</em>, and there’s no way I’m going to lift such a weight on a regular base. Both the risers mentioned are high-range ones: I got mine 50% off because it wasn’t the latest model and it had some minor ahestetic flaws. Also, this isn’t my first one. In fact, I used to shoot with an Orange SF Premium: great bow for beginners!</p>
|
||||
|
||||
<p>As limbs, I use a pair of <em>EXE College</em> rated at 34 pounds. Since I’m quite tall (limbs and riser toghether make a 70” tall bow), my draw length is around 29.5” and my draw weight is around 38 pounds.</p>
|
||||
|
||||
<p>The sight is a <em>Shibuya Dual Click</em>. You can check out <a href="https://www.youtube.com/watch?v=_ZvAnyxazpY">this</a> review by Nusensei (by the way, I knew his channel from this very video).</p>
|
||||
|
||||
<p>As stabilizers, I use a set of <em>Fiberbow S.3</em> ones with yellow dampeners (for those who know the difference between the colours).</p>
|
||||
|
||||
<p>As plunger button, I use a <em>EXE</em> one. It’s a middle range one, but it seems very well built and it works fine! Also, I’m not going to spend 90€ for a <code class="highlighter-rouge">Cartel</code> one.</p>
|
||||
|
||||
<p>My current arrows are a set of <em>Easton X7 Eclipse</em> spined at 2213. These are winter alluminium arrows, but since they are cheaper than carbon ones, I bought these as a total replacement of my <em>VAP V6</em> 600. Those, due to form flaws, were 2 inches too short. Oh, and I always used <em>Spin Wings</em> and <em>Elivanes</em>, a stiffer plastic italian replacement.</p>
|
||||
|
||||
<p>Here’s an image of the complete bow at the archery range:</p>
|
||||
|
||||
<p><img src="https://dl.dropboxusercontent.com/s/ril7kk9zd0l4vrf/IMG_20160809_175554.jpg?dl=0" alt="Bow2" /></p>
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
<div id="disqus_thread"></div>
|
||||
<script>
|
||||
/**
|
||||
* RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
|
||||
* LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables
|
||||
*/
|
||||
/*
|
||||
var disqus_config = function () {
|
||||
this.page.url = PAGE_URL; // Replace PAGE_URL with your page's canonical URL variable
|
||||
this.page.identifier = PAGE_IDENTIFIER; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
|
||||
};
|
||||
*/
|
||||
(function() { // DON'T EDIT BELOW THIS LINE
|
||||
var d = document, s = d.createElement('script');
|
||||
|
||||
s.src = '//ramblingsofanarcherarcher.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" rel="nofollow">comments powered by Disqus.</a></noscript>
|
||||
|
||||
|
||||
</main>
|
||||
<footer class="site-footer">
|
||||
<div class="icons">
|
||||
<a class="icon" href="https://github.com/praticamentetilde"><i class="fa fa-github"></i></a>
|
||||
<a class="icon" href="https://www.reddit.com/user/praticamentetilde"><i class="fa fa-reddit"></i></a>
|
||||
</div>
|
||||
<h6 class="author">Claudio Maggioni 2016</h6>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
var easter_egg = new Konami();
|
||||
easter_egg.load("https://www.youtube.com/watch?v=URTcCh6QVwM");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
BIN
_site/astley.gif
Before Width: | Height: | Size: 950 KiB |
|
@ -1,2 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig><msapplication><tile><square70x70logo src="/ms-icon-70x70.png"/><square150x150logo src="/ms-icon-150x150.png"/><square310x310logo src="/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>
|
|
@ -1,369 +0,0 @@
|
|||
/**
|
||||
* Reset some basic elements
|
||||
*/
|
||||
body, h1, h2, h3, h4, h5, h6,
|
||||
p, blockquote, pre, hr,
|
||||
dl, dd, ol, ul, figure {
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
|
||||
/**
|
||||
* Basic styling
|
||||
*/
|
||||
body {
|
||||
font: 200 16px/1.5 "Hammersmith One", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
color: #888;
|
||||
background-color: #090909;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-webkit-font-feature-settings: "kern" 1;
|
||||
-moz-font-feature-settings: "kern" 1;
|
||||
-o-font-feature-settings: "kern" 1;
|
||||
font-feature-settings: "kern" 1;
|
||||
font-kerning: normal; }
|
||||
|
||||
/**
|
||||
* Set `margin-bottom` to maintain vertical rhythm
|
||||
*/
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
p, blockquote, pre,
|
||||
ul, ol, dl, figure,
|
||||
.highlight {
|
||||
margin-bottom: 15px; }
|
||||
|
||||
/**
|
||||
* Images
|
||||
*/
|
||||
img {
|
||||
max-width: 100%;
|
||||
vertical-align: middle; }
|
||||
|
||||
/**
|
||||
* Figures
|
||||
*/
|
||||
figure > img {
|
||||
display: block; }
|
||||
|
||||
figcaption {
|
||||
font-size: 14px; }
|
||||
|
||||
/**
|
||||
* Lists
|
||||
*/
|
||||
ul, ol {
|
||||
margin-left: 30px; }
|
||||
|
||||
li > ul,
|
||||
li > ol {
|
||||
margin-bottom: 0; }
|
||||
|
||||
/**
|
||||
* Headings
|
||||
*/
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-weight: 200; }
|
||||
|
||||
/**
|
||||
* Links
|
||||
*/
|
||||
a {
|
||||
color: #e82;
|
||||
text-decoration: none; }
|
||||
a:visited {
|
||||
color: #b6620e; }
|
||||
a:hover {
|
||||
color: #888;
|
||||
text-decoration: underline; }
|
||||
|
||||
/**
|
||||
* Blockquotes
|
||||
*/
|
||||
blockquote {
|
||||
color: #828282;
|
||||
border-left: 4px solid #e8e8e8;
|
||||
padding-left: 15px;
|
||||
font-size: 18px;
|
||||
letter-spacing: -1px;
|
||||
font-style: italic; }
|
||||
blockquote > :last-child {
|
||||
margin-bottom: 0; }
|
||||
|
||||
/**
|
||||
* Code formatting
|
||||
*/
|
||||
pre,
|
||||
code {
|
||||
font-size: 15px;
|
||||
/*border: 1px solid $grey-color-light;*/
|
||||
border-radius: 3px;
|
||||
background: #424242; }
|
||||
|
||||
code {
|
||||
padding: 1px 5px; }
|
||||
|
||||
pre {
|
||||
padding: 8px 12px;
|
||||
overflow-x: auto; }
|
||||
pre > code {
|
||||
border: 0;
|
||||
padding-right: 0;
|
||||
padding-left: 0; }
|
||||
|
||||
/**
|
||||
* Wrapper
|
||||
*/
|
||||
.wrapper {
|
||||
max-width: -webkit-calc(800px - (30px * 2));
|
||||
max-width: calc(800px - (30px * 2));
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
padding-right: 30px;
|
||||
padding-left: 30px; }
|
||||
@media screen and (max-width: 800px) {
|
||||
.wrapper {
|
||||
max-width: -webkit-calc(800px - (30px));
|
||||
max-width: calc(800px - (30px));
|
||||
padding-right: 15px;
|
||||
padding-left: 15px; } }
|
||||
|
||||
/**
|
||||
* Clearfix
|
||||
*/
|
||||
.wrapper:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both; }
|
||||
|
||||
/**
|
||||
* Icons
|
||||
*/
|
||||
.icon > svg {
|
||||
display: inline-block;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
vertical-align: middle; }
|
||||
.icon > svg path {
|
||||
fill: #828282; }
|
||||
|
||||
body {
|
||||
background-color: #333;
|
||||
font-family: 'Hammersmith One', sans-serif;
|
||||
color: white;
|
||||
display: flex;
|
||||
min-height: 100vh;
|
||||
flex-direction: column; }
|
||||
|
||||
main {
|
||||
flex: 1 0 auto; }
|
||||
|
||||
.navbar-list .navbar-item {
|
||||
text-transform: uppercase;
|
||||
font-weight: 400;
|
||||
display: inline-block;
|
||||
margin: 1em; }
|
||||
|
||||
ul.navbar-list {
|
||||
border-top: 1px solid #eee;
|
||||
border-bottom: 1px solid #eee;
|
||||
margin-bottom: 2rem; }
|
||||
|
||||
.header {
|
||||
padding-top: 6rem;
|
||||
text-align: center; }
|
||||
|
||||
@media (min-width: 700px) {
|
||||
.header {
|
||||
padding-top: 14rem; } }
|
||||
.head {
|
||||
padding: 0 1rem 6rem 1rem; }
|
||||
|
||||
@media (max-width: 700px) {
|
||||
.navbar-list .navbar-item {
|
||||
width: calc(100% - 2em); } }
|
||||
.navbar-item a {
|
||||
color: #e82; }
|
||||
|
||||
ul.post-list, ul.navbar-list {
|
||||
list-style-type: none;
|
||||
margin-left: 0;
|
||||
margin-right: 0; }
|
||||
|
||||
.header, footer {
|
||||
background-color: rgba(0, 0, 0, 0.25); }
|
||||
|
||||
footer {
|
||||
padding-top: 1rem; }
|
||||
|
||||
footer .author {
|
||||
text-align: center;
|
||||
text-transform: uppercase; }
|
||||
|
||||
.container {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 1rem; }
|
||||
|
||||
.icons {
|
||||
text-align: center; }
|
||||
|
||||
a.icon {
|
||||
display: inline-table;
|
||||
background-color: rgba(255, 255, 255, 0.5);
|
||||
border-radius: 1.75em;
|
||||
width: 3.5em;
|
||||
height: 3.5em;
|
||||
text-align: center;
|
||||
line-height: 3.5em;
|
||||
margin: .5em;
|
||||
color: white;
|
||||
cursor: pointer; }
|
||||
a.icon:hover {
|
||||
text-decoration: none; }
|
||||
|
||||
a.icon i.fa {
|
||||
font-size: 2em;
|
||||
display: table-cell;
|
||||
vertical-align: middle; }
|
||||
|
||||
/**
|
||||
* Syntax highlighting styles
|
||||
*/
|
||||
.highlight {
|
||||
background: #fff; }
|
||||
.highlighter-rouge .highlight {
|
||||
background: #eef; }
|
||||
.highlight td.code > pre {
|
||||
background: #323232; }
|
||||
.highlight pre.lineno {
|
||||
background: #212121; }
|
||||
.highlight .c {
|
||||
color: #998;
|
||||
font-style: italic; }
|
||||
.highlight .err {
|
||||
color: #a61717;
|
||||
background-color: #e3d2d2; }
|
||||
.highlight .k {
|
||||
font-weight: bold; }
|
||||
.highlight .o {
|
||||
font-weight: bold; }
|
||||
.highlight .cm {
|
||||
color: #998;
|
||||
font-style: italic; }
|
||||
.highlight .cp {
|
||||
color: #999;
|
||||
font-weight: bold; }
|
||||
.highlight .c1 {
|
||||
color: #998;
|
||||
font-style: italic; }
|
||||
.highlight .cs {
|
||||
color: #999;
|
||||
font-weight: bold;
|
||||
font-style: italic; }
|
||||
.highlight .gd {
|
||||
color: #000;
|
||||
background-color: #fdd; }
|
||||
.highlight .gd .x {
|
||||
color: #000;
|
||||
background-color: #faa; }
|
||||
.highlight .ge {
|
||||
font-style: italic; }
|
||||
.highlight .gr {
|
||||
color: #a00; }
|
||||
.highlight .gh {
|
||||
color: #999; }
|
||||
.highlight .gi {
|
||||
color: #000;
|
||||
background-color: #dfd; }
|
||||
.highlight .gi .x {
|
||||
color: #000;
|
||||
background-color: #afa; }
|
||||
.highlight .go {
|
||||
color: #888; }
|
||||
.highlight .gp {
|
||||
color: #555; }
|
||||
.highlight .gs {
|
||||
font-weight: bold; }
|
||||
.highlight .gu {
|
||||
color: #aaa; }
|
||||
.highlight .gt {
|
||||
color: #a00; }
|
||||
.highlight .kc {
|
||||
font-weight: bold; }
|
||||
.highlight .kd {
|
||||
font-weight: bold; }
|
||||
.highlight .kp {
|
||||
font-weight: bold; }
|
||||
.highlight .kr {
|
||||
font-weight: bold; }
|
||||
.highlight .kt {
|
||||
color: #458;
|
||||
font-weight: bold; }
|
||||
.highlight .m {
|
||||
color: #099; }
|
||||
.highlight .s {
|
||||
color: #d14; }
|
||||
.highlight .na {
|
||||
color: #008080; }
|
||||
.highlight .nb {
|
||||
color: #0086B3; }
|
||||
.highlight .nc {
|
||||
color: #458;
|
||||
font-weight: bold; }
|
||||
.highlight .no {
|
||||
color: #008080; }
|
||||
.highlight .ni {
|
||||
color: #800080; }
|
||||
.highlight .ne {
|
||||
color: #900;
|
||||
font-weight: bold; }
|
||||
.highlight .nf {
|
||||
color: #900;
|
||||
font-weight: bold; }
|
||||
.highlight .nn {
|
||||
color: #555; }
|
||||
.highlight .nt {
|
||||
color: #000080; }
|
||||
.highlight .nv {
|
||||
color: #008080; }
|
||||
.highlight .ow {
|
||||
font-weight: bold; }
|
||||
.highlight .w {
|
||||
color: #bbb; }
|
||||
.highlight .mf {
|
||||
color: #099; }
|
||||
.highlight .mh {
|
||||
color: #099; }
|
||||
.highlight .mi {
|
||||
color: #099; }
|
||||
.highlight .mo {
|
||||
color: #099; }
|
||||
.highlight .sb {
|
||||
color: #d14; }
|
||||
.highlight .sc {
|
||||
color: #d14; }
|
||||
.highlight .sd {
|
||||
color: #d14; }
|
||||
.highlight .s2 {
|
||||
color: #d14; }
|
||||
.highlight .se {
|
||||
color: #d14; }
|
||||
.highlight .sh {
|
||||
color: #d14; }
|
||||
.highlight .si {
|
||||
color: #d14; }
|
||||
.highlight .sx {
|
||||
color: #d14; }
|
||||
.highlight .sr {
|
||||
color: #009926; }
|
||||
.highlight .s1 {
|
||||
color: #d14; }
|
||||
.highlight .ss {
|
||||
color: #990073; }
|
||||
.highlight .bp {
|
||||
color: #999; }
|
||||
.highlight .vc {
|
||||
color: #008080; }
|
||||
.highlight .vg {
|
||||
color: #008080; }
|
||||
.highlight .vi {
|
||||
color: #008080; }
|
||||
.highlight .il {
|
||||
color: #099; }
|
Before Width: | Height: | Size: 962 B |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 1.1 KiB |
275
_site/feed.xml
|
@ -1,275 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Ramblings of an archer archer</title>
|
||||
<description>Things which an Arch Linux user that also owns an recurve bow can write.
|
||||
</description>
|
||||
<link>http://praticamentetilde.github.io/</link>
|
||||
<atom:link href="http://praticamentetilde.github.io/feed.xml" rel="self" type="application/rss+xml"/>
|
||||
<pubDate>Mon, 26 Sep 2016 22:08:15 +0200</pubDate>
|
||||
<lastBuildDate>Mon, 26 Sep 2016 22:08:15 +0200</lastBuildDate>
|
||||
<generator>Jekyll v3.2.1</generator>
|
||||
|
||||
<item>
|
||||
<title>Css updated!</title>
|
||||
<description><p>As you can see, now the css is decent! Now I’m using <a href="http://getskeleton.com">Skeleton</a> and a couple of custom sass lines that you can check out on Github. Currently, I’m a bit busy with BAM! so I’m not sure I’ll find the time for this. Anyway, enjoy the new look!</p>
|
||||
</description>
|
||||
<pubDate>Tue, 13 Sep 2016 21:30:00 +0200</pubDate>
|
||||
<link>http://praticamentetilde.github.io/update/2016/09/13/css-update.html</link>
|
||||
<guid isPermaLink="true">http://praticamentetilde.github.io/update/2016/09/13/css-update.html</guid>
|
||||
|
||||
|
||||
<category>update</category>
|
||||
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Just a quick post. BAM!, my first web app (still in development) is on Github!</title>
|
||||
<description><p>As you can read from the title, I’m publishing the uncompleted code of my first webapp. I’m working on this since 3 weeks, and I’m proud of what I’ve done so far.</p>
|
||||
|
||||
<p>If you want to check out the repository, click <a href="https://github.com/praticamentetilde/BAM">here</a>.</p>
|
||||
|
||||
<p>Maybe I can use Materialize css also for this jekyll site, or maybe this is another thing I say but I’m not going to do. Who knows.</p>
|
||||
</description>
|
||||
<pubDate>Wed, 31 Aug 2016 12:00:00 +0200</pubDate>
|
||||
<link>http://praticamentetilde.github.io/programming/2016/08/31/bam-on-github.html</link>
|
||||
<guid isPermaLink="true">http://praticamentetilde.github.io/programming/2016/08/31/bam-on-github.html</guid>
|
||||
|
||||
|
||||
<category>programming</category>
|
||||
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>My archery setup!</title>
|
||||
<description><p>Hey there! This is my first post about archery, so I thought that I could have done a tour of my setup. As I wrote in the about page, I’m a Olmpic recurve archer based in Italy. I do this for almost five years! If you don’t understand everything I say, you can check out the youtube channel <a href="https://www.youtube.com/user/NUSensei/">Nusensei</a>. It’s a very good source, especially for beginners.</p>
|
||||
|
||||
<p><img src="https://dl.dropboxusercontent.com/s/efmap2qqvz6yapn/IMG_20160809_164942.jpg?dl=0" alt="Bow1" /></p>
|
||||
|
||||
<p>Ok, the setup. I own a <em>Fiberbow 5.99</em> LH (yes, I’m left handed) as my <code class="highlighter-rouge">riser</code>, the <em>central</em> part of the bow. It’s made by carbon fiber so it’s very lightweight. And is not painted too: It looks kinda cool. Many experienced archers could complain saying that carbon fiber bends and this is a bad thing. Instead, I think this gives you a nice feedback when you release. Also I tried to raise a friend’s <em>Hoyt Prodigy XT</em>, and there’s no way I’m going to lift such a weight on a regular base. Both the risers mentioned are high-range ones: I got mine 50% off because it wasn’t the latest model and it had some minor ahestetic flaws. Also, this isn’t my first one. In fact, I used to shoot with an Orange SF Premium: great bow for beginners!</p>
|
||||
|
||||
<p>As limbs, I use a pair of <em>EXE College</em> rated at 34 pounds. Since I’m quite tall (limbs and riser toghether make a 70” tall bow), my draw length is around 29.5” and my draw weight is around 38 pounds.</p>
|
||||
|
||||
<p>The sight is a <em>Shibuya Dual Click</em>. You can check out <a href="https://www.youtube.com/watch?v=_ZvAnyxazpY">this</a> review by Nusensei (by the way, I knew his channel from this very video).</p>
|
||||
|
||||
<p>As stabilizers, I use a set of <em>Fiberbow S.3</em> ones with yellow dampeners (for those who know the difference between the colours).</p>
|
||||
|
||||
<p>As plunger button, I use a <em>EXE</em> one. It’s a middle range one, but it seems very well built and it works fine! Also, I’m not going to spend 90€ for a <code class="highlighter-rouge">Cartel</code> one.</p>
|
||||
|
||||
<p>My current arrows are a set of <em>Easton X7 Eclipse</em> spined at 2213. These are winter alluminium arrows, but since they are cheaper than carbon ones, I bought these as a total replacement of my <em>VAP V6</em> 600. Those, due to form flaws, were 2 inches too short. Oh, and I always used <em>Spin Wings</em> and <em>Elivanes</em>, a stiffer plastic italian replacement.</p>
|
||||
|
||||
<p>Here’s an image of the complete bow at the archery range:</p>
|
||||
|
||||
<p><img src="https://dl.dropboxusercontent.com/s/ril7kk9zd0l4vrf/IMG_20160809_175554.jpg?dl=0" alt="Bow2" /></p>
|
||||
</description>
|
||||
<pubDate>Mon, 15 Aug 2016 12:00:00 +0200</pubDate>
|
||||
<link>http://praticamentetilde.github.io/archery/2016/08/15/my-archery-setup.html</link>
|
||||
<guid isPermaLink="true">http://praticamentetilde.github.io/archery/2016/08/15/my-archery-setup.html</guid>
|
||||
|
||||
|
||||
<category>archery</category>
|
||||
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>How to rickroll people that try to run "rm -rf" on your system</title>
|
||||
<description><p><strong>WARNING: The method showed here could not prevent the actual execution of “rm -rf” if the “UNIX vandal” is clever enough. Proceed at your own risk, and make backups!</strong></p>
|
||||
|
||||
<p>I like Rick Astley late 80’s songs, and you can see them here in my Spotify:</p>
|
||||
|
||||
<p><img src="https://dl.dropboxusercontent.com/s/t9vywa4yjotxv0o/Screenshot_20160728_154506.png?dl=0" alt="dQw4w9WgXcQ" /></p>
|
||||
|
||||
<p>I like rickrolling people myself too, especially if they’re trying to delete my entire <code class="highlighter-rouge">/home</code> directory or, even worse, <code class="highlighter-rouge">/</code>. Since I learned how to use the <code class="highlighter-rouge">alias</code> built-in, I wanted a way to prevent that random people tinkering with my laptop (that I may forgot to lock) could delete potentially important stuff, just for fun or boredom.</p>
|
||||
|
||||
<p>The method that I’ll show will lock any <code class="highlighter-rouge">rm</code> command runned in both recursive and force mode, so <code class="highlighter-rouge">rm -rf</code>, <code class="highlighter-rouge">rm -f -r</code> and <code class="highlighter-rouge">rm -r --force</code> are all blocked, even if they are launched by <code class="highlighter-rouge">sudo</code>. I’m going to alias the rm command in <code class="highlighter-rouge">/etc/profile</code> <code class="highlighter-rouge">/etc/bash.bashrc</code> and in <code class="highlighter-rouge">/etc/zsh/zshrc</code> (I’m a zsh user) so that the rickroll will be possible from all users, even root and the ones with a brand new <code class="highlighter-rouge">bashrc</code> or <code class="highlighter-rouge">zshrc</code>. Here is the code I appended to those files:</p>
|
||||
|
||||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nb">alias </span><span class="nv">rm</span><span class="o">=</span>/bin/rmAlias
|
||||
<span class="nb">alias </span><span class="nv">sudo</span><span class="o">=</span><span class="s1">'sudo '</span> <span class="c"># this enables aliases in sudo, see http://askubuntu.com/questions/22037/aliases-not-available-when-using-sudo</span></code></pre></figure>
|
||||
|
||||
<p>Since <code class="highlighter-rouge">alias</code> is not able to control the flags of the aliases (see <a href="http://apple.stackexchange.com/questions/50963/how-do-i-add-a-flag-to-an-alias">here</a>), we’re going to redirect each call of <code class="highlighter-rouge">rm</code> to <code class="highlighter-rouge">/bin/rmAlias</code>, that would run the command if it’s safe. I didn’t use a function because it’s a bit tricky to make that work with <code class="highlighter-rouge">sudo</code>. So, let’s see the code I put in <code class="highlighter-rouge">rmAlias</code>:</p>
|
||||
|
||||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c">#! /bin/bash</span>
|
||||
<span class="c"># Rickroll whoever tries to desert this system, even root.</span>
|
||||
<span class="c"># To achieve this, set the appropriate aliases even in /etc/profile and similars.</span>
|
||||
|
||||
<span class="c"># Video played when rickrolling</span>
|
||||
<span class="nv">ROLLVIDEO</span><span class="o">=</span>/opt/anti-rm/serious-video.mkv <span class="c"># it's just Never Gonna Give You Up on my system, but be free to customize this!</span>
|
||||
|
||||
rickroll<span class="o">(){</span>
|
||||
<span class="nb">echo</span> <span class="s2">"Never gonna desert this system..."</span>
|
||||
xdg-open <span class="nv">$ROLLVIDEO</span> 2&gt;&amp;1 &amp;
|
||||
<span class="nb">exit </span>0
|
||||
<span class="o">}</span>
|
||||
|
||||
<span class="k">while </span><span class="nb">getopts</span> <span class="s2">":rf-"</span> opt; <span class="k">do</span>
|
||||
<span class="c"># Prevent '--force' to be detected as -r and -f</span>
|
||||
<span class="k">if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$opt</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"-"</span> <span class="o">]</span>; <span class="k">then
|
||||
</span><span class="nv">OPTIND</span><span class="o">=</span><span class="nv">$OPTIND</span>+1
|
||||
<span class="k">continue
|
||||
fi
|
||||
if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$opt</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"r"</span> <span class="o">]</span> <span class="o">||</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$opt</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"f"</span> <span class="o">]</span>; <span class="k">then
|
||||
if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$tmp</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">""</span> <span class="o">]</span>; <span class="k">then
|
||||
</span><span class="nv">tmp</span><span class="o">=</span><span class="nv">$opt</span>
|
||||
<span class="k">continue
|
||||
elif</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$tmp</span><span class="s2">"</span> !<span class="o">=</span> <span class="s2">"</span><span class="nv">$opt</span><span class="s2">"</span> <span class="o">]</span>; <span class="k">then
|
||||
</span>rickroll
|
||||
<span class="k">fi
|
||||
fi
|
||||
done
|
||||
|
||||
for </span>var <span class="k">in</span> <span class="s2">"</span><span class="nv">$@</span><span class="s2">"</span>
|
||||
<span class="k">do
|
||||
if</span> <span class="o">[[</span> <span class="s2">"</span><span class="nv">$var</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"--force"</span> <span class="o">&amp;&amp;</span> <span class="s2">"</span><span class="nv">$tmp</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"r"</span> <span class="o">]]</span>; <span class="k">then
|
||||
</span>rickroll
|
||||
<span class="k">fi
|
||||
done</span>
|
||||
|
||||
<span class="c"># If it's safe, just run rm</span>
|
||||
/bin/rm <span class="s2">"</span><span class="nv">$@</span><span class="s2">"</span>
|
||||
<span class="nb">exit</span> <span class="nv">$?</span></code></pre></figure>
|
||||
|
||||
<p>It may look messy to a UNIX guy more experienced than me, but it works. The <code class="highlighter-rouge">getopts</code> built-in sees if both the <code class="highlighter-rouge">-r</code> and the <code class="highlighter-rouge">-f</code> flags are used and, if so, it starts <code class="highlighter-rouge">rickroll()</code>, which opens with <code class="highlighter-rouge">xdg-open</code> that amazing clip from RickAstleyVEVO. From line 30 and below, the script checks if the <code class="highlighter-rouge">--force</code> flag is used instead of <code class="highlighter-rouge">-f</code>.</p>
|
||||
|
||||
<p>Give execute permissions to the script we’ve just created:</p>
|
||||
|
||||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># chmod +x /bin/rmAlias</span></code></pre></figure>
|
||||
|
||||
<p>Restart your shell, and enjoy. If you want to test safely, I suggest trying to run <code class="highlighter-rouge">rm -rf</code> with no folders or one nonexistant, since this script stop even these commands.</p>
|
||||
|
||||
<p>If you want even more security, you can rename this script to <code class="highlighter-rouge">/bin/rm</code> and move the original one in some other place, getting rid of all the aliases. I prefer the solution above because it’s tidier: you haven’t to move anything. In fact, this could be just an AUR package…</p>
|
||||
</description>
|
||||
<pubDate>Thu, 28 Jul 2016 16:00:00 +0200</pubDate>
|
||||
<link>http://praticamentetilde.github.io/linux/2016/07/28/how-to-rickroll-people-launching-rm-rf-on-your-system.html</link>
|
||||
<guid isPermaLink="true">http://praticamentetilde.github.io/linux/2016/07/28/how-to-rickroll-people-launching-rm-rf-on-your-system.html</guid>
|
||||
|
||||
|
||||
<category>linux</category>
|
||||
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Installing Gentoo on a Lenovo ThinkPad X60s</title>
|
||||
<description><p>My only laptop is a <a href="http://www.thinkwiki.org/wiki/Category:X60s">IBM/Lenovo ThinkPad X60s</a>, a top line “ultrabook” from 2006 that features:</p>
|
||||
|
||||
<ul>
|
||||
<li>An Intel Core Duo L2400 dual core 32 bit CPU, clocked at 1.66 Ghz;</li>
|
||||
<li>2GB of RAM;</li>
|
||||
<li>60GB of SATA1 hard drive;</li>
|
||||
<li>Wifi, Bluetooth, trackpoint mouse only, 56k modem, and a decent set of I/0 ports (including a CardBus slot!).</li>
|
||||
</ul>
|
||||
|
||||
<p><img src="https://dl.dropboxusercontent.com/s/vkm6phz5yb2k4oq/IMG_20160712_143708.jpg?dl=0" alt="Think1" /></p>
|
||||
|
||||
<p><img src="https://dl.dropboxusercontent.com/s/wfjj1wih90lrzax/IMG_20160712_143618.jpg?dl=0" alt="Think2" /></p>
|
||||
|
||||
<p>This machine had an installation on Arch Linux, and I was using it for school stuff. It runned smoothly KDE5, Atom (great editor, I’m using it to write this article), and it was usable even with Phpstorm. Pretty impressive for such an old thing, right?</p>
|
||||
|
||||
<p>Since now I don’t need this laptop every day I decided to give a try at Gentoo, another rolling relase, DIY install distro. This was both a test of my skills, my patience and the performances of the machine. For those of you that don’t know, Gentoo hasn’t binary packages: imagine using Arch with just a developer mantained AUR.</p>
|
||||
|
||||
<p>I followed the <a href="https://wiki.gentoo.org/wiki/Handbook:Main_Page">installation guide</a> without any problem until I had to emerge and install 309 packets from my <code class="highlighter-rouge">@world</code> set: it took 15 hours! The compilation of <code class="highlighter-rouge">cmake</code> crashed because of memory starvation, and so I had to use a spare USB stick as swap (the root file system wasn’t resizable as it was JFS). After some research and a couple of seconds in <code class="highlighter-rouge">top</code> I discovered that <a href="https://en.wikipedia.org/wiki/Physical_Address_Extension">PAE</a> was not implemented in the install disk kernel. TIP: if you want to use a nicer install enviroment, use the Arch ISO. With gentoo, the initialisation of the file system is made with a <a href="https://wiki.gentoo.org/wiki/Stage_tarball#Stage_3">stage 3 tarball</a> and not by tools like <a href="https://wiki.archlinux.org/index.php/beginners'_guide#Install_the_base_packages">pacstrap</a>.</p>
|
||||
|
||||
<p>I had another problem with <code class="highlighter-rouge">make menuconfig</code>, the tool used to specify what features add or remove in your compiled from source Linux kernel. The ncurses menu showed me 64bit options, even if the install disk and the CPU were both 32 bit. If you have this issue too, you can set the <code class="highlighter-rouge">ARCH</code> variable by your own:</p>
|
||||
|
||||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># make ARCH=i386 menuconfig</span>
|
||||
<span class="c"># make ARCH=i386</span>
|
||||
<span class="c"># make ARCH=i386 install</span></code></pre></figure>
|
||||
|
||||
<p>At the end, I made it! I only have a base install, but i can show you <code class="highlighter-rouge">screenfetch</code>:</p>
|
||||
|
||||
<p><img src="https://dl.dropboxusercontent.com/s/fbysnd58sj4g3kl/IMG_20160711_162733.jpg?dl=0" alt="Screenfetch" /></p>
|
||||
|
||||
<p>I’ve not installed Gentoo in dual boot because I didn’t figured out how to switch my bluetooth dongle in HID mode yet, so I can’t select the OS with <code class="highlighter-rouge">rEFInd</code>. Hope this rambling was, if not useful, at least entertaining!</p>
|
||||
</description>
|
||||
<pubDate>Tue, 12 Jul 2016 13:00:00 +0200</pubDate>
|
||||
<link>http://praticamentetilde.github.io/linux/2016/07/12/installing-gentoo-on-a-thinkpad-x60s.html</link>
|
||||
<guid isPermaLink="true">http://praticamentetilde.github.io/linux/2016/07/12/installing-gentoo-on-a-thinkpad-x60s.html</guid>
|
||||
|
||||
|
||||
<category>linux</category>
|
||||
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Get a Bluetooth keyboard work with Arch Linux</title>
|
||||
<description><p>I’ve recently got a Rapoo E6100. This is a minimal and space saving Bluetooth 3.0 keyboard. If you pair it with Windows 10, it will remain paired after reboot, giving the possibility to use it since the login screen. After installing the Bluetooth stack on my Arch via the <code class="highlighter-rouge">bluez</code> and <code class="highlighter-rouge">bluez-utils</code> packages I thought the pairing process would be as simple as Windows if I used the KDE GUI menus for Bluetooth management. That’s not true. The keyboard, once paired, will reconnect automatically just after <code class="highlighter-rouge">plasmashell</code> loaded, leaving me without keyboard during the SDDM login screen and, of course, during a non-graphical session.</p>
|
||||
|
||||
<p>As usual, i’ve searched help in the ArchWiki, founding <a href="https://wiki.archlinux.org/index.php/Bluetooth_keyboard">this</a> article. With that, i’ve succesfully reconnected my Bluetooth keyboard using the <code class="highlighter-rouge">bluetoothctl</code> utility. The next step was configuring the service for auto connection during boot. I’ve created the <code class="highlighter-rouge">btkbd.conf</code> and the <code class="highlighter-rouge">btkbd.service</code> files, enabling the last one with systemd. Let’s give a look to the service file:</p>
|
||||
|
||||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
14
|
||||
15
|
||||
16
|
||||
17
|
||||
18
|
||||
19</pre></td><td class="code"><pre><span class="o">[</span>Unit]
|
||||
<span class="nv">Description</span><span class="o">=</span>systemd Unit to automatically start a Bluetooth keyboard
|
||||
<span class="nv">Documentation</span><span class="o">=</span>https://wiki.archlinux.org/index.php/Bluetooth_Keyboard
|
||||
<span class="nv">Requires</span><span class="o">=</span>dbus-org.bluez.service
|
||||
<span class="nv">After</span><span class="o">=</span>dbus-org.bluez.service
|
||||
<span class="nv">ConditionPathExists</span><span class="o">=</span>/etc/btkbd.conf
|
||||
<span class="nv">ConditionPathExists</span><span class="o">=</span>/usr/bin/hcitool
|
||||
<span class="nv">ConditionPathExists</span><span class="o">=</span>/usr/bin/hciconfig
|
||||
|
||||
<span class="o">[</span>Service]
|
||||
<span class="nv">Type</span><span class="o">=</span>oneshot
|
||||
<span class="nv">EnvironmentFile</span><span class="o">=</span>/etc/btkbd.conf
|
||||
<span class="nv">ExecStart</span><span class="o">=</span>/usr/bin/hciconfig <span class="k">${</span><span class="nv">HCIDEVICE</span><span class="k">}</span> up
|
||||
<span class="c"># ignore errors on connect, spurious problems with bt?</span>
|
||||
<span class="c"># so start next command with -</span>
|
||||
<span class="nv">ExecStart</span><span class="o">=</span>-/usr/bin/hcitool cc <span class="k">${</span><span class="nv">BTKBDMAC</span><span class="k">}</span>
|
||||
|
||||
<span class="o">[</span>Install]
|
||||
<span class="nv">WantedBy</span><span class="o">=</span>multi-user.target<span class="w">
|
||||
</span></pre></td></tr></tbody></table></code></pre></figure>
|
||||
|
||||
<p>Line 13 enables the Bluetooth dongle, and line 16 connects it to the keyboard we gave the mac address in <code class="highlighter-rouge">/etc/btkbd.conf</code>. This should work flawlessly, right? Of course it doesn’t. The service starts before the <code class="highlighter-rouge">dbus-org.bluez.service</code> is loaded and fails. However, if the service is started manually after login the Bluetooth keyboard works. After hours of trying figuring out what was wrong I’ve almost asked for a return on Amazon! The last attempt I made was with sddm disabled and involved built from scratch service:</p>
|
||||
|
||||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10</pre></td><td class="code"><pre><span class="o">[</span>Unit]
|
||||
<span class="nv">Description</span><span class="o">=</span>systemd Unit to automatically start a Bluetooth keyboard
|
||||
|
||||
<span class="o">[</span>Service]
|
||||
<span class="nv">Type</span><span class="o">=</span>oneshot
|
||||
<span class="nv">ExecStart</span><span class="o">=</span>/bin/hciconfig hci0 up
|
||||
<span class="nv">ExecStart</span><span class="o">=</span>/bin/hcitool cc 00:11:22:33:44:55
|
||||
|
||||
<span class="o">[</span>Install]
|
||||
<span class="nv">WantedBy</span><span class="o">=</span>bluetooth.target<span class="w">
|
||||
</span></pre></td></tr></tbody></table></code></pre></figure>
|
||||
|
||||
<p>This incredibly worked. I think the problem was that <code class="highlighter-rouge">multi-user.target</code> that needs to be reached earlier than <code class="highlighter-rouge">bluetooth.target</code>. I got rid of all the tidiness of the ArchWiki solution just to be sure that was not the problem, but I think you can use all of that just correcting <code class="highlighter-rouge">WantedBy=</code>. Currently I haven’t an ArchWiki account nor a forum one, but as soon as I’ll register I’ll correct the article.</p>
|
||||
|
||||
<p>Let me know in the comments if this solution is well made or if it’s just a bodge.
|
||||
Last thing: I discovered that my Bluetooth dongle is CSR 8510 A10 based so expect some ramblings about <a href="http://www.0xf8.org/2014/02/the-crux-of-finding-a-hid-proxy-capable-usb-bluetooth-adapter/">hid proxy</a>.</p>
|
||||
</description>
|
||||
<pubDate>Thu, 07 Jul 2016 14:49:18 +0200</pubDate>
|
||||
<link>http://praticamentetilde.github.io/linux/2016/07/07/get-a-bluetooth-keyboard-work-with-arch.html</link>
|
||||
<guid isPermaLink="true">http://praticamentetilde.github.io/linux/2016/07/07/get-a-bluetooth-keyboard-work-with-arch.html</guid>
|
||||
|
||||
|
||||
<category>linux</category>
|
||||
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
141
_site/index.html
|
@ -1,141 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>Ramblings of an archer archer</title>
|
||||
<meta name="description" content="Things which an Arch Linux user that also owns an recurve bow can write.
|
||||
">
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css">
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Hammersmith+One' rel='stylesheet' type='text/css'>
|
||||
<link rel="canonical" href="http://praticamentetilde.github.io/">
|
||||
<link rel="alternate" type="application/rss+xml" title="Ramblings of an archer archer" href="http://praticamentetilde.github.io/feed.xml">
|
||||
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
|
||||
<script src="https://rawgit.com/snaptortoise/konami-js/master/konami.js"></script>
|
||||
<!-- Favicon -->
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
<meta name="msapplication-TileColor" content="#ffffff">
|
||||
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="header">
|
||||
<section class="head">
|
||||
<h2 class="title">Ramblings of an archer archer</h2>
|
||||
<p>Things which an Arch Linux user that also owns an recurve bow can write.
|
||||
</p>
|
||||
</section>
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<ul class="navbar-list">
|
||||
<li class="navbar-item">
|
||||
<a href="/">home</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="navbar-item">
|
||||
<a href="/about/">About</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="navbar-item">
|
||||
<a href="http://www.burarco.it">My archery club</a>
|
||||
</li>
|
||||
<li class="navbar-item">
|
||||
<a href="/feed.xml">RSS</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main class="container">
|
||||
<div class="home">
|
||||
<ul class="post-list">
|
||||
|
||||
<li>
|
||||
<span class="post-meta">Sep 13, 2016</span>
|
||||
<h5>
|
||||
<a class="post-link" href="/update/2016/09/13/css-update.html">Css updated!</a>
|
||||
</h5>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<span class="post-meta">Aug 31, 2016</span>
|
||||
<h5>
|
||||
<a class="post-link" href="/programming/2016/08/31/bam-on-github.html">Just a quick post. BAM!, my first web app (still in development) is on Github!</a>
|
||||
</h5>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<span class="post-meta">Aug 15, 2016</span>
|
||||
<h5>
|
||||
<a class="post-link" href="/archery/2016/08/15/my-archery-setup.html">My archery setup!</a>
|
||||
</h5>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<span class="post-meta">Jul 28, 2016</span>
|
||||
<h5>
|
||||
<a class="post-link" href="/linux/2016/07/28/how-to-rickroll-people-launching-rm-rf-on-your-system.html">How to rickroll people that try to run "rm -rf" on your system</a>
|
||||
</h5>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<span class="post-meta">Jul 12, 2016</span>
|
||||
<h5>
|
||||
<a class="post-link" href="/linux/2016/07/12/installing-gentoo-on-a-thinkpad-x60s.html">Installing Gentoo on a Lenovo ThinkPad X60s</a>
|
||||
</h5>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<span class="post-meta">Jul 7, 2016</span>
|
||||
<h5>
|
||||
<a class="post-link" href="/linux/2016/07/07/get-a-bluetooth-keyboard-work-with-arch.html">Get a Bluetooth keyboard work with Arch Linux</a>
|
||||
</h5>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<footer class="site-footer">
|
||||
<div class="icons">
|
||||
<a class="icon" href="https://github.com/praticamentetilde"><i class="fa fa-github"></i></a>
|
||||
<a class="icon" href="https://www.reddit.com/user/praticamentetilde"><i class="fa fa-reddit"></i></a>
|
||||
</div>
|
||||
<h6 class="author">Claudio Maggioni 2016</h6>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
var easter_egg = new Konami();
|
||||
easter_egg.load("https://www.youtube.com/watch?v=URTcCh6QVwM");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,198 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>Get a Bluetooth keyboard work with Arch Linux</title>
|
||||
<meta name="description" content="I’ve recently got a Rapoo E6100. This is a minimal and space saving Bluetooth 3.0 keyboard. If you pair it with Windows 10, it will remain paired after reboo...">
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css">
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Hammersmith+One' rel='stylesheet' type='text/css'>
|
||||
<link rel="canonical" href="http://praticamentetilde.github.io/linux/2016/07/07/get-a-bluetooth-keyboard-work-with-arch.html">
|
||||
<link rel="alternate" type="application/rss+xml" title="Ramblings of an archer archer" href="http://praticamentetilde.github.io/feed.xml">
|
||||
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
|
||||
<script src="https://rawgit.com/snaptortoise/konami-js/master/konami.js"></script>
|
||||
<!-- Favicon -->
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
<meta name="msapplication-TileColor" content="#ffffff">
|
||||
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="header">
|
||||
<section class="head">
|
||||
<h2 class="title">Ramblings of an archer archer</h2>
|
||||
<p>Things which an Arch Linux user that also owns an recurve bow can write.
|
||||
</p>
|
||||
</section>
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<ul class="navbar-list">
|
||||
<li class="navbar-item">
|
||||
<a href="/">home</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="navbar-item">
|
||||
<a href="/about/">About</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="navbar-item">
|
||||
<a href="http://www.burarco.it">My archery club</a>
|
||||
</li>
|
||||
<li class="navbar-item">
|
||||
<a href="/feed.xml">RSS</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main class="container">
|
||||
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
|
||||
|
||||
<header class="post-header">
|
||||
<h2 class="post-title" itemprop="name headline">Get a Bluetooth keyboard work with Arch Linux</h2>
|
||||
<p class="post-meta"><time datetime="2016-07-07T14:49:18+02:00" itemprop="datePublished">Jul 7, 2016</time></p>
|
||||
</header>
|
||||
|
||||
<div class="post-content" itemprop="articleBody">
|
||||
<p>I’ve recently got a Rapoo E6100. This is a minimal and space saving Bluetooth 3.0 keyboard. If you pair it with Windows 10, it will remain paired after reboot, giving the possibility to use it since the login screen. After installing the Bluetooth stack on my Arch via the <code class="highlighter-rouge">bluez</code> and <code class="highlighter-rouge">bluez-utils</code> packages I thought the pairing process would be as simple as Windows if I used the KDE GUI menus for Bluetooth management. That’s not true. The keyboard, once paired, will reconnect automatically just after <code class="highlighter-rouge">plasmashell</code> loaded, leaving me without keyboard during the SDDM login screen and, of course, during a non-graphical session.</p>
|
||||
|
||||
<p>As usual, i’ve searched help in the ArchWiki, founding <a href="https://wiki.archlinux.org/index.php/Bluetooth_keyboard">this</a> article. With that, i’ve succesfully reconnected my Bluetooth keyboard using the <code class="highlighter-rouge">bluetoothctl</code> utility. The next step was configuring the service for auto connection during boot. I’ve created the <code class="highlighter-rouge">btkbd.conf</code> and the <code class="highlighter-rouge">btkbd.service</code> files, enabling the last one with systemd. Let’s give a look to the service file:</p>
|
||||
|
||||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
14
|
||||
15
|
||||
16
|
||||
17
|
||||
18
|
||||
19</pre></td><td class="code"><pre><span class="o">[</span>Unit]
|
||||
<span class="nv">Description</span><span class="o">=</span>systemd Unit to automatically start a Bluetooth keyboard
|
||||
<span class="nv">Documentation</span><span class="o">=</span>https://wiki.archlinux.org/index.php/Bluetooth_Keyboard
|
||||
<span class="nv">Requires</span><span class="o">=</span>dbus-org.bluez.service
|
||||
<span class="nv">After</span><span class="o">=</span>dbus-org.bluez.service
|
||||
<span class="nv">ConditionPathExists</span><span class="o">=</span>/etc/btkbd.conf
|
||||
<span class="nv">ConditionPathExists</span><span class="o">=</span>/usr/bin/hcitool
|
||||
<span class="nv">ConditionPathExists</span><span class="o">=</span>/usr/bin/hciconfig
|
||||
|
||||
<span class="o">[</span>Service]
|
||||
<span class="nv">Type</span><span class="o">=</span>oneshot
|
||||
<span class="nv">EnvironmentFile</span><span class="o">=</span>/etc/btkbd.conf
|
||||
<span class="nv">ExecStart</span><span class="o">=</span>/usr/bin/hciconfig <span class="k">${</span><span class="nv">HCIDEVICE</span><span class="k">}</span> up
|
||||
<span class="c"># ignore errors on connect, spurious problems with bt?</span>
|
||||
<span class="c"># so start next command with -</span>
|
||||
<span class="nv">ExecStart</span><span class="o">=</span>-/usr/bin/hcitool cc <span class="k">${</span><span class="nv">BTKBDMAC</span><span class="k">}</span>
|
||||
|
||||
<span class="o">[</span>Install]
|
||||
<span class="nv">WantedBy</span><span class="o">=</span>multi-user.target<span class="w">
|
||||
</span></pre></td></tr></tbody></table></code></pre></figure>
|
||||
|
||||
<p>Line 13 enables the Bluetooth dongle, and line 16 connects it to the keyboard we gave the mac address in <code class="highlighter-rouge">/etc/btkbd.conf</code>. This should work flawlessly, right? Of course it doesn’t. The service starts before the <code class="highlighter-rouge">dbus-org.bluez.service</code> is loaded and fails. However, if the service is started manually after login the Bluetooth keyboard works. After hours of trying figuring out what was wrong I’ve almost asked for a return on Amazon! The last attempt I made was with sddm disabled and involved built from scratch service:</p>
|
||||
|
||||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10</pre></td><td class="code"><pre><span class="o">[</span>Unit]
|
||||
<span class="nv">Description</span><span class="o">=</span>systemd Unit to automatically start a Bluetooth keyboard
|
||||
|
||||
<span class="o">[</span>Service]
|
||||
<span class="nv">Type</span><span class="o">=</span>oneshot
|
||||
<span class="nv">ExecStart</span><span class="o">=</span>/bin/hciconfig hci0 up
|
||||
<span class="nv">ExecStart</span><span class="o">=</span>/bin/hcitool cc 00:11:22:33:44:55
|
||||
|
||||
<span class="o">[</span>Install]
|
||||
<span class="nv">WantedBy</span><span class="o">=</span>bluetooth.target<span class="w">
|
||||
</span></pre></td></tr></tbody></table></code></pre></figure>
|
||||
|
||||
<p>This incredibly worked. I think the problem was that <code class="highlighter-rouge">multi-user.target</code> that needs to be reached earlier than <code class="highlighter-rouge">bluetooth.target</code>. I got rid of all the tidiness of the ArchWiki solution just to be sure that was not the problem, but I think you can use all of that just correcting <code class="highlighter-rouge">WantedBy=</code>. Currently I haven’t an ArchWiki account nor a forum one, but as soon as I’ll register I’ll correct the article.</p>
|
||||
|
||||
<p>Let me know in the comments if this solution is well made or if it’s just a bodge.
|
||||
Last thing: I discovered that my Bluetooth dongle is CSR 8510 A10 based so expect some ramblings about <a href="http://www.0xf8.org/2014/02/the-crux-of-finding-a-hid-proxy-capable-usb-bluetooth-adapter/">hid proxy</a>.</p>
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
<div id="disqus_thread"></div>
|
||||
<script>
|
||||
/**
|
||||
* RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
|
||||
* LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables
|
||||
*/
|
||||
/*
|
||||
var disqus_config = function () {
|
||||
this.page.url = PAGE_URL; // Replace PAGE_URL with your page's canonical URL variable
|
||||
this.page.identifier = PAGE_IDENTIFIER; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
|
||||
};
|
||||
*/
|
||||
(function() { // DON'T EDIT BELOW THIS LINE
|
||||
var d = document, s = d.createElement('script');
|
||||
|
||||
s.src = '//ramblingsofanarcherarcher.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" rel="nofollow">comments powered by Disqus.</a></noscript>
|
||||
|
||||
|
||||
</main>
|
||||
<footer class="site-footer">
|
||||
<div class="icons">
|
||||
<a class="icon" href="https://github.com/praticamentetilde"><i class="fa fa-github"></i></a>
|
||||
<a class="icon" href="https://www.reddit.com/user/praticamentetilde"><i class="fa fa-reddit"></i></a>
|
||||
</div>
|
||||
<h6 class="author">Claudio Maggioni 2016</h6>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
var easter_egg = new Konami();
|
||||
easter_egg.load("https://www.youtube.com/watch?v=URTcCh6QVwM");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,158 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>Installing Gentoo on a Lenovo ThinkPad X60s</title>
|
||||
<meta name="description" content="My only laptop is a IBM/Lenovo ThinkPad X60s, a top line “ultrabook” from 2006 that features:">
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css">
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Hammersmith+One' rel='stylesheet' type='text/css'>
|
||||
<link rel="canonical" href="http://praticamentetilde.github.io/linux/2016/07/12/installing-gentoo-on-a-thinkpad-x60s.html">
|
||||
<link rel="alternate" type="application/rss+xml" title="Ramblings of an archer archer" href="http://praticamentetilde.github.io/feed.xml">
|
||||
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
|
||||
<script src="https://rawgit.com/snaptortoise/konami-js/master/konami.js"></script>
|
||||
<!-- Favicon -->
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
<meta name="msapplication-TileColor" content="#ffffff">
|
||||
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="header">
|
||||
<section class="head">
|
||||
<h2 class="title">Ramblings of an archer archer</h2>
|
||||
<p>Things which an Arch Linux user that also owns an recurve bow can write.
|
||||
</p>
|
||||
</section>
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<ul class="navbar-list">
|
||||
<li class="navbar-item">
|
||||
<a href="/">home</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="navbar-item">
|
||||
<a href="/about/">About</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="navbar-item">
|
||||
<a href="http://www.burarco.it">My archery club</a>
|
||||
</li>
|
||||
<li class="navbar-item">
|
||||
<a href="/feed.xml">RSS</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main class="container">
|
||||
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
|
||||
|
||||
<header class="post-header">
|
||||
<h2 class="post-title" itemprop="name headline">Installing Gentoo on a Lenovo ThinkPad X60s</h2>
|
||||
<p class="post-meta"><time datetime="2016-07-12T13:00:00+02:00" itemprop="datePublished">Jul 12, 2016</time></p>
|
||||
</header>
|
||||
|
||||
<div class="post-content" itemprop="articleBody">
|
||||
<p>My only laptop is a <a href="http://www.thinkwiki.org/wiki/Category:X60s">IBM/Lenovo ThinkPad X60s</a>, a top line “ultrabook” from 2006 that features:</p>
|
||||
|
||||
<ul>
|
||||
<li>An Intel Core Duo L2400 dual core 32 bit CPU, clocked at 1.66 Ghz;</li>
|
||||
<li>2GB of RAM;</li>
|
||||
<li>60GB of SATA1 hard drive;</li>
|
||||
<li>Wifi, Bluetooth, trackpoint mouse only, 56k modem, and a decent set of I/0 ports (including a CardBus slot!).</li>
|
||||
</ul>
|
||||
|
||||
<p><img src="https://dl.dropboxusercontent.com/s/vkm6phz5yb2k4oq/IMG_20160712_143708.jpg?dl=0" alt="Think1" /></p>
|
||||
|
||||
<p><img src="https://dl.dropboxusercontent.com/s/wfjj1wih90lrzax/IMG_20160712_143618.jpg?dl=0" alt="Think2" /></p>
|
||||
|
||||
<p>This machine had an installation on Arch Linux, and I was using it for school stuff. It runned smoothly KDE5, Atom (great editor, I’m using it to write this article), and it was usable even with Phpstorm. Pretty impressive for such an old thing, right?</p>
|
||||
|
||||
<p>Since now I don’t need this laptop every day I decided to give a try at Gentoo, another rolling relase, DIY install distro. This was both a test of my skills, my patience and the performances of the machine. For those of you that don’t know, Gentoo hasn’t binary packages: imagine using Arch with just a developer mantained AUR.</p>
|
||||
|
||||
<p>I followed the <a href="https://wiki.gentoo.org/wiki/Handbook:Main_Page">installation guide</a> without any problem until I had to emerge and install 309 packets from my <code class="highlighter-rouge">@world</code> set: it took 15 hours! The compilation of <code class="highlighter-rouge">cmake</code> crashed because of memory starvation, and so I had to use a spare USB stick as swap (the root file system wasn’t resizable as it was JFS). After some research and a couple of seconds in <code class="highlighter-rouge">top</code> I discovered that <a href="https://en.wikipedia.org/wiki/Physical_Address_Extension">PAE</a> was not implemented in the install disk kernel. TIP: if you want to use a nicer install enviroment, use the Arch ISO. With gentoo, the initialisation of the file system is made with a <a href="https://wiki.gentoo.org/wiki/Stage_tarball#Stage_3">stage 3 tarball</a> and not by tools like <a href="https://wiki.archlinux.org/index.php/beginners'_guide#Install_the_base_packages">pacstrap</a>.</p>
|
||||
|
||||
<p>I had another problem with <code class="highlighter-rouge">make menuconfig</code>, the tool used to specify what features add or remove in your compiled from source Linux kernel. The ncurses menu showed me 64bit options, even if the install disk and the CPU were both 32 bit. If you have this issue too, you can set the <code class="highlighter-rouge">ARCH</code> variable by your own:</p>
|
||||
|
||||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># make ARCH=i386 menuconfig</span>
|
||||
<span class="c"># make ARCH=i386</span>
|
||||
<span class="c"># make ARCH=i386 install</span></code></pre></figure>
|
||||
|
||||
<p>At the end, I made it! I only have a base install, but i can show you <code class="highlighter-rouge">screenfetch</code>:</p>
|
||||
|
||||
<p><img src="https://dl.dropboxusercontent.com/s/fbysnd58sj4g3kl/IMG_20160711_162733.jpg?dl=0" alt="Screenfetch" /></p>
|
||||
|
||||
<p>I’ve not installed Gentoo in dual boot because I didn’t figured out how to switch my bluetooth dongle in HID mode yet, so I can’t select the OS with <code class="highlighter-rouge">rEFInd</code>. Hope this rambling was, if not useful, at least entertaining!</p>
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
<div id="disqus_thread"></div>
|
||||
<script>
|
||||
/**
|
||||
* RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
|
||||
* LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables
|
||||
*/
|
||||
/*
|
||||
var disqus_config = function () {
|
||||
this.page.url = PAGE_URL; // Replace PAGE_URL with your page's canonical URL variable
|
||||
this.page.identifier = PAGE_IDENTIFIER; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
|
||||
};
|
||||
*/
|
||||
(function() { // DON'T EDIT BELOW THIS LINE
|
||||
var d = document, s = d.createElement('script');
|
||||
|
||||
s.src = '//ramblingsofanarcherarcher.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" rel="nofollow">comments powered by Disqus.</a></noscript>
|
||||
|
||||
|
||||
</main>
|
||||
<footer class="site-footer">
|
||||
<div class="icons">
|
||||
<a class="icon" href="https://github.com/praticamentetilde"><i class="fa fa-github"></i></a>
|
||||
<a class="icon" href="https://www.reddit.com/user/praticamentetilde"><i class="fa fa-reddit"></i></a>
|
||||
</div>
|
||||
<h6 class="author">Claudio Maggioni 2016</h6>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
var easter_egg = new Konami();
|
||||
easter_egg.load("https://www.youtube.com/watch?v=URTcCh6QVwM");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,192 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>How to rickroll people that try to run "rm -rf" on your system</title>
|
||||
<meta name="description" content="WARNING: The method showed here could not prevent the actual execution of “rm -rf” if the “UNIX vandal” is clever enough. Proceed at your own risk, and make ...">
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css">
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Hammersmith+One' rel='stylesheet' type='text/css'>
|
||||
<link rel="canonical" href="http://praticamentetilde.github.io/linux/2016/07/28/how-to-rickroll-people-launching-rm-rf-on-your-system.html">
|
||||
<link rel="alternate" type="application/rss+xml" title="Ramblings of an archer archer" href="http://praticamentetilde.github.io/feed.xml">
|
||||
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
|
||||
<script src="https://rawgit.com/snaptortoise/konami-js/master/konami.js"></script>
|
||||
<!-- Favicon -->
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
<meta name="msapplication-TileColor" content="#ffffff">
|
||||
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="header">
|
||||
<section class="head">
|
||||
<h2 class="title">Ramblings of an archer archer</h2>
|
||||
<p>Things which an Arch Linux user that also owns an recurve bow can write.
|
||||
</p>
|
||||
</section>
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<ul class="navbar-list">
|
||||
<li class="navbar-item">
|
||||
<a href="/">home</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="navbar-item">
|
||||
<a href="/about/">About</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="navbar-item">
|
||||
<a href="http://www.burarco.it">My archery club</a>
|
||||
</li>
|
||||
<li class="navbar-item">
|
||||
<a href="/feed.xml">RSS</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main class="container">
|
||||
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
|
||||
|
||||
<header class="post-header">
|
||||
<h2 class="post-title" itemprop="name headline">How to rickroll people that try to run "rm -rf" on your system</h2>
|
||||
<p class="post-meta"><time datetime="2016-07-28T16:00:00+02:00" itemprop="datePublished">Jul 28, 2016</time></p>
|
||||
</header>
|
||||
|
||||
<div class="post-content" itemprop="articleBody">
|
||||
<p><strong>WARNING: The method showed here could not prevent the actual execution of “rm -rf” if the “UNIX vandal” is clever enough. Proceed at your own risk, and make backups!</strong></p>
|
||||
|
||||
<p>I like Rick Astley late 80’s songs, and you can see them here in my Spotify:</p>
|
||||
|
||||
<p><img src="https://dl.dropboxusercontent.com/s/t9vywa4yjotxv0o/Screenshot_20160728_154506.png?dl=0" alt="dQw4w9WgXcQ" /></p>
|
||||
|
||||
<p>I like rickrolling people myself too, especially if they’re trying to delete my entire <code class="highlighter-rouge">/home</code> directory or, even worse, <code class="highlighter-rouge">/</code>. Since I learned how to use the <code class="highlighter-rouge">alias</code> built-in, I wanted a way to prevent that random people tinkering with my laptop (that I may forgot to lock) could delete potentially important stuff, just for fun or boredom.</p>
|
||||
|
||||
<p>The method that I’ll show will lock any <code class="highlighter-rouge">rm</code> command runned in both recursive and force mode, so <code class="highlighter-rouge">rm -rf</code>, <code class="highlighter-rouge">rm -f -r</code> and <code class="highlighter-rouge">rm -r --force</code> are all blocked, even if they are launched by <code class="highlighter-rouge">sudo</code>. I’m going to alias the rm command in <code class="highlighter-rouge">/etc/profile</code> <code class="highlighter-rouge">/etc/bash.bashrc</code> and in <code class="highlighter-rouge">/etc/zsh/zshrc</code> (I’m a zsh user) so that the rickroll will be possible from all users, even root and the ones with a brand new <code class="highlighter-rouge">bashrc</code> or <code class="highlighter-rouge">zshrc</code>. Here is the code I appended to those files:</p>
|
||||
|
||||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nb">alias </span><span class="nv">rm</span><span class="o">=</span>/bin/rmAlias
|
||||
<span class="nb">alias </span><span class="nv">sudo</span><span class="o">=</span><span class="s1">'sudo '</span> <span class="c"># this enables aliases in sudo, see http://askubuntu.com/questions/22037/aliases-not-available-when-using-sudo</span></code></pre></figure>
|
||||
|
||||
<p>Since <code class="highlighter-rouge">alias</code> is not able to control the flags of the aliases (see <a href="http://apple.stackexchange.com/questions/50963/how-do-i-add-a-flag-to-an-alias">here</a>), we’re going to redirect each call of <code class="highlighter-rouge">rm</code> to <code class="highlighter-rouge">/bin/rmAlias</code>, that would run the command if it’s safe. I didn’t use a function because it’s a bit tricky to make that work with <code class="highlighter-rouge">sudo</code>. So, let’s see the code I put in <code class="highlighter-rouge">rmAlias</code>:</p>
|
||||
|
||||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c">#! /bin/bash</span>
|
||||
<span class="c"># Rickroll whoever tries to desert this system, even root.</span>
|
||||
<span class="c"># To achieve this, set the appropriate aliases even in /etc/profile and similars.</span>
|
||||
|
||||
<span class="c"># Video played when rickrolling</span>
|
||||
<span class="nv">ROLLVIDEO</span><span class="o">=</span>/opt/anti-rm/serious-video.mkv <span class="c"># it's just Never Gonna Give You Up on my system, but be free to customize this!</span>
|
||||
|
||||
rickroll<span class="o">(){</span>
|
||||
<span class="nb">echo</span> <span class="s2">"Never gonna desert this system..."</span>
|
||||
xdg-open <span class="nv">$ROLLVIDEO</span> 2>&1 &
|
||||
<span class="nb">exit </span>0
|
||||
<span class="o">}</span>
|
||||
|
||||
<span class="k">while </span><span class="nb">getopts</span> <span class="s2">":rf-"</span> opt; <span class="k">do</span>
|
||||
<span class="c"># Prevent '--force' to be detected as -r and -f</span>
|
||||
<span class="k">if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$opt</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"-"</span> <span class="o">]</span>; <span class="k">then
|
||||
</span><span class="nv">OPTIND</span><span class="o">=</span><span class="nv">$OPTIND</span>+1
|
||||
<span class="k">continue
|
||||
fi
|
||||
if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$opt</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"r"</span> <span class="o">]</span> <span class="o">||</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$opt</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"f"</span> <span class="o">]</span>; <span class="k">then
|
||||
if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$tmp</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">""</span> <span class="o">]</span>; <span class="k">then
|
||||
</span><span class="nv">tmp</span><span class="o">=</span><span class="nv">$opt</span>
|
||||
<span class="k">continue
|
||||
elif</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$tmp</span><span class="s2">"</span> !<span class="o">=</span> <span class="s2">"</span><span class="nv">$opt</span><span class="s2">"</span> <span class="o">]</span>; <span class="k">then
|
||||
</span>rickroll
|
||||
<span class="k">fi
|
||||
fi
|
||||
done
|
||||
|
||||
for </span>var <span class="k">in</span> <span class="s2">"</span><span class="nv">$@</span><span class="s2">"</span>
|
||||
<span class="k">do
|
||||
if</span> <span class="o">[[</span> <span class="s2">"</span><span class="nv">$var</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"--force"</span> <span class="o">&&</span> <span class="s2">"</span><span class="nv">$tmp</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"r"</span> <span class="o">]]</span>; <span class="k">then
|
||||
</span>rickroll
|
||||
<span class="k">fi
|
||||
done</span>
|
||||
|
||||
<span class="c"># If it's safe, just run rm</span>
|
||||
/bin/rm <span class="s2">"</span><span class="nv">$@</span><span class="s2">"</span>
|
||||
<span class="nb">exit</span> <span class="nv">$?</span></code></pre></figure>
|
||||
|
||||
<p>It may look messy to a UNIX guy more experienced than me, but it works. The <code class="highlighter-rouge">getopts</code> built-in sees if both the <code class="highlighter-rouge">-r</code> and the <code class="highlighter-rouge">-f</code> flags are used and, if so, it starts <code class="highlighter-rouge">rickroll()</code>, which opens with <code class="highlighter-rouge">xdg-open</code> that amazing clip from RickAstleyVEVO. From line 30 and below, the script checks if the <code class="highlighter-rouge">--force</code> flag is used instead of <code class="highlighter-rouge">-f</code>.</p>
|
||||
|
||||
<p>Give execute permissions to the script we’ve just created:</p>
|
||||
|
||||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># chmod +x /bin/rmAlias</span></code></pre></figure>
|
||||
|
||||
<p>Restart your shell, and enjoy. If you want to test safely, I suggest trying to run <code class="highlighter-rouge">rm -rf</code> with no folders or one nonexistant, since this script stop even these commands.</p>
|
||||
|
||||
<p>If you want even more security, you can rename this script to <code class="highlighter-rouge">/bin/rm</code> and move the original one in some other place, getting rid of all the aliases. I prefer the solution above because it’s tidier: you haven’t to move anything. In fact, this could be just an AUR package…</p>
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
<div id="disqus_thread"></div>
|
||||
<script>
|
||||
/**
|
||||
* RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
|
||||
* LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables
|
||||
*/
|
||||
/*
|
||||
var disqus_config = function () {
|
||||
this.page.url = PAGE_URL; // Replace PAGE_URL with your page's canonical URL variable
|
||||
this.page.identifier = PAGE_IDENTIFIER; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
|
||||
};
|
||||
*/
|
||||
(function() { // DON'T EDIT BELOW THIS LINE
|
||||
var d = document, s = d.createElement('script');
|
||||
|
||||
s.src = '//ramblingsofanarcherarcher.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" rel="nofollow">comments powered by Disqus.</a></noscript>
|
||||
|
||||
|
||||
</main>
|
||||
<footer class="site-footer">
|
||||
<div class="icons">
|
||||
<a class="icon" href="https://github.com/praticamentetilde"><i class="fa fa-github"></i></a>
|
||||
<a class="icon" href="https://www.reddit.com/user/praticamentetilde"><i class="fa fa-reddit"></i></a>
|
||||
</div>
|
||||
<h6 class="author">Claudio Maggioni 2016</h6>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
var easter_egg = new Konami();
|
||||
easter_egg.load("https://www.youtube.com/watch?v=URTcCh6QVwM");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,41 +0,0 @@
|
|||
{
|
||||
"name": "App",
|
||||
"icons": [
|
||||
{
|
||||
"src": "\/android-icon-36x36.png",
|
||||
"sizes": "36x36",
|
||||
"type": "image\/png",
|
||||
"density": "0.75"
|
||||
},
|
||||
{
|
||||
"src": "\/android-icon-48x48.png",
|
||||
"sizes": "48x48",
|
||||
"type": "image\/png",
|
||||
"density": "1.0"
|
||||
},
|
||||
{
|
||||
"src": "\/android-icon-72x72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image\/png",
|
||||
"density": "1.5"
|
||||
},
|
||||
{
|
||||
"src": "\/android-icon-96x96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image\/png",
|
||||
"density": "2.0"
|
||||
},
|
||||
{
|
||||
"src": "\/android-icon-144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image\/png",
|
||||
"density": "3.0"
|
||||
},
|
||||
{
|
||||
"src": "\/android-icon-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image\/png",
|
||||
"density": "4.0"
|
||||
}
|
||||
]
|
||||
}
|
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 1.8 KiB |
|
@ -1,133 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>Just a quick post. BAM!, my first web app (still in development) is on Github!</title>
|
||||
<meta name="description" content="As you can read from the title, I’m publishing the uncompleted code of my first webapp. I’m working on this since 3 weeks, and I’m proud of what I’ve done so...">
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css">
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Hammersmith+One' rel='stylesheet' type='text/css'>
|
||||
<link rel="canonical" href="http://praticamentetilde.github.io/programming/2016/08/31/bam-on-github.html">
|
||||
<link rel="alternate" type="application/rss+xml" title="Ramblings of an archer archer" href="http://praticamentetilde.github.io/feed.xml">
|
||||
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
|
||||
<script src="https://rawgit.com/snaptortoise/konami-js/master/konami.js"></script>
|
||||
<!-- Favicon -->
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
<meta name="msapplication-TileColor" content="#ffffff">
|
||||
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="header">
|
||||
<section class="head">
|
||||
<h2 class="title">Ramblings of an archer archer</h2>
|
||||
<p>Things which an Arch Linux user that also owns an recurve bow can write.
|
||||
</p>
|
||||
</section>
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<ul class="navbar-list">
|
||||
<li class="navbar-item">
|
||||
<a href="/">home</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="navbar-item">
|
||||
<a href="/about/">About</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="navbar-item">
|
||||
<a href="http://www.burarco.it">My archery club</a>
|
||||
</li>
|
||||
<li class="navbar-item">
|
||||
<a href="/feed.xml">RSS</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main class="container">
|
||||
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
|
||||
|
||||
<header class="post-header">
|
||||
<h2 class="post-title" itemprop="name headline">Just a quick post. BAM!, my first web app (still in development) is on Github!</h2>
|
||||
<p class="post-meta"><time datetime="2016-08-31T12:00:00+02:00" itemprop="datePublished">Aug 31, 2016</time></p>
|
||||
</header>
|
||||
|
||||
<div class="post-content" itemprop="articleBody">
|
||||
<p>As you can read from the title, I’m publishing the uncompleted code of my first webapp. I’m working on this since 3 weeks, and I’m proud of what I’ve done so far.</p>
|
||||
|
||||
<p>If you want to check out the repository, click <a href="https://github.com/praticamentetilde/BAM">here</a>.</p>
|
||||
|
||||
<p>Maybe I can use Materialize css also for this jekyll site, or maybe this is another thing I say but I’m not going to do. Who knows.</p>
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
<div id="disqus_thread"></div>
|
||||
<script>
|
||||
/**
|
||||
* RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
|
||||
* LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables
|
||||
*/
|
||||
/*
|
||||
var disqus_config = function () {
|
||||
this.page.url = PAGE_URL; // Replace PAGE_URL with your page's canonical URL variable
|
||||
this.page.identifier = PAGE_IDENTIFIER; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
|
||||
};
|
||||
*/
|
||||
(function() { // DON'T EDIT BELOW THIS LINE
|
||||
var d = document, s = d.createElement('script');
|
||||
|
||||
s.src = '//ramblingsofanarcherarcher.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" rel="nofollow">comments powered by Disqus.</a></noscript>
|
||||
|
||||
|
||||
</main>
|
||||
<footer class="site-footer">
|
||||
<div class="icons">
|
||||
<a class="icon" href="https://github.com/praticamentetilde"><i class="fa fa-github"></i></a>
|
||||
<a class="icon" href="https://www.reddit.com/user/praticamentetilde"><i class="fa fa-reddit"></i></a>
|
||||
</div>
|
||||
<h6 class="author">Claudio Maggioni 2016</h6>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
var easter_egg = new Konami();
|
||||
easter_egg.load("https://www.youtube.com/watch?v=URTcCh6QVwM");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,129 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>Css updated!</title>
|
||||
<meta name="description" content="As you can see, now the css is decent! Now I’m using Skeleton and a couple of custom sass lines that you can check out on Github. Currently, I’m a bit busy w...">
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css">
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Hammersmith+One' rel='stylesheet' type='text/css'>
|
||||
<link rel="canonical" href="http://praticamentetilde.github.io/update/2016/09/13/css-update.html">
|
||||
<link rel="alternate" type="application/rss+xml" title="Ramblings of an archer archer" href="http://praticamentetilde.github.io/feed.xml">
|
||||
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
|
||||
<script src="https://rawgit.com/snaptortoise/konami-js/master/konami.js"></script>
|
||||
<!-- Favicon -->
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
<meta name="msapplication-TileColor" content="#ffffff">
|
||||
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="header">
|
||||
<section class="head">
|
||||
<h2 class="title">Ramblings of an archer archer</h2>
|
||||
<p>Things which an Arch Linux user that also owns an recurve bow can write.
|
||||
</p>
|
||||
</section>
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<ul class="navbar-list">
|
||||
<li class="navbar-item">
|
||||
<a href="/">home</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="navbar-item">
|
||||
<a href="/about/">About</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="navbar-item">
|
||||
<a href="http://www.burarco.it">My archery club</a>
|
||||
</li>
|
||||
<li class="navbar-item">
|
||||
<a href="/feed.xml">RSS</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main class="container">
|
||||
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
|
||||
|
||||
<header class="post-header">
|
||||
<h2 class="post-title" itemprop="name headline">Css updated!</h2>
|
||||
<p class="post-meta"><time datetime="2016-09-13T21:30:00+02:00" itemprop="datePublished">Sep 13, 2016</time></p>
|
||||
</header>
|
||||
|
||||
<div class="post-content" itemprop="articleBody">
|
||||
<p>As you can see, now the css is decent! Now I’m using <a href="http://getskeleton.com">Skeleton</a> and a couple of custom sass lines that you can check out on Github. Currently, I’m a bit busy with BAM! so I’m not sure I’ll find the time for this. Anyway, enjoy the new look!</p>
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
<div id="disqus_thread"></div>
|
||||
<script>
|
||||
/**
|
||||
* RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
|
||||
* LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables
|
||||
*/
|
||||
/*
|
||||
var disqus_config = function () {
|
||||
this.page.url = PAGE_URL; // Replace PAGE_URL with your page's canonical URL variable
|
||||
this.page.identifier = PAGE_IDENTIFIER; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
|
||||
};
|
||||
*/
|
||||
(function() { // DON'T EDIT BELOW THIS LINE
|
||||
var d = document, s = d.createElement('script');
|
||||
|
||||
s.src = '//ramblingsofanarcherarcher.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" rel="nofollow">comments powered by Disqus.</a></noscript>
|
||||
|
||||
|
||||
</main>
|
||||
<footer class="site-footer">
|
||||
<div class="icons">
|
||||
<a class="icon" href="https://github.com/praticamentetilde"><i class="fa fa-github"></i></a>
|
||||
<a class="icon" href="https://www.reddit.com/user/praticamentetilde"><i class="fa fa-reddit"></i></a>
|
||||
</div>
|
||||
<h6 class="author">Claudio Maggioni 2016</h6>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
var easter_egg = new Konami();
|
||||
easter_egg.load("https://www.youtube.com/watch?v=URTcCh6QVwM");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
23
blog.html
Normal file
|
@ -0,0 +1,23 @@
|
|||
---
|
||||
layout: page
|
||||
title: Blog
|
||||
permalink: /blog/
|
||||
---
|
||||
|
||||
<div class="home">
|
||||
<p style="margin-top: -2rem; margin-bottom: 2rem">
|
||||
<a href="/feed.xml">RSS feed</a>
|
||||
</p>
|
||||
<ul class="post-list">
|
||||
{% for post in site.posts %}
|
||||
<li>
|
||||
<span class="post-meta"> {{ post.date | date: "%b %-d, %Y" }}</span>
|
||||
<h4>
|
||||
<a class="post-link" href="{{ post.url | prepend: site.baseurl }}">
|
||||
{{ post.title }}</a
|
||||
>
|
||||
</h4>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
11
contact.md
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
layout: page
|
||||
title: About
|
||||
permalink: /about/
|
||||
---
|
||||
|
||||
My name is Claudio Maggioni and I am both an Arch Linux user and an [recurve archer](http://www.fitarco-italia.org/arcieri/situazione.php?Codice=91647). I define myself an "archer archer". This site will collect my own occasional thoughts about the two worlds, hoping someone will found them useful.
|
||||
|
||||
If you are curious about the code i produce my personal Github account is [here](https://github.com/praticamentetilde/). This particular site is made with jekyll and hosted by Github pages, as you can see.
|
||||
|
||||
PRO tip: try performing a Konami code in the home page (for phones slide up, slide up, slide down, slide down, slide left, slide right, slide left, slide right, tap, tap; made with [this](https://github.com/snaptortoise/konami-js))...
|
8
css/bombardier.css
Normal file
|
@ -0,0 +1,8 @@
|
|||
/* vim: set ts=2 sw=2 et tw=80: */
|
||||
|
||||
@font-face {
|
||||
font-family: "Radio Canada";
|
||||
font-style: regular;
|
||||
font-weight: 400;
|
||||
src: url(/webfonts/RadioCanada-VariableFont_wdth,wght.ttf) format("truetype");
|
||||
}
|
6143
css/font-awesome.css
vendored
Normal file
|
@ -1,34 +1,29 @@
|
|||
---
|
||||
# Only the main Sass file needs front matter (the dashes are enough)
|
||||
---
|
||||
|
||||
@charset "utf-8";
|
||||
|
||||
|
||||
|
||||
// Our variables
|
||||
$base-font-family: "Hammersmith One","Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
$base-font-size: 16px;
|
||||
$base-font-family: monospace;
|
||||
$base-font-size: 17px;
|
||||
$base-font-weight: 200;
|
||||
$small-font-size: $base-font-size * 0.875;
|
||||
$small-font-size: $base-font-size * 0.875;
|
||||
$base-line-height: 1.5;
|
||||
|
||||
$spacing-unit: 30px;
|
||||
$spacing-unit: 30px;
|
||||
|
||||
$text-color: #888;
|
||||
$background-color: #090909;
|
||||
$brand-color: #e82;
|
||||
$text-color: #222;
|
||||
$background-color: #fafafa;
|
||||
|
||||
$grey-color: #828282;
|
||||
$grey-color-light: lighten($grey-color, 40%);
|
||||
$grey-color-dark: darken($grey-color, 25%);
|
||||
$top-col: #018e71;
|
||||
$brand-color: #4f47cc;
|
||||
$border: 3px solid $brand-color;
|
||||
|
||||
// Width of the content area
|
||||
$content-width: 800px;
|
||||
$content-width: 800px;
|
||||
|
||||
$on-palm: 600px;
|
||||
$on-laptop: 800px;
|
||||
|
||||
$slideshow-height: 70vh;
|
||||
$on-palm: 600px;
|
||||
$on-laptop: 800px;
|
||||
|
||||
// Use media queries like this:
|
||||
// @include media-query($on-palm) {
|
||||
|
@ -38,16 +33,10 @@ $slideshow-height: 70vh;
|
|||
// }
|
||||
// }
|
||||
@mixin media-query($device) {
|
||||
@media screen and (max-width: $device) {
|
||||
@content;
|
||||
}
|
||||
@media screen and (max-width: $device) {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Import partials from `sass_dir` (defaults to `_sass`)
|
||||
@import
|
||||
"base",
|
||||
"layout",
|
||||
"syntax-highlighting"
|
||||
;
|
||||
@import "base", "layout", "syntax-highlighting";
|
||||
|
|
BIN
cv.pdf
Normal file
9
hooks/pre-commit
Executable file
|
@ -0,0 +1,9 @@
|
|||
#!/bin/sh
|
||||
|
||||
files="`git diff --staged --name-only --diff-filter=ACMR | tr \"\\n\" \" \"`"
|
||||
for f in $files; do
|
||||
$(npm bin)/prettier --write "$f"
|
||||
git add -f "$f"
|
||||
done
|
||||
|
||||
|
BIN
images/claudio.jpg
Normal file
After Width: | Height: | Size: 1.5 MiB |
BIN
images/portfolio/arrowcounter/counter.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
images/portfolio/arrowcounter/counts.png
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
images/portfolio/arrowcounter/home.png
Normal file
After Width: | Height: | Size: 52 KiB |
BIN
images/portfolio/arrowcounter/stats.png
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
images/portfolio/drbf/doc.png
Normal file
After Width: | Height: | Size: 167 KiB |
BIN
images/portfolio/drbf/gui.png
Normal file
After Width: | Height: | Size: 77 KiB |
BIN
images/portfolio/drbf/gui_diagram.png
Normal file
After Width: | Height: | Size: 76 KiB |
BIN
images/portfolio/scuolatest/benvenuto.png
Normal file
After Width: | Height: | Size: 772 KiB |
BIN
images/portfolio/scuolatest/esito-matematica.png
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
images/portfolio/scuolatest/stats-matematica.png
Normal file
After Width: | Height: | Size: 116 KiB |
BIN
images/portfolio/scuolatest/test-list.jpg
Normal file
After Width: | Height: | Size: 342 KiB |
BIN
images/portfolio/scuolatest/test-matematica.png
Normal file
After Width: | Height: | Size: 100 KiB |
BIN
images/portfolio/smarthut/automations.png
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
images/portfolio/smarthut/devices.png
Normal file
After Width: | Height: | Size: 113 KiB |
BIN
images/portfolio/smarthut/home-frontend.png
Normal file
After Width: | Height: | Size: 1.4 MiB |