Обновить

Разработка

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

Перестаньте молиться на принципы S.O.L.I.D

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

В мире разработки программного обеспечения существует множество "священных коров" — принципов и практик, которые принимаются как данность и редко подвергаются критическому анализу. Особенно показательна ситуация с принципами SOLID на русскоязычных ресурсах: достаточно открыть Хабр, чтобы найти 100500 статей о SOLID, и в каждой из них принципы интерпретируются по-разному.


Само существование такого количества "объяснительных" статей говорит о фундаментальной проблеме: если принципы требуют толкования, значит их названия не являются самодостаточными и интуитивно понятными. А если каждый разработчик понимает принципы по-своему, возникает вопрос — зачем вообще нужны принципы, которые не дают однозначного руководства к действию? Принципы SOLID, предложенные Робертом Мартином, давно стали одной из таких "священных коров". Однако пришло время честно признать: то, как мы используем SOLID сегодня, часто противоречит изначальным идеям и в целом иногда может приносить больше вреда, чем пользы. Зависит от контекста.


SRP не SRP


Самый яркий пример искажения первоначального замысла — это интерпретация принципа единственной ответственности (SRP).

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

Не смотрите на % использования процессора при гиперпоточности

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

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

Читать далее

Компании, заменившие людей на ИИ, стали осознавать свою ошибку

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

По словам миллиардера и гендиректора OpenAI Сэма Альтмана, 2025 год должен был стать годом, «когда ИИ-агенты заработают в полную силу».

На эту же идею купились многие компании. ИИ-инструменты появились в поиске Google, в офисных программах Microsoft, в лайв-чатах большинства сервисов. Фирмы начали увольнять программистов, готовясь заменить их несколькими ИИ-кодерами. Людей сокращали целыми отделами — и в Европе, и в США, и в России. В основном это пришлось на конец прошлого года и начало текущего.

Но несмотря на всеобщую шумиху, сейчас видно, что прогноз Сэма Альтмана не оправдался. По исследованиям, даже лучший ИИ-агент (от Anthropic) мог выполнить только 24% от порученных ему типичных задач. А стоимость поддержки и оплата за серверы оказалась выше, чем большинство ожидали.

Недавний опрос, проведённый аналитической компанией Gartner, показал: больше половины руководителей теперь говорят, что откажутся от планов «значительного сокращения персонала службы поддержки клиентов» к 2027 году. И это речь идёт о поддержке клиентов, где задачи, казалось бы, обычно решаются вполне типичные!

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

Читать далее

Русская Ардуино — опять приклеили шильдик на китайский девайс?

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

Часто такой вопрос один из первых в комментариях) И к сожалению некоторые компании так и делают... Но не мы)

В феврале 2024 года мы выпустили первый образец платы Arduino‑совместимой платы v0.1 в форм‑факторе Arduino UNO. Из особенностей — на базе российского микроконтроллера MIK32 Амур от Микрон (а это единственный современный микроконтроллер на перспективной RISC‑V архитектуре, разработанный и действительно производимый в России!). Как водится, первая плата вышла страшненькой, и конечно не запустилась (второпях допустили ошибки)...

Читать далее

Как на самом деле выглядит необработанное фото

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

Вот фотография новогодней ёлки в том виде, в котором видит матрица камеры.

Она даже не чёрно-белая, а серо-серая.

Причина этого в том, что хотя аналогово-цифровой преобразователь (АЦП) камеры теоретически способен выдавать значения от 0 до 16382, данные не покрывают весь этот диапазон.

Читать далее

Накопитель цифровой информации. Самый загадочный прибор на базе МК-85

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

Приветствую всех!
Помните тот самый шифровальный калькулятор МК-85С? Так вот, девайсов специального назначения на базе этого микрокомпьютера было намного больше, чем можно было подумать.

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

Ввод данных

Нейрошиза: как мы потеряли голову из-за искусственного интеллекта

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

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

Читать далее

Давайте забудем всё про скалярное и векторное. Есть способ гораздо лучше

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

Каждый, кто прошел через курс линейной алгебры или физики в универе, помнит этот странный дуализм. Нас учили, что у векторов есть целых ДВА вида произведения. Первое, скалярное, съедает два вектора и выдает число. Геометрически — это что-то про проекции и углы. Второе, векторное, тоже съедает два вектора и… внезапно выплевывает третий вектор, перпендикулярный первым двум. Причем работает этот фокус только в 3D и 7D.

Всегда казалось, что это какой-то математический «костыль».

Почему так сложно? Почему два разных продукта для разных задач? Почему один зависит от косинуса, а другой от синуса?

