Как стать автором
Обновить
839.31

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Zen of Python: история, реализация и пасхалки

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров608

В мире программирования на Python существует особая философия, представляющая собой специальный документ под названием Zen of Python (Дзен Python). Он включает принципы, направленные на написание ясного, простого и элегантного кода на Python. В этой статье мы поговорим об истории создания этого документа, его реализации и пасхалках, связанных с ним.

Читать далее
Всего голосов 24: ↑24 и ↓0+24
Комментарии0

Новости

Как работает Python Asyncio: воссоздаем с нуля

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров264

Автор оригинала: Jacob Padilla

Сейчас asyncio — одна из самых модных тем в Python, и это справедливо — это отличный способ обработки программ, связанных с вводом-выводом! Когда я изучал asyncio, мне потребовалось некоторое время, чтобы понять, как это на самом деле работает. Но позже я узнал, что это по сути просто очень хороший слой поверх генераторов Python. В этой статье я собираюсь создать упрощенную версию asyncio, используя только генераторы Python. Затем я собираюсь реорганизовать пример, чтобы использовать ключевые слова async и await с помощью dunder-метода __await__, прежде чем замкнуть круг и заменить свою версию на настоящий asyncio. Надеюсь, создав простую версию asyncio в конце этой статьи, вы сможете лучше понять, как он творит свою магию!

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Превращаем игроманию в полезное времяпрепровождение! (1-я часть)

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров1.1K

Добрый день, хабр! Сегодня подготовил подборку занимательных игр для детей, чтобы прокачать мозги и узнать что такое программирование и с чем его едят...

Читать далее
Всего голосов 4: ↑4 и ↓0+6
Комментарии3

Xv6: увеличим размер страниц виртуальной памяти с 4Кб до 2Мб

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров1.2K

Научим xv6 работать с виртуальными страницами размера 2 Мб, узнаем, как компоновщик создает образ памяти программы и научим файловую систему xv6 справляться с большими файлами.

Пример: Пусть программа занимает 4 Мб памяти. Размер страницы - 4 Кб. Программа займет (1024 * 1024 * 4) / (1024 * 4) = 1024 страницы памяти. ОС избавит процессор от лишней работы, если увеличит размер страницы до 2 Мб - тогда программа займет 2 страницы.

Читать далее
Всего голосов 5: ↑5 и ↓0+7
Комментарии0

Истории

Рекурсия в Java с примером решения задачи с LeetCode

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров814

Рекурсивные методы в Java — это методы, которые вызывают сами себя и требуют осторожности с их обращением.

Чтобы не увидеть «StackOverflowError» на экране, нужно помнить о двух штуках: базисе и шаге рекурсии.

Базис — это условие выхода из рекурсии, а шаг — это вызов методом самого себя с измененными параметрами.

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

Читать далее
Всего голосов 2: ↑1 и ↓1+2
Комментарии5

Тестируем качественные характеристики. Как сделать сложное простым

Время на прочтение7 мин
Количество просмотров486

Привет, Хабр! Меня зовут Юрий Заковряшин. Я занимаюсь разработкой ПО более 40 лет, преподаю курсы по технологиям разработки программного обеспечения и программированию на платформе Java в СПбПУ Петра Великого.

В этой статье я расскажу о некоторых приемах в разработке тестов, которые позволяют на практике избежать серьезных пробелов в тестировании качественных характеристик программных систем. Статья предназначена для начинающих тестовых инженеров, но может быть полезной и более опытным разработчикам.

Читать далее
Всего голосов 4: ↑4 и ↓0+6
Комментарии0

Бот в блокноте: Создаем и запускаем бота для тайных покупателей

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров465

В этой статье я расскажу, как с помощью написанного мною конструктора «Бот в блокноте» легко и просто создать телеграм-бота, не имея ни малейших знаний о программировании. Вам не понадобятся блок-схемы, переменные или магические заклинания. Вместо этого, вы сможете собрать своего бота для программы "Тайный покупатель", а также для сбора и обработки статистики по ней.

Конструктор «Бот в блокноте» — это интуитивно понятный инструмент, созданный специально для тех, кто хочет автоматизировать свои задачи без лишних сложностей. С его помощью вы сможете быстро и эффективно настроить телеграм-бота, который поможет вам в реализации проекта «Тайный покупатель».  Посетите демо-страницу https://BotPad.ru, чтобы увидеть его в действии.

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии2

