Обновить
1087.05

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

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

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

Я вернулся в 2000-й и поймал ILOVEYOU

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

Хочу перенестись в нулевые, чтобы рассказать и показать, как работал ILOVEYOU. Для этого запускаю машину времени и рассказываю:

Что бы случилось с моим компом в нулевые.
Как вирус взломал 45 миллионов компьютеров?
Почему Windows 2000 оказалась особенно уязвимой?
Как автор избежал наказания?

Читать и отправиться в 2000-й

Яндекс обновляет процесс найма разработчиков. Рассказываю, почему мы пошли на такой шаг

Время на прочтение9 мин
Охват и читатели45K

Всем привет! Меня зовут Олег Смоляков, в Яндексе я больше 15 лет занимался разработкой, а теперь отвечаю за улучшение процесса найма разработчиков.

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

TLDR: мы решили обновить процесс найма, вместо порой хаотичных собеседований в каждом отдельном сервисе внедряем единую систему оценки по профессии и уровню (например, «Senior C++ Developer»), кандидат, успешно прошедший оценку навыков, теперь сможет претендовать на аналогичные вакансии в любом из 90+ сервисов компании, а всё это вместе делает процесс найма прозрачным, понятным, без дублирования технических интервью и в целом эффективным для всех участников.

А теперь подробнее о том, почему мы на это пошли и как всё устроено.

Читать далее

Глобальный упадок качества ПО: как катастрофа стала нормой

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

Утечка оперативной памяти в Apple Calculator достигает 32 ГБ.

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

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

Мы урегулировали программные катастрофы такой степени, что утечка 32 ГБ в калькуляторе уже не удивляет. И дело не в ИИ. Кризис с качеством ПО начался за несколько лет до появления ChatGPT. ИИ лишь стал дополнительным инструментом в руках некомпетентных людей.

Читать далее

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

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

Мне повезло в жизни, так как моя учительница русского языка и литературы в старших классах была педагогом с большой буквы. В выпускном классе мы особенно любили пятничные уроки литературы - читали стихотворение малоизвестного (нам) поэта или слушали песню какой-нибудь рок-группы и писали мини-сочинение об услышанном За спиной у нашей учительницы висел небольшой плакат с правилами и рекомендациями по написанию текстов. На эти правила она указывала, когда объясняла, как улучшить нашу малограмотную подростковую писанину.

Одно из правил - буквально слово в слово - я недавно встретил в одном популярном эссе о написании кода без ошибок (я расскажу об этом правиле позже). Мне стало любопытно, насколько применимы остальные правила со школьного плаката (короткий ответ – да), и есть ли у этого обоснование. Я немного зарылся в литературу, и вот что понял.

Читать далее

Горе от Ума — почему IT-проекты пишутся долго и стоят дорого (иногда)

Время на прочтение6 мин
Охват и читатели16K

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

Готовится релиз. Сроки подходят. Мне скидывают странный баг: Наше приложение вдруг стало жаловаться на невозможность соединиться с соседним.

А почему не может? Защищённое соединение не устанавливается.

А почему не устанавливается? Файлы сертификатов для этого соединения не удаётся загрузить.

А почему файлы не грузятся? А потому что путь к файлам "отсутствует в конфигурации".

А если руками залезть и глазами посмотреть - присутствует. Чудеса! Эффект Шрёдингера!

Ну и что это за грязная магия?

Делаем увлажнитель чуть умнее с ESP8266

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели17K

Привет Хабр! Как-то так случилось, что кто-то очень хитрый, в одном НИИ, подключил обычный бытовой увлажнитель BALLU UHB-1000 к фитотрону(ака гроубоксу). Вот и встала задача добавить управление этим устройством.

Читать далее

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

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели26K

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

Читать далее

Как Windows покорила мир. История самой популярной ОС

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели14K

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

Читать далее

Великий крах качества программного обеспечения: как мы нормализовали катастрофу

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

Мы переживаем величайший кризис качества программного обеспечения в истории вычислительной техники. Калькулятор теряет 32 ГБ оперативной памяти. ИИ-помощники удаляют рабочие базы данных. Компании тратят 364 миллиарда долларов, чтобы избежать решения фундаментальных проблем.

Читать далее

Ссылочный тип данных в JavaScript: ключ к эффективному коду

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели13K

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

Привет, Хабр! Меня зовут Александр Дудукало, я автор базового курса по JavaScript.  В этой статье я простыми словами расскажу, как работают ссылки, почему это важно знать и как правильно копировать объекты.

Читать далее

Распродажа в издательстве «Питер»

