Commit Diff


commit - 24197d5ddefa63ddcabd607d7b5da23a1f9e25fb
commit + 6d94713c779dde53f7f748bd158efff28749d55c
blob - a1fa140f6091cb3ddb3f1d51f3607d0194c2a474 (mode 644)
blob + /dev/null
--- capsule/gemlog/python3.11-tools.gmi
+++ /dev/null
@@ -1,38 +0,0 @@
-# Утилиты, встроенные в Python
-
-На машинах, где я работаю над чем-либо в подавляющем большинстве случаев уже установлен третий пайтон. А вместе с интерпретатором устанавливаются и модули стандартной библиотеки, некоторые из которых могут работать, как самостоятельные утилиты. Я, например, давно уже пользуюсь модулем http.server для переброса файлов между машинами одной сети или json.tool для человеко-читаемого отображения json-данных. 
-
-Вот я и решил погрепать стандартные модули Python 3.11 на предмет встроенных полезных утилит.
-
-## Модуль base64
-
-Недокументированная (на текущий момент) возможность запуска модуля base64 для [рас-]кодирования данных в формате Base64:
-```
-$ python -m base64 -h
-option -h not recognized
-usage: /usr/lib/python2.7/base64.py [-d|-e|-u|-t] [file|-]
-        -d, -u: decode
-        -e: encode (default)
-        -t: encode and decode string 'Aladdin:open sesame'
-```        
-
-Утилита оперирует переданным файлом, значение - переключает на работу со стандартным потоком ввода. Пример:
-
-```
-$ echo "Aladdin:open sesame" | python -m base64 -
-QWxhZGRpbjpvcGVuIHNlc2FtZQo=
-$ echo QWxhZGRpbjpvcGVuIHNlc2FtZQo= | python -m base64 -d -
-Aladdin:open sesame
-```
-
-## Модуль calendar
-
-Работа модуля calendar в режиме утилиты хорошо документирована:
-=> https://docs.python.org/3/library/calendar.html
-
-Утилита выводит календарь в формате простого текста или HTML.
-
-## Модуль cProfile
-
-Модуль поддержки профилирования исполнения Python-кода. Работа модуля хорошо документирована:
-=> https://docs.python.org/3/library/profile.html
blob - fae562eda97c46b0e67d66432bd25bfb1ccb6e94
blob + 3fa777e99e5564188eed822a3b2d2ff69f87bce8
--- capsule/index.gmi
+++ capsule/index.gmi
@@ -6,6 +6,7 @@
 
 => atom.xml Лента публикаций
 
+
 ## Программирование
 
 В этом разделе собраны материалы по проектам, где я участвую в разработке.
@@ -34,29 +35,38 @@
 
 => forth/ Форт и сопутствующие проекты
 
+### Летающий цирк (Python)
+
+=> python/ Язык программирования Python
+
 ### "Ненормальное" программирование
 
 Да, практически все мои проекты можно (как минимум) отнести к категории "непрактичный". Но я решил сделать отдельный раздел своей капсулы для особо ярких представителей:
 
 => esoteric/ Эзотерическое "программирование"
 
+
 ## Тривиальные Технологии
 
 => tt/ Экземпляр перевода Тривиальных Технологий для Gemini капсулы
 
+
 ## Прочитано ✅
 
 => readed/ Мой читательский дневник
 
+
 ## Архив аудио лекции
 
 В своей капсуле я храню архив интересных (по моему мнению) аудиолекции.
 => not_my_voice/ Аудио лекции
 
+
 ## Фото-ловушка 🪤
 
 => trap/ Эксперименты с фото-ловушкой
 
+
 ## Связаться со мной
 
 При желании со мной можно связаться следующими способами:
@@ -67,6 +77,7 @@
 
 => pgp_public_key.gmi публичный PGP-ключ для связи со мной (в случае необходимости)
 
+
 ## Покидая капсулу
 
 => warp/ Ссылки на другие Gemini капсулы