Эволюция потребностей в работе с логами и обогащениями [Оголяемся технологически. MaxPatrol SIEM]

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров736

Всем привет! Эволюция потребностей и возможностей обработки логов в SIEM-системах не стоит на месте. И сегодня мы, Иван Прохоров, руководитель продукта MaxPatrol SIEM, и Петр Ковчунов, который пишет экспертизу для этого продукта, разберем наш ответ этому челленджу.

Когда мы проектировали свой продукт, то четко осознавали, что потребность просто в анализе логов или генерации детектов — это не все, что нужно для безопасности. Прямо отказавшись от идеи сделать «еще один SIEM», мы копнули глубже и на архитектурном уровне заложили в продукт функции, которые позволяют органично и бесшовно внедрить решение в систему информационной безопасности компании и обеспечить ей практический результат.

Заглянуть под капот
Всего голосов 5: ↑5 и ↓0+7
Комментарии1

Разработка бессерверного защищённого тайника для передачи сообщений

Уровень сложностиСредний
Время на прочтение21 мин
Количество просмотров3.2K

Однажды я наткнулся на вот эту потрясающую статью (здесь я о ней порассуждал), которая навела меня на одну мысль. Как я подошёл бы к задаче разработки тайника для передачи сообщений? И, если уж мы об этом заговорили — подумаем о том, что нам нужно от подобной системы.

Полагаю, что следующие требования вполне разумны. Они сформулированы по мотивам размышлений о том, зачем вообще нужен защищённый тайник.

Читать далее
Всего голосов 10: ↑9 и ↓1+15
Комментарии7

Случайные блуждания: связь с резистивным расстоянием (часть 1)

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров559

Эта первая статья из цикла работ, посвящённых связи сопротивления и случайных блужданий.

Сперва мы пройдёмся по теоретическим аспектам изучаемых предметов, далее напишем скрипты для расчётов и проведём анализ полученных результатов.

Читать далее
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Использование данных о процессе программирования для выявления различий в моделях программирования студентов

Уровень сложностиПростой
Время на прочтение20 мин
Количество просмотров239

Анализ данных о процессе выполнения студентами заданий по программированию может дать преподавателям информатики представление об их учениках и процессах, с помощью которых они учатся программировать. В предыдущей работе мы разработали статистическую модель, которая точно предсказывает оценки студентов за домашние задания. В этой работе мы исследуем связь между путями, которые проходят студенты через состояния программирования, на которых основана наша статистическая модель, и их общей успеваемостью. Изучение частоты наиболее распространенных путей перехода выявило значительные различия между студентами, получившими пятерки, четверки и тройки по курсу CS 2. Наши результаты показывают, что а) студенты с разным уровнем успеваемости по-разному подходят к решению задач по программированию и б) эти различия могут быть автоматически обнаружены, что открывает возможность их использования в педагогических целях.

Читать далее
Рейтинг0
Комментарии0

React Hook Form: создание сложных форм для начинающих

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров646

Сегодня рассмотрим важную тему для всех, кто занимается созданием сложных и многошаговых форм в React. Мы все знаем, как это бывает: бесконечные рендеры, тонны кода для валидации и управления состоянием, а также бесконечная борьба за оптимизацию производительности. Но никто уже давно не отчаивается, ведь существует мощное и гибкое решение React Hook Form.

React Hook Form — это библиотека, которая использует концепцию неконтролируемых компонентов, чтобы минимизировать количество повторных рендеров и повысить производительность приложения.

Данная статья полезна для новичков, которые только начинают работать со сложными формами в React.

Читать далее
Всего голосов 3: ↑2 и ↓1+4
Комментарии0

Удобная навигация в SwiftUI для iOS 16 и выше

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров427

Не будем мусолить всем известную проблему с навигацией в SwiftUI до 16 iOS, так как уже много крутых статей на эту тему есть в открытом доступе. Близится релиз 18 iOS, а это значит, что минимальные таргеты поднимутся на единичку ближе к 16 🥳

В данной статье хочу представить на `мой взгляд` наиболее удобную реализацию навигации на NavigationStack. Разумеется в концепции старого доброго MVVM, поэтому фанаты UDF извините 😜

Читать далее
Всего голосов 4: ↑4 и ↓0+8
Комментарии0

Ближайшие события

Работа с массивами по новому. React Custom Hook: useArray

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров650

В этой серии статей мы отправимся в путешествие по миру пользовательских хуков React, открывая для себя их огромный потенциал для улучшения ваших проектов разработки. Сегодня мы сосредоточимся на хуке «useArray», одном из многих тщательно разработанных хуков, доступных в коллекции пользовательских хуков React.

Читать далее
Всего голосов 5: ↑2 и ↓3+1
Комментарии2

Анонимный RAT при глобальном наблюдателе

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров1.9K

Удалённый доступ может быть как очень опасной программной функцией, так и очень полезной - всё зависит от контекста, намерений, задач и целей с которыми подобные программы будут применяться. Такая же ситуация с анонимностью и анонимными коммуникациями в общем. Они могут как скрывать злонамеренную активность, так и скрывать законную активность от посторонних, которым её выявление может быть выгодно как по финансовым, так и по политическим причинам. Вследствие этого, технология остаётся нейтральной, ровно, как и любая полезная, и в это же самое время потенциально опасная вещь.

Читать далее
Всего голосов 6: ↑6 и ↓0+11
Комментарии1

Как студенты двигатель Стирлинга строили

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров7.3K

Хочу рассказать вам историю, как студенты двигатель Стирлинга строили.. Результат вам не скажу). Пусть он будет интригой, как и для, на протяжении всего проекта.

Читать далее
Всего голосов 25: ↑14 и ↓11+8
Комментарии15

Что такое Data-Oriented ECS

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров911

В этой статье пойдет речь о довольно интересной реализации Entity System Component (ECS), а именно о Data-Oriented ECS (DOD ECS). Эта статья подойдет для тех, кто хочет ознакомиться с ECS, а в частности с его DOD ECS реализацией. В этой статье не будут рассматриваться детали конкретных реализаций или оптимизаций, вместо этого в статье будет описана принципиальная разница между классической ECS и DOD ECS, приведены особенности, преимущества и недостатки DOD ECS.

Читать далее
Всего голосов 2: ↑1 и ↓10
Комментарии3

Форматирование строк в Python

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров2K

В мире программирования, особенно при разработке на Python, часто возникает необходимость не просто выводить статические строки, но и динамически встраивать в них данные, чтобы отобразить информацию пользователю в удобном и понятном виде. Это требует использования специальных методов, которые позволяют форматировать строки таким образом, чтобы они могли включать переменные, результаты вычислений и другие динамические элементы.

Эти методы как раз и называются - форматированием строк.

Читать далее
Всего голосов 18: ↑10 и ↓8+3
Комментарии12

Мой ТОП-5 лучших CSS-in-JS решений

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров5.1K

В одном из проектов мне нужно было создать сложную админку для крупного клиента. Интерфейс требовал большо количества интерактивностей, а также поддержку различных тем и динамических стилей. Именно тогда я решил обратить свой взгляд на CSS‑in‑JS библиотеки, и это для меня стало большим открытием.

Ведь стилизация компонентов — основа для создания интуитивно понятных и эстетически приятных интерфейсов. И иногда традиционные методы стилизации, такие как CSS‑файлы или препроцессоры, имеют свои ограничения и могут усложнять сам процесс разработки, чего мы точно не хотим.

Здесь вот и приходят на помощь решения CSS‑in‑JS, объединяющие фичи JS и CSS.

Читать далее
Всего голосов 12: ↑9 и ↓3+10
Комментарии11

Expression Problem и Объектные алгебры

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров1.8K

Expression Problem (EP) — это классическая задача в программировании на совмещение несовместимого.

Автор задачи (Philip Wadler) формулирует следующие цели: создать такую абстракцию, что позволяла бы расширять иерархию в двух направлениях: добавлять новые классы и добавлять новые методы для обработки иерархии, сохраняя при этом строгую статическую типизацию и не требуя изменений существующего кода.

В динамически типизируемых языках мы бы могли добавить или переопределить метод на лету с помощью трюка, ставшего известным под неказистым названием monkey patching (хоть первоначально речь шла совсем не про обезьян, а про партизан — guerrilla).

А вот какие трюки применяют в статически типизированных языках рассмотрим под катом.

Читать далее
Всего голосов 6: ↑6 и ↓0+9
Комментарии2
1
23 ...

Вклад авторов