Habr.com

Syndicate content Хабр
Все публикации подряд на Хабре
Updated: 1 hour 16 min ago

[Перевод] Обработка ошибок в web apps не должна быть такой сложной

Mon, 04/29/2024 - 23:59

В процессе работы с Go я столкнулся с ещё одной проблемой — обработкой ошибок в хендлерах. Как можно сделать этот процесс удобным и эффективным для 150+ обработчиков? Как обеспечить консистентность и поддержку при обработке ошибок?

Разумеется, мои поиски палочки-выручалочки закончились ничем, хочется чтобы бум и все готово. Есть протокол RFS7807, есть библиотека, есть масса противоречивых статей. По существу статья ниже полностью не отвечает на все, но в ней есть позиция и предложено решение, и я думаю, это решение может быть полезным. Статья лишь повод/предложение поделиться вашими примерами успешных кейсов.

Собственно, статья, приятного прочтения.

Читать далее

Как запустить WebRTC на сервере, или как я пилю вебкам

Mon, 04/29/2024 - 23:30

Всем привет!

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

ДИСКЛЕЙМЕР: это не бескорыстный акт передачи знаний с моей стороны. Я пытаюсь найти инвестиции для своего проекта и создал чат в тг, где буду постить обновления и какие-то мысли касательно его запуска. Так что если интересно, то подписывайтесь, а еще можете поделиться ссылкой с теми, у кого есть лишние бабки =)

Предыстория

Значит решил я создать сервис для одиноких мужчин, где они могут пообщаться с прекрасными дамами, aka вебкам. Соответственно встал вопрос, как организовать видеосвязь в браузере. Обычно для этого используется WebRTC, эта технология позволяет установить p2p соединение между браузерами для передачи видео, звука и прочих данных в реальном времени с минимальной задержкой. Однако была одна проблема: что делать, если приходит жалоба от пользователя, что ему показали не то (или не показали), что он хотел. Поскольку это p2p соединение напрямую между пользователями, у меня как у владельца сервиса нет возможности провалидировать жалобу. Первое, что пришло в голову это вместо WebRTC использовать MediaRecorder API для записи видео небольшими кусочками и отправки их по вебсокету через сервер, попутно сохраняя. Я набросал прототип и столкнулся с тем, что если получатель пропустил первый пакет (там где есть метаданные), то видео у него не воспроизводится. Пришлось поиском определенного набора байт в первом пакете вычленять эти самые метаданные и сохранять их отдельно для отправки первым сообщением только что подключившемуся получателю, и это даже сработало. Вторая проблема этого решения - это задержка в пару секунд, и это только в локальной сети, что приемлемо для односторонней связи, но для двусторонней уже сомнительно. И третья проблема это то что видео у получателя со временем все больше и больше отстает, и нужно регулярно проматывать видео ближе к концу. Костыльность такого решения меня не устраивала, и я решил использовать WebRTC для связи собеседников и параллельно использовать MediaRecorder для отправки записи от модели к серверу. Некоторое время оно так работало, пока я пилил другие фичи, но неэлегантность этого решения все еще не давала мне покоя, т. к. оно повышает требования к интернет соединению модели.

Читать далее

17 вредных советов для тех, кто проверяет документацию и технические тексты

Mon, 04/29/2024 - 23:26

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

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

Дисклеймер. Все совпадения фрагментов этого текста с реальными комментариями в вашей документации совершенно случайны. При написании этого текста не пострадал ни один проверяющий.

Читать далее

[recovery mode] Вы думаете рисовать линии это просто?

Mon, 04/29/2024 - 21:10

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

Читать далее

Подбор гиперпараметров RAG-системы с помощью Optuna

Mon, 04/29/2024 - 20:34

Сказ о том, как с помощью Opuna’ы сделать вашу RAG-систему чуточку (а может и не чуточку) эффективнее :)

Читать далее

Smart LED: Адресная LED подсветка с управлением через Алису

Mon, 04/29/2024 - 20:15

В этой статье мы рассмотрим процесс создания умной светодиодной системы под названием Smart LED. Этот проект основан на микроконтроллере ESP8266 и адресной светодиодной ленте.

Система Smart LED позволит вам не только наслаждаться красивой подсветкой, но и синхронизировать её с музыкой. Вы также сможете управлять системой с помощью голосового ассистента Алиса.

Проект на GitHub

Читать далее

Разбирая бэклог. Часть 7. Diablo. 5+7 2D и 3D альтернатив или куда меня завело изыскание аналогов известной ARPG серии

Mon, 04/29/2024 - 19:44

Однажды вдоволь наигравшись в данную серию игр и первую "Diablo" (1996) в отдельности, я стал интересоваться на предмет, а на что ещё можно обратить внимание со схожими параметрами? Поиск был ограничен следующими критериями:

*. RPG / ARPG. Либо другой жанр, например Action / Shooter, или rogue-like, но с явно выраженными схожими элементами.

*. Год выпуска не имеет значения.

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

2. Умеренная продолжительность, без жёсткого, затяжного захода на 100+ часов.

3. Низкий порог вхождения, отсутствие сложных механик.

