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

Кодобред

Код, за который должно быть стыдно

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

Бобры-п[р]огромисты

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

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

Бобер-HRобер: я увидела как грызете дерево в соседнем лесу, не хотите перебраться к нам? У нас деревья синие и потолще ваших, зеленые деревья нынче не в моде.
Бобер-погромист: хм, наверное нет, толщина текущих деревьeв меня устраивает.

Бобер-HRобер: ну вы всё-таки приходите, мы заложили пару делянок, где самые опытные бобры будут распиливать очень старую монолитную сосну с ветками длиной 98 см, на доски очень модной нынче длины 23 см, а еще у вас также будет возможность повлиять на толщину досок длиной 26 см.
Бобер-погромист: а вот это интересно, отправляйте соловья.

Через неделю, на комфортабельной полянке где-то в синем лесу.

Senior-Бобер: Итак, вы считаете себя хорошим бобром?
Бобер-погромист: Всё верно. Грызу деревья разной толщины уже лет двадцать.

Lead-Бобер: А ветки какой длины предпочитаете?
Бобер-погромист: Ветки 17см самые вкусные

Бобры идут, бобрам дорогу!
Всего голосов 109: ↑98 и ↓11 +87
Комментарии 27

Новости

Почему проверять результат вызова malloc c помощью assert плохая идея

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

malloc и assert


Указатель, который вернула функция malloc, необходимо проверить перед использованием. Неправильным решением будет использовать для этого макрос assert. В этой статье мы разберём, почему это является антипаттерном.

Читать дальше →
Всего голосов 29: ↑25 и ↓4 +21
Комментарии 117

Следует ли проверять указатель на NULL перед вызовом функции free?

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

Проверка указателя перед вызовом функции free


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

Читать дальше →
Всего голосов 86: ↑85 и ↓1 +84
Комментарии 35

BASHUI

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

BASHUI - это BASH + UI, а не то что вы подумали.

Начиная работать над sshto я решил не переизобретать велосипед, вернее не переизобретать велосипед целиком а только некоторые его части и в качестве "рамы с педалями" использовал dialog. Это значительно ускорило разработку, но идея написать свой UI на баше с блекджеком и всем остальным ни на секунду не покидала мой воспалённый мозг. Звёзды сошлись, и я решил воплотить этот проект в жизнь(в bash). Втречайте BASHUI!

нажми на кнопку
Всего голосов 86: ↑85 и ↓1 +84
Комментарии 44

Истории

Карта мародёров: пусть экзамен сдаёт себя сам

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

Ученикам École 42 в процессе обучения необходимо сдавать экзамен. С учётом того, что в школе существует ачивка за "хацкерство", появилось желание найти способ схитрить. Под катом история небольшой шалости с использованием особенностей HFS+.

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

Сквозь покрытые тайной искусства строки кода: Как я оживил рабочий стол с помощью P/Invoke 🪄

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

В новой публикации мы исследуем сферу магии кода и низкоуровневого программирования. Перед вами увлекательная история, как я смог обрести контроль над рабочим столом, используя лишь небольшие фрагменты C# кода. Вам будет интересно узнать, как я смог покорить мир обоев и сделать их подчиненными волшебства. Не упустите шанс окунуться в мир горячих клавиш и таинственных сообщений Windows API.

В этой истории о магической мощи программирования мы расскажем, как открываются двери к возможностям, о которых вы даже не подозревали. Узнаете ли вы, что стоит за командами, вдохновленными Ctrl+Alt+B и Shift+C? Все это и многое другое ждет вас внутри. Следите за нашим путешествием сквозь замысловатые лабиринты кода и давайте волшебству свободу! ✨

Раскрыть завесу тайны
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 13

Можем ли мы сохранить животных с помощью Golang?

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

Статья, главным образом, состоит из двух частей: описания проблемы и описания ее решения. Там странный юмор. Еще про загрузку файлов что-то, и немного кода на Golang.

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

Я люблю питон, и вот почему он меня бесит

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

Вас приветствует ваш зануда!

Если вы следите за моей ленивой активностью, то заметили бы, что у меня много от чего пригорает. Вот, например:
- У меня пригорает от низкосортных статей на потоке: Питон против Безумного Макса, или как я посты на Хабре замораживал
- У меня пригорает от Django: Окей, Джанго, у меня к тебе несколько вопросов
- И от Яндекса тоже: Собеседование в Яндекс: театр абсурда :/
- И от рекрутеров: Я единственный из 1400, или самый крутой рекрутинг, что я проходил

Посмотришь так - я уже давно должен был сгореть. Но я, аки феникс, возрождаюсь, и сегодня у меня горит от, внезапно, Питона, на котором я пишу больше десяти лет. Если вам интересно, что же, по моему мнению, с ним не так - то прошу под кат.

Это что же получается, kesn опять открыл postman и сломал вёрстку на сайте? Поразительно, никогда такого не было, и вот опять! В принципе, тут можно писать текст любой длины (похоже, у них на бэкенде не Char(255), а Text). Они проверяют длину только на фронтенде, а бэкенд принимает строку любой длины. И это, блин, забавно) Вообще мой девиз - 'кто ищет, тот всегда найдёт', поэтому я ищу постоянно. Кстати, на Хабре скоро выйдет статья про программирование глазами Погромиста, там в том числе про уязвимости на сайтах будет - поэтому если не хотите пропустить, то подписывайтесь на меня в телеге: @blog_pogromista
Всего голосов 248: ↑238 и ↓10 +228
Комментарии 143

