#HEX • IT – Telegram
#HEX • IT
372 subscribers
502 photos
104 videos
64 files
478 links
Channel by @alexeev_dev.

Авторский блог.

IT, статьи и другая информация.
Download Telegram
Элементы математической логики

Описание:
В любой человеческой деятельности необходимо умение правильно рассуждать, а особенно в программировании. Данный курс является введением в классическую логику. Рассматриваются такие понятия как высказывание, суждение и силлогизм.
Автор курса Александр Шевчук сертифицированный специалист, эксперт в области построения архитектуры информационных систем, бизнес-анализа и управления IT проектами поможет вам понять и научится использовать базовые логические функции.

#Программирование #Саморазвитие #математика #ЖесткоеСаморазвитие #Личностный_рост
👍4
Уильямс_Э_C++_Практика_многопоточного_программирования_2020.pdf
46.7 MB
С++. Практика многопоточного программирования, 2-е издание
👍2
Если что, то у меня уже написаны 4 статьи, и я пишу 5.

1. Вторая часть создании библиотеки на C++
2. Создание python библиотеки и ее публикация при помощи poetry
3. Роадмап девопс инженера
4. Создание библиотеки для управления проектом
5. (в процессе написания) Как создать свое ORM на python
👍4🔥21
В мире программирования создание собственных библиотек — это не просто возможность пополнения своего портфолио или способ структурировать код, а настоящий акт творческого самовыражения (и иногда велосипедостроения). Каждый разработчик иногда использовал в нескольких своих проектах однообразный код, который приходилось каждый раз перемещать. Да и хотя бы как упаковать свои идеи и знания в удобный и доступный формат, которым можно будет поделиться с сообществом.

Если вы ловили себя на мысли: «А почему мне бы не создать свою полноценную библиотеку?», то я рекомендую прочитать вам мою статью.

Эту статью вы можете использовать как шпаргалку для создания проектов, и не только библиотек.

Некоторые из вас могут подумать, что мы изобретаем велосипед. А я в ответ спрошу — сможете ли вы прямо сейчас, без подсказок, только по памяти, нарисовать велосипед без ошибок?

Добро пожаловать во вторую, скорее всего финальную часть статьи! Здесь мы окончательно допишем код, исправим некоторые ошибки.

https://habr.com/ru/companies/timeweb/articles/846736/
https://habr.com/ru/companies/timeweb/articles/846736/
10🔥42
#HEX • IT pinned «В мире программирования создание собственных библиотек — это не просто возможность пополнения своего портфолио или способ структурировать код, а настоящий акт творческого самовыражения (и иногда велосипедостроения). Каждый разработчик иногда использовал в…»
Спасибо за звезды!
1011
#HEX • IT
Спасибо за звезды!
Завтра всем каналом уезжаем во Францию к Дурову
😁2👍1👏1
Библиотеки бывают двух видов — статические и динамические. Код первых при компиляции полностью входит в состав исполняемого файла, что делает программу легко переносимой. Код динамических библиотек не входит в исполняемый файл, последний содержит лишь ссылку на библиотеку. Если динамическая библиотека будет удалена или перемещена в другое место, то программа работать не будет. С другой стороны, использование динамических библиотек позволяет сократить размер исполняемого файла. Также если в памяти находится две программы, использующие одну и туже динамическую библиотеку, то последняя будет загружена в память лишь единожды.

Динамическая библиотека это фактически исполняемый файл (т.е. DLL и EXE в Windows имеют одинаковый формат). Динамическая линковка запускается в момент создания процесса (когда вы запускаете исполняемый файл на выполнение), линкуются между собой несколько исполняемых файлов каждый раз, когда создается новый процесс. Так же возможна динамическая линковка уже после запуска, т.е. новая библиотека может быть подгружена в адресное пространство ужа работающего процесса.

Сделать из статической библиотеки динамическую в принципе можно - необходимо ее (статически) слинковать в динамическую библиотеку, при этом будет создана динамическая библиотека и статическая стаб-библиотека, которую можно использовать в проекте вместо статической библиотеки, чтобы вызывать функции из динамической библиотеки.

Статическую библиотеку создать проще. Она создается из обычных объектных файлов путем их архивации с помощью утилиты ar.

Объектные файлы для динамической библиотеки компилируются особым образом. Они должны содержать так называемый позиционно-независимый код (position independent code). Наличие такого кода позволяет библиотеке подключаться к программе, когда последняя загружается в память. Это связано с тем, что библиотека и программа не являются единой программой, а значит как угодно могут располагаться в памяти относительно друг друга. Компиляция объектных файлов для динамической библиотеки должна выполняться с опцией -fPIC компилятора C++.
1👍2🔥221
Роадмап изучения ООП в Python 🐍

