Привет, Хабр! Меня зовут Денис Логашов, я инженер-исследователь отдела автоматической обработки результатов моделирования и визуализации YADRO. В этом году мне предложили поучаствовать в соревновании по робототехнике в дисциплине Micromouse, где роботизированной мыши нужно как можно быстрее найти путь в центр лабиринта и понять, что цель достигнута. Такие соревнования проводятся в разных странах уже почти 50 лет, и в этом году Micromouse вошел в программу фестиваля РобоФинист 2024 в Санкт-Петербурге, где мы заняли второе место.
Я работал в паре с другим инженером и отвечал за программную часть робота. По моим наблюдениям, меньше половины участников соревнования поняли задачу соревнования, а остальные создали типичный алгоритм прохождения лабиринта, где предусмотрен только один путь от старта до финиша. Поэтому в серии постов я расскажу, какие подходы использовал сам, чтобы решить комплексную задачу Micromouse — исследование лабиринта, построение карты и поиск кратчайшего пути.
Читать далееВ статье описан мой опыт разработки мини-игр для Apple Vision Pro в условиях жёсткого ограничения во времени.
Расскажу, с какими сложностями я столкнулся в ходе работы с 3D-моделями, и поделюсь способами их преодоления. Лайфхаки для упрощения работы с RealityViewContent и Reality Composer Pro прилагаются.
Читать далееВсем привет! У платформы МТС Exolve есть сообщество, которое часто делится полезными гайдами от прокачки своих серверов до открытия ворот по SMS. Наиболее интересные и подробные решили размещать в нашем хабе.
В этом гайде пользователь объясняет, как можно написать простого Telegram чат-бота на NodeJS, который будет пересылать все входящие сообщения в SMS, используя Exolve SMS API.
Читать далееКогда-то давно, аж 2013-й год, на Хабре была статья "Простой SDR приёмник на ПЛИС" автора @iliasam. Я попытаюсь повторить этот проект на другой элементной базе: FPGA плата Марсоход3GW2, микросхема Gowin GW1NR-LV9QN88PC6/I5.
Законы Цифровой Обработки Сигналов кажется остаются всё те же, что и раньше. Посмотрим, что у меня получится.
Читать далееЧасто слышу отголоски дискуссии, что через 10-15 лет за разработчиков будет писать код искусственный интеллект, он же будет находить и фиксить баги, автоматически создавать интерфейсы, анализировать пользовательский опыт и так далее. Так ли это?
Поскольку в Гринатоме сегодня мы уже не только выполняем функцию ИТ-интегратора для Росатома, но и создаем свои ИТ-продукты и выводим их на рынок, у нас очень высокая потребность в кадрах: в Гринатоме более 7 тысяч ИТ специалистов, а к 2035г. их должно стать более 12 тыс.
Поэтому хочу поделиться с вами опытом и видением будущего, каким рынок станет через 10 лет, какие специальности будут востребованы, а какие постепенно уйдут в историю.
Читать далееМаркетплейсы неумолимы, и все интернет-магазины рано или поздно сыграют в ящик… Так стоит ли продвигать интернет-магазин мебели или уже сейчас надо переходить только на маркетплейсы? Как масштабировать продажи в контекстной рекламе? Какие доработки сайта приносят больше продаж? Как не слить бюджет на медийную рекламу и получать продажи с холодного трафика? Методика масштабирования продаж интернет-магазина мебели по 4 точкам роста.
Читать далееИтак, вы гиперскейлер, давайте отталкиваться от этого. Потому что если нет — собирайте хоть 3-tier на OSPF. А гиперскейлер вы в том случае, если у вас большая сеть на тысячи хостов, а лучше стоек. Вы уже попробовали топологию Клоза. Сначала вам очень нравилось. Она вся такая плотная, регулярная и масштабируемая — просто прелесть.
Как только кластер начал грозить вырасти за 2000 хостов, вы стали надстраивать ещё один уровень коммутации и докидывать в него всё новые и новые группы стоек. И продолжаете расти на десятки тысяч узлов. У вас отработанный дизайн, автоматизация ввода нового оборудования. Всё на потоке.
Но отчего‑то вы несчастливы. Вам плохо спится. Гложут сомнения и дурные мысли.
А всё дело в эпохе 400G! Вы долгие годы строили свою сеточку на 25+100, и всего всегда хватало. Раньше. А теперь надо на хосты соточку спустить. А значит и аплинки надо расширять, да вы и сами уже понимаете, что пора: ещё несколько лет — и эта сеть станет устаревшей. 200G, 400G, SerDes по 100 Гб/с на PSM4. Тут думать надо.
И новая сетка выглядит действительно привлекательной, даже почти изумительной.Но как только вы подумаете, что её, такую красивую, нужно как‑то интегрировать с существующей, уже немного опостылевшей сетью, настроение сразу портится — фактически это означает, что нужно менять уровень S2 или строить ещё одну сетку рядом с нужной ёмкостью и каким‑то ужасным образом скрещивать их друг с другом иначе.
Читать далееИз этой статьи вы узнаете, как эффективно организовать очень важную часть разработки на React Native - работу со стилями и ресурсами для создания адаптивных и доступных интерфейсов под три платформы: iOS, Android и Web. Также в целом обсудим особенности верстки и проблемы производительности в рамках данного фреймворка.
Читать далееПродолжаем готовить возможную замену GitLab или GitHub с удобным CI/CD и on-premise размещением. Во второй части подробной статьи-инструкции для новичков поговорим о Gitea Actions: настроим инфраструктуру и Gitea Actions CI/CD.
Читать далееВпервые исследователи обнаружили, что накопление старых и неисправных клеток, известных как сенесцентные клетки, в одном больном органе, может распространиться на несколько здоровых органов, вызывая их отказ. Результаты исследования открывают дверь к профилактике многоорганных и даже возрастных заболеваний. Обеспечивая продление жизни.
Читать далееУпаковка 2D-прямоугольников в прямоугольники большего фиксированного размера необходима в большинстве мультимедийных проектов. В программировании GPU изменение текстур (binding) — затратный процесс. Поэтому при рендеринге текста не стоит использовать по одной текстуре на глиф, вместо этого желательно упаковать глифы в единую текстуру, называемую атласом. В 2D-играх содержащие спрайты атласы называются листами спрайтов (spritesheet). Листы спрайтов также используются для веб-сайтов, потому что скачивать один большой файл удобнее, чем по одному файлу на каждый значок/логотип.
Поначалу я думал, что это достаточно нишевая проблема, но оказалось, что она влияет и на целые отрасли. Сколько рекламных объявлений можно уместить на этой странице газеты? Сколько фигур можно вырезать из этого куска дерева? Сколько посылок поместится в кузов грузовика? Поэтому задача двухмерной упаковки изучалась и в научных кругах.
Самым ценным ресурсом из найденных мной стал превосходный обзор Юкки Йулянки. В нём описано четыре типа алгоритмов и их практическая оценка. Выделяются из них два:
MAXRECTS если вы знаете заранее, какие прямоугольники будете упаковывать («офлайн-упаковка»)
SKYLINE если не знаете («онлайн-упаковка»)
Офлайн-упаковка оптимальнее, потому что сортировка прямоугольников перед упаковкой сильно помогает. Однако в некоторых ситуациях реализовать её невозможно. В моём сценарии мне хотелось кэшировать растеризированные из шрифта глифы, но я не знал заранее все глифы, которые будут использоваться для каждого шрифта и каждого формата (полужирный/курсив/размер...).
Именно поэтому я остановился на алгоритме skyline. Он применяется в stb_rect_pack.h, fontstash, а значит, и в nanovg.
В этой статье объяснён алгоритм skyline и представлена его реализация. Реализация доступна онлайн и в общественном достоянии (UNLICENSE).
Читать далееБольшое количество специалистов в области IT используют переводчики текста в своей работе, и я тому не исключение. Достаточно часто в вакансиях Системного администратора можно встретить требуемый навык - "чтение технической документации на английском языке", но, не всегда такая документация может быть очевидной в полной мере, даже имея базовый уровень английского языка, и как мне кажется, тут нечему стесняется. Для перевода текста чаще всего используется браузер, а также десктопные приложения, я же расскажу про альтернативу таким решениям, для перевода текста прямо в консоли Linux или Windows.
Читать далееТы ищешь первую работу или решил сменить работу? Поздравляю! Впереди тебя ждет карусель интересных приключений: от собеседований и до ожидания обратной связи. Я провел немало собеседований, и у многих кандидатов есть одна общая ошибка — отсутствие подготовки. Они идут напролом, что заслуживает уважения, но можно облегчить себе путь, если подготовиться заранее. Ниже я опишу простые способы подготовки. Однако помни: не стоит затягивать с выходом на собеседования. Подготовка не должна превращаться в бесконечное "а вот этот вопрос изучу поглубже, этот курс пройду, еще видео посмотрю". Не превращайся в "вечного студента". Скорее всего, все нужные знания у тебя уже есть; главное — их УПАКОВАТЬ (как бы инфоцыгански это ни звучало).
Самопрезентация
Одна из самых важных частей собеседования, которая задает его тон. Здесь важно чувствовать себя уверенно и с интересом рассказывать о своем предыдущем опыте работы. Как можно себе помочь?
1. Заранее структурируй рассказ о себе.
Первый вопрос почти всегда — "Расскажите о своем предыдущем опыте". Поэтому тебе нужно подготовить монолог на несколько минут, в котором ты полно и убедительно представишь себя. Основные моменты:
- Информация о проекте (что это за проект; веб или десктоп; сколько % бэка, сколько фронта; функциональность проекта).
- Состав команды (сколько человек, какие роли, как вы взаимодействовали).
- Технологический стек (языки программирования; инструменты для тестирования; системы управления проектами и место хранения документации).
- Процессы в команде (как ставились и отслеживались задачи, взаимодействие с разработчиками, аналитиками и командой QA, как работали со срочными задачами и багами, частота релизов).
Читать далееДанная статья описывает как реализовать уведомление в телеграм при блокировке пользователя Windows. Я постараюсь полностью описать процесс реализации уведомления о блокировке, уточнения и поправки категорически приветствуются.
Читать далееПривет, меня зовут Ирина Орлова, и я преподаю английский сотрудникам IT. Я работала корпоративным преподавателем для продакт-менеджеров и HR Ikea, немецких консалтинговых и архитектурных компаний.
В 2022 году году я открыла свой образовательный проект в Штатах, переехала в Нью-Йорк и продолжаю работать с продакт-менеджерами и тимлидами на этапе поиска работы и адаптации английского под рабочие задачи.
В этой статье я поделюсь несколькими советами и наблюдениями, которые помогут сориентироваться и спланировать процесс изучения английского языка, если вы еще не начали, и сверить часы, если вы уже занимаетесь.
Английский для работы — это проект, который в среднем закрывается за полтора года. В моей практике самые успешные кейсы были реализованы за 8 месяцев, причем 2 ученика с абсолютного нуля.
50% результата зависит от воли ученика
50% от грамотного планирования процесса и опыта преподавателя
Совет 1:
Вам не нужен язык “вообще”, вам нужен фокус на том, что понадобится для работы
Если вы пронаблюдаете за тем, что и как вы говорите в течение рабочего дня (неважно, на профессиональные темы или за ланчем с коллегами), вы увидите, что пользуетесь набором одних и тех же конструкций и слов, одинаково реагируете на сходные ситуации, пишете одни и те же фразы в одних и тех же формулировках. Ваши мысли и внутренние движения могут быть сколько угодно сложными и разнообразными, но их языковое воплощение подвергается категоризации, компоновке и приоритизации по признаку частоты употребления.
Список тем и формулировок, характерных для вас и вашей работы, необходимо выявить и проработать в первую очередь.
Как правило, на первых парах задача сводится к тому, чтобы научиться правильно строить фразы: задать вопросы в настоящем, прошедшем и будущем временах, формулировать отрицания, конструировать запросы и давать комментарии.
Совсем без грамматики тут не обойтись, она задает рамку и несколько десятков “болванок”, на которые вы будете нанизывать лексику в зависимости от конкретных ситуаций. И тренировка этих конструкций должна быть строго на примере рабочих ситуаций. Никаких текстов про экологию, спорт или как Мэри ходит в гости к Гарри. Только рабочие проблемы и их языковое оформление.
Это не значит, что вам вообще не придется осваивать слова и конструкции, не касающиеся ваших рабочих задач. Особенность работы продакт-менеджера или тимлида как раз и заключается в том, чтобы разговаривать с людьми, защищать свою точку зрения, объяснять, влиять, вдаваться в детали и обрисовывать картину в целом. То есть, чем больше языка вы знаете, тем эффективнее вы как специалист. Но на первых порах вам нужно сфокусироваться строго на функционале, расставить опорные точки и не распыляться. Сначала нужно построить скелет, задать координаты, а потом допиливать детали.
Практический совет:
Продумайте список ситуаций, в которые вы регулярно попадаете на работе, например:
питч проекта
презентация road map
организация встреч
уточнение запроса
распределение задач
контроль
просьба, объяснение, корректиров
Читать далееКак создать асинхронный API для мониторинга курсов валют на Python? В этом практическом руководстве мы разработаем сервис на FastAPI с интеграцией APScheduler, который будет отслеживать курсы USD и EUR в банках России. Вы узнаете, как реализовать асинхронный парсинг данных, настроить планировщик задач и развернуть приложение в облаке. Проект включает систему аутентификации, фильтрацию данных и REST API — идеальный пример для изучения современной веб-разработки на Python.
Читать далееПривет, я Андрей Краснопеев — основатель агентства стратегических исследований «Фабрика Гипотез». Мы помогаем бизнесу анализировать рынок и создавать востребованные продукты. Недавно к нам обратилась команда покерного акселератора Firestorm. Они запускают курс с опытными тренерами, собственной платформой и поддержкой в Дискорде.
Читать далееВ этой статье я расскажу вам, как использовать DataFusion для создания собственного опыта разработки баз данных.
Базы данных являются одними из самых сложных частей программного обеспечения, задуманных с момента появления вычислительной эры более полувека назад. [1] Почти каждая часть технологии в конечном итоге касается базы данных в той или иной форме. Несмотря на повсеместность баз данных в программном стеке, подавляющее большинство разработчиков были приучены относиться к базам данных как к более или менее черному ящику — сложным плотным чарам программного обеспечения, созданным волшебниками и знатоками, укрывшимися в элитных рядах компаний, занимающихся базами данных, или в таких местах, как Google. Поговорка для остальных из нас, как она есть, — никогда не пытайтесь написать свою собственную базу данных .
Тем не менее, несмотря на их долговечность, мы наблюдаем постоянные инновации в этой области, которая впервые началась с появлением Hadoop около 2 десятилетий назад. На сайте ClickBench теперь перечислено более 50 баз данных в его наборе тестов [2]. И это только аналитические движки. С учетом последних тенденций переписывания всех больших данных на Rust [3] не проходит и месяца, чтобы интересный новый проект не оказался в тренде Hacker News. В этой статье мы рассмотрим, насколько легко (или сложно) создавать базы данных с помощью Apache Datafusion и можете ли вы, будучи простым смертным, на самом деле реально создать собственную базу данных и внедрить инновации вокруг опыта разработчика.
Читать далееПривет, Хабр! Сегодня рассмотрим, как реализовать паттерн Composite в Kotlin с помощью sealed-классов и корутин. Если у вас есть сложная система с кучей объектов — простых и составных — и вы хотите управлять ими, не теряя асинхронности, то этот гайд для вас.
Читать далееПривет, Хабр! Я уже рассказывал про Compound v2 в предыдущей статье, там мы описывали основы протокола. В этой статье сравним вторую и третью версию, а еще детальнее разберем архитектуру и смарт-контракты.
Читать далее