Обновить
3
0
Michael Elin@vanelm

Consulting Network Engineer

Отправить сообщение

Почему не работает VoWiFi в роуминге

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

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

Есть у меня телефон Redmi Note 13 Pro 5G, который покупался по двум причинам — в нём есть eSIM, он поддерживается российскими операторами в плане работы VoWiFi (он же WiFi calling). И таким образом, я проживая вне РФ смог купить удалено симку российского оператора, которая мне периодически нужна и звонить и принимать вызовы без роуминга, находясь где угодно.

Приехал я тут в Турцию и достал свой телефон и обнаружил, что VoWiFi не работает, хотя он включен в настройках. Написал в поддержку Билайн — те как всегда отморозились тем, что ничего не знают, всё мол должно работать.

Тут нужно заметить, что я живу не в РФ и по месту моего жительства VoWiFi работал, но непосредственно перед отъездом в Турцию я обновил прошивку телефона (со штатной на штатную обычным OTA). В конце статьи напишу, почему это может быть важно.

Ну что делать? А делать, имея роутер на OpenWRT можно следующее. Широко известно, что VoWiFi работает путем установки IPSec соединения с узлом ePDG (Evolved Packet Data Gateway). Для этого происходит сначала обмен по UDP порту 500, а потом по порту 4500.

Вот и установим на роутер tcpdump и посмотрим, что за UDP трафик исходит от моего телефона командой:

Читать далее

Хватит писать try/catch вокруг fetch: история о том, как я устал ловить ошибки

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

Каждый фронтендер знает эту боль: пишешь запрос через fetch - и автоматически добавляешь try/catch. Где-то ловишь TypeError, где-то 500-й статус, где-то подвисший запрос с AbortController. В итоге половина кода в проекте - это обработка ошибок, а не бизнес-логика.

Я прожил с этим годами. Чем больше становился проект, тем больше росла копипаста: таймауты, ретраи, проверки на res.ok, костыли для разных браузеров. Одно и то же, снова и снова.

И вот в какой-то момент я понял: проблема не в том, что ошибки случаются. Проблема в том, что сам fetch вынуждает нас ловить их вручную, каждый раз, в каждом запросе.

Так появилась библиотека @asouei/safe-fetch. Маленькая (3kb), без зависимостей, но с тем, чего нет у самого fetch: общий таймаут, умные ретраи, нормализованные ошибки и поддержка Retry-After.

🌟 Библиотека добавлена в Awesome TypeScript — один из крупнейших мировых списков лучших TypeScript-проектов

Как я решил проблему

Публичное вскрытие: Провал IBM Watson Health

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

Как IBM не смогла превратить технологию Watson в медицинский продукт и потеряла миллиарды.

(От автора: Все факты в этом материале взяты из открытых источников: The Wall Street Journal, STAT News, IEEE Spectrum и других. Имена и события реальны. Наша цель — извлечь уроки из чужих ошибок, а не бросить камень в гиганта. Великие провалы учат лучше скромных успехов.)

Читать далее

ATS-20+ — мал да удал. Испытания компактного широкополосного радиоприемника

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

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

Стремление к компактности и дешевизне привело к созданию линейки универсальных чипов для построения DIY-радио — Silicon Labs 473X. Китайские инженеры ухитрились полностью запихнуть приемный тракт внутрь единственной недорогой микросхемы, которая прекрасно совместима с различными микроконтроллерами и может управляться по I2C-шине. Она стала центральной частью разных приемников, один из которых мы сегодня детально разберем.

Читать далее

Контроллер управления насосами полива на Arduino Uno с сенсорами Capacitive Soil Moisture Sensor v2

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

Хочу представить вашему вниманию контроллер управления насосами в зависимости от датчиков влажности.

Программа написана на C++ с использованием фреймворка Arduino.

Но никаких дополнительных библиотек типа Thread для реализации кода без блокировок(delay).

Важно отметить:

Программа использует объектно-ориентированное программирование с классами SoilSensor,PumpController, ProcessStats и Pump, используются классы, конструкторы и другие объектно-ориентированные возможности.

Программа предназначена для выполнения на микроконтроллерах Arduino или совместимых платформах.

Читать далее

Как я собрал себе нормальную аудиосистему из выброшенных кем-то колонок

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

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

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

Читать далее

Создаем гаджеты с Matter — новым стандартом для умного дома

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

Предположим, мы хотим создать устройство для умного дома, совместимое с Google Home, Amazon Alexa, Samsung SmartThings, Apple HomeKit, Tuya и другими платформами. В таком случае нам придется присоединиться к их партнерским программам и уже настраиваться на серьезный лад.

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

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

Простой пример — под катом

Личный топ методов Pandas

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

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

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

Читать далее

DHCP: настройка серверов, Relay и анализ трафика в Wireshark

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

Приветствую! В любой сети устройства должны получать IP-адреса, шлюзы и DNS-серверы, чтобы корректно обмениваться данными и иметь доступ в Интернет. Конечно, можно настраивать всё вручную, но в реальной жизни это неудобно и часто приводит к ошибкам. На помощь приходит протокол DHCP (Dynamic Host Configuration Protocol). Его задача проста - автоматически раздавать клиентам все необходимые сетевые параметры, включая IP, маску подсети, шлюз и DNS.

В этой работе мы подробно разберём, как работает DHCP, от процесса обмена сообщениями DORA (Discover, Offer, Request, Acknowledge), через анализ сетевого трафика в Wireshark, до настройки DHCP-сервера на MikroTik и Ubuntu-Server. Мы также рассмотрим дополнительные возможности протокола, такие как DHCP Relay, который позволяет обслуживать клиентов в других подсетях.

