Primo commit

This commit is contained in:
loviuz 2022-06-05 12:10:31 +02:00
parent e88c57b676
commit 6fddac379e
19 changed files with 549 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
public
resources/_gen
themes/*

13
README.md Normal file
View File

@ -0,0 +1,13 @@
# Repository del sito web di loviuz.me
## Come compilare
```bash
git clone https://github.com/loviuz/loviuz-website.git
cd loviuz-website
git submodule add https://github.com/luizdepra/hugo-coder.git themes/hugo-coder
```
Per testare live:
```bash
hugo server -D
```

6
archetypes/default.md Executable file
View File

@ -0,0 +1,6 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

139
assets/css/bootstrap.css vendored Normal file
View File

@ -0,0 +1,139 @@
progress {
vertical-align: baseline;
}
.progress {
display: -ms-flexbox;
display: flex;
height: 1rem;
overflow: hidden;
font-size: 0.75rem;
background-color: #e9ecef;
border-radius: 0.25rem;
}
.progress-bar {
display: -ms-flexbox;
display: flex;
-ms-flex-direction: column;
flex-direction: column;
-ms-flex-pack: center;
justify-content: center;
color: #fff;
text-align: center;
white-space: nowrap;
background-color: #007bff;
transition: width 0.6s ease;
}
@media (prefers-reduced-motion: reduce) {
.progress-bar {
transition: none;
}
}
.progress-bar-striped {
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-size: 1rem 1rem;
}
.progress-bar-animated {
-webkit-animation: progress-bar-stripes 1s linear infinite;
animation: progress-bar-stripes 1s linear infinite;
}
@media (prefers-reduced-motion: reduce) {
.progress-bar-animated {
-webkit-animation: none;
animation: none;
}
}
.bg-primary {
background-color: #007bff !important;
}
a.bg-primary:hover, a.bg-primary:focus,
button.bg-primary:hover,
button.bg-primary:focus {
background-color: #0062cc !important;
}
.bg-secondary {
background-color: #6c757d !important;
}
a.bg-secondary:hover, a.bg-secondary:focus,
button.bg-secondary:hover,
button.bg-secondary:focus {
background-color: #545b62 !important;
}
.bg-success {
background-color: #28a745 !important;
}
a.bg-success:hover, a.bg-success:focus,
button.bg-success:hover,
button.bg-success:focus {
background-color: #1e7e34 !important;
}
.bg-info {
background-color: #17a2b8 !important;
}
a.bg-info:hover, a.bg-info:focus,
button.bg-info:hover,
button.bg-info:focus {
background-color: #117a8b !important;
}
.bg-warning {
background-color: #ffc107 !important;
}
a.bg-warning:hover, a.bg-warning:focus,
button.bg-warning:hover,
button.bg-warning:focus {
background-color: #d39e00 !important;
}
.bg-danger {
background-color: #dc3545 !important;
}
a.bg-danger:hover, a.bg-danger:focus,
button.bg-danger:hover,
button.bg-danger:focus {
background-color: #bd2130 !important;
}
.bg-light {
background-color: #f8f9fa !important;
}
a.bg-light:hover, a.bg-light:focus,
button.bg-light:hover,
button.bg-light:focus {
background-color: #dae0e5 !important;
}
.bg-dark {
background-color: #343a40 !important;
}
a.bg-dark:hover, a.bg-dark:focus,
button.bg-dark:hover,
button.bg-dark:focus {
background-color: #1d2124 !important;
}
.bg-white {
background-color: #fff !important;
}
.bg-transparent {
background-color: transparent !important;
}

73
assets/css/custom.css Normal file
View File

@ -0,0 +1,73 @@
.projects-list{
text-align: left;
}
.list ul.projects-list > li{
display: inline;
}
.projects-list > li > img{
float: left;
}
.list ul.tags,
.page ul.tags{
text-align: right;
}
.list ul.tags > li{
display: inline;
color: #999;
font-size: 80%;
}
.page ul.tags > li{
display: inline;
color: #999;
}
.list ul.projects-list li .title{
font-size: 1.5em;
line-height: 1.3em;
margin-bottom: 0.5em;
}
.list ul li .date{
width: auto;
float: right;
margin: 0;
}
.project-image{
display: inline;
float: left;
position: relative;
margin-right: 1em;
margin-bottom: 1em;
}
.project-image > span{
position: absolute;
bottom: 15px;
right: -5px;
color: #fff;
padding: 0em .5em;
background: rgb(16, 104, 192);
font-size: 70%;
}
@media (max-width: 768px) {
.projects-list > li > img{
float: none;
margin-right: 0px;
}
.projects-list > li > a{
float: right;
}
.projects-list .progress{
width: 100%;
}
}

86
config.toml Executable file
View File

@ -0,0 +1,86 @@
baseurl = "https://loviuz.blog"
title = "Loviuz"
theme = "hugo-coder"
languagecode = "it"
defaultcontentlanguage = "it"
pluralizeListTitles = false
paginate = 20
pygmentsstyle = "bw"
pygmentscodefences = true
pygmentscodefencesguesssyntax = true
[params]
author = "Fabio Lovato"
info = "Sviluppatore, Imprenditore e Hacker"
description = "Sito web personale di Fabio Lovato"
keywords = "hacking,linux,opensource,blog,developer,personal"
avatarurl = "images/loviuz_avatar.jpg"
#gravatar = "john.doe@example.com"
favicon_32 = "images/favicon-32x32.png"
favicon_16 = "images/favicon-16x16.png"
since = 2011
enableTwemoji = true
colorScheme = "auto"
hidecolorschemetoggle = false
customCSS = ["css/custom.css", "css/bootstrap.css"]
#customSCSS = ["scss/custom.scss"]
#customJS = ["js/custom.js"]
[taxonomies]
category = "categorie"
# Social links
[[params.social]]
name = "Telegram"
icon = "fa fa-telegram fa-2x"
weight = 1
url = "https://t.me/loviuz"
[[params.social]]
name = "Mastodon"
icon = "fa fa-mastodon fa-2x"
weight = 2
url = "https://mastodon.uno/web/@loviuz86"
[[params.social]]
name = "Github"
icon = "fa fa-github fa-2x"
weight = 3
url = "https://github.com/loviuz/"
[[params.social]]
name = "Gitlab"
icon = "fa fa-gitlab fa-2x"
weight = 4
url = "https://gitlab.com/loviuz/"
[[params.social]]
name = "Twitter"
icon = "fa fa-twitter fa-2x"
weight = 5
url = "https://twitter.com/loviuz/"
# Menu links
[[menu.main]]
name = "Chi sono"
weight = 1
url = "chi-sono/"
[[menu.main]]
name = "Hacking civico"
weight = 2
url = "hacking/"
[[menu.main]]
name = "Progetti"
weight = 3
url = "progetti/"
[imaging]
anchor = 'Smart'
bgColor = '#ffffff'
hint = 'photo'
quality = 75
resampleFilter = 'Box'

23
content/chi-sono/index.md Executable file
View File

@ -0,0 +1,23 @@
---
title: Chi sono
slug: chi-sono
date: 2022-06-04T16:34:00+02:00
---
Sono un **programmatore** web italiano dell'annata 86, appassionato di **hacking** in qualsiasi forma e dal 2015 **imprenditore** in un'azienda di sviluppo software fondata con un socio e dipendenti, dove sviluppiamo il gestionale open source [OpenSTAManager](https://openstamanager.com).
![Io a computer](/images/work-g21747db40_1280.jpg)
### Perché questo blog?
Questo blog nasce da tante idee che in questi anni ho voluto esternare ad amici e conoscenti o ad altre persone su Internet. Leggendo molto su vari argomenti e con una buona esperienza su alcuni di questi ho sempre avuto difficoltà nel concentrarmi su uno in particolare, ma non ho mai voluto scrivere di tutto in modo approssimativo senza entrare nello specifico, ed è questo che forse mi ha frenato e ha fatto tardare l'uscita di un blog personale.
Per far capire quali sono tutti questi argomenti provo a elencarli in una banale lista:
- libertà digitali
- software libero
- questioni etiche nel mondo digitale
- politica e hacktivismo
- cybersecurity
- OSINT su fake news (open source intelligence e approfondimento delle notizie per rilevare quelle false)
Sono tutti temi legati fra loro. Alcune sembrano parolone ma ti assicuro che quello che era traducibile in italiano l'ho fatto 😅. Scendere nel dettaglio di ciascun argomento diventerebbe troppo pesante, soprattutto per chi non è del settore, per questo cercherò di rendere la lettura leggera dove possibile.

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

19
content/hacking.md Executable file
View File

@ -0,0 +1,19 @@
---
title: Civic Hacking
slug: hacking
date: 2022-06-04T17:34:00+02:00
---
## Cosa fa un hacker?
Diversamente da come lo dipingono i media, cioè come un pirata informatico o chi invia virus, ransomware o lancia attacchi informatici, l'[hacker](https://it.wikipedia.org/wiki/Hacker) è semplicemente una persona curiosa che smonta, rimonta, studia qualsiasi cosa per il gusto di farlo e per raggiungere anche degli obiettivi "smanettando". Spesso è un termine legato al mondo della cybersicurezza ma non è così.
## Cos'è quindi il CivicHacking?
E' un termine che non ho sentito molto usare, ma se non ha una sua definizione gliela darò io:
**fare hacking per la collettività e il territorio**.
Il Civic Hacking diventa quindi usare la propria curiosità per aiutare le persone, trovare soluzioni e sperimentare nel mondo digitale con lo scopo di partecipare attivamente alla vita democratica del proprio paese, mettendosi a disposizione di tutti le proprie scoperte o soluzioni, così come il mondo open source insegna.
## Si ma... qualche esempio?
Lo puoi trovare tra [i miei progetti](/progetti), se pur qualcuno iniziato da poco (per iniziare qualcosa di utile serve tempo, sperimentare e trovare qualcosa che può fare la differenza).

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -0,0 +1,18 @@
---
title: Mappa dei prezzi distributori in Italia
description: Mappatura dei prezzi dei distributori in Italia importati dai dati ufficiali del MISE (MInistero dello Sviluppo Economico) dal formato CSV
date: 2022-05-28T19:46:00+02:00
image: fuel-gf6da54ccc_1280.jpg
obiettivo_percent: 90
categories:
- Mappe
tags:
- openstreetmap
- umap
- benzina
- italia
---
## Subtitle
das

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 KiB

View File

@ -0,0 +1,21 @@
---
title: Mappa dei raccoglitori di olio a Este
description: Mappatura dei raccoglitori
date: 2022-06-05T10:30:00+02:00
image: glass-g3f8fa8a62_1280.jpg
obiettivo_percent: 10
categories:
- Mappe
tags:
- openstreetmap
- umap
- riciclo
- italia
---
A maggio ho letto un articolo de **LaPiazzaWeb.it** dove scrivevano che il comune stava posizionando dei contenitori di olio alimentare esausto:
https://www.lapiazzaweb.it/2022/05/a-este-nuovi-contenitori-per-conferire-lolio-alimentare-esausto/
In quel momento ho pensato di poter mappare su OpenStreetMap i punti dove trovare questi raccoglitori. Al momento non sapendo come mapparli su OpenStreetMap e se è corretto mapparli lì ho pensato di usare [uMap](http://umap.openstreetmap.fr/it/). Devo ancora iniziare, devo prima trovarli fisicamente 😅

View File

@ -0,0 +1,7 @@
<a href="{{ .Destination | safeURL }}"
{{ with .Title}} title="{{ . }}"{{ end }}
{{ if strings.HasPrefix .Destination "http" }}
target="_blank" rel="noopener noreferrer"
{{ end }}>
{{ .Text | safeHTML }}
</a>

View File

@ -0,0 +1,24 @@
<head>
{{ partial "head/meta-tags.html" . }}
<title>{{ block "title" . }}{{ .Site.Title }}{{ if not (eq .Site.Title .Page.Title) }} - {{ .Page.Title }}{{ end }}{{ end }}</title>
{{ if .Permalink }}
<link rel="canonical" href="{{ .Permalink }}">
{{ end }}
{{ partialCached "head/theme-styles.html" . }}
{{ partialCached "head/color-scheme.html" . }}
{{ partialCached "head/custom-styles.html" . }}
{{ partialCached "head/custom-icons.html" . }}
{{ partialCached "head/alternative-output-formats.html" . }}
{{ partialCached "head/hugo-generator.html" . }}
{{ partial "head/extensions.html" . }}
</head>

39
layouts/partials/header.html Executable file
View File

@ -0,0 +1,39 @@
<nav class="navigation">
<section class="container">
<a class="navigation-title" href="{{ .Site.BaseURL | relLangURL }}">
<i class="fa fa-terminal"></i> {{ .Site.Title }}
</a>
{{ if or .Site.Menus.main .Site.IsMultiLingual }}
<input type="checkbox" id="menu-toggle" />
<label class="menu-button float-right" for="menu-toggle">
<i class="fa fa-bars fa-fw" aria-hidden="true"></i>
</label>
<ul class="navigation-list">
{{ with .Site.Menus.main}}
{{ range sort . }}
<li class="navigation-item">
<a class="navigation-link" href="{{ index (apply (slice .URL) (.Params.urlFunc | default "relLangURL") ".") 0 }}">{{ .Name }}</a>
</li>
{{ end }}
{{ end }}
{{ if .Site.IsMultiLingual }}
{{ $node := . }}
{{ .Scratch.Set "separator" true }}
{{ range (default .Site.Home.AllTranslations .Translations) }}
{{ if ne $.Site.Language .Language }}
{{ if $node.Scratch.Get "separator" }}
<li class="navigation-item menu-separator">
<span>|</span>
</li>
{{ $node.Scratch.Set "separator" false }}
{{ end }}
<li class="navigation-item">
<a href="{{ .Permalink }}">{{ .Language.LanguageName | emojify }}</a>
</li>
{{ end }}
{{ end }}
{{ end }}
</ul>
{{ end }}
</section>
</nav>

View File

@ -0,0 +1,50 @@
<section class="container list">
<h1 class="title">
<a class="title-link" href="{{ .Permalink | safeURL }}">
{{- if eq .Kind "term" -}}
{{- i18n .Data.Plural 1 | title -}}
{{- print ": " -}}
{{- end -}}
{{- i18n (lower .Title) | default .Title | title -}}
</a>
</h1>
{{ .Content }}
<ul class="projects-list">
{{ range .Paginator.Pages }}
{{ $image := .Resources.GetMatch .Params.image }}
{{ $image := $image.Resize "x350" }}
{{ $image := $image.Crop "350x350" }}
{{ if $image }}
<li>
<div class="project-image">
<a href="{{ .Params.externalLink | default .RelPermalink }}">
<img src="{{ $image.RelPermalink }}">
</a>
<span class="date">{{ .Date | time.Format (.Site.Params.dateFormat | default "January 2006" ) }}</span>
</div>
{{ if .Params.obiettivo_percent }}
<div class="progress">
<div class="progress-bar" style="width:{{ .Params.obiettivo_percent }}%;"></div>
</div>
{{ end }}
<br>
<a class="title" href="{{ .Params.externalLink | default .RelPermalink }}">{{ .Title }}</a>
<br>
<span class="description">{{ .Params.description }}</span>
{{ if .Params.tags }}
<ul class="tags">
{{ range .Params.tags }}
<li>#{{ . }}</li>
{{ end }}
</ul>
{{ end }}
<div style="clear:both;"></div>
</li>
{{ end }}
{{ end }}
</ul>
{{ partial "pagination.html" . }}
</section>

28
layouts/partials/page.html Executable file
View File

@ -0,0 +1,28 @@
<section class="container page">
<a href="{{.Site.BaseURL}}{{.Section}}"><i class="fa fa-chevron-left fa-fw"></i> Torna a {{.Section}}</a>
<article>
<header>
<h1 class="title">
<a class="title-link" href="{{ .Permalink | safeURL }}">
{{ .Title }}
</a>
</h1>
{{ if .Params.tags }}
<ul class="tags">
{{ range .Params.tags }}
<li>#{{ . }}</li>
{{ end }}
</ul>
{{ end }}
</header>
{{ $image := .Resources.GetMatch .Params.image }}
{{ if $image }}
{{ $image := $image.Crop "1280x250" }}
<img src="{{ $image.RelPermalink }}">
{{ end }}
{{ .Content }}
</article>
</section>

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB