diff --git a/src/content/presentations/blockchain.md b/src/content/presentations/blockchain.md index bf722e7..5ec43d2 100644 --- a/src/content/presentations/blockchain.md +++ b/src/content/presentations/blockchain.md @@ -1,5 +1,6 @@ --- title: "Blockchain: a semi-technical explanation" +date: 2017-01-01 --- https://www.youtube.com/watch?v=cFJwiTHxiac diff --git a/src/content/presentations/vps-the-hard-way.md b/src/content/presentations/vps-the-hard-way.md new file mode 100644 index 0000000..7fa142f --- /dev/null +++ b/src/content/presentations/vps-the-hard-way.md @@ -0,0 +1,223 @@ +--- +title: VPS the Hard Way +parent: "Presentations" +date: 2015-06-16 +--- +### Title slide +![](vps-the-hard-way/VPS-the-hard-way - 01.jpg) + +### What is a VPS? +![](vps-the-hard-way/VPS-the-hard-way - 02.jpg) +It stands for Virtual Private Server. Basically you get access to a virtual machine running with dozens of others in a rack in a server room somewhere with fast internet. +Since it's a virtual machine you can run whatever you want. It's cheap, it's unsupported, and it's all yours. + +### Riddle me this! +![](vps-the-hard-way/VPS-the-hard-way - 03.jpg) +Why? +What good is it? + +### Think back to when you first discovered the internet. It was so amazing. Mostly because you can do pretty much anything on it. +![](vps-the-hard-way/VPS-the-hard-way - 04.jpg) + +### There's a service for everything! +![](vps-the-hard-way/VPS-the-hard-way - 05.jpg) + +### So most of us pick one of the largest internet companies and use them for everything. It's just more convenient. +![](vps-the-hard-way/VPS-the-hard-way - 06.jpg) +But this also has some downsides. +If the company changes its offerings or policies, you don't always have any recourse. You may have a hard time getting your data out of their systems. +Also, these companies have very personal, deep knowledge about you. And they sometimes misuse that knowledge. +And not just companies... + +### Intruders and government agencies can access your information through subterfuge or compulsion. +![](vps-the-hard-way/VPS-the-hard-way - 07.jpg) +But things aren't hopeless! + +### You have the power! +![](vps-the-hard-way/VPS-the-hard-way - 08.jpg) +We're web developers! We are uniquely equipped to solve these problems, and at the same time pick up some valuable skills. +That's what we're going to do today. With a VPS of your own, you can set up alternatives to many of the services offered by internet giants like Google. + +### Here is a site that catalogs the price of virtual private servers from different providers. +![](vps-the-hard-way/VPS-the-hard-way - 09.jpg) + +### Most VPS providers offer at least CentOS and Debian, but you'll find pretty much everything out there, including more desktop-oriented distros like Ubuntu. +![](vps-the-hard-way/VPS-the-hard-way - 10.jpg) +Some providers even let you provide your own OS template. +Everyone has different priorities and different recommendations. Later we'll set up a new Debian 7 VPS. + +### Where do you find these self-hosted packages? I like this site, “alternativeTo”, which lists self-hosted software that can take the place of commercial or non-free solutions. +![](vps-the-hard-way/VPS-the-hard-way - 11.jpg) + +### Ok, let's get our hands dirty. +![](vps-the-hard-way/VPS-the-hard-way - 12.jpg) +Next: +A brief word on password management +New server checklist +Installing and configuring Nginx, PHP-FPM, and MariaDB +Installing a few self-hosted services +Installing a self-signed SSL certificate (time permitting) +Automating all of this + +### Passwords kinda suck. If we take security seriously (you all do, right? Right?), we end up like that guy from the Matrix Reloaded, with keys for everything. How can anyone keep that straight? +![](vps-the-hard-way/VPS-the-hard-way - 13.jpg) +You can't. "Ain't nobody got time for that!" +So we come up with some scheme that basically lets us use the same thing, or similar things, everywhere. Then you have a new problem. +There's a better way. I can talk more about this after the talk, but for now I'll just say that I'm never going back to the old way. A password manager is just too convenient and secure. + +## Debian VPS setup + +### Admin user setup + +SSH to your VPS as root + +``` +$ ssh root@###.###.###.### +``` + +Set a new password for root and save it in your password manager. + +``` +# passwd +``` + +Next we need to update the system. + +``` +# apt-get update && apt-get dist-upgrade +``` + +(this will take a while, and you may have to dismiss some changelog messages and answer a prompt asking permission to disable root login over ssh. Don’t accept the prompt. We’ll disable root login over ssh later. This way we can’t lock ourselves out.) + +``` +# apt-get install sudo +# adduser username +# usermod -aG sudo username +# groupadd sshlogin +# usermod -aG sshlogin username +# cat /etc/sudoers +``` + +Confirm that this line is present: + +``` +%sudo ALL=(ALL:ALL) ALL +``` + +If not, you can edit /etc/sudoers with # visudo + +Now, leave this connection open and start a new one. + +``` +$ ssh username@###.###.###.### +``` + +Confirm that you have root access: + +``` +$ sudo whoami +``` + +It should say “root”. +If this was successful, go ahead and end your first (root) SSH session with Ctrl+D. +If you didn’t already disable root login over SSH we’ll do it now. + +``` +$ sudo nano /etc/ssh/sshd_config +``` + +Find the line #PermitRootLogin no and remove the "#" to uncomment it. +If you want to enable motd or banner do that now. +Ctrl+X, save changes +Restart ssh daemon with: + +``` +$ sudo service ssh restart +``` + +Confirm that you can no longer SSH in as root. +As one more precaution, we will expire the root password altogether so that the only account with admin access is the new account you’ve just created. The command is: + +``` +$ sudo passwd -l root +``` + +If you didn't already do it during the dist-upgrade, we should enable unattended security upgrades: + +``` +$ sudo apt-get install unattended-upgrades +$ sudo dpkg-reconfigure unattended-upgrades +``` + +You'll see a prompt asking if you want to automatically download and install stable updates. Choose yes. + +