blob - /dev/null
blob + 0f0a9593b0f9786c0292ae3d59373f6eb557c5fc (mode 644)
--- /dev/null
+++ capsule/python/index.gmi
@@ -0,0 +1,5 @@
+# Летающий цирк (Python)
+
+Язык программирования Python
+
+=> python3.11-tools.gmi Утилиты, встроенные в Python
blob - /dev/null
blob + 7877d33b9961996000e9126034cffd68a0d40b8f (mode 644)
--- /dev/null
+++ capsule/python/python3.11-tools.gmi
@@ -0,0 +1,133 @@
+# Утилиты, встроенные в Python
+
+На машинах, где я работаю над чем-либо в подавляющем большинстве случаев уже установлен третий пайтон. А вместе с интерпретатором устанавливаются и модули стандартной библиотеки, некоторые из которых могут работать, как самостоятельные утилиты. Я, например, давно уже пользуюсь модулем http.server для переброса файлов между машинами одной сети или json.tool для человеко-читаемого отображения json-данных. 
+
+Вот я и решил погрепать стандартные модули Python 3.11 на предмет встроенных полезных утилит.
+
+## Модуль base64
+
+Недокументированная (на текущий момент) возможность запуска модуля base64 для [рас-]кодирования данных в формате Base64:
+```
+$ python -m base64 -h
+option -h not recognized
+usage: /usr/lib/python2.7/base64.py [-d|-e|-u|-t] [file|-]
+        -d, -u: decode
+        -e: encode (default)
+        -t: encode and decode string 'Aladdin:open sesame'
+```        
+
+Утилита оперирует переданным файлом, значение - переключает на работу со стандартным потоком ввода. Пример:
+
+```
+$ echo "Aladdin:open sesame" | python -m base64 -
+QWxhZGRpbjpvcGVuIHNlc2FtZQo=
+$ echo QWxhZGRpbjpvcGVuIHNlc2FtZQo= | python -m base64 -d -
+Aladdin:open sesame
+```
+
+## Модуль calendar
+
+Работа модуля calendar в режиме утилиты хорошо документирована:
+=> https://docs.python.org/3/library/calendar.html
+
+Утилита выводит календарь в формате простого текста или HTML.
+
+## Модуль cProfile
+
+Модуль поддержки профилирования исполнения Python-кода. Работа модуля хорошо документирована:
+=> https://docs.python.org/3/library/profile.html
+
+## Модуль dis
+
+Модуль дизассемблирования python-кода. Имеет короткую справку (документацией это назвать сложно):
+=> https://docs.python.org/3/library/dis.html
+
+На вход (или в стандартный поток ввода) ожидает содержимое текстового python-скрипта (не работает со скомпилированными *.pyc файлами). Например:
+```
+$ echo "import os" | python3 -m dis -
+  1           0 LOAD_CONST               0 (0)
+              2 LOAD_CONST               1 (None)
+              4 IMPORT_NAME              0 (os)
+              6 STORE_NAME               0 (os)
+              8 LOAD_CONST               1 (None)
+             10 RETURN_VALUE
+```
+
+## Модуль encodings.rot_13
+
+Утилита кодирования в ROT13: простой шифр для символов английского алфавита, реализуемый сдвигом ("rotate") на 13 позиций в алфавите. Символы не из английского алфавита остаются "как есть", например:
+```
+$ echo test-тест | python3 -m encodings.rot_13
+grfg-тест
+$ echo grfg-тест | python3 -m encodings.rot_13
+test-тест
+```
+
+## Модуль filecmp
+
+Модуль сравнения файлов двух директорий на файловой системе.
+
+Например создадим тестовые данные:
+```
+$ mkdir sub1
+$ echo "" > sub1/file
+$ echo "sub1-file1" > sub1/file1
+$ echo "sub1-file2" > sub1/file2
+$ mkdir sub2
+$ echo "" > sub2/file
+$ echo "sub2-file1" > sub2/file1
+$ echo "sub2-file3" > sub2/file3
+```
+
+Результат сравнения директорий можно получить в краткой форме:
+```
+$ python3 -m filecmp sub1 sub2
+diff sub1 sub2
+Only in sub1 : ['file2']
+Only in sub2 : ['file3']
+Identical files : ['file']
+Differing files : ['file1']
+```
+Указав ключ -r утилита будет сравнивать рекурсивно (все под-директории).
+
+## Модуль ftplib
+
+Модуль реализации FTP клиента. Как можно догадаться, утилита командной строки этого модуля реализует простой FTP клиент. Например следующая команда:
+```
+$ python3.11 -m ftplib test.rebex.net -l. readme.txt -dpub/example -l.
+drwx------ 2 anonymous users          0 Mar 31  2023 pub
+-rw------- 1 anonymous users        379 Sep 19  2023 readme.txt
+Welcome to test.rebex.net!
+
+You are connected to an FTP or SFTP server used for testing purposes
+by Rebex FTP/SSL or Rebex SFTP sample code. Only read access is allowed.
+
+For information about Rebex FTP/SSL, Rebex SFTP and other Rebex libraries
+for .NET, please visit our website at https://www.rebex.net/
+
+For feedback and support, contact support@rebex.net
+
+Thanks!
+-r-------- 1 anonymous users      19156 Feb 16  2007 imap-console-client.png
+-rw------- 1 anonymous users      36672 Mar 19  2007 KeyGenerator.png
+-rw------- 1 anonymous users      24029 Mar 19  2007 KeyGeneratorSmall.png
+-r-------- 1 anonymous users      16471 Feb 16  2007 mail-editor.png
+-r-------- 1 anonymous users      35414 Feb 16  2007 mail-send-winforms.png
+-r-------- 1 anonymous users      49011 Feb 16  2007 mime-explorer.png
+-rw------- 1 anonymous users      58024 Mar 19  2007 pocketftp.png
+-rw------- 1 anonymous users      20197 Mar 19  2007 pocketftpSmall.png
+-r-------- 1 anonymous users      20472 Feb 16  2007 pop3-browser.png
+-r-------- 1 anonymous users      11205 Feb 16  2007 pop3-console-client.png
+-rw------- 1 anonymous users        379 Sep 19  2023 readme.txt
+-rw------- 1 anonymous users      11546 Mar 19  2007 ResumableTransfer.png
+-rw------- 1 anonymous users       2635 Mar 19  2007 winceclient.png
+-rw------- 1 anonymous users       6146 Mar 19  2007 winceclientSmall.png
+-rw------- 1 anonymous users      80000 Mar 19  2007 WinFormClient.png
+-rw------- 1 anonymous users      17911 Mar 19  2007 WinFormClientSmall.png
+```
+* -l. выводит содержимое текущей директории
+* readme.txt выводит содержимое файла readme.txt в текущей директории
+* -dpub/example переходит в под-директорию pub/example
+* -l. снова выводит содержимое текущей директории (pub/example)
+
+Данные для аутентификации (в случае необходимости) берутся из `~/.netrc`. Утилите можно задать альтернативный файл .netrc через аргумент -r.