Время на прочтение1 мин
Охват и читатели14K

Привет, Хаброжители!

O’Reilly становится ближе! На книги из категории O'Reilly и Head First O'Reilly действуют скидки, теперь ваши любимые бестселлеры доступны ещё выгоднее!

Читать далее

Паттерны ООП, так не издевались даже… Структурные шаблоны с примерами на Java

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

Привет! Меня зовут Бромбин Андрей. В этой статье разберём структурные паттерны ООП. Используя примеры на Java и простые метафоры, поймём природу шаблонов: как они работают, зачем нужны и чего требуют от нас взамен. Почему дизайн называют удачным при использовании паттернов по назначению, и почему так бывает не всегда.

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

Шаблонизироваться

Выжимаем из Go скорость до последних наносекунд

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

Будем оптимизировать программы на Go. Выжимать последние наносекунды, чтобы код приближался по скорости к Си или ассемблерному. Цель - скорость, чтобы процессор был загружен на 100% при высокопроизводительные вычислениях.

Читать далее

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

Запускаем сервер в Minecraft: исследование конкурентов

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

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

Теперь, набив собственных шишек, я готов заглянуть к «соседям». Чем они завлекают свою аудиторию? Есть ли уникальные игровые механики? Какие плагины используются и какие ограничения в игровом мире? Paper или Spigot? Velocity или BungeeCord?  

Этот текст подходит даже тем, кто никогда не занимался администрированием и не планировал — в процессе исследования я нашел множество потех.

Читать далее

Для чего компании требуют высшее образование в IT

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

Всем привет! Меня зовут Алексей, я техлид Android направления в компании Домклик.

На одном из собеседований зашла с кандидатом дискуссия об образовании. И была произнесена примерно такая фраза: «Зачем тратить 4–6 лет на обучение в вузе, если нужные по вашей вакансии навыки можно получить за год?» Пообщавшись ещё с некоторыми недавно вошедшими в отрасль знакомыми, сложилось впечатление, что этим вопросом задаются многие. И действительно, если, условно, на заводе требуется фрезеровщик, и у кандидата есть стаж работы или он окончил профильное училище, то какая разница, получал ли он высшее образование или нет?

Так почему многие крупные компании в ИТ при найме отдают предпочтение кандидатам с «вышкой»? Чем такие специалисты выгодно отличаются от остальных с таким же практическим опытом и профильными знаниями? Попробуем разобраться с этими вопросами и прояснить их. Все предложенные выводы — личное мнение автора и может (и должно) не совпадать с чьим‑либо ещё или общепринятым.

Читать далее

О миграции с Angular на React в деталях

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

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

Меня зовут Александр Марченко. Я руководитель команды Frontend-разработки в ОК. В этой статье я расскажу о особенностях и способах миграции Angular приложения на React, а также поделюсь своим опытом.

Читать далее

Лучшие онлайн-сервисы для анонимных знакомств — ТОП-10 дейтинг сайтов и приложений

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели19K

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

Читать далее

Пограничные случаи HTTP, которые должен понимать каждый разработчик API

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели16K

В феврале прошлого года у интерфейса веб-серверов Rack, лежащего в основе практически каждого приложения Ruby on Rails, был обнаружен CVE-2024-26141. Уязвимость была простой: достаточно отправить запрос файла с сотней байтовых диапазонов, и Rack генерировал неожиданно большой ответ. Серверы продакшена можно было атаковать одиночными HTTP-запросами, пока у них не закончится ресурс памяти или канала.

Усугубляло ситуацию то, что баг затронул широкий диапазон версий: от 1.3.0 и выше; это означало, что уязвимыми оказались приложения, которые писали с 2011 года. Многие разработчики тратили все свои выходные на установку патчей.

Это пример того, как простой неправильно обрабатываемый пограничный случай HTTP может нанести существенный ущерб. И не потому, что мы плохие разработчики, а потому, что HTTP сложен. В идеальном случае всё работает замечательно. Но потом наступает продакшен.

Читать далее

Придумал расширение для Chrome и устранил шахматных читеров

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели16K

Поисковая выдача по запросу «chrome extension for cheating in chess» переполнена. Инструментов для нечестной игры — десятки.

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

Удивительный дисбаланс, не правда ли?

Обо всем по порядку

Я спарсил 150.000 вакансий и понял, почему TIOBE бесполезен

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

Насколько популярные рейтинги соответствуют реальному спросу на рынке труда? Собрал данные о 150 000+ вакансий с hh.ru и других площадок. Результаты оказались неожиданными...

Читать далее

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