Firewall

+ +This part’s pretty easy. + +``` +$ sudo apt-get install ufw +``` + +UFW stands for Uncomplicated Firewall. + +``` +$ sudo nano /etc/default/ufw +``` + +Make sure that IPv6 is either enabled or disabled, whichever is appropriate for your VPS. + +``` +$ sudo ufw allow ssh +$ sudo ufw allow 80/tcp +$ sudo ufw allow 443/tcp +$ sudo ufw enable +$ sudo ufw status +``` + +If you’re worried about getting hammered by port scanners and script kiddies, you can also install fail2ban, which temporarily blocks IP addresses that fail auth attempts too many times. +More details on that here: http://johnny.chadda.se/using-fail2ban-with-nginx-and-ufw/ + +## Optional + +Change the hostname: https://wiki.debian.org/HowTo/ChangeHostname +Kind of a pain. + +## Nginx, PHP, MySQL + +### Installation + +``` +$ sudo apt-get install nginx php5 php5-fpm php5-cli php-apc php-gd +$ sudo apt-get install python-software-properties +$ sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db +$ sudo apt-get install software-properties-common +``` + +Repository details from: https://downloads.mariadb.org/mariadb/repositories/ + +``` +$ sudo add-apt-repository 'deb http://ftp.utexas.edu/mariadb/repo/10.0/debian wheezy main' +$ sudo apt-get update +$ sudo apt-get install mariadb-server php5-mysql +``` + +Leave the root password blank for now, we’ll set it in a second. + +``` +$ mysql-secure-installation +``` + +Follow the prompts, taking the recommended actions including creating a root password. Save the mysql root password to your password database. + +### There are automated solutions for setting up a new server. Ansible is new and clean and considered by many to be the best right now, Puppet and Chef and some others like CFEngine and Salt can get the job done too. +![](vps-the-hard-way/VPS-the-hard-way - 20.jpg) +System provisioning with Ansible – a live demo. + +### Ok let's install FreshRSS, Shaarli, and LimeSurvey. First we have to configure nginx. I'm going to cheat a little here. +![](vps-the-hard-way/VPS-the-hard-way - 21.jpg) + +``` +$ sudo wget https://joshua.seigler.net/code/vps-the-hard-way/default.conf.txt -O /etc/nginx/conf.d/default.conf +$ sudo rm /etc/nginx/sites-enabled/default +``` diff --git a/src/static/csszengarden/console/001/001.css b/src/static/csszengarden/console/001/001.css new file mode 100644 index 0000000..77b6b98 --- /dev/null +++ b/src/static/csszengarden/console/001/001.css @@ -0,0 +1,218 @@ +/* css Zen Garden new style by Joshua Seigler -http://www.seigler.net/ */ +/* css released under Creative Commons License -http://creativecommons.org/licenses/by-nc-sa/1.0/ */ + +/* basic elements */ +html { + margin: 0; + padding: 0; + height: 100%; +} + +body { + color: #eee; + text-shadow: #eee 0 0 2px; + font-family: FreePixelCSSZenGarden,monospace; + font-size: 24pt; + line-height: 1.1em; + padding: 0; + margin: 0; + height: 100%; + border: none; + cursor: default; + + /* gradient generated by http://www.colorzilla.com/gradient-editor/#05070c+10,4b574a+18,323c31+53,141817+82;Custom */ + background: #282E22; + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiMwNTA3MGMiIHN0b3Atb3BhY2l0eT0iMSIvPgogICAgPHN0b3Agb2Zmc2V0PSIxOCUiIHN0b3AtY29sb3I9IiM0YjU3NGEiIHN0b3Atb3BhY2l0eT0iMSIvPgogICAgPHN0b3Agb2Zmc2V0PSI1MyUiIHN0b3AtY29sb3I9IiMzMjNjMzEiIHN0b3Atb3BhY2l0eT0iMSIvPgogICAgPHN0b3Agb2Zmc2V0PSI4MiUiIHN0b3AtY29sb3I9IiMxNDE4MTciIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+"); + background: -moz-linear-gradient(left, rgba(5,7,12,1) 10%, rgba(75,87,74,1) 18%, rgba(50,60,49,1) 53%, rgba(20,24,23,1) 82%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, right top, color-stop(10%,rgba(5,7,12,1)), color-stop(18%,rgba(75,87,74,1)), color-stop(53%,rgba(50,60,49,1)), color-stop(82%,rgba(20,24,23,1))); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(left, rgba(5,7,12,1) 10%,rgba(75,87,74,1) 18%,rgba(50,60,49,1) 53%,rgba(20,24,23,1) 82%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(left, rgba(5,7,12,1) 10%,rgba(75,87,74,1) 18%,rgba(50,60,49,1) 53%,rgba(20,24,23,1) 82%); /* Opera 11.10+ */ + background: -ms-linear-gradient(left, rgba(5,7,12,1) 10%,rgba(75,87,74,1) 18%,rgba(50,60,49,1) 53%,rgba(20,24,23,1) 82%); /* IE10+ */ + background: linear-gradient(to right, rgba(5,7,12,1) 10%,rgba(75,87,74,1) 18%,rgba(50,60,49,1) 53%,rgba(20,24,23,1) 82%); /* W3C */ + + overflow-x: hidden; +} + +header, section, div, aside { + display: block; +} + +header { + margin: 25px 0; + border-bottom: 3px solid rgba(239,239,239,0.5); + clear: both; +} + +h1,h2,h3 { + font-weight: 400; + font-family: pixChicagoCSSZenGarden,monospace; + margin: 0; + padding: 0; + line-height: 1.5em; +} + +h1 { + font-size: 200%; +} + +h2 { + font-size: 16px; + margin: 0 0 8px; +} + +h3 { + font-size: 100%; + margin: 2em 0 0.8em; +} + +a { + color: inherit; +} + +a:link { + cursor: pointer; +} + +a:link:hover { + background-color: rgba(0,0,255,0.5); +} + +a:visited:hover { + background-color: rgba(127,0,127,0.5); +} + +body:before { + content: ""; + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + z-index: -2; + + background: -webkit-linear-gradient(-5deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0) 49.5%, rgba(255,255,255,0.125) 50%, rgba(255,255,255,0) 50.5%, rgba(255,255,255,0) 100%); + background: -moz-linear-gradient(-5deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0) 49.5%, rgba(255,255,255,0.125) 50%, rgba(255,255,255,0) 50.5%, rgba(255,255,255,0) 100%); + background: -o-linear-gradient(-5deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0) 49.5%, rgba(255,255,255,0.125) 50%, rgba(255,255,255,0) 50.5%, rgba(255,255,255,0) 100%); + background: -ms-linear-gradient(-5deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0) 49.5%, rgba(255,255,255,0.125) 50%, rgba(255,255,255,0) 50.5%, rgba(255,255,255,0) 100%); + background: linear-gradient(-5deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0) 49.5%, rgba(255,255,255,0.125) 50%, rgba(255,255,255,0) 50.5%, rgba(255,255,255,0) 100%); + background-repeat: repeat; + + -webkit-background-size: 2000px 175px; + -moz-background-size: 2000px 175px; + background-size: 2000px 175px; + + -webkit-animation: drift 10s linear infinite; + -moz-animation: drift 10s linear infinite; + -ms-animation: drift 10s linear infinite; + -o-animation: drift 10s linear infinite; + animation: drift 10s linear infinite; +} + +body::after { + content: ""; + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + z-index: 1; + background: transparent url(monitor.png); + + -webkit-background-size: 100% 100%; + -moz-background-size: 100% 100%; + background-size: 100% 100%; + background-position: center center; + + pointer-events: none; +} + +abbr { + text-decoration: none; + border-bottom: 2px dotted rgba(239,239,239,0.25); + cursor: help; +} + +h1 abbr,h2 abbr,h3 abbr { + border-bottom: none; + line-height: inherit; +} + +ul { + padding: 0; +} + +li { + list-style: none; +} + +footer { + margin: 0 0 2em; +} + +/* classes and IDs */ + +.page-wrapper { + padding: 3em 10%; + padding: 8vh 10%; +} + +.design-selection > nav > ul { + -webkit-column-width: 12em; + -moz-column-width: 12em; + column-width: 12em; + -webkit-column-rule: 3px solid rgba(239,239,239,0.5); + -moz-column-rule: 3px solid rgba(239,239,239,0.5); + column-rule: 3px solid rgba(239,239,239,0.5); +} + +.design-selection > nav > ul > li { + display: inline-block; + width: 100%; + text-align: right; +} + +.design-name { + float: left; + text-align: left; +} + +.accesskey { + text-decoration: none; + color: #000; + background: #eee; + display: inline-block; + line-height: 1.3; +} + +/* pseudo-content changes */ +#zen-summary > .p2::after { + content: "."; +} + +footer::before { + content: "This design conforms to web standards: "; + display: block; +} + +/* resources */ +@font-face { + font-family: pixChicagoCSSZenGarden; + src: url('pixChicago.eot'), + url('pixChicago.eot?#ieFix') format('embedded-opentype'), + url('pixChicago.woff') format('woff'), + url('pixChicago.ttf') format('truetype'); +} + +@font-face { + font-family: FreePixelCSSZenGarden; + src: url('FreePixel.eot'), + url('pixChicago.eot?#ieFix') format('embedded-opentype'), + url('FreePixel.woff') format('woff'), + url('FreePixel.ttf') format('truetype'); +} + +@-moz-keyframes drift { from { background-position: 0 0; } to { background-position: 0 -175px; } } +@-webkit-keyframes drift { from { background-position: 0 0; } to { background-position: 0 -175px; } } +@-ms-keyframes drift { from { background-position: 0 0; } to { background-position: 0 -175px; } } +@-o-keyframes drift { from { background-position: 0 0; } to { background-position: 0 -175px; } } +@keyframes drift { from { background-position: 0 0; } to { background-position: 0 -175px; } } diff --git a/src/static/csszengarden/console/001/FreePixel.eot b/src/static/csszengarden/console/001/FreePixel.eot new file mode 100644 index 0000000..98be5bc Binary files /dev/null and b/src/static/csszengarden/console/001/FreePixel.eot differ diff --git a/src/static/csszengarden/console/001/FreePixel.ttf b/src/static/csszengarden/console/001/FreePixel.ttf new file mode 100644 index 0000000..d22b2a2 Binary files /dev/null and b/src/static/csszengarden/console/001/FreePixel.ttf differ diff --git a/src/static/csszengarden/console/001/FreePixel.woff b/src/static/csszengarden/console/001/FreePixel.woff new file mode 100644 index 0000000..fb752cf Binary files /dev/null and b/src/static/csszengarden/console/001/FreePixel.woff differ diff --git a/src/static/csszengarden/console/001/monitor.png b/src/static/csszengarden/console/001/monitor.png new file mode 100644 index 0000000..819ab53 Binary files /dev/null and b/src/static/csszengarden/console/001/monitor.png differ diff --git a/src/static/csszengarden/console/001/pixChicago.eot b/src/static/csszengarden/console/001/pixChicago.eot new file mode 100644 index 0000000..9e01bbd Binary files /dev/null and b/src/static/csszengarden/console/001/pixChicago.eot differ diff --git a/src/static/csszengarden/console/001/pixChicago.ttf b/src/static/csszengarden/console/001/pixChicago.ttf new file mode 100644 index 0000000..e2c8437 Binary files /dev/null and b/src/static/csszengarden/console/001/pixChicago.ttf differ diff --git a/src/static/csszengarden/console/001/pixChicago.woff b/src/static/csszengarden/console/001/pixChicago.woff new file mode 100644 index 0000000..d0dc7e3 Binary files /dev/null and b/src/static/csszengarden/console/001/pixChicago.woff differ diff --git a/src/static/csszengarden/console/Joshua Seigler - cssZenGarden.zip b/src/static/csszengarden/console/Joshua Seigler - cssZenGarden.zip new file mode 100644 index 0000000..85a173e Binary files /dev/null and b/src/static/csszengarden/console/Joshua Seigler - cssZenGarden.zip differ diff --git a/src/static/csszengarden/console/index.html b/src/static/csszengarden/console/index.html new file mode 100644 index 0000000..ec6f5e0 --- /dev/null +++ b/src/static/csszengarden/console/index.html @@ -0,0 +1,188 @@ + + + + + + CSS Zen Garden: The Beauty in CSS Design + + + + + + + + + + + + +
+ +
+
+

