Pull to refresh
1
0
Send message

Бесперебойное питание для роутера и GPON-терминала своими руками

Level of difficultyEasy
Reading time7 min
Views26K

GPON технология подключения к интернету — одна из самых удачных инноваций последних лет. Она позволяет полностью избавиться от питания устройств «последней мили», что особенно актуально при длительных перебоях с электроэнергией. Почти все остальные технологии позволяют обеспечить интернет только временно — на час‑два, и время это не зависит от конечного пользователя — только от доброй воли провайдера, обеспечивающего своё оборудование источниками бесперебойного питания «на чердаке».

В случае же GPON, единственное, о чём должен позаботиться конечный потребитель — обеспечение питания терминала на своей стороне. Часть терминалов сразу снабжают встроенным WiFi роутером, но чаще всего этого не происходит и провайдер предоставляет отдельное устройство. Наиболее частая конфигурация — GPON‑терминал, потребляющий 0.5А по 12-ти вольтам, и WiFi‑роутер, потребляющий 0.3А по 9-ти.

Конечно, можно купить дорогостоящую зарядную станцию, с ёмкими аккумуляторами и быстрой зарядкой, подключить блоки питания устройств к инвертору станции на 230в, но это дико неэффективно. В моём случае потребление такой конфигурации составило 16 ватт.

Следующий вариант — купить USB‑DC преобразователи на 9 и 12 вольт, и воткнуть их в мощный пауэрбанк. Потребление сразу становиться более экономичным. В моём случае оно упало до двух ватт, но я использовал достаточно дорогие устройства с поддержкой технологий QC2/QC3. Хотя, простенькие шнурки без этих наворотов и повышайками внутри шнура позволяют достичь примерно тех же параметров. К повышайкам мы ещё вернёмся...

Читать далее

Тренажер для системного администратора или как превзойти своих бывших сокурсников на собеседовании

Reading time5 min
Views81K
Доброго времени суток, читатель Мегамозга!

Эта статья не претендует на how-to, но может стать отличной отправной точкой для будущих выпускников ВУЗов. Именно для тех, кто понимает, что одними знаниями из ВУЗа работодателя не только не удивишь, но и не устроишь.

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

Всех новичков в этой сфере прошу к столу под кат.
Предупреждаю: здесь нет никаких конфигов и мануалов по настройке.
Читать дальше →

Как я разработал квадрокоптер на ESP32 с нуля (ушло 4 года)

Level of difficultyMedium
Reading time12 min
Views65K

При сборке квадрокоптеров и других БПЛА обычно используют готовую плату полетного контроллера, содержащую все необходимые датчики и периферию, и готовую полетную прошивку, например, Betaflight, ArduPilot или PX4. Полетный контроллер управляет моторами квадрокоптера и обеспечивает стабильный полет.

Занимаясь БПЛА с 2016 года, я решил разобраться в устройстве полетных контроллеров максимально глубоко и создать квадрокоптер с нуля, не используя готовый полетный контроллер и готовый софт. Спустя долгое время разработки мне удалось это сделать. Я написал прошивку с максимально простым исходным кодом и выложил ее на GitHub. В этой статье я расскажу о теории и практике разработки полетного софта для квадрокоптера и проиллюстрирую это на примере своего дрона на базе микроконтроллера ESP32, который можно увидеть на картинке выше.

Читать далее

OpenSCAD для пионеров и пенсионеров: целый день для знакомства

Reading time5 min
Views18K
image

Постоянно видел на Thingiverse модели с исходниками на OpenSCAD. Даже пытался загружать этот код — но, похоже, тормозная жидкость залита в OpenSCAD при разработке в изобилии, при отображении более-менее сложной модели компьютер подвисает на десятки минут. В итоге — не вдохновило.

Обычно я пользуюсь древним Sketchup — еще гугловским, той античной версией, когда гугл врал, что Sketchup — это навсегда, и его бесплатная версия в усеченном варианте будет всегда доступна даже для коммерческого использования. Я, будучи по натуре легковерным, даже с Ruby слегка разобрался, автоматически прорисовывал профиля крыльев игрушечных самолетиков в Sketchup и генерировал код для пенорезки, чтобы их вырезать. Почти вчера было — но Ruby я уже абсолютно не помню.
Нарисовать в Sketchup что-то очень сложное и мелкое, чтобы можно было распечатать — это головная боль. Нарисовать-то можно, но он потеряет маленькие кусочки изображения, если их и удастся преобразовать в STL, то сгенерировать код для печати ни один слайсер не сможет.
Читать дальше →

