From fe4778eba59a34f4794b6d5b5a53571256a5748c Mon Sep 17 00:00:00 2001
From: Alexander Popov
Date: Wed, 14 Sep 2022 20:21:21 +0300
Subject: [PATCH 1/7] update links
---
themes/papercut/layouts/index.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
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
From 56f07d5dec947e95cc4bc885d2304be36bd8f55f Mon Sep 17 00:00:00 2001
From: Alexander Popov
Date: Fri, 16 Sep 2022 01:08:06 +0300
Subject: [PATCH 2/7] remove FTP password
---
.gitignore | 2 +-
ftp.txt.gpg | Bin 410 -> 0 bytes
2 files changed, 1 insertion(+), 1 deletion(-)
delete mode 100644 ftp.txt.gpg
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/ftp.txt.gpg b/ftp.txt.gpg
deleted file mode 100644
index 0b86a137f6ae9fcf801fd3855b6752f278af79f5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 410
zcmV;L0cHM$0T2UE@wf4RcS+m<2p>vcQQMYUE8HNa@pAXpAih!caUUie6pN@MwNn$|
zo+T-ORh6UPG~GSJ8^4K~M;g5-qs{je%suywZmo+&jX@-OkElFR)vzNQy06=wLO$I$
z`n2icIAw@_c@-hlj=Q>c(;K&q{aJm~*R6S%180a!2D@hOXD*V|m>4M!($lkUJC1GcigtNKtP
zAg6rP&B2_J4y0iIwSV<0DVjloYIla1C^|MiAnB#Q4^us}&H^v)IT~Fy{*W-u7uaml
z`{eFX%C5#!rTUVAmMtKrhepEim8*|D+i3q27G~$(!n%wU12RSQ6VKZduj&tX^L?u0
Eq_}X=K>z>%
From 099abe5d62afcf7eb735aae10852b940357e4b87 Mon Sep 17 00:00:00 2001
From: Alexander Popov
Date: Fri, 16 Sep 2022 01:38:42 +0300
Subject: [PATCH 3/7] requests, get file size
---
content/posts/python/request-file-size.md | 116 ++++++++++++++++++++++
1 file changed, 116 insertions(+)
create mode 100644 content/posts/python/request-file-size.md
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)
+```
From 5daaedab90ce8af4c338f888fe8d7f8cdeedb1c7 Mon Sep 17 00:00:00 2001
From: Alexander Popov
Date: Fri, 16 Sep 2022 01:56:09 +0300
Subject: [PATCH 4/7] stanis grabber update
---
.../posts/2022/update-stanis-tits-scrap.md | 34 +++++++++++++++++++
1 file changed, 34 insertions(+)
create mode 100644 content/posts/2022/update-stanis-tits-scrap.md
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..da7a867
--- /dev/null
+++ b/content/posts/2022/update-stanis-tits-scrap.md
@@ -0,0 +1,34 @@
+---
+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).
+
+Пока писал, эту заметку, в голову пришла идея, как лучше сделать всё.
+Все ближайшие изменения в проекте, я оформлю на этой странице посредством обновления.
+Спасибо за внимание!
From 8af1e2e4981fe18229fb3c73504b61968686d589 Mon Sep 17 00:00:00 2001
From: Alexander Popov
Date: Fri, 16 Sep 2022 03:02:26 +0300
Subject: [PATCH 5/7] update 1.0.3
---
content/posts/2022/update-stanis-tits-scrap.md | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/content/posts/2022/update-stanis-tits-scrap.md b/content/posts/2022/update-stanis-tits-scrap.md
index da7a867..efc8792 100644
--- a/content/posts/2022/update-stanis-tits-scrap.md
+++ b/content/posts/2022/update-stanis-tits-scrap.md
@@ -32,3 +32,20 @@ tags: [pet-projects, updates]
Пока писал, эту заметку, в голову пришла идея, как лучше сделать всё.
Все ближайшие изменения в проекте, я оформлю на этой странице посредством обновления.
Спасибо за внимание!
+
+### Update 1
+
+**Теперь по умолчанию скачиваются все изображения, от текущего момента, до начала.**
+
+Добавил в программу спиннеры в сообщение о текущем состоянии.
+
+Добавил аргументы программы:
+`--pages` - можно указать, сколько страниц загружать.
+`--directory` - изменить директорию загрузки.
+
+Удалён сомнительный функционал `resume`.
+
+Новый релиз **1.0.3** доступен
+по [этой ссылке](https://git.a2s.su/iiiypuk/stanis-tits-scrap/src/tag/1.0.3).
+
+Сборки будут выложены в ближайшем будующем.
From a190766973b58e13c1fb5dacb333b5f9363af0a0 Mon Sep 17 00:00:00 2001
From: Alexander Popov
Date: Fri, 16 Sep 2022 03:51:46 +0300
Subject: [PATCH 6/7] git remote branch in origin
---
.../posts/2022/git-remove-remote-branch.md | 23 +++++++++++++++++++
1 file changed, 23 insertions(+)
create mode 100644 content/posts/2022/git-remove-remote-branch.md
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
+```
From a378aa42a832b6addfe0456f1d2dc672af413d5d Mon Sep 17 00:00:00 2001
From: Alexander Popov
Date: Sat, 17 Sep 2022 22:49:42 +0300
Subject: [PATCH 7/7] portable imagemagick
---
content/posts/2022/portable-imagemagick.md | 78 ++++++++++++++++++++++
1 file changed, 78 insertions(+)
create mode 100644 content/posts/2022/portable-imagemagick.md
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 ;)