В мире программирования на Python существует особая философия, представляющая собой специальный документ под названием Zen of Python (Дзен Python). Он включает принципы, направленные на написание ясного, простого и элегантного кода на Python. В этой статье мы поговорим об истории создания этого документа, его реализации и пасхалках, связанных с ним.
Программирование *
Искусство создания компьютерных программ
Новости
Как работает Python Asyncio: воссоздаем с нуля
Автор оригинала: Jacob Padilla
Сейчас asyncio — одна из самых модных тем в Python, и это справедливо — это отличный способ обработки программ, связанных с вводом-выводом! Когда я изучал asyncio, мне потребовалось некоторое время, чтобы понять, как это на самом деле работает. Но позже я узнал, что это по сути просто очень хороший слой поверх генераторов Python. В этой статье я собираюсь создать упрощенную версию asyncio, используя только генераторы Python. Затем я собираюсь реорганизовать пример, чтобы использовать ключевые слова async
и await
с помощью dunder-метода __await__
, прежде чем замкнуть круг и заменить свою версию на настоящий asyncio. Надеюсь, создав простую версию asyncio в конце этой статьи, вы сможете лучше понять, как он творит свою магию!
Превращаем игроманию в полезное времяпрепровождение! (1-я часть)
Добрый день, хабр! Сегодня подготовил подборку занимательных игр для детей, чтобы прокачать мозги и узнать что такое программирование и с чем его едят...
Xv6: увеличим размер страниц виртуальной памяти с 4Кб до 2Мб
Научим xv6 работать с виртуальными страницами размера 2 Мб, узнаем, как компоновщик создает образ памяти программы и научим файловую систему xv6 справляться с большими файлами.
Пример: Пусть программа занимает 4 Мб памяти. Размер страницы - 4 Кб. Программа займет (1024 * 1024 * 4) / (1024 * 4) = 1024
страницы памяти. ОС избавит процессор от лишней работы, если увеличит размер страницы до 2 Мб - тогда программа займет 2 страницы.
Истории
Рекурсия в Java с примером решения задачи с LeetCode
Рекурсивные методы в Java — это методы, которые вызывают сами себя и требуют осторожности с их обращением.
Чтобы не увидеть «StackOverflowError» на экране, нужно помнить о двух штуках: базисе и шаге рекурсии.
Базис — это условие выхода из рекурсии, а шаг — это вызов методом самого себя с измененными параметрами.
Самый частый пример, который можно встретить в интернете при попытке найти информацию о рекурсии — нахождение факториала числа. Быстренько пройдемся по нему перед рассмотрением более интересной задачки с leetCode.
Тестируем качественные характеристики. Как сделать сложное простым
Привет, Хабр! Меня зовут Юрий Заковряшин. Я занимаюсь разработкой ПО более 40 лет, преподаю курсы по технологиям разработки программного обеспечения и программированию на платформе Java в СПбПУ Петра Великого.
В этой статье я расскажу о некоторых приемах в разработке тестов, которые позволяют на практике избежать серьезных пробелов в тестировании качественных характеристик программных систем. Статья предназначена для начинающих тестовых инженеров, но может быть полезной и более опытным разработчикам.
Бот в блокноте: Создаем и запускаем бота для тайных покупателей
В этой статье я расскажу, как с помощью написанного мною конструктора «Бот в блокноте» легко и просто создать телеграм-бота, не имея ни малейших знаний о программировании. Вам не понадобятся блок-схемы, переменные или магические заклинания. Вместо этого, вы сможете собрать своего бота для программы "Тайный покупатель", а также для сбора и обработки статистики по ней.
Конструктор «Бот в блокноте» — это интуитивно понятный инструмент, созданный специально для тех, кто хочет автоматизировать свои задачи без лишних сложностей. С его помощью вы сможете быстро и эффективно настроить телеграм-бота, который поможет вам в реализации проекта «Тайный покупатель». Посетите демо-страницу https://BotPad.ru, чтобы увидеть его в действии.
Эволюция потребностей в работе с логами и обогащениями [Оголяемся технологически. MaxPatrol SIEM]
Всем привет! Эволюция потребностей и возможностей обработки логов в SIEM-системах не стоит на месте. И сегодня мы, Иван Прохоров, руководитель продукта MaxPatrol SIEM, и Петр Ковчунов, который пишет экспертизу для этого продукта, разберем наш ответ этому челленджу.
Когда мы проектировали свой продукт, то четко осознавали, что потребность просто в анализе логов или генерации детектов — это не все, что нужно для безопасности. Прямо отказавшись от идеи сделать «еще один SIEM», мы копнули глубже и на архитектурном уровне заложили в продукт функции, которые позволяют органично и бесшовно внедрить решение в систему информационной безопасности компании и обеспечить ей практический результат.
Разработка бессерверного защищённого тайника для передачи сообщений
Однажды я наткнулся на вот эту потрясающую статью (здесь я о ней порассуждал), которая навела меня на одну мысль. Как я подошёл бы к задаче разработки тайника для передачи сообщений? И, если уж мы об этом заговорили — подумаем о том, что нам нужно от подобной системы.
Полагаю, что следующие требования вполне разумны. Они сформулированы по мотивам размышлений о том, зачем вообще нужен защищённый тайник.
Случайные блуждания: связь с резистивным расстоянием (часть 1)
Эта первая статья из цикла работ, посвящённых связи сопротивления и случайных блужданий.
Сперва мы пройдёмся по теоретическим аспектам изучаемых предметов, далее напишем скрипты для расчётов и проведём анализ полученных результатов.
Использование данных о процессе программирования для выявления различий в моделях программирования студентов
Анализ данных о процессе выполнения студентами заданий по программированию может дать преподавателям информатики представление об их учениках и процессах, с помощью которых они учатся программировать. В предыдущей работе мы разработали статистическую модель, которая точно предсказывает оценки студентов за домашние задания. В этой работе мы исследуем связь между путями, которые проходят студенты через состояния программирования, на которых основана наша статистическая модель, и их общей успеваемостью. Изучение частоты наиболее распространенных путей перехода выявило значительные различия между студентами, получившими пятерки, четверки и тройки по курсу CS 2. Наши результаты показывают, что а) студенты с разным уровнем успеваемости по-разному подходят к решению задач по программированию и б) эти различия могут быть автоматически обнаружены, что открывает возможность их использования в педагогических целях.
React Hook Form: создание сложных форм для начинающих
Сегодня рассмотрим важную тему для всех, кто занимается созданием сложных и многошаговых форм в React. Мы все знаем, как это бывает: бесконечные рендеры, тонны кода для валидации и управления состоянием, а также бесконечная борьба за оптимизацию производительности. Но никто уже давно не отчаивается, ведь существует мощное и гибкое решение — React Hook Form.
React Hook Form — это библиотека, которая использует концепцию неконтролируемых компонентов, чтобы минимизировать количество повторных рендеров и повысить производительность приложения.
Данная статья полезна для новичков, которые только начинают работать со сложными формами в React.
Удобная навигация в SwiftUI для iOS 16 и выше
Не будем мусолить всем известную проблему с навигацией в SwiftUI до 16 iOS, так как уже много крутых статей на эту тему есть в открытом доступе. Близится релиз 18 iOS, а это значит, что минимальные таргеты поднимутся на единичку ближе к 16 🥳
В данной статье хочу представить на `мой взгляд` наиболее удобную реализацию навигации на NavigationStack. Разумеется в концепции старого доброго MVVM, поэтому фанаты UDF извините 😜
Ближайшие события
Работа с массивами по новому. React Custom Hook: useArray
В этой серии статей мы отправимся в путешествие по миру пользовательских хуков React, открывая для себя их огромный потенциал для улучшения ваших проектов разработки. Сегодня мы сосредоточимся на хуке «useArray», одном из многих тщательно разработанных хуков, доступных в коллекции пользовательских хуков React.
Анонимный RAT при глобальном наблюдателе
Удалённый доступ может быть как очень опасной программной функцией, так и очень полезной - всё зависит от контекста, намерений, задач и целей с которыми подобные программы будут применяться. Такая же ситуация с анонимностью и анонимными коммуникациями в общем. Они могут как скрывать злонамеренную активность, так и скрывать законную активность от посторонних, которым её выявление может быть выгодно как по финансовым, так и по политическим причинам. Вследствие этого, технология остаётся нейтральной, ровно, как и любая полезная, и в это же самое время потенциально опасная вещь.
Как студенты двигатель Стирлинга строили
Хочу рассказать вам историю, как студенты двигатель Стирлинга строили.. Результат вам не скажу). Пусть он будет интригой, как и для, на протяжении всего проекта.
Что такое Data-Oriented ECS
В этой статье пойдет речь о довольно интересной реализации Entity System Component (ECS), а именно о Data-Oriented ECS (DOD ECS). Эта статья подойдет для тех, кто хочет ознакомиться с ECS, а в частности с его DOD ECS реализацией. В этой статье не будут рассматриваться детали конкретных реализаций или оптимизаций, вместо этого в статье будет описана принципиальная разница между классической ECS и DOD ECS, приведены особенности, преимущества и недостатки DOD ECS.
Форматирование строк в Python
В мире программирования, особенно при разработке на Python, часто возникает необходимость не просто выводить статические строки, но и динамически встраивать в них данные, чтобы отобразить информацию пользователю в удобном и понятном виде. Это требует использования специальных методов, которые позволяют форматировать строки таким образом, чтобы они могли включать переменные, результаты вычислений и другие динамические элементы.
Эти методы как раз и называются - форматированием строк.
Мой ТОП-5 лучших CSS-in-JS решений
В одном из проектов мне нужно было создать сложную админку для крупного клиента. Интерфейс требовал большо количества интерактивностей, а также поддержку различных тем и динамических стилей. Именно тогда я решил обратить свой взгляд на CSS‑in‑JS библиотеки, и это для меня стало большим открытием.
Ведь стилизация компонентов — основа для создания интуитивно понятных и эстетически приятных интерфейсов. И иногда традиционные методы стилизации, такие как CSS‑файлы или препроцессоры, имеют свои ограничения и могут усложнять сам процесс разработки, чего мы точно не хотим.
Здесь вот и приходят на помощь решения CSS‑in‑JS, объединяющие фичи JS и CSS.
Expression Problem и Объектные алгебры
Expression Problem (EP) — это классическая задача в программировании на совмещение несовместимого.
Автор задачи (Philip Wadler) формулирует следующие цели: создать такую абстракцию, что позволяла бы расширять иерархию в двух направлениях: добавлять новые классы и добавлять новые методы для обработки иерархии, сохраняя при этом строгую статическую типизацию и не требуя изменений существующего кода.
В динамически типизируемых языках мы бы могли добавить или переопределить метод на лету с помощью трюка, ставшего известным под неказистым названием monkey patching (хоть первоначально речь шла совсем не про обезьян, а про партизан — guerrilla).
А вот какие трюки применяют в статически типизированных языках рассмотрим под катом.
Вклад авторов
alizar 4434.2olegchir 3450.6ru_vds 3338.0haqreu 2941.0tangro 2672.2nmivan 2585.0MaxRokatansky 2424.8kesn 2353.0DmitrySpb79 2296.0grigoryvp 2212.2