diff --git a/.gitignore b/.gitignore
index b3cd03d..d609698 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
public/
+public.tar.xz
.hugo_build.lock
-ftp.txt
diff --git a/content/posts/2022/git-remove-remote-branch.md b/content/posts/2022/git-remove-remote-branch.md
new file mode 100644
index 0000000..78166a7
--- /dev/null
+++ b/content/posts/2022/git-remove-remote-branch.md
@@ -0,0 +1,23 @@
+---
+title: "Git: Удалить ветку на сервере"
+date: 2022-09-16T03:48:34+03:00
+draft: false
+tags: [git, tips]
+---
+
+Для удаления определённой ветки на сервере Git, необходимо выполнить команду:
+
+```sh
+git push --delete
+```
+
+Например:
+
+```text
+git push origin --delete gh-pages
+
+remote: . Processing 1 references
+remote: Processed 1 references in total
+To git.a2s.su:iiiypuk/minecraft-launcher.git
+ - [deleted] gh-pages
+```
diff --git a/content/posts/2022/portable-imagemagick.md b/content/posts/2022/portable-imagemagick.md
new file mode 100644
index 0000000..dfb97a3
--- /dev/null
+++ b/content/posts/2022/portable-imagemagick.md
@@ -0,0 +1,78 @@
+---
+title: "Портативный ImageMagick в Linux"
+date: 2022-09-17T22:23:58+03:00
+draft: false
+tags: [guide, linux, imagemagick]
+---
+
+## ImageMagick
+Набор программ для чтения и редактирования файлов множества графических форматов.
+Является свободным и кроссплатформенным программным обеспечением. _(с) Википедия_
+
+Во многих дистрибутивах продукт поставляется из коробки (скорее всего как зависимость),
+однако у меня в [Porteus](http://porteus.org/) (основан на [Slackware](http://www.slackware.com/))
+пакет отсутсвует.
+
+Более чем начинающий пользователь ОС на базе ядра Linux
+знаком с [AppImage](https://appimage.org/).
+
+**AppImage** - это приложения, которые запускаются в любом месте.
+
+На странице загрузки [ImageMagick](https://imagemagick.org/script/download.php#linux)
+первым в списке представлен вариант AppImage.
+Я даже не могу вспомнить, кто из разработчиков ПО
+предлагал загрузить их программу в пакете AppImage
+по умолчанию.
+
+В релизах на странице проекта на [GitHub](https://github.com/ImageMagick/ImageMagick/releases)
+представлены для загрузки исключительно AppImage пакеты.
+Даже в двух вариантах, собранных GCC и Clang.
+
+На сайте ImageMagick написано, что образ AppImage имеет открытую политику безопасности.
+Они также настоятельно рекомендуют настроить политику безопасности.
+
+Для этого необходимо просто добавить [пользовательскую политику](https://imagemagick.org/script/security-policy.php)
+безопасности в свой локальный путь,
+например, `~/.config/ImageMagick/policy.xml` и проверьте с помощью этой команды:
+```sh
+./magick -list policy
+```
+
+## Использование
+
+В других дистрибутивах, где ImageMagick собирается из исходных кодов
+доступна команда `convert`.
+В сети множество примеров обработки изображений посредством этой утилиты.
+
+В случае использования образа AppImage необходимо запускать `convert` как аргумент.
+
+```sh
+magick convert
+```
+
+## GCC or Clang
+
+Несмотря на то, что я загрузил **Clang** версию `ImageMagick--clang-x86_64.AppImage` (7.1.0-48)
+со страницы [GitHub](https://github.com/ImageMagick/ImageMagick/releases/tag/7.1.0-48),
+запуск утилиты с параметром `--version` говорить мне, что программа собрана **GCC**.
+
+```text
+magick --version
+Version: ImageMagick 7.1.0-48 Q16-HDRI x86_64 c1ca24765:20220910 https://imagemagick.org
+Copyright: (C) 1999 ImageMagick Studio LLC
+License: https://imagemagick.org/script/license.php
+Features: Cipher DPC HDRI OpenMP(3.1)
+Delegates (built-in): bzlib djvu fontconfig freetype jbig jng jpeg lcms lqr lzma openexr png raqm tiff webp x xml zlib
+Compiler: gcc (4.2)
+```
+
+ХЗ почему так, работает и пофиг.
+
+## Размеры
+
+AppImage пакет занимает ~27MB, против ~11MB в том же ArchLinux.
+
+Да больше, но зато я не буду увеличивать энтропию,
+тратить процессорное время и собирать из исходных кодов.
+
+Use AppImage, Luke ;)
diff --git a/content/posts/2022/update-stanis-tits-scrap.md b/content/posts/2022/update-stanis-tits-scrap.md
new file mode 100644
index 0000000..efc8792
--- /dev/null
+++ b/content/posts/2022/update-stanis-tits-scrap.md
@@ -0,0 +1,51 @@
+---
+title: "Обновил граббер сисек с blog.stanis.ru"
+date: 2022-09-16T01:39:33+03:00
+draft: false
+tags: [pet-projects, updates]
+---
+
+### О релизе
+
+[stanis-tits-scrap](https://git.a2s.su/iiiypuk/stanis-tits-scrap) -
+скрипт для скачивания голых и не только девушек с блога stanis.ru.
+
+Из нововведений, это появилась проверка на наличие уже загруженного изображения.
+Теперь сиськи не скачиваются снова, либо скачивается,
+если ранее файл был загружен не полностью.
+
+Второе что я сделал, это восстановил работоспособность функционала
+прекращения загрузки остальных файлов.
+То есть программа прекращает работу, если новый изображених на сайте нет.
+
+Раньше это тоже как-то работало, но это было давно и не правда.
+Плюс сама идея поменялась. Раньше я хотел скачать всю библиотеку сисек,
+то сейчас цель просто поддерживать каталог сисек в актуальном состоянии.
+Я ещё позже подумаю, как лучше всё это доделать, но пока пусть будет так.
+
+Добавил в проект модуль `flit`, для генерации дистрибутивов.
+Но выкладывать их, пока не доведу всё до ума, я не буду.
+
+Изменения, которые описаны выше, доступные по тегу
+[1.0.2](https://git.a2s.su/iiiypuk/stanis-tits-scrap/src/tag/1.0.2).
+
+Пока писал, эту заметку, в голову пришла идея, как лучше сделать всё.
+Все ближайшие изменения в проекте, я оформлю на этой странице посредством обновления.
+Спасибо за внимание!
+
+### Update 1
+
+**Теперь по умолчанию скачиваются все изображения, от текущего момента, до начала.**
+
+Добавил в программу спиннеры в сообщение о текущем состоянии.
+
+Добавил аргументы программы:
+`--pages` - можно указать, сколько страниц загружать.
+`--directory` - изменить директорию загрузки.
+
+Удалён сомнительный функционал `resume`.
+
+Новый релиз **1.0.3** доступен
+по [этой ссылке](https://git.a2s.su/iiiypuk/stanis-tits-scrap/src/tag/1.0.3).
+
+Сборки будут выложены в ближайшем будующем.
diff --git a/content/posts/python/request-file-size.md b/content/posts/python/request-file-size.md
new file mode 100644
index 0000000..d97e0e3
--- /dev/null
+++ b/content/posts/python/request-file-size.md
@@ -0,0 +1,116 @@
+---
+title: "Получаем размер загружаемого файла на Python"
+date: 2022-09-16T01:08:53+03:00
+draft: false
+tags: [python, tips]
+---
+
+### Введение
+
+Многие пишут грабберы сайтов на Python.
+Я вот например [скачиваю](#) сиськи с [blog.stanis.ru](http://blog.stanis.ru/).
+
+Но иногда, требуется проверить, не загружен ли файл уже, до того как его скачать.
+
+Способов сравнения файлов существует достаточное количество,
+но в рамках этого руководства я рассмотрю способ сравнения файлов по их размеру.
+
+### Получение размера локального файла
+
+В стандартной библиотеке Python, есть функция `getsize()` в модуле `os.path`.
+
+```python
+import os.path
+
+if __name__ == '__main__':
+ file_size = os.path.getsize("./avatar.png")
+
+ print("Size: {0} ({1})".format(file_size, type(file_size)))
+```
+
+Программа вернёт следующий результат:
+
+```text
+Size: 14390 ()
+```
+
+Однако не стоит забывать, что файла может и не быть.
+По этому лучше проверять такие ситуации.
+
+```python
+os.path.exists("./avatar/png")
+```
+
+### Получение размера удалённого файла
+
+Для работы с HTTP,
+я использую модуль [requests](https://requests.readthedocs.io/en/latest/index.html).
+
+Каждый web-сервер, возвращает заголовки, в которых может быть полезная информация.
+Для примера, получим заголовки файла [аватара](https://iiiypuk.me/avatar.png) на моём сайте.
+
+```python
+import requests
+
+response = requests.get("https://iiiypuk.me/avatar.png")
+print(response.headers)
+```
+
+Вывод будет следующий:
+
+```text
+{
+ 'Server': 'nginx/1.20.2',
+ 'Date': 'Thu, 15 Sep 2022 22:14:41 GMT',
+ 'Content-Type': 'image/png',
+ 'Content-Length': '14390',
+ 'Last-Modified': 'Fri, 08 Jul 2022 11:23:06 GMT',
+ 'Connection': 'keep-alive',
+ 'Accept-Ranges': 'bytes'
+}
+```
+
+Нас интересует заголовок `Content-Length`.
+
+```python
+print(response.headers['Content-Length'])
+# Выхлоп: 14390
+```
+
+Сравнение до боли простое:
+
+```python
+import os.path
+import requests
+
+if __name__ == '__main__':
+ local_size = os.path.getsize("./avatar.png")
+
+ response = requests.get("https://iiiypuk.me/avatar.png")
+ remote_size = int(response.headers['Content-Length'])
+
+ if local_size != remote_size:
+ print("Файлы разные")
+ print("Локальный размер: {0}\nУдалённый размер: {1}".format(
+ local_size, remote_size))
+ else:
+ print("Файлы одинаковые")
+
+```
+
+Обрати внимание, что `response.headers['Content-Length']` возвращает значение
+строкой, а не целым числом.
+
+### ВСЁ!
+
+Можно скачивать файл.
+
+```python
+import shutil
+import requests
+
+response = requests.get("https://iiiypuk.me/avatar.png", stream=True)
+
+with open("./file.png", "wb") as out_image:
+ shutil.copyfileobj(response.raw, out_image)
+```
diff --git a/ftp.txt.gpg b/ftp.txt.gpg
deleted file mode 100644
index 0b86a13..0000000
Binary files a/ftp.txt.gpg and /dev/null differ
diff --git a/themes/papercut/layouts/index.html b/themes/papercut/layouts/index.html
index b97a897..839824a 100644
--- a/themes/papercut/layouts/index.html
+++ b/themes/papercut/layouts/index.html
@@ -127,7 +127,7 @@
- 🔗
+ 🔗
Library parser from version.json on Minecraft JE
@@ -142,7 +142,7 @@
📫 How to reach me