В процессе работы с Go я столкнулся с ещё одной проблемой — обработкой ошибок в хендлерах. Как можно сделать этот процесс удобным и эффективным для 150+ обработчиков? Как обеспечить консистентность и поддержку при обработке ошибок?
Разумеется, мои поиски палочки-выручалочки закончились ничем, хочется чтобы бум и все готово. Есть протокол RFS7807, есть библиотека, есть масса противоречивых статей. По существу статья ниже полностью не отвечает на все, но в ней есть позиция и предложено решение, и я думаю, это решение может быть полезным. Статья лишь повод/предложение поделиться вашими примерами успешных кейсов.
Собственно, статья, приятного прочтения.
Читать далееВсем привет!
Хотел логически подвести к этому абзацу в конце предыстории, но побоялся, что не все до туда дочитают, т.к. статья техническая и душная.
ДИСКЛЕЙМЕР: это не бескорыстный акт передачи знаний с моей стороны. Я пытаюсь найти инвестиции для своего проекта и создал чат в тг, где буду постить обновления и какие-то мысли касательно его запуска. Так что если интересно, то подписывайтесь, а еще можете поделиться ссылкой с теми, у кого есть лишние бабки =)
Предыстория
Значит решил я создать сервис для одиноких мужчин, где они могут пообщаться с прекрасными дамами, aka вебкам. Соответственно встал вопрос, как организовать видеосвязь в браузере. Обычно для этого используется WebRTC, эта технология позволяет установить p2p соединение между браузерами для передачи видео, звука и прочих данных в реальном времени с минимальной задержкой. Однако была одна проблема: что делать, если приходит жалоба от пользователя, что ему показали не то (или не показали), что он хотел. Поскольку это p2p соединение напрямую между пользователями, у меня как у владельца сервиса нет возможности провалидировать жалобу. Первое, что пришло в голову это вместо WebRTC использовать MediaRecorder API для записи видео небольшими кусочками и отправки их по вебсокету через сервер, попутно сохраняя. Я набросал прототип и столкнулся с тем, что если получатель пропустил первый пакет (там где есть метаданные), то видео у него не воспроизводится. Пришлось поиском определенного набора байт в первом пакете вычленять эти самые метаданные и сохранять их отдельно для отправки первым сообщением только что подключившемуся получателю, и это даже сработало. Вторая проблема этого решения - это задержка в пару секунд, и это только в локальной сети, что приемлемо для односторонней связи, но для двусторонней уже сомнительно. И третья проблема это то что видео у получателя со временем все больше и больше отстает, и нужно регулярно проматывать видео ближе к концу. Костыльность такого решения меня не устраивала, и я решил использовать WebRTC для связи собеседников и параллельно использовать MediaRecorder для отправки записи от модели к серверу. Некоторое время оно так работало, пока я пилил другие фичи, но неэлегантность этого решения все еще не давала мне покоя, т. к. оно повышает требования к интернет соединению модели.
Читать далееВы пишете документацию, статьи или другие тексты? Тогда, наверняка, у вас есть проверяющие. Я уверен, что вы нежно и трепетно любите своих проверяющих. Вы, скорее всего, с нетерпением ждёте, когда они пришлют вам свои правки и комментарии. Благоговейно изучаете и перечитываете крупицы мудрости, которыми проверяющие благосклонно поделились с вами. Лучшие из комментариев вы записываете в специальную тетрадочку или даже распечатываете и вешаете их на стену...
Я начал коллекционировать самые фееричные комментарии. Делал я это для того, чтобы иметь перед глазами антипример — как ни в коем случае нельзя писать комментарии к текстам. Эти советы — тщательно отобранные, систематизированные и дистиллированные советы для проверяющих. Практическое руководство по доведению до белого каления ваших технических писателей и авторов.
Дисклеймер. Все совпадения фрагментов этого текста с реальными комментариями в вашей документации совершенно случайны. При написании этого текста не пострадал ни один проверяющий.
Читать далееНаш мир удивителен, простые на первый взгляд вещи оказываются очень сложными внутри. Так что же скрывает в себе обычная линия? Для ответа на вопрос, прошу под кат.
Читать далееСказ о том, как с помощью Opuna’ы сделать вашу RAG-систему чуточку (а может и не чуточку) эффективнее :)
Читать далееВ этой статье мы рассмотрим процесс создания умной светодиодной системы под названием Smart LED. Этот проект основан на микроконтроллере ESP8266 и адресной светодиодной ленте.
Система Smart LED позволит вам не только наслаждаться красивой подсветкой, но и синхронизировать её с музыкой. Вы также сможете управлять системой с помощью голосового ассистента Алиса.
Проект на GitHub
Читать далееОднажды вдоволь наигравшись в данную серию игр и первую "Diablo" (1996) в отдельности, я стал интересоваться на предмет, а на что ещё можно обратить внимание со схожими параметрами? Поиск был ограничен следующими критериями:
*. RPG / ARPG. Либо другой жанр, например Action / Shooter, или rogue-like, но с явно выраженными схожими элементами.
*. Год выпуска не имеет значения.
1. Нет респавна. Во многом по этой причине, а также ввиду ниже обозначенных третьего и четвёртого пунктов, мне некогда больше приглянулась именно первая часть серии.
2. Умеренная продолжительность, без жёсткого, затяжного захода на 100+ часов.
3. Низкий порог вхождения, отсутствие сложных механик.
4. Атмосфера.
Читать далееПроект начал делать в 2022 году, параллельно с проектом по первой части фильма. Во второй части многие локации пришлось искать вооружившись Яндекс и Гугл панорамами. Около полугода искал человека, который сделает фото в Чикаго.
С технической точки зрения ничего не поменялось, про нее я рассказал в статье по первой части фильма. Хочу более детально остановиться на поиске и съемке локаций.
Читать далееПривет! Если ты думаешь, что знаешь всё о Burp Suite, я тебя удивлю! Этот мощный инструмент для тестирования веб-приложений скрывает в себе ещё больше возможностей, способных значительно упростить и ускорить работу. Сегодня мы изучим функционал макросов на практике и увидим, как они могут стать надежным помощником в процессе тестирования и анализа веб-приложений...
Читать далееИз новостей: Unreal Engine 5.4, миллион продаж Manor Lords за сутки, в Сербии за год на 98% выросло число разработчиков игр, авторы Garry’s Mod вынуждены удалить весь контент Nintendo из-за жалобы компании, в Embracer объявили о преобразовании в три отдельные компании.
Из интересностей: как сделать игру интересной, разработчики шутана Mouse о художественном стиле и насилии в играх, внутри картриджей Super Nintendo, как Backpack Battles продалась тиражом в 650к копий за первый месяц.
Читать далееРуководство по пользованию «Цифровыми кафедрами» или когда инструкцию не доложили, а делать пришлось.
Окунуться с головойНа примере 32-битных целых чисел рассматривается масштабируемый алгоритм деления, использующий числа с двукратно меньшей (16 бит) разрядностью. Для иллюстрации работоспособности алгоритма приведен код тестового приложения на языке С++.
Читать далееВсем еще раз привет!
В данной статье будет рассказано, как мой сон на университетской лекции случайно, привел к череду событий, где я стал техническим организатором двух киберполигонов в стенах моего университета...
Читать далееПривет, Хабр! Так вышло, что на текущем я попал под сокращение, а значит путь к собеседованиям открыт. Как раз вчера случилось одно (видимо, из многих), на котором зашла речь про useCallback.
Читать далееМногие современные IT-гиганты наших дней начинали свою деятельность во второй половине XX века и преуспели благодаря технологическому буму, хорошей стратегии, подрывным инновациям, талантливому менеджменту и т.п. Причин для успеха было много. Их имена у всех на слуху, но про неудачников IT-сектора вспоминают редко. При этом их история не менее занимательна, чем у ныне здравствующих корпораций. Среди неудачников был и гигант с представительством в 44 странах, и фирма с собственным исследовательским центром для производства полного цикла, и компании с активной господдержкой.
Разбираемся, что погубило эти некогда великие IT-бренды.
Читать далееЗадумывались ли вы, почему функция isinstance(int, object) возвращает True? Объяснение, что все является объектом, которое можно часто услышать, хоть и является правдой, но не дает ответа на вопрос и на самом деле есть профанация, потому что не дает настоящего понимания, а создает только его видимость. Ведь совсем непонятно, почему int (как и любой другой стандартный класс) является непременно экземпляром базового класса. Да, он является подклассом, но почему именно экземпляром? Ответ будет дан по ходу изложения.
Читать далееПривет, Хабр!
Вам часто бывает скучно? Ну так, что просто уже не знаешь, чем себя занять. Я в такие моменты люблю бесцельно скроллить ленту, залипать на разных видео, а еще листать маркетплейсы в надежде увидеть что-то, за что можно было бы зацепиться.
В один из таких моментов во время очередного просмотра содержимого Яндекс Маркета я наткнулся на игрушечного робота-курьера. Он показался мне достаточно милым, так что я решил его купить.
В общем ровер милый, выполнен неплохо и тут можно было бы остановиться, но в моей голове промелькнула одна мысль:
«А может сделать его управляемым?»
В этой статье я расскажу, как модифицировал игрушечного робота-доставщика Яндекса и реализовал управление им по BLE с помощью мобильного приложения на Flutter.
Читать далееКогда я только знакомился с принципами SOLID, я искал понятные статьи на Хабр. При этом пришлось прочитать не одну статью, и полное понимание пришло сильно позже. Хотелось бы, чтобы новички на более простых примерах смогли почувствовать, о чем эти принципы.
Изучить принципыМожет быть, вы видели в магазинах объявление, что в случае просрочки или других проблем можно звонить вот на эту горячую линию. У некоторых работодателей такая линия есть для сотрудников.
Там можно пожаловаться на задержку зп, коррупцию или ещё что-нибудь. Жалоба попадает на специальную платформу, где её изучают, проверяют и либо отклоняют, либо передают дальше, чтобы ответственные разобрались. Это комплаенс-менеджмент.
Если компания большая и у неё много юрлиц и филиалов, с менеджментом помогают подрядчики. Например, консалтинговая компания ДРТ, для которой моя команда автоматизировала данный процесс. В этом кейсе я покажу, какое решение для управления комплаенсом мы создали.