Как стать автором
Обновить
34
0
Роман @blackarrow

Пользователь

Отправить сообщение

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

Время на прочтение3 мин
Количество просмотров62K

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

Описание

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

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

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

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


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

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

Время на прочтение38 мин
Количество просмотров12K

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

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

Читать далее

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

Время на прочтение11 мин
Количество просмотров24K

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

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

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



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

Читать дальше →

Необычные приёмы отладки, которые браузер от вас скрывает

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

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

С некоторыми методами лечения пора бы уже завязывать

Время на прочтение10 мин
Количество просмотров16K
Около тридцати лет назад появились композитные материалы, один в один похожие на собственные зубы. Они отлично приклеивались, долго служили и были весьма эффективны во множестве ситуаций. Примерно тогда же у нас появились по-настоящему хорошие имплантаты.

Стоматологи поняли, что вот теперь-то можно эстетично решить огромное количество задач, не сильно напрягаясь, расслабились и стали сверлить зубы намного смелее. И это печально. Потому что мысль о том, что сохранять живые ткани пациента в объёме, полученном от матушки-природы, гораздо круче, чем менять их даже на очень красивые коронки. И мы снова возвращаемся к важности профилактики и гигиены и говорим о том, что без качественного ухода и без поддерживающей терапии хорошей стоматологии мы обеспечить не можем.

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

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

Моноколесная рапсодия: не самый банальный способ путешествовать, тренироваться и ездить в булочную

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

Привет, я Артемий, Senior Developer в МТС Диджитал. Сегодня расскажу про хобби, которое освоил еще до роста популярности самокатов. Мой транспорт — моноколесо. Точнее, их несколько: маленькое — для поездок в офис, среднее — для оффроуда и большое — для проезжей части. Мой любимый вид отдыха — поездки на моноколесах по горам, где проехать могут только эндуро-мотоциклы и лошади. Сложно ли на них ездить и опасно ли это, рассказываю под катом.

Читать далее

Что нужно знать о современном CSS (весна 2024 года)

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

Цель этого руководства — познакомить вас со списком новых (потрясающих) возможностей, недавно появившихся в CSS.

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

Читать далее

Давайте сделаем крупное приложение на Flask (язык Python)

Время на прочтение18 мин
Количество просмотров22K

На Хабре я часто вижу статьи о реализации тех или иных фич на Python-фреймворках. Я объединил все эти фичи в реальный проект с открытым исходным кодом, чтобы у вас сложилась целостная картина. Мы с вами создадим UX/UI на Figma, напишем фронтенд на HTML, CSS, SASS, Bootstrap и JavaScript, создадим ER-диаграмму в MySQL Workbench, напишем бекэнд на Flask, создадим регистрацию через социальные сети OAuth 2.0 в один клик, используем брокер сообщений и асинхронную очередь Celery для отправки писем на электронную почту, сделаем WYSIWYG-редактор, реализуем полнотекстовый поиск Elasticsearch, закешируем Redis, покроем тестами pytest и запустим в Docker-контейнерах, поговорим о многопроцессности для WSGI-шлюза Gunicorn.

Читать далее

Как фронтендер сертификацию PostgresPro сдавал

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

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

Я хочу поделится тем, каким образом я подготовился к сертификации. Какого рода вопросы были. Насколько сложно это было для человека, который о СУБД не знал ничего и пользовался БД на уровне элементарных запросов. И не большая часть моих размышлений на тему того на сколько это вообще нужно.

Читать далее

Бэкэнд для начинающих или типовые ошибки бэкэндера

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

Всем привет! Я Олег, fullstack‑разработчик в компании Тензор, тимлид небольшой команды.

Одна из моих обязанностей в роли тимлида это code review. За годы работы я видел многое и выделил для себя типовые ошибки, с которыми сталкиваются начинающие backend‑разработчики. Сегодня хочу рассказать о некоторых из них.

Читать далее

Как начать писать на Java в VSCode

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

Давайте признаемся: подавляющее большинство пишет Java код, используя JetBrains IntelliJ IDEA Ultimate. Да, это отличная IDE. Для нее есть большое количество расширений, среда очень тесно интегрируется с Spring Framework и знает его особенности.

Тогда зачем пробовать что‑то другое?

Привет, Хабр! Меня зовут Константин Шибков, я Java‑разработчик в CDEK.

В какой‑то мере все Java‑разработчики стали заложниками IDEA. Она так привычна, что нет желания пробовать другое. Ведь всё такое удобное и знакомое за столько лет использования.

Но если у вас есть трудности с доступом к Ultimate версии, а Community вариант не достаточно функционален — самое время попробовать современную альтернативу — Visual Studio Code.

В статье делюсь опытом подготовки среды разработки и изучения вопроса: «А можно ли перейти на VSCode?».

Перейти на VSCode

Сложнейшая проблема компьютерных наук: центрирование

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

Заявляю: «Мы, как цивилизация, разучились использовать центрирование». Ну то есть мы, конечно, знаем, как это делать — очень просто:

display: flex;
justify-content: center; /* Горизонтальное центрирование */
align-items: center; /* Вертикальное центрирование */

Не спрашивайте, почему вам нужно запомнить четыре слова вместо просто горизонтальное/вертикальное; всё равно лучше, чем было до этого.

Ещё можно использовать сетку:

display: grid;
justify-items: center; /* Горизонтальное центрирование */
align-items: center; /* Вертикальное центрирование */

Также не спрашивайте, почему выражение justify-content стало justify-items.
Читать дальше →

Разбираем научпоп Ксении Собчак — в защиту ортодонтов

Время на прочтение15 мин
Количество просмотров16K
image

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

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

Как бывший хирург и действующий владелец сети клиник хочу выступить в защиту ортодонтов и разобрать передачу.

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

В общем, заходите в гости к слегка недовольному врачу.
Читать дальше →

Мега-Учебник Flask Глава 1: Привет, мир! (издание 2024)

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

Добро пожаловать! Вы собираетесь отправиться в путешествие, чтобы научиться создавать веб‑приложения с помощью Python и фреймворка Flask. В этой первой главе вы узнаете, как настроить проект Flask. К концу этой главы на вашем компьютере будет запущено простое веб‑приложение Flask!

Начать изучение
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Зарегистрирован
Активность