Как стать автором
Поиск
Написать публикацию
Обновить
6.81

Говнокод

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

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

1С: Дичь (лучшее из моей коллекции)

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

Я постоянно имею дело с чужим кодом. В среднем раз в месяц ко мне приходит новый клиент со старой информационной системой, в которой поработали программисты 1С самых разных мастей, возрастов, квалификации, отношения к делу, чувства юмора и т.д. Ещё я постоянно работаю с молодыми программистами 1С - они учатся с нуля в моём отделе.

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

Много лет назад, когда во мне горел юношеский абсолютизм, я реагировал на "плохой код" резко и негативно. Всё какие-то стандарты изучал и пропагандировал. В нашей среде стандартом код разработчиков из самой 1С обычно считается. А одна из высших оценок качества кода - если он не отличим от написанного вендором. Ну вот и я такой был.

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

Да, что ещё совершенно точно: при сильно изменившихся стандартах не сильно изменился результат, т.е. продукт :)

Так, отвлёкся... Переболел я "правильными стандартами", надеюсь больше мне это не грозит, пусть молодёжь тешится. И отношение моё к чужому коду сразу изменилось - он стал мне интересен. Как диалекты одного и того же языка, фольклор народов мира и, в конце концов, жизненные истории (да, в небольшом куске кода иногда целую историю увидеть можно).

Ну и коллекционировать эти куски кода начал. Чтобы не потерять - канал в телеге создал. Иногда там и мой код бывает, за который мне стыдно (порой).

Подумал, вдруг вам тоже будет интересно, и решил оформить в виде статьи самые интересные (на мой взгляд) примеры.

Смотреть картинки

«У нас кончились столбцы» — Лучшая, худшая кодовая база

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

Оу, таблица merchants2? Ну, у нас кончились столбцы в merchants, так что мы сделали merchants2.

Когда я начал заниматься программированием в детстве, я не знал, что людям за это платят. Даже когда я закончил высшую школу, я предполагал, что мир "профессиональной разработки" был устроен совершенно иначе, чем мой код, написанный в свободное время. Когда мне посчастливилось попасть на первую работу разработчиком, я быстро понял насколько я был прав и неправ. Моя первая работа была "испытанием огнём", и по сей день эта кодовая база является и худшей, и лучшей из тех, с которыми я работал. И пусть она навеки останется закрытой в стенах той конкретной компании, я всё же могу поделиться парой самый забавных и страшных историй.

Читать далее

Этот код не то, чем кажется: что творится на мониторе в фильмах и сериалах

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

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

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

В этой статье мы рассмотрим все три типа кода, который появляется в фильмах: бессмысленный, странный и адекватный рабочий.

Читать далее

Когда устал от алгоритмов: Ревью кода на собеседовании

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

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

Читать далее

Эзотерические языки программирования: панорамный обзор

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

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

Но в IT всегда были люди, которым мало «обычного» хардкорного кода, и они начали изобретать собственные, иногда совершенно безумные и оригинальные эзотерические языки программирования. О них мы сегодня и поговорим.

Прыгнуть в бездну

Вычисляем миллиардное число Фибоначчи менее чем за 7 секунд

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

Мы будем считать 1000,000,000 число Фибоначчи со всеми цифрами. Для этого я буду использовать продвинутый алгоритм для поиска чисел Фибоначчи. Тут не будет базовых алгоритмов на подобии матричного возведения в степень и проще. Но эта статья будет понятна и школьнику :-)

Читать далее

Как я писал простой язык конфигурации и в итоге перемудрил

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

Статья о том, как я во время каникул писал-писал язык для описания конфигураций, да и переборщил с объёмом

Читать далее

Enlarge your BASHUI for free! Как увеличить потенциал производительности?

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

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

Увеличить потенциал

Рефакторинг — это как весенняя уборка: никто не хочет её начинать, но все ценят чистоту и порядок после её завершения

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

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

Итак, что я имею сейчас? Что стало с кодом, который не рефакторили год? Вопрос риторический, и так понятно, что он превратился в легаси.

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

Читать далее

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

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

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

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

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

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

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

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

Бобры идут, бобрам дорогу!

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

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

malloc и assert


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

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

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

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

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


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

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

BASHUI

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

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

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

нажми на кнопку

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

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

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

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

Читать далее

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

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

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

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

Раскрыть завесу тайны

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

Приподнимем завесу...

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

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

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

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

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

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

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

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

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

Под кат

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

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

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

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

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

Читать далее