CSS Zen Garden

+

The Beauty of CSS Design

+
+ +
+

A demonstration of what can be accomplished through CSS-based design. Select any style sheet from the list to load it into this page.

+

Download the sample html file and css file

+
+ +
+

The Road to Enlightenment

+

Littering a dark and dreary road lay the past relics of browser-specific tags, incompatible DOMs, broken CSS support, and abandoned browsers.

+

We must clear the mind of the past. Web enlightenment has been achieved thanks to the tireless efforts of folk like the W3C, WaSP, and the major browser creators.

+

The CSS Zen Garden invites you to relax and meditate on the important lessons of the masters. Begin to see with clarity. Learn to use the time-honored techniques in new and invigorating fashion. Become one with the web.

+
+
+ +
+
+

So What is This About?

+

There is a continuing need to show the power of CSS. The Zen Garden aims to excite, inspire, and encourage participation. To begin, view some of the existing designs in the list. Clicking on any one will load the style sheet into this very page. The HTML remains the same, the only thing that has changed is the external CSS file. Yes, really.

+

CSS allows complete and total control over the style of a hypertext document. The only way this can be illustrated in a way that gets people excited is by demonstrating what it can truly be, once the reins are placed in the hands of those able to create beauty from structure. Designers and coders alike have contributed to the beauty of the web; we can always push it further.