Типичные задачи аналитика данных. Часть 1. Упала метрика

Level of difficultyMedium
Reading time15 min
Views18K

В прошлой статье мы рассматривали неочевидные проблемы АБ тестирования и как можно с ними справляться [ссылка]. Но часто бывает так, что при внедрении новой функциональности АБ тестирование провести нельзя. Например, это типично для маркетинговых кампаний нацеленных на массовую аудиторию. В данной ситуации существует вероятность того, что пользователи контрольной группы, которым недоступна рекламируемая функциональность, начнут массово перерегистрироваться. Также возможен сценарий, при котором возникнет значительное количество негативных отзывов из-за воспринимаемой дискриминации. Но задача оценки таких нововведений одна из наиболее частых, которые приходится решать аналитикам. Если метрики только улучшаются, то это обычно легко объяснить хорошей работой, а если метрика ухудшилась, то сразу появляется задача на аналитика. В этой заметке мы рассмотрим первую часть задачи - а действительно ли метрика упала и если да, то имеет ли смысл разбираться дальше?

Читать далее

Генерация случайных чисел на микроконтроллерах

Reading time9 min
Views48K


Про генераторы случайных чисел написано очень много, но почти всегда, когда дело доходит до реализации, подразумевается (или явно говорится), что речь идет об x86/x64 и других «взрослых» архитектурах. В то же время, форумы, посвященные разработке устройств на микроконтроллерах, пестрят вопросами «как мне сгенерировать случайное число на %controllername%?». Причем диапазон ответов простирается от «смотри гугл/википедию» до «используй стандартную функцию». Далеко не всегда эта «стандартная функция» есть и устраивает разработчика по всем параметрам, чаще наоборот: то числа получаются далеки от случайных, то скорость работы слишком мала, а то полученный код вообще не помещается в свободную память.
Попробуем разобраться, какие бывают алгоритмы генерации случайных чисел, как выбрать подходящий, а главное, в чем особенности реализации этих алгоритмов на контроллерах.
Читать дальше →

Самодельный 3D принтер на гальванометрических сканаторах

Reading time5 min
Views12K

История о том, как я делал свой первый 3D принтер.

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

Напечатать

Закон больших чисел и то, чем он не является

Reading time3 min
Views36K
О законе больших чисел (збч) написано много (например, на английском, тут и тут, также [1]). В этом тексте я попробую рассказать о том, чем закон больших чисел не является – об ошибочном восприятии этого закона и потенциальных ловушках, спрятанных в математических формулировках.

Начнем с того, что же такое закон больших чисел. Неформально, это математическая теорема о том, что «вероятность отклонений среднего по выборке от математческого ожидания мала» и что «эта вероятность стремится к нулю при увеличении выборки». Совсем неформально,
Читать дальше →

Загрузочный диск Windows PE своими руками

Reading time36 min
Views144K
Сисадмину или мастеру сервисного центра, да и просто в хозяйстве на всякий случай помогает в работе загрузочная флешка с набором полезных программ, и в интернете можно найти полно готовых решений с «кучей» софта на все случаи в жизни. Но каждый, кто пользовался чужими готовыми вариантами LiveCD, рано или поздно задумывался о том, что по факту используется лишь малая часть приложений. Весь же остальной ненужный груз софта, который порой может составлять более 98% всего набора LiveCD, лишь мешает работать. Почему? Потому что LiveCD загружается прямиком в оперативную память, и чем больше объем LiveCD, тем больше ожидания загрузки, а если ещё и попался древний компьютер, то LiveCD может и вовсе не загрузится от нехватки памяти. И что же делать? Сделать свой собственный LiveCD! В этой статье я расскажу то, чего вы не найдете даже в гугле.
Читать дальше →

Как разработчику организовать личную базу знаний: систематизация информации из книг, статей, видео и курсов

Level of difficultyEasy
Reading time6 min
Views53K

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