Что, если я скажу вам, что это действительно «костыли»? Что существует единое, универсальное и элегантное геометрическое произведение, которое включает в себя оба этих случая (и многое другое), и которое основано на одной-единственной, кристально ясной идее. Идее, которая меняет взгляд на саму суть математики.

Эта статья — приглашение в мир Геометрической Алгебры. Мы собираемся переизобрести умножение.

Читать далее

Честная цена за кг/литр

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

Всем привет! Меня зовут Паша и возможно вы уже пользуетесь моим расширением Ave blacklist для блокировки продавцов спамеров на авито. Но сегодня не об этом.

Больше года назад Кабинет министров не поддержал законопроект с ценой за килограмм или литр, новость была на Пикабу в том числе

Что ж, Кабинет министров не поддержал, а я поддерживаю двумя руками!

И написал расширение для браузеров для расчета цена за единицу измерения на сайтах доставок еды - заКило (chrome, firefox)

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

Читать далее

Создаём эмулятор легендарной игры «Ну, Погоди» на базе Raspberry Pi Pico

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


Многие из тех, кому сейчас за 30, и рождённых в СССР или на постсоветском пространстве, помнят электронную игру «Ну, погоди!». Во времена, когда не было ни интернета, ни ноутбуков, ни мобильных телефонов, а из общедоступных электронных развлечений были только аттракционы в парках культуры и видеосалоны, обладание бытовым компьютером, электронными наручными часами Montana или электронной игрой «Ну, погоди!» было мечтой многих детей.

Были ещё и другие электронные игры, но именно «Ну, погоди!» считается классикой.


Игре посвящено много ностальгических статей и видео. На различных торговых площадках можно купить её в различном состоянии от убитого до «с хранения» и даже новодел.


Лет 10 назад и я купил её в идеальном состоянии, поигрался, вспомнил детство и положил в ящик. Но несколько месяцев назад с разочарованием увидел, что «потекла» нижняя часть экрана.


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


Я не был одинок в своём желании воссоздать игру, этой теме посвящено также немало статей, но в них обычно создавали симуляторы, а не эмуляторы игры. Симулятор у меня ассоциируется с фразой: «Я художник, я так вижу», эмулятор — это более точное воспроизведение устройства.


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


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


Если вам интересно, как за несколько вечеров воссоздать у себя эмулятор «Ну, погоди!» на современном микроконтроллере или просто поностальгировать, добро пожаловать под кат.


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

Как я создал полностью автоматизированное онлайн радио с AI ведущими и музыкой

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

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

Это моя небольшая история, как я за месяц написал карманное медиа с полной автоматизацией, где роботы-ведущие заменили кожаных мешков и ведут подкасты, в которых шутят про AI

Читать далее

«Тупой ИИ» с нами надолго. Почему в новых моделях больше галлюцинаций

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

В последние несколько месяцев ведущие модели обновились с функцией «рассуждений» (reasoning). Предполагалось, что качество ответов улучшится. Но последующие тесты показали, что уровень галлюцинаций сильно вырос. И это не какая-то случайная недоработка разработчиков, а фундаментальное свойство. Сейчас становится очевидным, что от галлюцинаций мы не избавимся никогда.
Читать дальше →

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

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

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

Читать далее

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

Парадокс импортозамещения: почему корпус из русского алюминия в Китае вдвое дешевле, чем в России?

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

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

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

Логика проста: свой продукт — свои корпуса. Запускаем расчет. Отправляем техзадание (ТЗ) с 3D-моделью по десяткам проверенным российским заводам. Ждём. 

Практика показывает, что 95% из них вообще даже не отвечают, а те, кто отвечают, дают цены в 2 или 3 раза выше аналогичных из Китая. На всякий случай, кидаем тот же самый STEP-файл и ТЗ нашему старому партнеру из Китая. Цена: 50 у.е., включая доставку до Краснодара. 

Возникает резонный вопрос: «Какого чёрта? Как может быть выгоднее дважды проехать полмира с нашим же металлом, чем сделать всё здесь?». Давайте разбираться, где в этой цепочке мы теряем эти самые 50%.

Читать далее

Как я обнаружил скрытый микрофон в китайском NanoKVM

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

NanoKVM — это аппаратный KVM-переключатель, разработанный китайской компанией Sipeed. Это устройство, выпущенное в прошлом году, позволяет удалённо управлять компьютером или сервером при помощи виртуальной клавиатуры, мыши и монитора. Благодаря своему компактному размеру и низкой стоимости устройство быстро привлекло внимание Интернета, особенно когда компания пообещала выпустить его код в опенсорс. Однако, как мы увидим, это устройство обладает серьёзными проблемами безопасности.

Читать далее

