First blog record

master
Josef Rokos 3 years ago
parent 6de40bf0fd
commit e759e7ba00

@ -1,7 +1,7 @@
base_url = "https://bukova.info"
theme = "zola.386"
default_language = "cs"
default_language = "cz"
title = "bukova.info"
description = "Personal blog."
@ -24,9 +24,9 @@ keywords = "programing, rust, cpp"
theme_color = "#000084"
zola386_menu = [
{path="", name="Home"},
{path="categories", name="Categories"},
{path="tags", name="Tags"},
{path="about", name="About"},
{path="categories", name="Kategorie"},
# {path="tags", name="Tags"},
{path="about", name="O webu"},
]
### THIRD PARTY
@ -34,19 +34,19 @@ zola386_menu = [
# disqus = "disqus-user"
### SOCIAL MEDIA
image = "https://raw.githubusercontent.com/lopes/zola.386/master/screenshot.png"
twitter_user = "lopesoj"
linkedin_user = "jlopesjr"
github_user = "lopes"
#image = "https://raw.githubusercontent.com/lopes/zola.386/master/screenshot.png"
#twitter_user = "lopesoj"
#linkedin_user = "jlopesjr"
github_user = "PepaRokos"
# gitlab_user = ""
### I18N WORDS
label_tags = "Tags"
label_tags = "Tagy"
label_tag = "Tag"
label_categories = "Categories"
label_category = "Category"
label_author = "Author"
label_date = "Date"
label_taxonomy = "Taxonomy"
label_reading = "Reading time"
label_read_more = "Read more"
label_categories = "Kategorie"
label_category = "Kategorie"
label_author = "Autor"
label_date = "Datum"
label_taxonomy = "Zařazení"
label_reading = "Čas čtení"
label_read_more = "Více"

@ -4,3 +4,4 @@ sort_by = "date"
sort_direction = "decending"
insert_anchor_links = "none"
+++

@ -0,0 +1,10 @@
+++
title = "O webu"
+++
Jsem programátor v C++, Rustu, Javě a trochu JavaScriptu. Hobby fotograf. Tento web je soubor mojich
poznámek.
[GitHub](https://github.com/PepaRokos) | [Private Git](https://git.bukova.info) | [Galerie](https://foto.bukova.info)

@ -0,0 +1,73 @@
+++
title = "Rust"
description = "Základy"
date = 2021-01-21
draft = false
slug = "rust-bases"
[taxonomies]
categories = ["programování"]
tags = ["rust"]
+++
Univerzální jazyk. Lze použít jako nízkoúrovňový i pro webový backend. Kompiluje se do nativní staticky linkované binárky. Klade důraz na bezpečnost, takže je těžší udělat memory leak, nebo data race condition ve vícevláknové aplikaci. Nemá garbage collector, memory management je řešen přes systém vlastnictví a zápujček.
```rust
fn main() {
println!("ahoj");
}
```
## Memory management
- každá hodnota má proměnnou, která je vlastníkem hodnoty
- hodnota má pouze jednoho vlastníka
- se zánikem vlastníka, zaniká hodnota
```rust
{
let a = String::from("pokus"); // proměnná a je vlastníkem stringu "pokus"
let b = a; // teď je vlastníkem proměnná b, proměnnou a už nelze dál použít
} // string "pokus" je odstraněn z paměti
```
Hodnoty se do funkcí dají buď přesunout, nebo předat referencí. V Rustu se tomu říká zápujčka.
```rust
struct St {
prop: String;
}
fn funkce(a: String, b: &str, c: &St) {
...
}
fn main() {
let pok = String::from("pokus");
let pok1 = "pokus1";
let stru = St {
prop: String::from("prop"),
};
funkce(pok, pok1, &stru);
//pok je přesunuto, už nelze dál použít
//pok1 je reference na řetězec, předává se referencí, lze dál používat. Při volání se
//před pok1 nepíše &, protože to je reference už od začátku.
//stru je instance struktury St, funkce očekává referenci, takže při volání musíme
//napsat &stru
}
```
Platnost referencí hlídá borrow checker při kompilaci. Pokud je reference použitá za koncem platnosti, program nelze přeložit.
```rust
{
let r;
{
let x = 5;
r = &x; //nelze, protože platnost x končí s koncem bloku
}
println!("r: {}", r); //neplatná reference, nepůjde přeložit.
}
```
<a href="https://doc.rust-lang.org/book/" target="_blank">Rust book</a>

@ -0,0 +1,7 @@
# zola trash
zola
public
static/processed_images
# os trash
.DS_Store

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020 José Lopes
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.

@ -0,0 +1,85 @@
# ZOLA.386
![ZOLA.386 screenshot](https://github.com/lopes/zola.386/blob/master/screenshot.png?raw=true)
## [Live demo](https://zola386.netlify.app/)
ZOLA.386 is a port of the BOOTSTRA.386 theme and was based on:
- [BOOTSTRA.386](https://kristopolous.github.io/BOOTSTRA.386/): main idea, design.
- [HUGO.386](https://themes.gohugo.io/hugo.386/): item placement.
- [Dinkleberg](https://github.com/rust-br/dinkleberg): internal structure and SEO.
- [after-dark](https://github.com/getzola/after-dark): navbar and minor components.
ZOLA.386 is a theme that refers to the 90s, but with cutting edge features to be fast and responsive.
## Installation
The easiest way to install ZOLA.386 is to clone this repository and build your site upon it:
```bash
$ git clone https://github.com/lopes/zola.386
```
Of course you can install it just as another theme for your site, but ZOLA.386 must be added as a module:
```bash
$ cd themes
$ git submodule add https://github.com/lopes/zola.386
```
## Configuration
Configuration is mainly done in `config.toml` and here I'll describe the main topics.
### Global
`config.toml` starts with the global variables. All of these items are important, but it is fundamental to create two taxonomies at least:
```toml
taxonomies = [
{name="categories", rss=true},
{name="tags", rss=true},
]
```
Remember that all descriptions (`config.description` and `page.description`) are shown on the index page, one at the header and the others through the body.
### Extras
ZOLA.386 comes with a lot of extra variables which eases the creation and maintenance of the site, so it's important to review all of them after installing the theme.
The `zola386_menu` composes the navbar and is created by setting up a `path`, which will be appended to the `base_url` and the `name` will appear on the navbar.
```toml
zola386_menu = [
{path="/", name="Home"},
{path="categories", name="Categories"},
{path="tags", name="Tags"},
{path="about", name="About"},
]
```
### Social
ZOLA.386 is also prepared to deal with Google Analytics, Disqus, and Twitter --[Open Graph Protocol](https://ogp.me/) is welcome. This theme is prepared to use the output of [Favicon Generator](https://www.favicon-generator.org/), to do so, you'll just need to download the output of that site and extract in `static/images`.
As said, Disqus is supportted, but besides setting the username in `config.toml`, you also must to put a `comments = true` extra option on the pages where Disqus will be enabled --this gives you the freedom to enable or disable comments on certain posts. You can use the extra option `image` on each page, to represent that post.
### Animations
All JavaScript animations can be set at `static/js/zola386.js`. Basically you can disable all animations, use one or two scans, and change the scan speed. Personally, I prefer only one scan with a speed factor of 5.
### Language
Under the `label_` variables, you can set names to better localize your site. Note that you can change the language of a single page, by using `page.extra.lang`, which causes `<html lang="">` to change only on that page. A theme to provide information for its owner and SEO-friendly.
### Search
Search was implemented according to the [official documentation](https://www.getzola.org/documentation/content/search/). It uses JavaScript to search on an indexed version of the site based on `search_index.LANG.js`, `elasticlunr.min.js`, and `search.js` --the first two are generated after each build. If you're running your site in other default language other than English, you **must** change the `search_index.LANG.js` line in `index.html`, setting up `LANG` accordingly.
### Other files
The `content\_index.md` file must be properly configured to provide better experience. Check out this file for more information.
The 404 page is almost hardcoded, so you must edit it directly.
## License
This theme is released under the MIT license. For more information read the [License](https://github.com/lopes/zola.386/blob/master/LICENSE).
[![Netlify Status](https://api.netlify.com/api/v1/badges/5d6f1986-7bf3-40d3-b298-3339288585d4/deploy-status)](https://app.netlify.com/sites/zola386/deploys)

@ -0,0 +1,52 @@
base_url = "https://zola386.netlify.app"
# theme = "zola.386"
default_language = "en"
title = "ZOLA.386"
description = "A port of the BOOTSTRA.386 theme."
highlight_code = true
compile_sass = true
generate_rss = true
build_search_index = true
taxonomies = [
{name="categories", rss=true},
{name="tags", rss=true},
]
[extra]
author = "José Lopes"
year = "2020"
keywords = "zola, theme, retro, hacking"
theme_color = "#000084"
zola386_menu = [
{path="", name="Home"},
{path="categories", name="Categories"},
{path="tags", name="Tags"},
{path="about", name="About"},
]
### THIRD PARTY
# google_analytics = "UA-012345-67"
# disqus = "disqus-user"
### SOCIAL MEDIA
image = "https://raw.githubusercontent.com/lopes/zola.386/master/screenshot.png"
twitter_user = "lopesoj"
linkedin_user = "jlopesjr"
github_user = "lopes"
# gitlab_user = ""
### I18N WORDS
label_tags = "Tags"
label_tag = "Tag"
label_categories = "Categories"
label_category = "Category"
label_author = "Author"
label_date = "Date"
label_taxonomy = "Taxonomy"
label_reading = "Reading time"
label_read_more = "Read more"

@ -0,0 +1,6 @@
+++
paginate_by = 20
sort_by = "date"
sort_direction = "decending"
insert_anchor_links = "none"
+++

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 KiB

@ -0,0 +1,69 @@
+++
title = "Lorem Ipsum"
description = "dolor sit amet, consectetur"
date = 2020-05-01
draft = false
slug = "lorem-ipsum"
[taxonomies]
categories = ["pellentesque"]
tags = ["hac", "velit", "risus"]
[extra]
comments = true
lang = "pt"
image = "https://zola386.netlify.app/lorem-ipsum/crt-phosphor-dots.png"
+++
Posuere urna nec tincidunt praesent semper. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Mattis rhoncus urna neque viverra justo nec ultrices dui. Nulla pellentesque dignissim enim sit. Arcu ac tortor dignissim convallis aenean et.
# Lorem ipsum
## dolor sit amet
### consectetur adipiscing elit
#### sed do eiusmod tempor incididunt
##### ut labore et dolore magna aliqua
###### At tellus at urna condimentum mattis pellentesque
**At tellus at urna** condimentum *mattis pellentesque* id nibh tortor.
> Facilisi etiam dignissim diam quis enim lobortis scelerisque fermentum dui. Nunc vel risus commodo viverra. Aliquet nec ullamcorper sit amet risus nullam eget felis. Aliquam eleifend mi in nulla posuere sollicitudin aliquam ultrices. Interdum velit euismod in pellentesque massa.
1. Feugiat nisl pretium fusce id velit ut tortor pretium viverra.
2. Dignissim convallis aenean et tortor at risus viverra.
3. Cursus in hac habitasse platea dictumst quisque sagittis.
- Velit euismod in pellentesque massa placerat duis ultricies lacus sed.
- Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi.
- Egestas fringilla phasellus faucibus scelerisque eleifend. Etiam erat velit scelerisque in dictum non consectetur a.
Tristique risus `nec feugiat in fermentum` posuere. Consequat nisl vel pretium lectus
![quam id.](crt-phosphor-dots.png)
{{ resize_image(path="lorem-ipsum/crt-phosphor-dots.png", width=400, caption="Figure 1.") }}
```python
class ECB(object):
def enc(self, m, k):
cipher = AES.new(key(k), AES.MODE_ECB)
return b64encode(cipher.encrypt(pad(m.encode(encoding),
AES.block_size)))
def dec(self, c, k):
raw = b64decode(c)
cipher = AES.new(key(k), AES.MODE_ECB)
return unpad(cipher.decrypt(raw), AES.block_size)
```
```bash
$ grep 22px bootstrap/css/bootstrap.css
$ cp -r ../phosphor/templates/categories ../phosphor/templates/tags templates
```
---
Placerat [vestibulum lectus](https://phosphor) mauris ultrices eros. Aliquam eleifend mi in nulla posuere sollicitudin aliquam ultrices sagittis. Cursus euismod quis viverra nibh cras. Odio eu feugiat pretium nibh ipsum. Iaculis eu non diam phasellus vestibulum. Tempor commodo ullamcorper a lacus vestibulum sed arcu. Pretium aenean pharetra magna ac. Posuere urna nec tincidunt praesent semper. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Mattis rhoncus urna neque viverra justo nec ultrices dui. Nulla pellentesque dignissim enim sit. Arcu ac tortor dignissim convallis aenean et. Purus sit amet volutpat consequat mauris nunc congue nisi vitae. Eu consequat ac felis donec et odio pellentesque diam volutpat. Elementum facilisis leo vel fringilla est. Neque sodales ut etiam sit amet nisl purus. Ut porttitor leo a diam sollicitudin. Pulvinar neque laoreet suspendisse interdum consectetur.
Tristique risus nec feugiat in fermentum posuere. Vulputate ut pharetra sit amet aliquam id diam. Nullam ac tortor vitae purus faucibus ornare suspendisse. Nam at lectus urna duis convallis convallis. Euismod quis viverra nibh cras. Eu tincidunt tortor aliquam nulla facilisi cras fermentum odio. Sit amet massa vitae tortor. Augue neque gravida in fermentum et sollicitudin ac orci. Neque ornare aenean euismod elementum nisi. Cursus euismod quis viverra nibh cras pulvinar mattis. Augue interdum velit euismod in pellentesque massa placerat duis ultricies. Diam maecenas ultricies mi eget mauris pharetra et ultrices neque. Habitant morbi tristique senectus et netus. Arcu odio ut sem nulla pharetra diam sit amet. Diam maecenas sed enim ut sem. Ultrices in iaculis nunc sed augue lacus viverra vitae. Dui sapien eget mi proin sed libero enim sed.
Risus at ultrices mi tempus imperdiet nulla malesuada pellentesque. Fermentum dui faucibus in ornare quam viverra orci sagittis. Sed risus pretium quam vulputate. Congue eu consequat ac felis. Vitae tortor condimentum lacinia quis vel eros donec ac odio. Blandit cursus risus at ultrices. Euismod elementum nisi quis eleifend quam adipiscing vitae. Varius vel pharetra vel turpis nunc eget lorem dolor sed. Molestie nunc non blandit massa enim nec dui. Sociis natoque penatibus et magnis dis parturient montes nascetur ridiculus. Purus semper eget duis at tellus at urna condimentum mattis. Scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis. Habitasse platea dictumst quisque sagittis. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend. A lacus vestibulum sed arcu non odio euismod lacinia. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Congue mauris rhoncus aenean vel. Consequat semper viverra nam libero justo laoreet sit. Ac tortor vitae purus faucibus ornare suspendisse. Nisi vitae suscipit tellus mauris a.
Id nibh tortor id aliquet lectus proin nibh. Ipsum dolor sit amet consectetur adipiscing elit ut. Cras fermentum odio eu feugiat. Eget arcu dictum varius duis at consectetur. Dignissim suspendisse in est ante. Tristique nulla aliquet enim tortor at auctor urna nunc. Id diam vel quam elementum. Nibh sed pulvinar proin gravida hendrerit lectus. Cum sociis natoque penatibus et magnis dis parturient montes nascetur. Porttitor eget dolor morbi non. Purus ut faucibus pulvinar elementum integer enim neque volutpat. Et leo duis ut diam quam nulla. Purus gravida quis blandit turpis cursus in hac habitasse. Et tortor at risus viverra adipiscing at in tellus integer. Placerat duis ultricies lacus sed. Quam quisque id diam vel quam elementum pulvinar etiam. Volutpat blandit aliquam etiam erat. Amet consectetur adipiscing elit ut aliquam. Mi eget mauris pharetra et.

@ -0,0 +1,24 @@
+++
title = "Sem Nulla"
description = "pharetra diam sit amet nisl suscipit"
date = 2020-05-02
draft = false
slug = "sem-nulla"
[taxonomies]
categories = ["laoreet"]
tags = ["risus", "platea", "nunc"]
[extra]
comments = true
+++
Sem nulla pharetra diam sit amet nisl suscipit. Quis blandit turpis cursus in hac habitasse platea dictumst. Id diam vel quam elementum pulvinar. Fermentum dui faucibus in ornare quam. Libero justo laoreet sit amet cursus sit amet dictum sit. Lacus luctus accumsan tortor posuere. Turpis egestas maecenas pharetra convallis posuere morbi leo. At varius vel pharetra vel turpis nunc eget lorem dolor. Tristique senectus et netus et. In hac habitasse platea dictumst vestibulum rhoncus. Gravida rutrum quisque non tellus orci ac. Nulla facilisi morbi tempus iaculis urna id volutpat. Porta lorem mollis aliquam ut porttitor leo. Dictum sit amet justo donec enim diam vulputate. Dapibus ultrices in iaculis nunc sed augue lacus. Mattis pellentesque id nibh tortor id aliquet. Quisque egestas diam in arcu cursus euismod quis viverra. Laoreet non curabitur gravida arcu. Risus commodo viverra maecenas accumsan lacus vel facilisis volutpat est. Ut venenatis tellus in metus.
Mauris vitae ultricies leo integer malesuada nunc. Sed enim ut sem viverra aliquet eget sit amet tellus. Eu tincidunt tortor aliquam nulla facilisi cras fermentum odio. Donec ac odio tempor orci dapibus ultrices in iaculis. Dolor magna eget est lorem ipsum dolor. Pellentesque dignissim enim sit amet venenatis. Lectus nulla at volutpat diam ut venenatis. Mauris nunc congue nisi vitae suscipit tellus. Nunc congue nisi vitae suscipit tellus mauris a diam maecenas. Risus quis varius quam quisque id diam vel. Sit amet aliquam id diam maecenas. Amet nisl suscipit adipiscing bibendum est. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Turpis tincidunt id aliquet risus feugiat in ante metus. Pulvinar mattis nunc sed blandit libero. Ullamcorper malesuada proin libero nunc consequat interdum. Velit laoreet id donec ultrices tincidunt.
Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Sed egestas egestas fringilla phasellus faucibus. Molestie a iaculis at erat pellentesque adipiscing commodo. Tristique magna sit amet purus gravida. Turpis massa sed elementum tempus. Nisl vel pretium lectus quam id leo in. Porttitor massa id neque aliquam vestibulum morbi blandit. Posuere lorem ipsum dolor sit. Platea dictumst quisque sagittis purus sit amet. Diam ut venenatis tellus in metus vulputate eu scelerisque. Elementum sagittis vitae et leo duis.
Fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Turpis egestas sed tempus urna et. Nibh praesent tristique magna sit. Sed turpis tincidunt id aliquet risus feugiat. Turpis in eu mi bibendum neque. Mattis vulputate enim nulla aliquet porttitor. Penatibus et magnis dis parturient. Et malesuada fames ac turpis egestas integer eget aliquet. Elementum tempus egestas sed sed risus. Ipsum dolor sit amet consectetur adipiscing elit. Mattis nunc sed blandit libero. Etiam dignissim diam quis enim lobortis scelerisque fermentum dui faucibus. Massa sed elementum tempus egestas sed sed.
Sit amet commodo nulla facilisi. Feugiat scelerisque varius morbi enim nunc faucibus a pellentesque. Elit duis tristique sollicitudin nibh sit amet commodo nulla. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Tristique senectus et netus et malesuada. Porta non pulvinar neque laoreet suspendisse interdum. Mi in nulla posuere sollicitudin aliquam. Tortor dignissim convallis aenean et tortor. Sagittis id consectetur purus ut faucibus pulvinar elementum integer enim. Enim nec dui nunc mattis enim ut tellus.

@ -0,0 +1,5 @@
+++
title = "Unlisted page"
+++
Empty.

@ -0,0 +1,12 @@
# based on:
# https://www.getzola.org/documentation/deployment/netlify/
[build]
publish = "public"
command = "zola build"
[build.environment]
ZOLA_VERSION = "0.10.1"
[context.deploy-preview]
command = "zola build --base-url $DEPLOY_PRIME_URL"

@ -7,8 +7,8 @@
font-family: 'DOS';
font-style: normal;
font-weight: normal;
src: url('./css/fonts/Fixedsys500c.eot');
src: local(''), url('./css/fonts/Fixedsys500c.woff') format('woff'), url('./css/fonts/Fixedsys500c.ttf') format('truetype'), url('./css/fonts/Fixedsys500c.svg') format('svg');
src: url('./css/fonts/FSEX300.eot');
src: local(''), url('./css/fonts/FSEX300.woff') format('woff'), url('./css/fonts/FSEX300.ttf') format('truetype');
}
.navmargin {

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

@ -225,8 +225,8 @@ textarea {
font-family: 'DOS';
font-style: normal;
font-weight: normal;
src: url('fonts/Fixedsys500c.eot');
src: local('☺'), url('fonts/Fixedsys500c.woff') format('woff'), url('fonts/Fixedsys500c.ttf') format('truetype'), url('fonts/Fixedsys500c.svg') format('svg');
src: url('fonts/FSEX300.eot');
src: local('☺'), url('fonts/FSEX300.woff') format('woff'), url('fonts/FSEX300.ttf') format('truetype');
}
body {
@ -870,7 +870,7 @@ li {
padding-left: 0;
margin-left: 0;
line-height: 20px;
list-style: none;
/*list-style: none;*/
}
ul.unstyled,

@ -1,5 +1,5 @@
_386 = {
fastLoad: false,
onePass: true,
speedFactor: 1
onePass: false,
speedFactor: 100
};

@ -109,15 +109,16 @@
<div class="span3 bs-docs-sidebar">
{% block sidebar %}
<!--<h1>Search</h1>
<!-- <h1>Search</h1>
<form class="form-search">
<input id="search" type="text" class="input-large search-query">
</form>
<div class="search-results">
<div class="search-results__items"></div>
</div>
<p></p>-->
<h1>Categories</h1>
<p></p>
-->
<h1>Kategorie</h1>
<ul class="nav nav-list bs-docs-sidenav">
{% set categories = get_taxonomy(kind="categories") %}
{% for cat in categories.items %}
@ -125,7 +126,7 @@
{% endfor %}
</ul>
<p></p>
<h1>Tags</h1>
<h1>Tagy</h1>
<ul class="nav nav-list bs-docs-sidenav">
{% set tags = get_taxonomy(kind="tags") %}
{% for tag in tags.items %}

@ -0,0 +1,184 @@
{% import "macros.html" as macro %}
<!DOCTYPE html>
<html lang="{% if page.extra.lang %}{{ page.extra.lang }}{% else %}{{ config.default_language }}{% endif %}" itemscope itemtype="http://schema.org/Blog">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<link rel="stylesheet" href="{{ get_url(path="site.css", trailing_slash=false) | safe }}">
<title>{% block title %}{{ config.title }}{% endblock title %}</title>
{% if config.generate_rss %}
<link rel="alternate" type="application/rss+xml" title="RSS" href="{{ get_url(path="rss.xml") }}">
{% endif %}
<meta name="description" itemprop="about" content="{{ config.description }}">
<meta name="keywords" itemprop="keywords" content="{{ config.extra.keywords }}">
<meta name="author" itemprop="author" content="{{ config.extra.author }}">
<meta itemprop="headline" content="{{ config.title }}">
<meta itemprop="copyrightYear" content="{{ config.extra.year }}">
<link rel="icon" href="{{ get_url(path="images/favicon.ico") }}" type="image/x-icon">
<link rel="apple-touch-icon" sizes="57x57" href="{{ get_url(path="images/apple-icon-57x57.png") }}">
<link rel="apple-touch-icon" sizes="60x60" href="{{ get_url(path="images/apple-icon-60x60.png") }}">
<link rel="apple-touch-icon" sizes="72x72" href="{{ get_url(path="images/apple-icon-72x72.png") }}">
<link rel="apple-touch-icon" sizes="76x76" href="{{ get_url(path="images/apple-icon-76x76.png") }}">
<link rel="apple-touch-icon" sizes="114x114" href="{{ get_url(path="images/apple-icon-114x114.png") }}">
<link rel="apple-touch-icon" sizes="120x120" href="{{ get_url(path="images/apple-icon-120x120.png") }}">
<link rel="apple-touch-icon" sizes="144x144" href="{{ get_url(path="images/apple-icon-144x144.png") }}">
<link rel="apple-touch-icon" sizes="152x152" href="{{ get_url(path="images/apple-icon-152x152.png") }}">
<link rel="apple-touch-icon" sizes="180x180" href="{{ get_url(path="images/apple-icon-180x180.png") }}">
<link rel="icon" type="image/png" sizes="192x192" href="{{ get_url(path="images/android-icon-192x192.png") }}">
<link rel="icon" type="image/png" sizes="32x32" href="{{ get_url(path="images/favicon-32x32.png") }}">
<link rel="icon" type="image/png" sizes="96x96" href="{{ get_url(path="images/favicon-96x96.png") }}">
<link rel="icon" type="image/png" sizes="16x16" href="{{ get_url(path="images/favicon-16x16.png") }}">
<link rel="manifest" href="{{ get_url(path="images/manifest.json") }}">
<meta name="msapplication-TileColor" content="{{ config.extra.theme_color }}">
<meta name="msapplication-TileImage" content="{{ get_url(path="images/ms-icon-144x144.png") }}">
<meta name="theme-color" content="{{ config.extra.theme_color }}">
<meta property="og:title" content="{% block ogtitle %}{{ config.title }}{% endblock ogtitle %}">
<meta property="og:description" content="{% block ogdesc %}{{ config.description }}{% endblock ogdesc %}">
<meta property="og:url" content="{% block ogurl %}{{ config.base_url }}{% endblock ogurl%}">
<meta property="og:site_name" content="{{ config.title }}">
{% if config.extra.image %}
<meta property="og:image" content="{% block ogimg %}{{ config.extra.image }}{% endblock ogimg %}">
{% endif %}
<meta name="twitter:card" content="summary">
{% if config.extra.twitter_user %}
<meta name="twitter:site" content="{{ config.extra.twitter_user }}">
<meta name="twitter:creator" content="{{ config.extra.twitter_user }}">
<meta name="twitter:image:alt" content="{% block ogaltimg %}{{ config.title }}{% endblock ogaltimg %}">
{% endif %}
{% if config.extra.google_analytics %}
<script async src="https://www.googletagmanager.com/gtag/js?id={{config.extra.google_analytics}}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{config.extra.google_analytics}}');
</script>
{% endif %}
</head>
<body data-spy="scroll" data-target=".bs-docs-sidebar">
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"></button>
<a class="brand" href="{{ config.base_url }}">{{ config.title }}</a>
<div class="nav-collapse collapse">
<ul class="nav">
{% block navbar %}
{% for item in config.extra.zola386_menu %}
<li class="{% if item.path == current_path | replace(from="/", to="") %}active{% endif %}">
<a href="{{ config.base_url }}/{{ item.path }}"><span>{{ item.name }}</span></a>
</li>
{% endfor %}
{% endblock %}
</ul>
</div>
</div>
</div>
</nav>
<div class="container navmargin">
<header class="jumbotron subhead" id="overview">
{% block breadcrumb %}{% endblock breadcrumb %}
{% block header %}
<div class="page-header">
<h1>{{ config.title }} <small>{{ config.description }}</small></h1>
</div>
{% endblock header %}
{% block meta %}{% endblock meta %}
</header>
<div class="row-fluid">
<div class="span9 bs-docs-sidebar">
{% block main %}
{% for page in paginator.pages %}
{{ macro::post_max(page=page) }}
{% endfor %}
{{ macro::paginator(ref=paginator, extra=config.extra) }}
{% endblock main %}
</div> <!-- span9 -->
<div class="span3 bs-docs-sidebar">
{% block sidebar %}
<h1>Search</h1>
<form class="form-search">
<input id="search" type="text" class="input-large search-query">
</form>
<div class="search-results">
<div class="search-results__items"></div>
</div>
<p></p>
<h1>Categories</h1>
<ul class="nav nav-list bs-docs-sidenav">
{% set categories = get_taxonomy(kind="categories") %}
{% for cat in categories.items %}
<li><a href="{{ config.base_url }}/categories/{{ cat.name }}">{{ cat.name }}</a></li>
{% endfor %}
</ul>
<p></p>
<h1>Tags</h1>
<ul class="nav nav-list bs-docs-sidenav">
{% set tags = get_taxonomy(kind="tags") %}
{% for tag in tags.items %}
<li><a href="{{ config.base_url }}/tags/{{ tag.name }}">{{ tag.name }}</a></li>
{% endfor %}
</ul>
{% endblock sidebar %}
</div>
</div> <!-- row -->
</div> <!-- container navmargin -->
<footer class="container">
<hr class="soften">
<p>
{{ config.extra.year }} &copy;
<a href="{{ config.base_url }}">{{ config.extra.author }}</a>
|
{% if config.extra.twitter_user %}
<a href="https://twitter.com/{{ config.extra.twitter_user }}" target="_blank">Twitter</a>
{% endif %}
{% if config.extra.linkedin_user %}
<a href="https://linkedin.com/in/{{ config.extra.linkedin_user }}" target="_blank">Linkedin</a>
{% endif %}
{% if config.extra.github_user %}
<a href="https://github.com/{{ config.extra.github_user }}" target="_blank">GitHub</a>
{% endif %}
{% if config.extra.gitlab_user %}
<a href="https://gitlab.com/{{ config.extra.gitlab_user }}" target="_blank">GitLab</a>
{% endif %}
|
Built on <a href="https://getzola.org" target="_blank">Zola</a>
</p>
</footer>
<script src="{{ get_url(path="js/jquery.js", trailing_slash=false) | safe }}"></script>
<script src="{{ get_url(path="js/bootstrap-386.js", trailing_slash=false) | safe }}"></script>
<script src="{{ get_url(path="js/bootstrap-transition.js", trailing_slash=false) | safe }}"></script>
<script src="{{ get_url(path="js/bootstrap-alert.js", trailing_slash=false) | safe }}"></script>
<script src="{{ get_url(path="js/bootstrap-modal.js", trailing_slash=false) | safe }}"></script>
<script src="{{ get_url(path="js/bootstrap-dropdown.js", trailing_slash=false) | safe }}"></script>
<script src="{{ get_url(path="js/bootstrap-scrollspy.js", trailing_slash=false) | safe }}"></script>
<script src="{{ get_url(path="js/bootstrap-tab.js", trailing_slash=false) | safe }}"></script>
<script src="{{ get_url(path="js/bootstrap-tooltip.js", trailing_slash=false) | safe }}"></script>
<script src="{{ get_url(path="js/bootstrap-popover.js", trailing_slash=false) | safe }}"></script>
<script src="{{ get_url(path="js/bootstrap-button.js", trailing_slash=false) | safe }}"></script>
<script src="{{ get_url(path="js/bootstrap-collapse.js", trailing_slash=false) | safe }}"></script>
<script src="{{ get_url(path="js/bootstrap-carousel.js", trailing_slash=false) | safe }}"></script>
<script src="{{ get_url(path="js/bootstrap-typeahead.js", trailing_slash=false) | safe }}"></script>
<script src="{{ get_url(path="js/bootstrap-affix.js", trailing_slash=false) | safe }}"></script>
<script src="{{ get_url(path="js/zola.386.js", trailing_slash=false) | safe }}"></script>
<script src="{{ get_url(path="js/search.js", trailing_slash=false) | safe }}"></script>
<script src="{{ get_url(path="elasticlunr.min.js", trailing_slash=false) | safe }}"></script>
<script src="{{ get_url(path="search_index.en.js", trailing_slash=false) | safe }}"></script>
</body>
</html>
Loading…
Cancel
Save