Хочу поделиться своими мыслями и опытом («сыном ошибок трудных») в организации своей базы знаний, регулярно приобретаемых после прочтения разных книг, статей, просмотра видосов, прохождения курсов и прочих самообразовательных активностей.

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

Читать далее

Как мы верифицированный полетный контроллер для квадрокоптера написали. На Ada

Reading time10 min
Views21K

Однажды на новогодних каникулах, лениво листая интернет, бракоделы в нашем* R&D офисе заметили видео с испытаний прототипа роботакси. Комментатор отзывался восторженным тоном – революция, как-никак. Но тренированное ухо расслышало в шуме с испытательной площадки еще кое-что. Контроллер скорости (штука для управления тягой винтов) сыграл мелодию при старте, как это любят делать пилоты дронов, которые часто используют полётный контроллер Betaflight. Неужели там бета-флайт? Ну, или какая-то из ее немногих разновидностей.

Перед глазами побежали флешбеки, где-то из глубин подсознания всплыла забытая уже информация о прошивках для Тойоты на миллионы тысяч строк Си и 2 тысячи глобальных переменных (Toyota: 81564 ошибки в коде).

После просмотра исходного кода Betaflight на гитхабе стало еще страшнее, и чем дальше, тем хуже. Это – управляющая программа для тяжелого устройства с острыми винтами, которое летает высоко, быстро. Становится страшно: игрушки это одно, но я бы не хотел летать, на таком такси. Но ведь можно иначе? Можно, решили мы! И решили это доказать. На Avito был куплен акробатический FPV-“квадрик” на базе STM32F405, для отладки – Discovery-платы для этого же контроллера, а дальше все как в тумане..

Читать далее

Отечественные Линуксы: кто есть кто?

Reading time7 min
Views243K

В продолжении предыдущей статьи я решил разобраться - что вообще представлено на рынке "отечественных" операционных систем общего назначения. Ну то есть таких, которые можно использовать в широком спектре задач и оборудования - рабочих мест и серверов. Сразу отмечу - меня интересовали вопросы массового "корпоративного" использования, я мало времени уделил тонкостям сертификации и дополнительным встроенным средствам защиты. А вот что из чего сделано было очень интересно!

Пошли разбираться!

Ускоренное импортозамещение или как разворачивать Linux-дистрибутив БЕЗ помощи SCCM в распределённой корпоративной сети

Reading time9 min
Views22K
Готовы к захвату десктоповГотовы к захвату десктопов

Опять в интернете кто-то неправ! Натолкнулся недавно на статью и даже сначала ужасно огорчился. И один из комментариев в самую точку — зачем насиловать пингвина виндой? Разумеется, это негодование шуточное. На самом деле — это инсталляция с помощью стороннего dhcp/bootp-сервера, а то что он на windows, так это другой вопрос — у кого и что было, кто и чем умеет пользоваться. Ребята, молодцы! По крайней мере, движутся в правильном направлении. А вот насколько это проще без инфраструктуры Windows, мы сейчас и посмотрим.
Читать дальше →

Быстрый двоичный поиск без ветвления

Level of difficultyMedium
Reading time15 min
Views17K

Мои читатели — занятые люди, поэтому сразу перейду к делу. Вот она, самая быстрая обобщённая (и простая) реализация двоичного поиска на C++:

template <class ForwardIt, class T, class Compare>
constexpr ForwardIt sb_lower_bound(
      ForwardIt first, ForwardIt last, const T& value, Compare comp) {
   auto length = last - first;
   while (length > 0) {
      auto rem = length % 2;
      length /= 2;
      if (comp(first[length], value)) {
         first += length + rem;
      }
   }
   return first;
}

Тот же интерфейс функции, что и у std::lower_bound, но вдвое быстрее и короче. «Без ветвления», потому что if компилируется в команду условной передачи, а не в ветвление/условный переход. Ближе к концу статьи мы изучим опции компилятора и даже более быстрые версии полностью без ветвления. Для понимания этой статьи не нужны особые знания в C++. Достаточно понимать, что итераторы (first и last) по сути являются указателями на элементы массива, хотя могут указывать на один элемент дальше, чем последний элемент массива. Можете не обращать внимания на template, class, constexpr и &. Вот если бы существовал быстрый и чистый язык, работающий на уровне железа...1 2
Читать дальше →