4. Атмосфера.

Читать далее

Картографический фотопроект «По местам съёмок фильма «Брат 2»

Mon, 04/29/2024 - 19:16

Проект начал делать в 2022 году, параллельно с проектом по первой части фильма. Во второй части многие локации пришлось искать вооружившись Яндекс и Гугл панорамами. Около полугода искал человека, который сделает фото в Чикаго.

С технической точки зрения ничего не поменялось, про нее я рассказал в статье по первой части фильма. Хочу более детально остановиться на поиске и съемке локаций.

Читать далее

Раскрываем секретные функции: магия макросов в Burp Suite

Mon, 04/29/2024 - 18:54

Привет! Если ты думаешь, что знаешь всё о Burp Suite, я тебя удивлю! Этот мощный инструмент для тестирования веб-приложений скрывает в себе ещё больше возможностей, способных значительно упростить и ускорить работу. Сегодня мы изучим функционал макросов на практике и увидим, как они могут стать надежным помощником в процессе тестирования и анализа веб-приложений...

Читать далее

Недельный геймдев: #171 — 28 апреля, 2024

Mon, 04/29/2024 - 18:48

Из новостей: Unreal Engine 5.4, миллион продаж Manor Lords за сутки, в Сербии за год на 98% выросло число разработчиков игр, авторы Garry’s Mod вынуждены удалить весь контент Nintendo из-за жалобы компании, в Embracer объявили о преобразовании в три отдельные компании.

Из интересностей: как сделать игру интересной, разработчики шутана Mouse о художественном стиле и насилии в играх, внутри картриджей Super Nintendo, как Backpack Battles продалась тиражом в 650к копий за первый месяц.

Читать далее

Как мы Цифровую кафедру в КАИ запускали

Mon, 04/29/2024 - 18:16

Руководство по пользованию «Цифровыми кафедрами» или когда инструкцию не доложили, а делать пришлось.

Окунуться с головой

Алгоритм деления 2W-разрядных чисел с использованием операций с числами разрядностью W

Mon, 04/29/2024 - 18:05

На примере 32-битных целых чисел рассматривается масштабируемый алгоритм деления, использующий числа с двукратно меньшей (16 бит) разрядностью. Для иллюстрации работоспособности алгоритма приведен код тестового приложения на языке С++.

Читать далее

[Перевод] 50 лет первой операционной системе для персональных компьютеров

Mon, 04/29/2024 - 18:00

В 1974 году первопроходец ПО для PC Гэри Килдалл продемонстрировал в Пасифик-Гроув, Калифорния, первую коммерчески успешную операционную систему для персонального компьютера — CP/M. В этой статье мы расскажем историю о том, как его компания Digital Research Inc. превратила CP/M в отраслевой стандарт, а позже проиграла версии ОС от Microsoft, скопировавшей внешний вид и стиль ПО DRI. Читать дальше →

AITU Military CTF 2024: История о том, как мой сон привел к поднятию киберполигона в стенах моего университета. Часть 1

Mon, 04/29/2024 - 17:23

Всем еще раз привет!

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

Читать далее

[recovery mode] И снова о useCallback

Mon, 04/29/2024 - 17:15

Привет, Хабр! Так вышло, что на текущем я попал под сокращение, а значит путь к собеседованиям открыт. Как раз вчера случилось одно (видимо, из многих), на котором зашла речь про useCallback.

Читать далее

От Digital Equipment до Nixdorf: старые бренды в IT, которых больше нет

Mon, 04/29/2024 - 17:00

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

Разбираемся, что погубило эти некогда великие IT-бренды.

Читать далее

Погружение в метаклассы в Python

Mon, 04/29/2024 - 16:16

Задумывались ли вы, почему функция isinstance(int, object) возвращает True? Объяснение, что все является объектом, которое можно часто услышать, хоть и является правдой, но не дает ответа на вопрос и на самом деле есть профанация, потому что не дает настоящего понимания, а создает только его видимость. Ведь совсем непонятно, почему int (как и любой другой стандартный класс) является непременно экземпляром базового класса. Да, он является подклассом, но почему именно экземпляром? Ответ будет дан по ходу изложения.

Читать далее

Как превратить игрушечного робота-доставщика в ровер с беспроводным управлением через мобильное приложение

Mon, 04/29/2024 - 15:25

Привет, Хабр!

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

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

В общем ровер милый, выполнен неплохо и тут можно было бы остановиться, но в моей голове промелькнула одна мысль:

«А может сделать его управляемым?»

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

Читать далее

Принципы SOLID, только понятно

Mon, 04/29/2024 - 15:15

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

Изучить принципы

Комплаенс-платформа для приёма жалоб и работы с ними

Mon, 04/29/2024 - 15:11

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

Там можно пожаловаться на задержку зп, коррупцию или ещё что-нибудь. Жалоба попадает на специальную платформу, где её изучают, проверяют и либо отклоняют, либо передают дальше, чтобы ответственные разобрались. Это комплаенс-менеджмент.

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

Читать далее

Who's online

There are currently 1 user and 1 guest online.