Python Materials For Beginners
447 subscribers
39 photos
1 video
9 files
150 links
Download Telegram
Forwarded from Dmitry
Channel photo updated
https://sqlbolt.com/ - онлайн платформа для вивчення SQL в інтерактивному режимі.
👍52
Forwarded from Ruslan Kiyanchuk
Залежить від того, з якого рівня, і на скільки глибше :)

Для початківців з інтуїтивними поясненнями основ:
- Real World Cryptography by David Wong
- Serious Cryptography, 2nd Edition by JP Aumasson (ця розрахована на розробників, але поверхнева, лише помочити ніжки)

З трохи більшим заглибленням в теорію:
- Cryptography Made Simple by Nigel Smart
(дещо старша книга і чомусь має прогалини, як то взагалі не говорить про автентифіковане шифрування, але доступно пояснює теорію – більш академічно аніж в попередніх двох книгах)
- Joy of Cryptography by Joy Misulek (це undergraduate level книга у вільному доступі)
Forwarded from Vitalii
👍5🔥1
Приблизний час доступу до різних видів пам'яті для порівняння.
👍2🔥2
Що стосовно іноді моїх власних коротких заміток у цьому каналі? Моливо замітки будуть по якимось відео з ютюба.
Anonymous Poll
4%
Ні, тільки матеріали для початківців
86%
Так, можна замітки автора з прикладами коду
64%
Так, можна й замітки по відео з ютюба
🚫 Чому не варто збирати Python-проєкт у exe через PyInstaller

Багато початківців намагаються зібрати свій Python-проєкт у .exe-файл. Але є чимало причин, чому це не завжди гарна ідея.

Насправді цей процес не є компіляцією.
Фактично відбувається лише упаковка Python-інтерпретатора та бібліотек у саморозпакувальний архів [1].
Коли користувач запускає exe, спочатку виконується розпаковка цього архіву у тимчасову теку, і лише потім — запуск скрипта. Це має низку негативних наслідків:

1️⃣ Антивіруси часто сприймають такий .exe як загрозу.
Через використання стиснення файлів антивірусне ПЗ може активно скаржитися на ваш exe. Щоб переконатися в цьому, достатньо завантажити файл на VirusTotal. Якщо користувач зробить таку перевірку й побачить попередження, довіра до вас і вашого ПЗ може бути підірвана.

2️⃣ Проблеми з шляхами
exe запускається з однієї теки, але архів розпаковується та виконується в іншій. Це змушує вносити зміни до коду проєкту, які будуть враховувати зміну шляху.

3️⃣ Несумісність з окремими бібліотеками
Існує ймовірність, що через особливості певної бібліотеки проєкт не збиратиметься у exe. Причому ситуація може змінюватися від версії до версії бібліотеки і python. Найчастіше проблеми виникають із модулями, що використовують код на C/C++.

4️⃣ Складна діагностика помилок
Упаковка, особливо з опцією --windowed, може маскувати помилки: замість виведення повідомлення у консолі користувач просто отримає падіння програми. На одних пристроях програма може запускатися, а на інших — ні. Виявити причину, виправити її або оновити бібліотеки "на місці" просто неможливо.

5️⃣ Довгий старт програми
Очевидно що розпаковка з архіву буде сповільнювати запуск.

Хоча збірка у exe може здаватися зручною для поширення, на практиці вона часто створює більше проблем, ніж вирішує.

#PyInstaller
👍1
Приклад збірки PyQt6 проєкту PyInstaller-ом.

Якщо Ви все-таки наважилися зібрати свій проєкт pyinstaller у exe пропоную розглянути приклад.
Як приклад будемо використовувати мій шаблон для PyQt6
Шаблон дуже простий - показує просте вікно.

Він має файли які задані відносними шляхами:
1️⃣ Одна з переваг Qt - використання файлів "форм" формату *.ui в даному випадку це - main_window.ui
2️⃣ icon.png це іконка у головному вікні, вона задана main_window.ui через дизайнер "форм" QtDesiginer

Напишемо pyinstaller_build.bat скрипт який буде займатись збіркою у exe

SET SCRIPT_NAME=main.py
SET EXE_NAME=prog

.venv\Scripts\pyinstaller.exe ^
--add-data "main_window.ui;." ^
--add-data "icon.png;." ^
--icon "icon.ico" ^
--windowed ^
--onefile ^
--noupx ^
--name %EXE_NAME% ^
%SCRIPT_NAME%

pause


Як бачимо всі файли які використовуються програмою треба додавати опцією --add-data
Також сам exe файл може мати іконку для цього має бути використана опція --icon але треба зауважити що формат іконки має бути саме .ico (png не підходить).

Опція --windowed саме для GUI застосунків щоб сховати вікно консолі.
Опція --onefile саме збірка у exe
Опція --noupx збирати без upx стиснення.

Але цього недостатньо, щоб наш додаток знаходив файли main_window.ui та icon.png при запуску треба змінювати робочу директорію (це треба робити на самому початку скрипта).

try:
import os, sys

os.chdir(sys._MEIPASS)
print(f"{sys._MEIPASS=}")

except AttributeError:
pass


Атрибут _MEIPASS додається динамічно pyinstaller-ом - це тимчасова тека куди розпаковується проєкт

Без цієї вставки коду буде помилка про те, що вказані файли відсутні.
Також я додам скріншот з збіркою без опції --windowed щоб можна було побачити як виглядає sys._MEIPASS

Додаткові файли будуть прикріплені у коментарях.

#PyInstaller #PyQt6
👍43
Схемка по основам git
яка дає уявлення які можуть бути стани репозиторію і які команди відповідають переходам між ними.

https://www.youtube.com/watch?v=G5nhfQ_lfNg
👍2