+
+ +
+

Participation

+

Strong visual design has always been our focus. You are modifying this page, so strong CSS skills are necessary too, but the example files are commented well enough that even CSS novices can use them as starting points. Please see the CSS Resource Guide for advanced tutorials and tips on working with CSS.

+

You may modify the style sheet in any way you wish, but not the HTML. This may seem daunting at first if you’ve never worked this way before, but follow the listed links to learn more, and use the sample files as a guide.

+

Download the sample HTML and CSS to work on a copy locally. Once you have completed your masterpiece (and please, don’t submit half-finished work) upload your CSS file to a web server under your control. Send us a link to an archive of that file and all associated assets, and if we choose to use it we will download it and place it on our server.

+
+ +
+

Benefits

+

Why participate? For recognition, inspiration, and a resource we can all refer to showing people how amazing CSS really can be. This site serves as equal parts inspiration for those working on the web today, learning tool for those who will be tomorrow, and gallery of future techniques we can all look forward to.

+
+ +
+

Requirements

+

Where possible, we would like to see mostly CSS 1 & 2 usage. CSS 3 & 4 should be limited to widely-supported elements only, or strong fallbacks should be provided. The CSS Zen Garden is about functional, practical CSS and not the latest bleeding-edge tricks viewable by 2% of the browsing public. The only real requirement we have is that your CSS validates.

+

Luckily, designing this way shows how well various browsers have implemented CSS by now. When sticking to the guidelines you should see fairly consistent results across most modern browsers. Due to the sheer number of user agents on the web these days — especially when you factor in mobile — pixel-perfect layouts may not be possible across every platform. That’s okay, but do test in as many as you can. Your design should work in at least IE9+ and the latest Chrome, Firefox, iOS and Android browsers (run by over 90% of the population).

+

We ask that you submit original artwork. Please respect copyright laws. Please keep objectionable material to a minimum, and try to incorporate unique and interesting visual themes to your work. We’re well past the point of needing another garden-related design.

+

This is a learning exercise as well as a demonstration. You retain full copyright on your graphics (with limited exceptions, see submission guidelines), but we ask you release your CSS under a Creative Commons license identical to the one on this site so that others may learn from your work.

+

Bandwidth graciously donated by mediatemple. Now available: Zen Garden, the book.