Объектно-ориентированное программирование (ООП) — это парадигма программирования, где различные компоненты компьютерной программы моделируются на основе реальных объектов. Объект — это что-либо, у чего есть какие-либо характеристики и то, что может выполнить какую-либо функцию. Главным понятием ООП является понятие программного объекта. Вообще говоря, большинство сущностей на планете Земля – это некие объекты. И с частью из них мы взаимодействуем при помощи программирования. Банковский счёт, персонаж компьютерной игры или анимированный виджет сайта – всё это легко представить в виде объектов. Можно сказать, что объектно-ориентированное программирование позволяет смоделировать реальный объект в виде программного.

Роадмап:
Объекты и классы
Атрибуты (Setattr, getattr, delattr, dict)
Инициализация объектов и аргумент self
Свойства (getter, setter, deleter)
Dunder методы (get, set)
Статические методы (@staticmethod)
Slots - оптимизируем потребление памяти
Dunder метод (New)
Методы класса (@classmethod)
Инкапсуляция - публичные, приватные и защищенные атрибуты
Моносостояние - принцип работы
Полиморфизм на примере (@singledispatch)
Dunder методы (str, repr, len, del)
Dunder методы (bool, bytes, float, int)
Dunder методы (pow, reversed, truediv)
Dunder методы (next, iter, call)
Контекстный менеджер в классе используя (enter, exit)
Dunder методы (add, sub, eq, hash)
Работа с атрибутами (hasattr, getattr)
Dunder методы (getitem, setitem, delitem, mul)
Наследование и перегрузка методов
Разбираем (isinstance, issubclass, getsizeof)
Переопределение методов родителя
Дата-классы (@dataclass)
Множественное наследование (mro, vars, callable, super)
Абстрактные методы (ABCMeta, abstractmethod)
Декораторы классов
Динамическое редактирование класса
Метаклассы
53🔥2
❤️ Спасибо, друзья!

Вам уже 169 подписчиков. Звезды, бусты, наш канал развивается. Когда он был просто блогом-архивом (что можно понять по юзернейму @hex_warehouse - шестнадцатеричный склад). А сейчас благодаря вам канал стал развиваться.

Спасибо вам!

Напишите в комментариях то, о чем хотите пост, или просто пожелания каналу.

Спасибо!
105🔥21👍1
Статья про создание своей ORM пишется полным ходом!

А пока можете поставить звезду репозиторию: https://github.com/alexeev-prog/SQLSymphony

На странице репозитория вы также можете уже попробовать протестировать библиотеку, установив ее.
🔥22👍1👏1
Ruff — это новый быстроразвивающийся линтер Python-кода, призванный заменить flake8 и isort.

Основным преимуществом Ruff является его скорость: он в 10–100 раз быстрее аналогов (линтер написан на Rust).

Ruff может форматировать код, например, автоматически удалять неиспользуемые импорты. Сортировка и группировка строк импорта практически идентична isort.

Инструмент используется во многих популярных open-source проектах, таких как FastAPI и Pydantic.

Настройка Ruff осуществляется в файле pyproject.toml.

Для использования ruff как линтер можно использовать следующие команды:

ruff check                          # Lint all files in the current directory (and any subdirectories).
ruff check path/to/code/ # Lint all files in `/path/to/code` (and any subdirectories).
ruff check path/to/code/*.py # Lint all `.py` files in `/path/to/code`.
ruff check path/to/code/to/file.py # Lint `file.py`.
ruff check @arguments.txt # Lint using an input file, treating its contents as newline-delimited command-line arguments.
ruff check . --fix # Lint all files in current directory and fix

Или как форматтер:

ruff format                          # Format all files in the current directory (and any subdirectories).
ruff format path/to/code/ # Format all files in `/path/to/code` (and any subdirectories).
ruff format path/to/code/*.py # Format all `.py` files in `/path/to/code`.
ruff format path/to/code/to/file.py # Format `file.py`.
ruff format @arguments.txt # Format using an input file, treating its contents as newline-delimited command-line arguments.
ruff format . # Format all files in current directory
3🔥2👍1
Valgrind является многоцелевым инструментом профилирования кода и отладки памяти для Linux на x86, и, начиная с версии 3 и AMD64. Это позволяет запускать программу в собственной среде Valgrind, что контролирует использование памяти, например, вызовы malloc и free (или new и delete в C++). Если вы используете неинициализированную память, записываете за пределами концов массива, или не освобождаете указатель, Valgrind может это обнаружить. Поскольку это наиболее распространенные проблемы, эта статья будет сосредоточена главным образом на использовании Valgrind для обнаружения простых проблем с памятью, хотя Valgrind — это инструмент, который может сделать гораздо больше.

http://cppstudio.com/post/4348/
5👍1🔥111