Что происходит, когда запускаешь «Hello World» в Linux

Level of difficultyMedium
Reading time15 min
Views29K

Сегодня я задумалась о том, что происходит, когда запускаешь в Linux простую программу «Hello World» на Python.

print("hello world")

Вот как это выглядит в командной строке:

$ python3 hello.py
hello world

Но внутри происходит гораздо больше. Я объясню, что там творится, и, что гораздо важнее, расскажу об инструментах, при помощи которых вы сами сможете исследовать происходящее. Мы воспользуемся readelf, strace, ldd, debugfs, /proc, ltrace, dd и stat. Я не буду рассматривать относящиеся к Python части, только объясню, что происходит при выполнении динамически компонуемых исполняемых файлов.
Читать дальше →

Как с помощью ChatGPT писать SQL-запросы. Несколько кейсов

Reading time6 min
Views16K

Привет, Хабр! Меня зовут Анастасия Иванова, я работаю в МТТ (входит в экосистему МТС) техническим писателем МТС Exolve. В статье расскажу о том, как ChatGPT может сэкономить время и усилия начинающего специалиста по SQL.

Нейросеть может быть весьма полезной для тех, кто плохо знаком с языком структурированных запросов. Пользователю нужно просто сказать нейросети, что требуется сделать, и она сгенерирует соответствующий SQL-запрос под его нужды. Таким образом, ChatGPT помогает в работе, а также позволяет изучать SQL и эффективнее использовать возможности языка. Подробности — под катом.

Читать далее

USB на регистрах: составные устройства

Reading time13 min
Views9.3K


Еще более низкий уровень (avr-vusb)
USB на регистрах: STM32L1 / STM32F1
USB на регистрах: bulk endpoint на примере Mass Storage
USB на регистрах: interrupt endpoint на примере HID
USB на регистрах: isochronous endpoint на примере Audio device


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

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

013.jpg или Принцессы не какают

Reading time20 min
Views255K
Вот уже совсем скоро конец света, дорогие мои айтишнички. Чтобы вы не боялись закрывать сегодня глазки, я расскажу вам добрую сказочку. О том, что даже после самого тёмного кончика светика, после самого дремучего апокалипсика, когда даже электрончики откажутся строем ходить по проводкам, для вас, дорогие айтишнички найдётся работёнка… Принцессы? Принцессы будут. И драконы тоже. Какая ж сказка без принцесс и драконов? Так что не боимся, закрываем глазоньки и слушаем волшебную сказочку...
image
— Именем Князя Питерского, давайте сюда декларацию. Что везем? Откуда?
— Из Новосибирска. 256 мегабайт сертифицированных данных для Интернета Его Высокопревосходительства. Научные, метеорологические, новости, деловая и частная корреспонденция, — доложила я, зная, что таможня шутить не любит.
— Открывайте, посмотрим.
— Что, все 256 мегабайт смотреть будете?
Открывайте, разберемся...

OLE, COM, COM+

Reading time4 min
Views11K

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

Читать далее

Самые популярные бесплатные движки для разработки игр

Reading time7 min
Views229K
В январе я участвовала в своем первом геймджеме — Global Game Jam 2022, в Стамбуле. На джеме все участники писали игры на движках — ибо надо быстро. Игровой движок — это физика, рендеринг, скрипты, искусственный интеллект. Создавать игру с нуля или пользоваться движком — вопрос вкуса. Вон, Джонатан Блоу вообще пишет свой движок, чтобы писать на нем игру.

Я обратила внимание, что большинство студентов использовали либо Unity либо GameMaker. Сама я питаю нежные чувства к Construct, но на нем всего одна команда делала игру. Я решила поискать альтернативу для себя, заодно запилила подборку бесплатных движков для начинающих (а может и продолжающих) игроделов.

Еще я веду канал в Telegram GameDEVils (на русском) и блог на Substack (на английском), делюсь там клевыми материалами (про геймдизайн, разработку и историю игр).

Популярные движки Steam и itch.io


Вот статистика, игры на каких движках выкладывают в Steam:


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

Information

Rating
Does not participate
Registered
Activity