Читать далее

Реально ли извлечение энергии из радиоволн?

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

Картинка: pikisuperstar, freepik

Вокруг каждого из нас плещется невидимый океан, в котором мы находимся с самого рождения — электромагнитные излучения, которые пронизывают всё вокруг. Будучи однажды осуществлёнными (1896 г., А.С. Попов), способы радиопередачи существенно эволюционировали за 128 лет, и в настоящее время мы не можем себе представить жизнь без такого канала доставки информации.

К тому же, если раньше только ограниченный круг людей непосредственно сталкивался с радиосвязью, а другие лишь знали о том, что «она в принципе где-то есть» (слушая те же радиостанции, например), то с появлением и распространением сотовой связи и мобильного интернета очень большое количество людей стало непосредственными пользователями её. Хочется сказать: «и количество излучений вокруг нас ещё более прибавилось» :-) — это будет важно в свете того, о чём пойдёт речь далее.

Таким образом, в подавляющем большинстве применений радиосвязь используется для передачи информации — непосредственной или, например, в случае тех же радаров, отражённой от объекта.

Однако помимо информации, которую несёт радиоволна, она обладает и определённой энергией, поэтому тут существует некоторая возможность и для извлечения из радиоволн энергии! 

Посмотрим, какие возможности тут есть...

Читать далее

Вайб-кодинг и реальное программирование на С++

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

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

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

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

Читать далее

Монитор качества воздуха Zigbee своими руками

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

Сразу должен сказать, что идея не моя. Изначально речь шла об устройстве на дисплее epaper, который бы на экран выводил значения CO2, температуру и влажность. Ну еще время. В процессе обсуждения родился проект, который мы назвали Air Quality Monitor.

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

Читать далее

Звонки через Jabber в докер-контейнере за 5 минут

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

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

Есть быстрый и простой способ: за несколько минут вы поднимаете собственный Jabber-сервер. Дальше — дело техники: рассылаете приглашения маме, бабушке, теще, жене и соседке Даше. После этого можно спокойно звонить и переписываться в защищённом мессенджере, который полностью под вашим контролем.

Звонки идут в зашифрованном режиме, работают p2p. А если у собеседника хитрый NAT, то на помощь автоматически приходит встроенный STUN-сервер.

Клиенты есть под все платформы: Android, iOS, Windows, macOS и Linux.

Читать далее

Скриншоты сайта в адаптивную Tailwind верстку

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

Я знаю, что существует 100 500 способов перекинуть картинку в готовую вёрстку.
Но когда у меня дошло до дела, результат оказался так себе.
То ли я криворукий, то ли все эти инструменты ещё далеки от совершенства.
В итоге понял, что мне проще накидать свой собственный велосипед — скрипт на Python (~200 строк).

Решил выложить, может, кому‑то пригодится.

Скрипту можно скормить три скриншота сайта:

1) Десктоп‑версия

2) Планшет

3) Мобильная версия

На выходе получим одну HTML‑адаптивную вёрстку (десктоп, планшет, мобила) с использованием Tailwind CSS.

Читать далее

Книга «Основы Go: Community edition» 2-е издание

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

Всем привет!

Завершил обновление предыдущей версии книги и выкладываю в открытый доступ второе издание «Основы Go: Community edition». О том, что изменилось, когда будет печатная версия книги и многом другом - в самой статье ;-)

Читать далее

Unit тесты в React разработке

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

Зачастую разработчики сталкиваются с двумя крайностями: либо пишут огромное количество бесполезных тестов, которые почти ничего не проверяют, либо вообще отказываются от тестирования, боясь сложностей. Здесь мы рассмотрим простой и эффективный подход к созданию правильных юнит-тестов в проектах на React.js.

Читать далее

Собери Svelte 5 в своей голове

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

Даже если вы никогда не заглядывали «под капот» фреймворков, Svelte 5 — отличный повод это сделать. Вместо сухих теорий мы шаг за шагом разберём, как привычный HTML-подобный код Svelte превращается в быстрый JavaScript, способный работать без лишнего балласта. Автор статьи, Тан Ли Хау из сообщества Svelte, показывает этот процесс на простых примерах, так что вы сможете буквально «скомпилировать» Svelte у себя в голове и понять, что на самом деле делает ваш код.

Читать далее

Ettercap: руководство по MITM-атакам в локальной сети

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

Контроль над сетевым трафиком? Легко. Перехват данных, подмена сайтов, изменение пакетов на лету — это лишь малая часть того, на что способен Ettercap.Мы написали краткий гайд, как подчинить себе этот инструмент.

Читать далее

Легчайший бот на Python, который переводит ваш голос в текст

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

Всем привет! Недавно вдохновилась всякими ботами в тгшке и решила для будущего портфолио сделать своего первого бота + подумала, что может быть это будет полезно кому-то из вас :-)

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

Читать далее

Этот увлекательный мир радиоприёмников

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

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

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

Если же вы хотите быть на переднем крае технологий радио, обязательно попробуйте программно-определяемое радио SDR (Software Defined Radio). Возможности SDR намного превышают всё то, что можно реализовать за приемлемые деньги на чисто аналоговых технологиях. Тем, кто только начинает знакомиться с миром радио, я рекомендую сразу начинать с SDR. 

Читать далее

Информация

В рейтинге
Не участвует
Откуда
Praha, Hlavni Mesto Praha, Чехия
Зарегистрирован
Активность