Из боли в удобство: обёртка для расписания пар в колледже (сайт, ВК-бот и SMS)
Или как я доставлял расписание студентам в новом формате решая несколько проблем, используя парсинг и PHP 7 в 2017-2021 годах.

Код, за который должно быть стыдно
Или как я доставлял расписание студентам в новом формате решая несколько проблем, используя парсинг и PHP 7 в 2017-2021 годах.
Доброго времени суток!
Для начала представлюсь: я бэкенд-разработчик с опытом более 8 лет. Участвовал в разнообразных проектах: в стартапах, в галерах, в крупных корпорациях и в среднем бизнесе. К сожалению, найти идеальную статистику по данной теме не представляется возможным, однако из общения с бывшими коллегами я понимаю, что то, что будет описано ниже, — не только мой личный опыт, но и то, что регулярно происходит в других компаниях.
Если вы проджект-менеджер и не поймёте содержание этой статьи, это только подтверждает, что вы не способны контролировать данный процесс, и вас практически наверняка водят за нос. Хотя текст по написанию планировался максимально понятным и наглядным с учётом специфики проблематики.
Исходить я буду в своих суждениях сугубо из прагматичной точки отсчёта, измеряя вред программистов там, где очевидно можно определить потерю денег компании.
Прежде чем мы приступим к разбору, хочу уточнить, что я прямой апологет бритвы Оккама, и важным правилом в моём подходе является не плодить сущности без необходимости. Если возможно написать сервис в 100 строк — лучше написать так. Потом, если потребуется, его будет несложно переработать под более удачную архитектуру.

Платформа Lovable, позиционируемая как low‑code решение для создания веб-приложений и сайтов, где основное взаимодействие с системой происходит через чат с искусственным интеллектом, столкнулась с критической уязвимостью, связанной с RLS-политиками. Она позволила получать и изменять данные без аутентификации — сотни проектов оказались под угрозой.

Здравствуйте. Я учусь на последнем курсе бакалавриата и уже через месяц с небольшим буду защищать свою выпускную квалификационную работу (или же дипломную). Мне захотелось рассказать про неё здесь, чем я сейчас и займусь.
Меня давно интересуют инструменты для обеспечения работы языков программирования - лексеры, парсеры, интерпретаторы, компиляторы и всякое такое. Настолько интересуют, что уже в конце первого курса я решила, что в конце обучения буду защищать свой маленький язык программирования. Увы, создание собственного языка оказалось делом довольно сложным, из-за чего пришлось искать новую тему. Примерно на третьем курсе мы изучали в университете Kotlin, который быстро запал мне в душу и стал моим любимцем (после Lua). Мне захотелось написать дипломную именно на нём, поэтому я стала думать, что бы такое написать. Так как меня интересовал геймдев, я подумала: "Почему бы не создать свой движок для текстовых квестов как альтернативу Ren'Py?". Подумала и написала простой движок. Увы, в нём не было научной новизны, да и писать под него было неудобно, ну хоть получила опыт создания язычков, когда дала жизнь своему Av, про который писала в прошлой статье.
В университете мне сказали, что подобная тема совершенно не подходит для защиты, после чего я снова задумалась, что бы написать. Вспомнила, что довольно неплохо знакома с ANTLR, и решила написать DSL, который позволит превращать классы, которые сгенерировал ANTLR, в AST Kotlin. Эта мысль возникла довольно внезапно, но мне быстро стало интересно, во что она может превратиться. Как писать такой DSL, а главное, зачем? Как я объясняла нашей завкафедрой, подобный инструмент позволит автоматически переводить кодовые базы с разных языков на один - мой любимый Котлин. Кроме того, это поможет поддержать авторов новых языков программирования, поскольку он позволяет не писать свой рантайм, а положиться на уже существующий JVM, ведь Котлин исполняется на нём.

Привет, на CKA курсе туторы нарочито вдалбливают последовательность действи: set the cluster, set the namespace, set the pod... И все это происходит в консоли, используя kubectl - консольная утилита для управления k8s кластерами. Мне настолько это вдолбилось что я решил это автоматизировать. У меня уже был интересный проект автоматизации ssh подключений (sshto), не долго думая, я взял его за основу и написал kui. Это bash скрипт, dialog обёртка для kubectl. У диалога есть приятная фича присваивать горячку каждому пункту меню по первому символу. Это очень удобно, в результате весь k8s кластер оказывается у вас на кончиках пальцев.

Чем хорош TRMNL — так это возможностью выводить что-то своё за считанные минуты.
Но сервер позволяет только простые GET и POST запросы, то есть в лоб OAuth2 не реализуешь. Оно и понятно: они не очень хотят хранить данные авторизации для всех.
Но всегда можно обойтись малой кровью: например, бесплатным CloudFlare.