+
+ + + +
+ + + + + +
+ + +
+
+ + + diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 01.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 01.jpg new file mode 100644 index 0000000..f2b9790 Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 01.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 02.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 02.jpg new file mode 100644 index 0000000..b4bb4cc Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 02.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 03.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 03.jpg new file mode 100644 index 0000000..dc21e42 Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 03.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 04.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 04.jpg new file mode 100644 index 0000000..faf4d98 Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 04.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 05.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 05.jpg new file mode 100644 index 0000000..5e6d81e Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 05.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 06.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 06.jpg new file mode 100644 index 0000000..e4f49b5 Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 06.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 07.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 07.jpg new file mode 100644 index 0000000..0630955 Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 07.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 08.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 08.jpg new file mode 100644 index 0000000..b6f4832 Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 08.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 09.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 09.jpg new file mode 100644 index 0000000..517eb71 Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 09.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 10.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 10.jpg new file mode 100644 index 0000000..28db71b Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 10.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 11.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 11.jpg new file mode 100644 index 0000000..5a0d614 Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 11.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 12.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 12.jpg new file mode 100644 index 0000000..3ada4db Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 12.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 13.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 13.jpg new file mode 100644 index 0000000..9119f3d Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 13.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 14.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 14.jpg new file mode 100644 index 0000000..a12fbfc Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 14.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 15.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 15.jpg new file mode 100644 index 0000000..0459063 Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 15.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 16.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 16.jpg new file mode 100644 index 0000000..3500f22 Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 16.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 17.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 17.jpg new file mode 100644 index 0000000..e283ec6 Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 17.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 18.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 18.jpg new file mode 100644 index 0000000..1b69f7d Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 18.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 19.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 19.jpg new file mode 100644 index 0000000..9fd831c Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 19.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 20.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 20.jpg new file mode 100644 index 0000000..12b3cfd Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 20.jpg differ diff --git a/src/static/vps-the-hard-way/VPS-the-hard-way - 21.jpg b/src/static/vps-the-hard-way/VPS-the-hard-way - 21.jpg new file mode 100644 index 0000000..4da0164 Binary files /dev/null and b/src/static/vps-the-hard-way/VPS-the-hard-way - 21.jpg differ diff --git a/src/themes/eos/layouts/_default/baseof.html b/src/themes/eos/layouts/_default/baseof.html index 49871e7..ea0b808 100644 --- a/src/themes/eos/layouts/_default/baseof.html +++ b/src/themes/eos/layouts/_default/baseof.html @@ -10,6 +10,7 @@ + diff --git a/src/themes/eos/static/css/bundle-screen.css b/src/themes/eos/static/css/bundle-screen.css index 648cffa..ff517b5 100644 --- a/src/themes/eos/static/css/bundle-screen.css +++ b/src/themes/eos/static/css/bundle-screen.css @@ -75,6 +75,19 @@ footer { code { background-color: rgba(255, 255, 255, 0.15); } +pre { + background-color: rgba(255, 255, 255, 0.15); + white-space: pre-wrap; +} +pre code { + background-color: transparent; +} +img { + max-width: 100%; +} +p { + margin-bottom: 1em; +} /*layout*/ html { font-size: calc(0.8em + 1.3vmin); diff --git a/src/themes/eos/static/css/bundle-screen.css.map b/src/themes/eos/static/css/bundle-screen.css.map index d851073..154db0b 100644 --- a/src/themes/eos/static/css/bundle-screen.css.map +++ b/src/themes/eos/static/css/bundle-screen.css.map @@ -1 +1 @@ -{"version":3,"sources":["bundle-screen.css","basics.less","layout.less","modules/post-list.less"],"names":[],"mappings":"AAAA,wBAAwB;ACCxB;;;EACE,oBAAA;EACA,UAAA;EACA,WAAA;EACA,6BAAA;EACA,qBAAA;CDGD;ACGD;EACE,uBAAA;EACA,aAAA;EACA,iBAAA;EACA,aAAA;EACA,gDAAA;EACA,iBAAA;CDDD;ACGD;EACE,eAAA;CDDD;ACEC;;EACE,wBAAA;EACA,eAAA;EACA,sBAAA;EACA,cAAA;CDCH;ACED;EACE,wBAAA;EACA,eAAA;CDAD;ACFD;EACE,wBAAA;EACA,eAAA;CDAD;ACED;;;;EACE,mBAAA;EACA,kBAAA;EACA,4BAAA;EACA,sBAAA;EACA,gBAAA;CDGD;ACDD;EACE,oBAAA;EACA,iBAAA;CDGD;ACAD;EACE,wBAAA;EACA,eAAA;CDED;ACJD;EAII,sBAAA;CDGH;ACFG;;;EACE,aAAA;EACA,0BAAA;EACA,cAAA;EACA,8BAAA;CDML;ACJG;EACE,aAAA;CDML;ACJG;EACE,aAAA;CDML;ACFD;EACE,yBAAA;CDID;ACDD;EACE,4CAAA;CDGD;AACD,UAAU;AExEV;EACE,iCAAA;EACA,aAAA;CF0ED;AEvED;EACE,wEAAA;EACA,2CAAA;EACA,6BAAA;EACA,uCAAA;EACA,wBAAA;EACA,aAAA;EACA,uBAAA;EACA,kBAAA;EACA,8BAAA;CFyED;AEvED;EACE,mBAAA;EACA,6GAAA;EACA,4BAAA;EACA,aAAA;EACA,aAAA;EACA,aAAA;EACA,mBAAA;EACA,eAAA;EACA,kBAAA;CFyED;AElFD;;;EAWI,aAAA;EACA,+BAAA;CF4EH;AEzED;EACE;IACE,0CAAA;IACA,6BAAA;IACA,kBAAA;IACA,4CAAA;GF2ED;EEzED;IACE,6GAAA;IACA,4BAAA;IACA,aAAA;IACA,aAAA;IACA,aAAA;GF2ED;CACF;AExED;EACE,qBAAA;EAAA,cAAA;EACA,2BAAA;EAAA,uBAAA;EACA,qBAAA;EAAA,4BAAA;EACA,4BAAA;EAAA,uBAAA;CF0ED;AEvED;EACE,cAAA;EACA,qBAAA;EAAA,aAAA;CFyED;AGlID;EAEI,eAAA;EACA,sBAAA;EACA,oBAAA;EACA,iBAAA;EACA,wBAAA;CHmIH;AGzID;EASI,2BAAA;CHmIH","file":"bundle-screen.css","sourcesContent":["/* micro styles reset */\n*,\n:before,\n:after {\n box-sizing: inherit;\n margin: 0;\n padding: 0;\n transform-style: preserve-3d;\n font-family: inherit;\n}\nhtml {\n box-sizing: border-box;\n height: 100%;\n overflow: hidden;\n color: white;\n text-shadow: 0 0 0.1em rgba(255, 255, 255, 0.5);\n line-height: 1.2;\n}\na {\n color: inherit;\n}\na:hover,\na:focus {\n background-color: white;\n color: #20282a;\n text-decoration: none;\n outline: none;\n}\n::selection {\n background-color: white;\n color: #20282a;\n}\nh1,\nh2,\nh3,\nh4 {\n font-size: inherit;\n font-weight: bold;\n border-bottom: 0.1em dotted;\n margin-bottom: -0.1em;\n margin-top: 1em;\n}\nh2 {\n border-bottom: none;\n margin-bottom: 0;\n}\nheader {\n background-color: white;\n color: #20282a;\n}\nheader nav a {\n text-decoration: none;\n}\nheader nav a:hover,\nheader nav a:focus,\nheader nav a.active {\n color: white;\n background-color: #20282a;\n outline: none;\n box-shadow: 0 0 0 1px #20282a;\n}\nheader nav a:before {\n content: '[';\n}\nheader nav a:after {\n content: ']';\n}\nfooter {\n border-top: 0.1em dotted;\n}\ncode {\n background-color: rgba(255, 255, 255, 0.15);\n}\n/*layout*/\nhtml {\n font-size: calc(0.8em + 1.3vmin);\n height: 100%;\n}\nbody {\n background-image: url(../img/workstation.jpg), url(../img/gradient.jpg);\n background-size: 100% auto, auto 133.3vmin;\n background-position: 100% 0%;\n background-repeat: no-repeat, repeat-x;\n background-color: white;\n height: 100%;\n font-family: monospace;\n perspective: 68vw;\n perspective-origin: 69vw 45vw;\n}\n.wrapper {\n position: relative;\n transform: rotateZ(1.3deg) rotateX(-8.8deg) rotateY(-9.3deg) scale(0.3) translate3d(-56.2vw, 86.1vw, 46.3vw);\n transform-origin: top right;\n padding: 1vw;\n height: 75vw;\n width: 100vw;\n margin: 0 0 0 auto;\n overflow: auto;\n perspective: none;\n}\n.wrapper > *,\n.wrapper:before,\n.wrapper:after {\n opacity: 0.8;\n transform: translateZ(-50vmin);\n}\n@media (min-width: 100vh) {\n body {\n background-size: auto 133.3vh, auto 133vh;\n background-position: 100% 0%;\n perspective: 68vh;\n perspective-origin: calc(100vw - 31vh) 45vh;\n }\n .wrapper {\n transform: rotateZ(1.3deg) rotateX(-8.8deg) rotateY(-9.3deg) scale(0.3) translate3d(-56.2vh, 86.1vh, 46.3vh);\n transform-origin: top right;\n padding: 1vh;\n width: 100vh;\n height: 75vh;\n }\n}\n.wrapper {\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-content: stretch;\n}\nmain {\n margin: 1em 0;\n flex-grow: 1;\n}\n.post-list a {\n display: block;\n text-decoration: none;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.post-list .title {\n text-decoration: underline;\n}\n","/* micro styles reset */\n*, :before, :after {\n box-sizing: inherit;\n margin: 0;\n padding: 0;\n transform-style: preserve-3d;\n font-family: inherit;\n}\n\n//@color-text: #DA0;\n@color-text: white;\n\nhtml {\n box-sizing: border-box;\n height: 100%;\n overflow: hidden;\n color: @color-text;\n text-shadow: 0 0 0.1em fade(@color-text, 50%);\n line-height: 1.2;\n}\na {\n color: inherit;\n &:hover, &:focus {\n background-color: @color-text;\n color: #20282a;\n text-decoration: none;\n outline: none;\n }\n}\n::selection {\n background-color: @color-text;\n color: #20282a;\n}\nh1, h2, h3, h4 {\n font-size: inherit;\n font-weight: bold;\n border-bottom: 0.1em dotted;\n margin-bottom: -0.1em;\n margin-top: 1em;\n}\nh2 {\n border-bottom: none;\n margin-bottom: 0;\n}\n\nheader {\n background-color: @color-text;\n color: #20282a;\n nav a {\n text-decoration: none;\n &:hover, &:focus, &.active {\n color: @color-text;\n background-color: #20282a;\n outline: none;\n box-shadow: 0 0 0 1px #20282a;\n }\n &:before {\n content: '[';\n }\n &:after {\n content: ']';\n }\n }\n}\nfooter {\n border-top: 0.1em dotted;\n}\n\ncode {\n background-color: fade(@color-text, 15%);\n}\n","/*layout*/\nhtml {\n font-size: ~\"calc(0.8em + 1.3vmin)\";\n height: 100%;\n}\n\nbody {\n background-image: url(../img/workstation.jpg), url(../img/gradient.jpg);\n background-size: 100% auto, auto 133.3vmin;\n background-position: 100% 0%;\n background-repeat: no-repeat, repeat-x;\n background-color: white;\n height: 100%;\n font-family: monospace;\n perspective: 68vw;\n perspective-origin: 69vw 45vw;\n}\n.wrapper {\n position: relative;\n transform: rotateZ(1.3deg) rotateX(-8.8deg) rotateY(-9.3deg) scale(0.3) translate3d(-56.2vw, 86.1vw, 46.3vw);\n transform-origin: top right;\n padding: 1vw;\n height: 75vw;\n width: 100vw;\n margin: 0 0 0 auto;\n overflow: auto;\n perspective: none;\n > *, &:before, &:after {\n opacity: 0.8;\n transform: translateZ(-50vmin);\n }\n}\n@media (min-width: 100vh) {\n body {\n background-size: auto 133.3vh, auto 133vh;\n background-position: 100% 0%;\n perspective: 68vh;\n perspective-origin: ~'calc(100vw - 31vh) 45vh';\n }\n .wrapper {\n transform: rotateZ(1.3deg) rotateX(-8.8deg) rotateY(-9.3deg) scale(0.3) translate3d(-56.2vh, 86.1vh, 46.3vh);\n transform-origin: top right;\n padding: 1vh;\n width: 100vh;\n height: 75vh;\n }\n}\n\n.wrapper {\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-content: stretch;\n}\n\nmain {\n margin: 1em 0;\n flex-grow: 1;\n}\n\nfooter {\n}\n",".post-list {\n a {\n display: block;\n text-decoration: none;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .title {\n text-decoration: underline;\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["bundle-screen.css","basics.less","layout.less","modules/post-list.less"],"names":[],"mappings":"AAAA,wBAAwB;ACCxB;;;EACE,oBAAA;EACA,UAAA;EACA,WAAA;EACA,6BAAA;EACA,qBAAA;CDGD;ACGD;EACE,uBAAA;EACA,aAAA;EACA,iBAAA;EACA,aAAA;EACA,gDAAA;EACA,iBAAA;CDDD;ACGD;EACE,eAAA;CDDD;ACEC;;EACE,wBAAA;EACA,eAAA;EACA,sBAAA;EACA,cAAA;CDCH;ACED;EACE,wBAAA;EACA,eAAA;CDAD;ACFD;EACE,wBAAA;EACA,eAAA;CDAD;ACED;;;;EACE,mBAAA;EACA,kBAAA;EACA,4BAAA;EACA,sBAAA;EACA,gBAAA;CDGD;ACDD;EACE,oBAAA;EACA,iBAAA;CDGD;ACAD;EACE,wBAAA;EACA,eAAA;CDED;ACJD;EAII,sBAAA;CDGH;ACFG;;;EACE,aAAA;EACA,0BAAA;EACA,cAAA;EACA,8BAAA;CDML;ACJG;EACE,aAAA;CDML;ACJG;EACE,aAAA;CDML;ACFD;EACE,yBAAA;CDID;ACDD;EACE,4CAAA;CDGD;ACDD;EACE,4CAAA;EACA,sBAAA;CDGD;ACLD;EAII,8BAAA;CDIH;ACAD;EACE,gBAAA;CDED;ACCD;EACE,mBAAA;CDCD;AACD,UAAU;AErFV;EACE,iCAAA;EACA,aAAA;CFuFD;AEpFD;EACE,wEAAA;EACA,2CAAA;EACA,6BAAA;EACA,uCAAA;EACA,wBAAA;EACA,aAAA;EACA,uBAAA;EACA,kBAAA;EACA,8BAAA;CFsFD;AEpFD;EACE,mBAAA;EACA,6GAAA;EACA,4BAAA;EACA,aAAA;EACA,aAAA;EACA,aAAA;EACA,mBAAA;EACA,eAAA;EACA,kBAAA;CFsFD;AE/FD;;;EAWI,aAAA;EACA,+BAAA;CFyFH;AEtFD;EACE;IACE,0CAAA;IACA,6BAAA;IACA,kBAAA;IACA,4CAAA;GFwFD;EEtFD;IACE,6GAAA;IACA,4BAAA;IACA,aAAA;IACA,aAAA;IACA,aAAA;GFwFD;CACF;AErFD;EACE,qBAAA;EAAA,cAAA;EACA,2BAAA;EAAA,uBAAA;EACA,qBAAA;EAAA,4BAAA;EACA,4BAAA;EAAA,uBAAA;CFuFD;AEpFD;EACE,cAAA;EACA,qBAAA;EAAA,aAAA;CFsFD;AG/ID;EAEI,eAAA;EACA,sBAAA;EACA,oBAAA;EACA,iBAAA;EACA,wBAAA;CHgJH;AGtJD;EASI,2BAAA;CHgJH","file":"bundle-screen.css","sourcesContent":["/* micro styles reset */\n*,\n:before,\n:after {\n box-sizing: inherit;\n margin: 0;\n padding: 0;\n transform-style: preserve-3d;\n font-family: inherit;\n}\nhtml {\n box-sizing: border-box;\n height: 100%;\n overflow: hidden;\n color: white;\n text-shadow: 0 0 0.1em rgba(255, 255, 255, 0.5);\n line-height: 1.2;\n}\na {\n color: inherit;\n}\na:hover,\na:focus {\n background-color: white;\n color: #20282a;\n text-decoration: none;\n outline: none;\n}\n::selection {\n background-color: white;\n color: #20282a;\n}\nh1,\nh2,\nh3,\nh4 {\n font-size: inherit;\n font-weight: bold;\n border-bottom: 0.1em dotted;\n margin-bottom: -0.1em;\n margin-top: 1em;\n}\nh2 {\n border-bottom: none;\n margin-bottom: 0;\n}\nheader {\n background-color: white;\n color: #20282a;\n}\nheader nav a {\n text-decoration: none;\n}\nheader nav a:hover,\nheader nav a:focus,\nheader nav a.active {\n color: white;\n background-color: #20282a;\n outline: none;\n box-shadow: 0 0 0 1px #20282a;\n}\nheader nav a:before {\n content: '[';\n}\nheader nav a:after {\n content: ']';\n}\nfooter {\n border-top: 0.1em dotted;\n}\ncode {\n background-color: rgba(255, 255, 255, 0.15);\n}\npre {\n background-color: rgba(255, 255, 255, 0.15);\n white-space: pre-wrap;\n}\npre code {\n background-color: transparent;\n}\nimg {\n max-width: 100%;\n}\np {\n margin-bottom: 1em;\n}\n/*layout*/\nhtml {\n font-size: calc(0.8em + 1.3vmin);\n height: 100%;\n}\nbody {\n background-image: url(../img/workstation.jpg), url(../img/gradient.jpg);\n background-size: 100% auto, auto 133.3vmin;\n background-position: 100% 0%;\n background-repeat: no-repeat, repeat-x;\n background-color: white;\n height: 100%;\n font-family: monospace;\n perspective: 68vw;\n perspective-origin: 69vw 45vw;\n}\n.wrapper {\n position: relative;\n transform: rotateZ(1.3deg) rotateX(-8.8deg) rotateY(-9.3deg) scale(0.3) translate3d(-56.2vw, 86.1vw, 46.3vw);\n transform-origin: top right;\n padding: 1vw;\n height: 75vw;\n width: 100vw;\n margin: 0 0 0 auto;\n overflow: auto;\n perspective: none;\n}\n.wrapper > *,\n.wrapper:before,\n.wrapper:after {\n opacity: 0.8;\n transform: translateZ(-50vmin);\n}\n@media (min-width: 100vh) {\n body {\n background-size: auto 133.3vh, auto 133vh;\n background-position: 100% 0%;\n perspective: 68vh;\n perspective-origin: calc(100vw - 31vh) 45vh;\n }\n .wrapper {\n transform: rotateZ(1.3deg) rotateX(-8.8deg) rotateY(-9.3deg) scale(0.3) translate3d(-56.2vh, 86.1vh, 46.3vh);\n transform-origin: top right;\n padding: 1vh;\n width: 100vh;\n height: 75vh;\n }\n}\n.wrapper {\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-content: stretch;\n}\nmain {\n margin: 1em 0;\n flex-grow: 1;\n}\n.post-list a {\n display: block;\n text-decoration: none;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.post-list .title {\n text-decoration: underline;\n}\n","/* micro styles reset */\n*, :before, :after {\n box-sizing: inherit;\n margin: 0;\n padding: 0;\n transform-style: preserve-3d;\n font-family: inherit;\n}\n\n//@color-text: #DA0;\n@color-text: white;\n\nhtml {\n box-sizing: border-box;\n height: 100%;\n overflow: hidden;\n color: @color-text;\n text-shadow: 0 0 0.1em fade(@color-text, 50%);\n line-height: 1.2;\n}\na {\n color: inherit;\n &:hover, &:focus {\n background-color: @color-text;\n color: #20282a;\n text-decoration: none;\n outline: none;\n }\n}\n::selection {\n background-color: @color-text;\n color: #20282a;\n}\nh1, h2, h3, h4 {\n font-size: inherit;\n font-weight: bold;\n border-bottom: 0.1em dotted;\n margin-bottom: -0.1em;\n margin-top: 1em;\n}\nh2 {\n border-bottom: none;\n margin-bottom: 0;\n}\n\nheader {\n background-color: @color-text;\n color: #20282a;\n nav a {\n text-decoration: none;\n &:hover, &:focus, &.active {\n color: @color-text;\n background-color: #20282a;\n outline: none;\n box-shadow: 0 0 0 1px #20282a;\n }\n &:before {\n content: '[';\n }\n &:after {\n content: ']';\n }\n }\n}\nfooter {\n border-top: 0.1em dotted;\n}\n\ncode {\n background-color: fade(@color-text, 15%);\n}\npre {\n background-color: fade(@color-text, 15%);\n white-space: pre-wrap;\n code {\n background-color: transparent;\n }\n}\n\nimg {\n max-width: 100%;\n}\n\np {\n margin-bottom: 1em;\n}\n","/*layout*/\nhtml {\n font-size: ~\"calc(0.8em + 1.3vmin)\";\n height: 100%;\n}\n\nbody {\n background-image: url(../img/workstation.jpg), url(../img/gradient.jpg);\n background-size: 100% auto, auto 133.3vmin;\n background-position: 100% 0%;\n background-repeat: no-repeat, repeat-x;\n background-color: white;\n height: 100%;\n font-family: monospace;\n perspective: 68vw;\n perspective-origin: 69vw 45vw;\n}\n.wrapper {\n position: relative;\n transform: rotateZ(1.3deg) rotateX(-8.8deg) rotateY(-9.3deg) scale(0.3) translate3d(-56.2vw, 86.1vw, 46.3vw);\n transform-origin: top right;\n padding: 1vw;\n height: 75vw;\n width: 100vw;\n margin: 0 0 0 auto;\n overflow: auto;\n perspective: none;\n > *, &:before, &:after {\n opacity: 0.8;\n transform: translateZ(-50vmin);\n }\n}\n@media (min-width: 100vh) {\n body {\n background-size: auto 133.3vh, auto 133vh;\n background-position: 100% 0%;\n perspective: 68vh;\n perspective-origin: ~'calc(100vw - 31vh) 45vh';\n }\n .wrapper {\n transform: rotateZ(1.3deg) rotateX(-8.8deg) rotateY(-9.3deg) scale(0.3) translate3d(-56.2vh, 86.1vh, 46.3vh);\n transform-origin: top right;\n padding: 1vh;\n width: 100vh;\n height: 75vh;\n }\n}\n\n.wrapper {\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-content: stretch;\n}\n\nmain {\n margin: 1em 0;\n flex-grow: 1;\n}\n\nfooter {\n}\n",".post-list {\n a {\n display: block;\n text-decoration: none;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .title {\n text-decoration: underline;\n }\n}\n"]} \ No newline at end of file diff --git a/src/themes/eos/static/img/favicon.ico b/src/themes/eos/static/img/favicon.ico new file mode 100644 index 0000000..70b3580 Binary files /dev/null and b/src/themes/eos/static/img/favicon.ico differ diff --git a/src/themes/eos/styles/basics.less b/src/themes/eos/styles/basics.less index 581d8d1..d102d48 100644 --- a/src/themes/eos/styles/basics.less +++ b/src/themes/eos/styles/basics.less @@ -69,3 +69,18 @@ footer { code { background-color: fade(@color-text, 15%); } +pre { + background-color: fade(@color-text, 15%); + white-space: pre-wrap; + code { + background-color: transparent; + } +} + +img { + max-width: 100%; +} + +p { + margin-bottom: 1em; +}