mirror of
https://github.com/He4eT/oddsquat.git
synced 2026-11-02 04:58:29 +00:00
unifiy address format
This commit is contained in:
parent
e9b5e2ec92
commit
6a36004011
12 changed files with 32 additions and 29 deletions
|
|
@ -3,7 +3,6 @@
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "site.config.js",
|
"main": "site.config.js",
|
||||||
"type": "module",
|
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "nanogen build",
|
"build": "nanogen build",
|
||||||
"start": "nanogen start",
|
"start": "nanogen start",
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
<%= page.section %></a></li>
|
<%= page.section %></a></li>
|
||||||
<% } %>
|
<% } %>
|
||||||
<% if (page.year) { %>
|
<% if (page.year) { %>
|
||||||
<li><a href="/post/#<%= page.year %>">
|
<li><a href="/posts/#<%= page.year %>">
|
||||||
<%= page.year %></a></li>
|
<%= page.year %></a></li>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,9 @@ css:
|
||||||
<nav>
|
<nav>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="/"><%= site.title %></a></li>
|
<li><a href="/"><%= site.title %></a></li>
|
||||||
<li><a href="/post/">posts</a></li>
|
<li><a href="/posts/">posts</a></li>
|
||||||
<li><a href="/project/">projects</a></li>
|
<li><a href="/lost+found/">lost+found</a></li>
|
||||||
<li><a href="/inventory/">inventory</a></li>
|
<li><a href="/projects/">projects</a></li>
|
||||||
<li><a href="/about/">about</a></li>
|
<li><a href="/about/">about</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ layout: post
|
||||||
lang: 'en'
|
lang: 'en'
|
||||||
section: 'lost+found'
|
section: 'lost+found'
|
||||||
|
|
||||||
title: 'list of issues'
|
title: 'issue list'
|
||||||
description: 'Irregular Link Digest'
|
description: 'Irregular Link Digest'
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
layout: redirect
|
|
||||||
redirectTarget: '/post/#2020'
|
|
||||||
|
|
||||||
---
|
|
||||||
20
src/pages/posts.md
Normal file
20
src/pages/posts.md
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
layout: post
|
||||||
|
lang: 'en'
|
||||||
|
section: 'posts'
|
||||||
|
|
||||||
|
title: 'post list'
|
||||||
|
description: 'Сomplete list of posts'
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2020
|
||||||
|
|
||||||
|
- [RU] [typographic linter](/posts/2020/typographic_linter/)
|
||||||
|
|
||||||
|
Prettier для текста. Автоматизация рутинной типографики.
|
||||||
|
|
||||||
|
- [RU] [initial post](/posts/2020/initial_post/)
|
||||||
|
|
||||||
|
Какие инструменты были использованы для создания этого сайта, какие решения были приняты и почему.
|
||||||
6
src/pages/posts/2020.md
Normal file
6
src/pages/posts/2020.md
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
layout: redirect
|
||||||
|
redirectTarget: '/posts/#2020'
|
||||||
|
|
||||||
|
---
|
||||||
91
src/pages/posts/2020/initial_post.md
Normal file
91
src/pages/posts/2020/initial_post.md
Normal file
|
|
@ -0,0 +1,91 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
layout: post
|
||||||
|
|
||||||
|
lang: 'ru'
|
||||||
|
date: '2020-11-08'
|
||||||
|
|
||||||
|
year: '2020'
|
||||||
|
section: 'posts'
|
||||||
|
|
||||||
|
title: 'initial post'
|
||||||
|
description: 'Первый пост в этом фэнзине, рассказывающий о его внутреннем устойстве'
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Initial Post
|
||||||
|
|
||||||
|
**Oddsquat** — мой маленький личный фэнзин про эксперименты, код и прочий киберпанк. Обычно такие сайты называются блогами, но в слове «фэнзин» есть приятный отголосок панк-культуры и её неотъемлемой DIY-составляющей.
|
||||||
|
|
||||||
|
Основные причины, побудившие меня на создание своего уютного куска интернета:
|
||||||
|
|
||||||
|
- Хочется писать буквы, а возвращаться в ЖЖ не хочется.
|
||||||
|
- Фронтендер без портфолио — подозрительный фронтендер.
|
||||||
|
- Современный веб — памятник оверинженирингу. Лендинг с двумя абзацами текста, тремя картинками и мегабайтным бандлом из модных библиотек — одновременно безумие и норма в текущих реалиях. Мне больно на это смотреть, поэтому пришлось строить себе персональный оазис.
|
||||||
|
|
||||||
|
В первом посте хочется рассказать, какие инструменты были использованы для создания этого сайта, какие решения были приняты и почему.
|
||||||
|
|
||||||
|
## Название
|
||||||
|
|
||||||
|
Я вырос в девяностые, поэтому квикимобиль, бэтпещера и пузиблинчики для меня не пустой звук, а образец системы нейминга. Вот, например, у меня есть <a href="https://github.com/He4eT/oddkb" target="_blank">oddkb</a>.
|
||||||
|
|
||||||
|
Свою квартиру с момента заселения я называю oddsquat (даже локация в Foursquare была), так пусть теперь и мой форпост в сети называется так же.
|
||||||
|
|
||||||
|
Назвал сайт в честь SSID домашнего Wi-Fi, потому что не смог придумать более достойного названия :)
|
||||||
|
|
||||||
|
## Платформа
|
||||||
|
|
||||||
|
Для статического сайта не нужен серверный код, поэтому WordPress и прочие CMS в качестве платформы я даже не рассматривал.
|
||||||
|
|
||||||
|
Про генераторы статических сайтов раньше слышал, но подробно не рассматривал. Их оказалось так много (тут есть [длинный список](https://jamstack.org/generators/)), что даже страшно.
|
||||||
|
|
||||||
|
Посмотрев на самые популярные решения, я понял, что как-то неправильно понимаю значение термина «генератор статических сайтов», потому что все хором предлагают мне сгенерировать Progressive Web Application из React-компонентов с импортом данных из GraphQL-сервера вместо россыпи HTML-документов.
|
||||||
|
|
||||||
|
Уверен, что уютный бложик — это точно не Web Application, а от Progressive в данном случае всем будет только хуже: искусственные трудности с роутингом, серверным рендерингом и сохранением позиции скрола успешно решены, когда каждая страница — это отдельный документ. Браузеры восхитительно умеют работать с HTML-документами!
|
||||||
|
|
||||||
|
После непродолжительных поисков был найден [Nanogen](https://doug2k1.github.io/nanogen/), который делает именно то, что нужно, и не похож на космический корабль:
|
||||||
|
|
||||||
|
- Умеет Markdown и HTML (ejs);
|
||||||
|
- Имеет очень гибкую систему шаблонов;
|
||||||
|
- Не выходит за рамки стека Node.js.
|
||||||
|
|
||||||
|
Да, в репозитории проекта давно не было коммитов, но хочется думать, что это по причине надёжности и закончености :)
|
||||||
|
|
||||||
|
## Типографика
|
||||||
|
|
||||||
|
Я люблю текст и не умею в дизайн. Oddsquat — проект про буквы, значит, буквы должны быть красивыми и удобными.
|
||||||
|
|
||||||
|
К теме типографики в вебе я подходил несколько раз, но безуспешно. Не получается структурировать и сохранить в голове все эти сакральные знания про кернинг и засечки, потому что не вижу никакой связи между теорией и практикой.
|
||||||
|
|
||||||
|
Очередное погружение системных знаний опять не принесло, зато принесло удобный инструмент: [Typography.js](https://github.com/KyleAMathews/typography.js).
|
||||||
|
|
||||||
|
Этот тулкит позволяет, покрутив ручки [интерактивного демо](http://kyleamathews.github.io/typography.js/), получить новое, но при этом гармоничное сочетание абзацев, заголовков и отступов между ними.
|
||||||
|
Идеальный инструмент для тех, кто хочет поиграть со шрифтами, но не до конца понимает, как.
|
||||||
|
|
||||||
|
Авторы настолько заботливые, что даже подключают `normalize.css` при генерации своих стилей, снимая с вас ещё одну головную боль. Благодаря им весь мой дополнительный css для стилизации сайта уложился в сто строк кода и хорошо работает в любых браузерах и на любых экранах.
|
||||||
|
|
||||||
|
Со шрифтами всё просто:
|
||||||
|
- **Open Sans** для текста и **Open Sans Condensed** для заголовков, потому что мне нравится слово «Open»;
|
||||||
|
- **Fira Code** для кода, потому что лигатуры (`-->`, `!==`) — это красиво.
|
||||||
|
|
||||||
|
## Аналитика
|
||||||
|
|
||||||
|
Я долго думал, можно ли собирать аналитику просмотров, или нужно играть в идеальный веб до конца и полностью отказаться от слежки за пользователями. С одной стороны высокая идея, с другой — любопытство.
|
||||||
|
|
||||||
|
После непродолжительного исследования пришёл к выводу, что Метрика и Аналитика от поисковых гигантов мне точно не подходят, а вот автор [GoatCounter](https://goatcounter.com/) полностью понимает мою боль.
|
||||||
|
|
||||||
|
[Why I made GoatCounter](https://www.goatcounter.com/why/) — отличный пост, где создатель сервиса ответил на все вопросы, которые у меня к нему возникли. Вот, например, замечательный абзац про причины бесплатности начального тарифа:
|
||||||
|
|
||||||
|
> I think it’s important to make the barrier of entry for software like this low as feasible to make actual meaningful inroads to “de-Google-fi” the internet a bit, and make pervasive tracking less common. Making it freely available (for personal use) is part of that.
|
||||||
|
|
||||||
|
## Содержание
|
||||||
|
|
||||||
|
Самое главное. С формой и техническими вопросами всё ясно, но что же я буду складывать внутрь? Пока план такой:
|
||||||
|
|
||||||
|
- Я довольно часто изучаю штуки из разных областей и хочу описывать эти опыты. Вот, например, описал создание легковесного сайта.
|
||||||
|
- Мне нравится настраивать инструменты и рассказывать об этом.
|
||||||
|
- Есть несколько почтовых рассылок, которые я очень хочу начать переводить, чтобы начать читать.
|
||||||
|
|
||||||
|
Признаюсь, что был очарован сайтом от ребят из команды [Hundred Rabbits](https://100r.co/site/home.html) и захотел такое же, только своё.
|
||||||
|
|
||||||
|
Stay tuned!
|
||||||
75
src/pages/posts/2020/typographic_linter.md
Normal file
75
src/pages/posts/2020/typographic_linter.md
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
layout: post
|
||||||
|
|
||||||
|
lang: 'ru'
|
||||||
|
date: '2020-11-18'
|
||||||
|
|
||||||
|
year: '2020'
|
||||||
|
section: 'posts'
|
||||||
|
|
||||||
|
title: 'typographic linter'
|
||||||
|
description: 'Prettier для текста. Автоматизация рутинной типографики.'
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Типографика как code style
|
||||||
|
|
||||||
|
## Основы
|
||||||
|
|
||||||
|
Для того, чтобы тексты было удобно читать и неудобно писать, человечество придумало разные правила. С орфографией и пунктуацией всё понятно, но про типографические правила говорят редко.
|
||||||
|
|
||||||
|
Типографика — набор правил вёрстки текста, призванных повысить эстетику и читаемость. Именно в таком порядке, потому что люди сначала замечают текст и только потом начинают читать.
|
||||||
|
|
||||||
|
Про шрифты, отступы и прочие кернинги в этот раз говорить не будем, потому что мне понравилось крутить ползунки в [Typography.js](https://github.com/KyleAMathews/typography.js) и не переживать об эстетике.
|
||||||
|
|
||||||
|
Разговор пойдёт про висячие предлоги и прочие тире с кавычками.
|
||||||
|
|
||||||
|
## Проблематика
|
||||||
|
|
||||||
|
Сайты в интернете делятся на два типа: те, кто запаривается за подготовку текстов, и те, кто забивает. [Meduza.io](https://meduza.io/) расставляет неразрывные пробелы в текстах новостей, а [rbc.ru](https://www.rbc.ru/) — нет. Это не единственное отличие этих новостных порталов, но очень знаковое, как мне кажется.
|
||||||
|
|
||||||
|
### Нужно забить!
|
||||||
|
|
||||||
|
Я прекрасно понимаю тех, кто не запаривается. Часть не знает, часть забивает ([Вастрик](https://vas3k.ru/), например), а у остальных user-generated content, который довольно рискованно автоматически форматировать. Аргументы для каждой группы:
|
||||||
|
|
||||||
|
- И так всё понятно.
|
||||||
|
- Условный Markdown со спецсимволами теряет половину обаяния.
|
||||||
|
- Правильные автоматические кавычки-ёлочки не сделают из комментария в Facebook литературный памятник, зато случайный японский эмотикон может разрушить цивилизацию: <br>
|
||||||
|
`Прости ^_^" Забыл купить "Доширак"` превращается в <br>
|
||||||
|
`Прости ^_^« Мы испортили »Твой текст«`.
|
||||||
|
- У студентов должен быть отдельный курс по расшифровке смайликов и компилированию C++ из чатов. Бонусный аргумент.
|
||||||
|
|
||||||
|
### Нужно запариться!
|
||||||
|
|
||||||
|
Википедия утверждает, что [типографика](https://ru.wikipedia.org/wiki/%D0%A2%D0%B8%D0%BF%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0) — это «свод строгих правил», но список не показывает и ссылок не даёт. Стандартом де-факто в рунете являются правила из [§ 62 «Ководства»](https://www.artlebedev.ru/kovodstvo/sections/62/). С ними или соглашаются, или [громко спорят с некоторыми](https://medium.com/@kapanaga/62-6c664105dd30).
|
||||||
|
|
||||||
|
Пусть мне и не нравится полное отсутствие у Лебедева обоснований или ссылок на источники, но самому погружаться в историю вопроса и читать какой-нибудь авторитетный [«Справочник издателя и автора»](https://www.artlebedev.ru/izdal/spravochnik-izdatelya-i-avtora-2017/) страшно: в нём 1010 страниц.
|
||||||
|
|
||||||
|
Авторы, которые хотят радовать читателей с помощью тире, обычно не пишут в блокноте (мне так кажется) или носят свои тексты из блокнота в [Типограф](https://www.artlebedev.ru/typograf/) от Артемия Лебедева, а потом назад. Про первых я ничего не знаю, а ко вторым сам отношусь, когда нужно причесать один или два текста.
|
||||||
|
|
||||||
|
У Типографа и аналогичных веб-сервисов есть фундаментальные проблемы:
|
||||||
|
|
||||||
|
- Копировать текст из редактора в браузер, а потом назад — неудобно.
|
||||||
|
- Сервис может быть офлайн в неподходящий момент, я тоже.
|
||||||
|
- Сервис может читать мои тексты до публикации.
|
||||||
|
- Некоторые тексты никому нельзя показывать (по разным причинам).
|
||||||
|
|
||||||
|
Признаюсь, что раньше я ни разу не думал об использовании типографа вне браузера, но как только образовалась перспектива заниматься этим на постоянной основе, стало понятно, что копировать текст из редактора в браузер и назад — не самое оптимальное решение и нужно что-то с этим делать.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
Очевидный вариант — научить текстовый редактор автоматически расставлять неразрывные пробелы, исправлять мелкие опечатки, приводить кавычки к правильному виду, заменять дефисы на тире в нужных местах и многое другое. <br>
|
||||||
|
Вот [плагин для VS Code](https://marketplace.visualstudio.com/items?itemName=rusnasonov.vscode-typograf).
|
||||||
|
|
||||||
|
Мне больше нравится другой подход. Мы уже давно используем линтеры для языков программирования, давайте использовать их и для контента.
|
||||||
|
|
||||||
|
Конечно, я не первый, кто так подумал. Плагин выше построен на основе замечательной библиотеки [typograf](https://github.com/typograf/typograf) и прямо в README.md файле этого проекта можно найти ссылки на плагины для Babel, Gulp и Grunt.
|
||||||
|
|
||||||
|
Библиотека очень гибко настраивается, содержит [сотню готовых правил](https://github.com/typograf/typograf/blob/dev/docs/RULES.ru.md) и позволяет легко добавлять кастомные.
|
||||||
|
|
||||||
|
В комплекте есть cli-утилита, которая умеет читать файлы, форматировать их и выводить результат в терминал, но почему-то не умеет файл перезаписывать. Поэтому для своих целей я написал небольшой скрипт, который, получив локаль и имя файла, изменяет его содержимое. С правилами тоже пришлось немного поиграть, потому что дефолтные принимают списки за диалоги и ломают markdown-разметку.
|
||||||
|
|
||||||
|
Теперь для расстановки всех хитрых значков не нужно ходить в браузер, достаточно просто запустить скрипт, посмотреть с помощью `git diff` на результат и закоммитить нужные изменения.
|
||||||
|
|
||||||
|
Красивые тексты лучше некрасивых.
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
layout: post
|
|
||||||
lang: 'en'
|
|
||||||
section: 'project'
|
|
||||||
|
|
||||||
title: 'list'
|
|
||||||
description: 'Сomplete list of experiments'
|
|
||||||
|
|
||||||
---
|
|
||||||
14
src/pages/projects.md
Normal file
14
src/pages/projects.md
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
layout: post
|
||||||
|
lang: 'en'
|
||||||
|
section: 'projects'
|
||||||
|
|
||||||
|
title: 'project list'
|
||||||
|
description: 'Incomplete list of projects and experiments'
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Projects
|
||||||
|
|
||||||
|
Incomplete list of projects and experiments.
|
||||||
|
|
@ -6,7 +6,7 @@ lang: 'en'
|
||||||
date: '2020-10-30'
|
date: '2020-10-30'
|
||||||
|
|
||||||
year: '2020'
|
year: '2020'
|
||||||
section: 'post'
|
section: 'posts'
|
||||||
|
|
||||||
title: 'Markdown test page'
|
title: 'Markdown test page'
|
||||||
description: 'A test document written using Markdown'
|
description: 'A test document written using Markdown'
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue