Pull to refresh
33
Роман@blackarrow

User

2
Subscribers
Send message

Асинхронность в Python для senior interview: от asyncio до выбора правильной реализации под задачу

Level of difficultyHard
Reading time14 min
Reach and readers7.1K

Асинхронность в Python — одна из тех тем где на собеседовании начинают плыть.

Почему await не делает код параллельным?
Как на самом деле работает event loop?
Когда asyncio — правильный выбор, а когда лучше использовать потоки или процессы?

В этой статье разберём асинхронность с прицелом на senior Python интервью: не с точки зрения API, а с точки зрения того, как всё устроено под капотом и как об этом правильно рассуждать.

Материал рассчитан на тех, кто хочет не просто отвечать по документации, а уверенно объяснять поведение системы и принимать инженерные решения.

Подробнее

Инкапсуляция в Python: property, name mangling и никаких кофемашин

Level of difficultyEasy
Reading time11 min
Reach and readers11K

Когда разработчики приходят в Python из Java или C++, у них часто случается культурный шок. Они безуспешно ищут модификаторы private или protected и задают логичный вопрос: «А как здесь вообще прятать данные?»

Добро пожаловать в мир, где язык вам доверяет, а Гвидо ван Россум говорит: «Мы здесь все взрослые люди». В новой статье разбираем архитектурный дзен Python:

🔹 Почему двойное подчеркивание (__) — это не аналог private (и как его взломать в одну строчку).
🔹 Почему классические геттеры и сеттеры в Python — это антипаттерн.
🔹 Как элегантно защитить данные с помощью @property, дескрипторов и slots.
Никаких заезженных метафор про пульты от телевизора. Только суровая (и красивая) реальность Python-way.

Читать далее

Python на Хабре

Reading time7 min
Reach and readers459K
Некоторое время назад, в силу определенных причин, мне пришла в голову мысль о том, чтобы начать изучать какой-нибудь новый язык программирования. В качестве альтернатив для этого начинания я определил два языка: Java и Python. После продолжительного метания между ними и сопутствующих нытья и долбежки головой о стену (у меня с новыми языками всегда так — сомнения, раздумья, проблема выбора и т.д.), я все-таки остановился на Python. Окей, выбор сделан. Что дальше? А дальше я стал искать материал для изучения…
Читать дальше →

Перестань вайбкодить: почему «разработка на расслабоне» убьет твою карьеру

Level of difficultyEasy
Reading time7 min
Reach and readers55K

Ты пишешь код быстрее, чем когда-либо. IDE угадывает твои мысли, тикеты закрываются. Кажется, что ты хакнул систему и поймал тот самый «вайб». Но есть нюанс: если завтра отключат интернет и помощников, сможешь ли ты написать сложную логику с чистого листа?

Читать далее

«Джуны старше 50 лет никому не нужны». Как я сменил воинскую службу на IT в 53 года

Reading time7 min
Reach and readers71K

На рынке по-прежнему держится норма: после 40–50 лет карьеру лучше не трогать. Я 30 лет служил в морской авиации, а перед выходом на пенсию понял, что у меня остаётся немного вариантов для заработка — один из них: устроиться охранником в школу за 30 000 рублей с гордой надписью Security на курточке. Рассказываю, как решил поменять профессию, через что пришлось пройти и как в итоге в 53 года стал тестировщиком программного обеспечения.

Читать далее

Архитектура слежки: Сравнительный анализ приватности веб-браузеров

Level of difficultyMedium
Reading time21 min
Reach and readers23K

Ваш браузер — это окно в интернет или двустороннее зеркало? По умолчанию многие из них спроектированы как настоящие терминалы для сбора данных.

Внутри статьи — детальный разбор телеметрии, оценка уровня шпионажа и, самое главное, исчерпывающее практическое руководство. Вы узнаете, как превратить Firefox в крепость с помощью about:config и настроить AdNauseam для тотальной блокировки слежки. Пора вернуть контроль над своей приватностью.

Читать анализ и руководство

Делаем интерфейс дружелюбнее. Коллекция простых HTML/CSS лайфхаков

Level of difficultyMedium
Reading time6 min
Reach and readers22K

Привет, Хабр.

Красивый и интуитивно понятный интерфейс — это моя личная страсть. Я тратил дни, чтобы докрутить свои проекты до нужного мне уровня. В итоге я начал систематически собирать приёмы HTML и CSS, которые мгновенно улучшают восприятие пользователя.

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

Давайте посмотрим, что я вам подготовил.

Читать далее

Не обижайте Django

Level of difficultyEasy
Reading time5 min
Reach and readers14K

Чем популярнее становится FastAPI, тем сильнее критикуют Django. И не просто критикуют. Брезгуют? Пренебрегают? Всего понемножку. Всё чаще слышу, что Django — пережиток прошлого. Любой проект на Django — устаревший мусор. Любой «джанговод» — просто не знает, что тоже устарел. Объективно ли это? Нет, не объективно. Если отвёртка плохо забивает гвозди, это не значит, что отвёртки устарели — просто это не их задача.

Читать далее

Изучаем Python: модуль sys для начинающих с практическим домашним заданием

Level of difficultyEasy
Reading time9 min
Reach and readers25K

Практическое руководство по модулю sys для начинающих. Разбираем, как научить Python-скрипты принимать аргументы командной строки, управлять потоками ввода-вывода и корректно завершать работу. Материал подкреплен пятью задачами с автотестами на GitHub.

Читать далее

Вайб-кодинг глазами старого разработчика

Level of difficultyEasy
Reading time14 min
Reach and readers103K

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

Конечно, в крупных проектах такое стремление к лаконичности совершенствованию ни к чему. Очень часто мы даже не можем заранее сформулировать ТЗ и двигаемся шагами, только постепенно понимая направление совершенствования нашего проекта. Современные среды разработки заточены на диалог с ИИ-агентом, который по шагам добавляет функциональность в наше приложение, исправляет возникшие ошибки и т.д.

Эта статья содержит разбор эксперимента по вайб-кодингу, проведённого oldschool-разработчиком с 20+ летним стажем (Assembler, 1C, C/C++, Go, Pascal, Perl, PL/SQL, Python). Я покажу:

• В каких случаях вайб-кодеру достаточно минимальных знаний предмета, а в каких необходимы экспертные навыки и опыт?

• Что изменилось в инструментах вайб-кодинга за текущий год, и что изменится в ближайшем будущем?

• Сравним обычные и «премиум» языковые модели.

• Поймём, есть ли предел у диалога с ИИ-ассистентом, и как понять, что он достигнут?

Читать далее

Эти пугающие производные, градиенты, матрицы Якоби и Гессе

Level of difficultyMedium
Reading time6 min
Reach and readers41K

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

Читать далее

Болезнь «ООП головного мозга»

Reading time3 min
Reach and readers126K

(Объектно-Ориентированное Помешательство)

Описание

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

Узнать шокирующую правду

Хакерские утилиты Дидье Стивенса

Level of difficultyMedium
Reading time6 min
Reach and readers54K


Дидье Стивенс — бельгийский разработчик и авторитетный специалист по информационной безопасности. Наиболее известен своими инструментами по взлому паролей Windows, анализу документов PDF и внедрению туда вредоносных файлов, а также как автор опенсорсных утилит Didier Stevens Suite: это 140 программ для системных операций с файлами, процессами, реестром и прочими штуками. Например, диспетчер задач Windows, реализованный в Excel/VBA (на КДПВ).
Читать дальше →

Фундаментальная математика — теория всего в IT и не только. Теория типов и формализация в Coq

Reading time38 min
Reach and readers27K

У нас есть 3 "теории всего" - научная картина мира (все сводится к законам физики), информатика (все сводится к битам) и фундамент математики (все сводится к логике). Именно фундамент математики представляет особый интерес, так как он является фундаментом для двух других фундаментов и имеет глубокий философский смысл. Последние 2 года я сильно им увлекся и проделал довольно большую работу по углубленному изучению теории типов (Calculus of Constructions), и готов поделиться результатами, а также рассказать о девяти направлениях, где можно применить это на практике. Очень многое получилось лучше, чем я планировал. Изначально перспективы были не очень понятными, и поэтому я не рассказывал друзьям и коллегам про мою работу в этом направлении и называл это «Секретный Проект». Но теперь, когда многое прояснилось и получилось, можно поделиться успехом. Собственно, в этой статье я расскажу вам не только про сам фундамент математики, а еще его связь с ежедневной работой программиста, а также с Computer Science/Data Science и AI/ML. Я вам нарисую большую и красивую картину, на которой все понятно и логически следует из маленького набора правил выведений типов (11 штук) и аксиом теории множеств (9 штук).

У нас есть 3 фундамента математики — теория множеств (удобна для человека), теория типов (удобна для компьютера) и теория категорий (не знаю, зачем она вообще нужна). Они примерно одинаковой мощности и одну можно выразить внутри другой. Особый интерс представляет именно теория типов, тк ее довольно легко можно запрограммировать внутри компьютера и использовать как строгий фундамент для других теорий, который не дает совершить ошибку и проверяет каждое ваше действие.

Читать далее

Как типы делают сложные задачи простыми

Level of difficultyMedium
Reading time20 min
Reach and readers33K

Последнюю пару лет мой мозг программиста всё больше увлекался типами, принципами функционального программирования и Typescript. По большей мере на это повлияло огромное количество времени, потраченное мной на кодовую базу Heartbeat — фулстек-приложения из трёхсот тысяч строк на Typescript, включающего в себя веб-приложение React, мобильное приложение React Native и сервер Node.js. Мой опыт работы с этой кодовой базой показал мне, что чем больше я полагаюсь на систему типов, тем больше пользы из этого извлекаю.

Написание кода в кодовой базе, полностью сделавшей упор на типы, похоже на жульничество. Часто я могу реализовать 80% новой фичи, ни разу не запустив код. Я начинаю работать над крупным рефакторингом, требующим нарушить допущение, принятое во всём коде, но вскоре выясняю, что благодаря системе типов изменения оказываются тривиальными. Простые фичи практически кодируют себя сами, потому что опечатки мгновенно отлавливаются, а половина моего кода пишется автодополнением. На вопросы от команды техподдержки о тонкостях работы какой-то фичи можно ответить при помощи Ctrl+F в коде, даже если письменной документации почти нет. Целые категории багов, с которыми мне приходилось бороться, попросту исчезли.

Я начал называть стиль кодинга, позволяющий реализовать подобное, Type Driven Development. В статье я приведу разрозненные мысли и ссылки на ресурсы, сильно повлиявшие на то, как я понимаю type driven development.
Читать дальше →

Бесплатное обучение фулстек-разработке веб-сервиса с нуля по видео-урокам с исходным кодом и поддержкой

Level of difficultyMedium
Reading time7 min
Reach and readers79K

TLDR. Я примерно год создавал курс из 141 урока. Курс получился хороший, все кто проходят рады и пишут положительные отзывы. Я пытался его продавать, в лучшем случае у меня получалось отбивать рекламу в ноль. Короче, я хороший разработчик, я хорошо доношу материал, но я плохой маркетолог. Все эти таргреты, ретаргеты, воронки, шморонки — тоска унылая. Мне гораздо веселее и понятнее заработать на создании и запуске IT-продуктов, чему я и учу в этом учебнике. Так что пишу эту статью, чтобы сообщить вам о существовании моего курса и предложить всем желающим абсолютно бесплатно получить от него пользу 🙂

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

Читать далее

Регулярные выражения простыми словами. Часть 2

Level of difficultyEasy
Reading time10 min
Reach and readers43K

Разработчики делятся на три типа: те, кто уже понимает регулярные выражения и порой решает сложные задачи одной строкой; те, кто все еще боится их и всячески избегает; и те, кто уже прочитал первую часть этой серии статей и полон оптимизма разобраться с этими магическими письменами. Эта статья специально для третьих, чтобы им было проще стать первыми.
Читать дальше →

Почему я скептично отношусь к переписыванию JS-инструментов на «быстрых» языках

Level of difficultyMedium
Reading time6 min
Reach and readers32K

Я написал много JS-кода, и мне нравится JavaScript. Самое же главное, я выработал необходимые навыки для понимания, оптимизации и отладки этого кода, от которых не хочу отказываться.

Поэтому у меня вполне естественно возникает беспокойство по поводу охватившей сферу разработки одержимости переписывать каждый инструмент Node.js на быстрых языках вроде Rust, Zig, Go и прочих. Причём ценность этих языков я нисколько не преуменьшаю. Я даже принимал некоторое участие в разработке Servo, да и на столе прямо сейчас передо мной лежит книга по Rust. Но в целом основную часть своей карьеры я вложил в освоение всех нюансов JavaScript, и на данный момент этот язык для меня самый удобный.

Так что я признаю свою предвзятость (и, возможно, чрезмерный акцент на одном наборе навыков). Но, чем больше я об этом думаю, тем больше понимаю, что у моего скептицизма есть также обоснованные причины, о которых и пойдёт речь в текущей статье.
Читать дальше →

Это база. Алгоритмы сортировки для начинающих

Reading time11 min
Reach and readers152K

Привет! В этой статье я расскажу о двух алгоритмах сортировки: Quick Sort и Merge Sort. Объясню, как они работают, как выглядят примеры кода на Python и Java, а также — как выбрать подходящий алгоритм под ваши задачи. Подробности — под катом.
Читать дальше →

Шаблоны для эффективной работы с DOM с помощью современного чистого JavaScript

Level of difficultyMedium
Reading time11 min
Reach and readers25K



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

Читать дальше →
1
23 ...

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Registered
Activity