Эта статья опоздала лет на двадцать: музыкальный центр с CD-караоке, радио и блютусом на ESP32 своими руками

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

Пожалуй, самый любимый мой аудиоформат — это CD Audio. Он либо читается идеально, либо не читается совсем — в отличие от кассет и катушек, кинематику проигрывателей которых нужно то и дело обслуживать. При этом компакт-диск обладает такой же тактильностью, как и винил, но существенно меньшими размерами — внушительная коллекция займёт от силы пару небольших книжных шкафов. Ретрофутуризма, как в минидиске, в нём нет, но за отсутствие артефактов ATRAC'а это мы ему простим :-)

Ещё с детства у меня была мечта собрать проигрыватель компакт-дисков самому. В те времена слово «микроконтроллер» звучало гордо, и скорее всего обозначало, что для сборки и наладки схемы нужно иметь целый стенд оборудования на несколько тысяч баксов. Да и приводы компакт-дисков от компьютера были в цене, выкорчевать его из компьютера для своей поделки его никто бы не дал.

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

Поэтому — погнали! Делаем свой CD-player с караоке и CD TEXT'ом!

Push «PLAY»

Хьюстон, у нас проблема, или Чего не договаривают производители HDD

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

Однажды к нам обратился клиент с проблемой: имеется 2 HDD с производительностью записи 250 MБ/с. Из них делается хранилище RAID 0. Начинаем записывать трафик, скорость — 350 MБ/с. Он успешно пишется, но через некоторое время утилизация дисков подходит к 100% и начинаются потери при записи. Вывод клиента: проблема в PT NAD, так как диски должны все успевать. Думаю, многие уже догадываются, в чем соль. У нас тоже имелись догадки, но тем не менее мы решили их проверить. Из этой проблемы и родилось небольшое исследование по записи трафика в хранилище. Под катом — наше расследование «заговора» разработчиков HDD.

Читать

Зоопарк строк в вашем C++ коде?

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

CryEngine2 использовал класс собственный CString для реализации работы со строками и немного использовал строки из стандартной строковой библиотеки Windows. Насколько я помню, последняя версия CryEngine всё ещё использует те же самые CString, она кардинально поменялась внутри, но как дань истории название класса менять не стали, зато сильно расширили функционал. Я не на 100% уверен, применялся ли CString только в редакторе или в рантайме игры тоже, вы можете сами это посмотреть в исходниках, которые все еще доступны на гитхабе. Это один подход к работе со строками, довольно распространенный в мире игростроя - когда мы все нужное пишем сами, не оглядываясь... хотя, тут больше уместно слово поглядывая, на существующие реализации и утаскивая в проект все самое лучшее.

Есть и другой подход... Я работал в команде над некоторым проектом, который должен был выйти на консолях, и в какой‑то момент на проект пришел эффективный тимлид, который хорошо умел в красивые презентации, и продавил использование std::string из sdk. Все очень опытные программисты, синьоры и руководство важно кивали на совещании и согласились всё перевести на std::string… не такие уж они оказались опытные, как выяснилось. В итоге мы заменили большую часть CString на std::string. Не сказал бы, что это сильно повлияло на время компиляции — плюс‑минус минута к проекту, который собирается двадцать минут, особой погоды не делают, но это также превратило наш довольно понятный базовый код в запутанный кошмар. Возможно, для переносимости это было лучше, но ни наш проект, ни CryEngine2 Editor так и не были портированы ни на Linux, ни на какую‑либо другую платформу.

Прошло десять лет, я вижу ровно туже ситуацию на текущем проекте — новый тимлид решил перевести местный MySuperPupeString на std::string, уже предчувствуя «нижней чуйкой» последствия — запасаюсь попкорном и беру отпуск на следующий месяц после принятия решения. Но не это интересно, а то — какие вообще строки могут быть в вашем с++ коде.

Строка, на строке и строкой погоняет

Хакаем самую дешёвую консоль с Ozon

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

Помните статью про самую дешёвую консоль с Ozon — Sup GameBox? Тогда я рассказал вам о том, что у этого чуда инженерной мысли находится «под капотом» и почему эта консоль не так проста, как кажется на первый взгляд.

После статьи я решил написать письмо производителю процессора этой консоли. И что самое интересно — мне ответили! Даже Спустя 40 лет после релиза оригинальной NES, тайваньская компания V.R.T продолжает развивать архитектуру оригинальной NES. Мне больше ничего не оставалось, кроме как включить фен, достать программатор и хакнуть этот девайс...

Читать далее

Все о блокировках VPN за последние две недели

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

Всем привет!

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

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

Если интересно только то, что сейчас работает - перейдите в конец статьи.

Читать далее