При написании своей VM для RISC-V возникла необходимость в тестировании.
Сначала я пытался писать юнит-тесты самостоятельно, но выходило, что я просто копирую логику из основной.
И по сути тестирую не соответствие спецификации, а соответствие моему пониманию.
Через некоторое время я наткнулся на официальный набор тестов для RISC-V и решил их использовать.
Это помогло найти несколько багов в моём коде.

Вашему вниманию предлагается полный список разделов электронной книги (12 из 11 :)), посвящённой неопределённому поведению. Книга не является учебным пособием и рассчитана на тех, кто уже хорошо знаком с программированием на C++. Это своего рода путеводитель C++ программиста по неопределённому поведению, причём по самым его тайным и экзотическим местам. Автор книги — Дмитрий Свиридкин, редактор — Андрей Карпов.

Привет, Хабр!
Хочу поделиться одним любопытным и совершенно нетривиальным кейсом использования Русского Алгоритмического Языка. В этой статье я расскажу, зачем мне это вообще понадобилось и почему в конечном счете я влюбился в него.
(картинка позаимствована с одного из официальных туториалов)

Ковыряясь в скриптах наткнулся на интересный case. Чё тут интересного то? Подсказка, это не цикл. Да, вот эти вот break'и выглядят тут совершенно инородно. Возможно когда-то этот кусок эм, кода работал в цикле и break каким-то боком был нужен? Но сейчас цикла нет а brake есть. Бомбит? Бомбит до такой степени что я решился писнуть небольшую статейку про case.
На 100%-ю полноту освещения не претендую, все мои эксперименты лишь очень поверхностные но несколько точек постараюсь расставить.
Оу, таблица merchants2? Ну, у нас кончились столбцы в merchants, так что мы сделали merchants2.
Когда я начал заниматься программированием в детстве, я не знал, что людям за это платят. Даже когда я закончил высшую школу, я предполагал, что мир "профессиональной разработки" был устроен совершенно иначе, чем мой код, написанный в свободное время. Когда мне посчастливилось попасть на первую работу разработчиком, я быстро понял насколько я был прав и неправ. Моя первая работа была "испытанием огнём", и по сей день эта кодовая база является и худшей, и лучшей из тех, с которыми я работал. И пусть она навеки останется закрытой в стенах той конкретной компании, я всё же могу поделиться парой самый забавных и страшных историй.

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

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

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

Мы будем считать 1000,000,000 число Фибоначчи со всеми цифрами. Для этого я буду использовать продвинутый алгоритм для поиска чисел Фибоначчи. Тут не будет базовых алгоритмов на подобии матричного возведения в степень и проще. Но эта статья будет понятна и школьнику :-)
Статья о том, как я во время каникул писал-писал язык для описания конфигураций, да и переборщил с объёмом
Я работаю в аутсорсе и недавно вернулась на один из проектов, с которого ушла год назад. К своему глубокому удивлению, ознакомившись с кодом, я поняла, что его никто не рефакторил весь этот год. При разговоре с коллегой, который работал над этим проектом, я выяснила, что время на рефакторинг отдельно не выделялось, и он его не успел провести.
Итак, что я имею сейчас? Что стало с кодом, который не рефакторили год? Вопрос риторический, и так понятно, что он превратился в легаси.
Например, эти замечательные константы под гнетом измененных требований превратились в функции.

Эта история навеяна недавним интервью в одну контору, которая считает, что желтые и красные конторы, не такие синие. Все случайные совпадения неслучайны, имена скрыты. Ни один случайный бобёр за время интервью не пострадал.
Бобер-HRобер: я увидела как грызете дерево в соседнем лесу, не хотите перебраться к нам? У нас деревья синие и потолще ваших, зеленые деревья нынче не в моде.
Бобер-погромист: хм, наверное нет, толщина текущих деревьeв меня устраивает.
Бобер-HRобер: ну вы всё-таки приходите, мы заложили пару делянок, где самые опытные бобры будут распиливать очень старую монолитную сосну с ветками длиной 98 см, на доски очень модной нынче длины 23 см, а еще у вас также будет возможность повлиять на толщину досок длиной 26 см.
Бобер-погромист: а вот это интересно, отправляйте соловья.
Через неделю, на комфортабельной полянке где-то в синем лесу.
Senior-Бобер: Итак, вы считаете себя хорошим бобром?
Бобер-погромист: Всё верно. Грызу деревья разной толщины уже лет двадцать.
Lead-Бобер: А ветки какой длины предпочитаете?
Бобер-погромист: Ветки 17см самые вкусные

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