Игра «Жизнь» в одном твите

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

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

В одно прекрасное воскресенье, потягивая пиво и размышляя о жизни, я вдруг подумал: а можно ли вместить JavaScript-реализацию игры «Жизнь» в один твит? И не смог устоять перед желанием попробовать свои силы. 

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

Признаюсь: я писал поддельный экран загрузки

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

На выходных посмотрел видео Алексея Макаренкова с заголовком “Полоса загрузки - не то, чем кажется…”, где он рассказывает как разработчики игр мухлюют с полосой загрузки. Если кратко: это всё обман!

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

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

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

Приподнимем завесу...
Всего голосов 39: ↑38 и ↓1 +37
Комментарии 108

По горячим следам: как обходили PT Application Inspector на Standoff 11

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

Недавно завершилась одиннадцатая кибербитва Standoff, проходившая в рамках Positive Hack Days 12 в московском Парке Горького. C 17 по 20 мая 22 команды белых хакеров атаковали государство F — виртуальный город с собственной железнодорожной инфраструктурой, атомной станцией, заводом по обогащению урана, солнечной электростанцией и другими объектами. В одном из его сегментов располагалась сеть IT-отдела авиакомпании, принадлежащей Heavy Logistics. По легенде у отдела разработки был выстроен процесс безопасной разработки: код проверялся с помощью PT Application Inspector.

Сразу обратим ваше внимание, что эта ситуация была смоделирована специально для кибербитвы Standoff для того, чтобы PT Application Inspector, задача которого искать уязвимости, мог еще и обнаруживать зловредный код. Поэтому «обошли» его только в рамках кибербитвы и заложенных в нее сценариев возможных атак.

Красным требовалось внедрить «закладку» в исходный код разрабатываемого приложения и сделать так, чтобы для SAST-анализатора она выглядела безопасной. В случае успеха они могли бы выполнить произвольный код на удаленном сервере компании.

Что рассмотрим в статье:

· особенности внедрения SAST-анализатор в кибербитву Standoff,

· попытки хакеров обойти анализатор,

· итоги и планы.

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

Как программный код привел к потерям большого количества денег и даже трагедиям

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

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

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

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

Читать далее
Всего голосов 22: ↑14 и ↓8 +6
Комментарии 9

[1 апреля] Все новые возможности C# 13 | Что нового в .NET 10, почему нет .NET 9

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

Я являюсь студентом по обмену из российского ГМИГ имени Трофима Лысенко (Главный Мурманский Институт Генетики). Учился на инженера-программиста и пол года назад был отправлен в Америку в качестве студента по обмену. Это у меня получилось благодаря двойному гражданству (я гражданин Ирана и России).

К нам на лекцию пришел один из разработчиков Microsoft и рассказал про .NET 10, подробнее в самом низу статьи под спойлером.

.NET 10 или как его теперь начнут называть .NET X - это новая версия .NET, которая выйдет уже в 2024 году. Большая часть этой статьи посвящена именно новым возможностям C# 13.

Почему .NET 10 и где .NET 9?

"У нас так принято." - Дословный перевод. Больше комментариев разработчик не дал.

Читать далее
Всего голосов 116: ↑109 и ↓7 +102
Комментарии 72

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

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

Небезопасный android часть 2: эксперименты с sun.misc.Unsafe

Уровень сложности Сложный
Время на прочтение 13 мин
Количество просмотров 2.3K

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

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

Небезопасный android часть 1: эксперименты с sun.misc.Unsafe

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

Java очень глубоко интегрирована в android и имеет в данной ОС свою нестандартную виртуальную машину — DVM/ART, поэтому многие детали реализации отличаются от привычных. А что насчёт внутреннего API sun.misc.Unsafe? В этом цикле статей с его помощью мы попытаемся максимально сломать виртуальную машину андроида.

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

Каббалистическая вычислительная машина Dataghost 2

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

Французский коллектив RYBN изучил каббалистическую нумерологическую систему преобразований, ассоциаций и замен, создав удивительное устройство. Их установка Dataghost 2, представленная на выставке Artefact в Париже, представляет собой вычислительную машину, которая стремится выявить скрытые сообщения, скрытые в потоке сетевых данных.

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

Эвристический подход для теста Поиск частоты заказов

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

В статье Пример как писать тесты в Yandex.Contest были даны рекомендации по для успешного прохождения тестов компании Яндекс. Один из тестов - поиск наибольшего числа заказов для заданной площади прямоугольника, мы решали простым перебором всех заказов, что увеличивает сложность поиска решения в геометрической прогрессии. Но есть более изящное решение. Однако такие решения приходят не сразу - задача прорабатывается на подкорке некоторое время (несколько дней), а потом вдруг, когда едешь в метро или гуляешь с собакой, бац и решение готово почти мгновенно.

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

Пример как писать тесты в Yandex.Contest

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

Делюсь своим опытом как проходить тесты в Яндекс Контест. Уже после прохождения теста, который я провалил, решил повторить чисто для проверки сколько времени уйдет на написание кода, если уже знаешь что писать.

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

Планируете взяться за .NET MAUI? Будьте готовы к приключениям с NullReferenceException

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

.NET Multi-platform App UI – фреймворк, который пишут профессионалы. Тем не менее, код некоторых его функций выглядит так, будто разработчики забыли о последствиях разыменования нулевых ссылок.

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

Массивный BASH

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

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

бомбить
Всего голосов 27: ↑26 и ↓1 +25
Комментарии 53

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