субота, 11 лютого 2023 р.

Питание устройств через POE

Удобный способ организовать питание тому или иному гаджету (это может что угодно - точка доступа, шлюз, мини ПК, камера) в месте куда проложен Ethernet кабель - при помощи технологии POE - Power Over Ethernet. Она позволяет по одному кабелю передавать и данные и питание. Часто это применяют в IP камерах - которые поддерживают POE и работают через специальные POE коммутаторы или NVR (сетевые видеорегистраторы). Но это можно применять и для других устройств, которые не поддерживают эту технологию. Возьмем например шлюз с Ethernet - tuya или один из вариантов для mihome - Xiaomi hub 2 или Xiaomi Gateway 4.

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

Еще один плюс такого решения - организовав бесперебойное питание на уровне POE коммутатора или инжектора - автоматически получаем его для устройств которые к ним подключены.

понеділок, 6 лютого 2023 р.

Шлюзы

Шлюз, он же хаб - что это такое и чем отличается между собой вся та огромная куча устройств, от которых у многих голова идет кругом.

Для удобства я буду использовать один общий термин - шлюз (на мой взгляд он более подходящий).

середа, 4 січня 2023 р.

Знайомство з Flutter для iOS розробників

Команда Flutter додала до документації спеціальний розділ, який допомагає iOS розробникам познайомитися з фреймворком, порівняти його основні концепції та компоненти з аналогічними у SwiftUI або UIKit.

Схожий документ є також і для мови Dart, де його порівнюють з Swift.

вівторок, 3 січня 2023 р.

Повернення активності у блозі

Трохи відпочинку і уперед, їбошить простір україномовного техноблогінгу.


Upd. На жаль зараз у нас одна мета - вижити. *** русня

неділя, 29 листопада 2020 р.

Внедрение зависимостей (dependency injection) в Swift 5.1

Внедрение зависимостей очень горячая тема в любой области разработки, где мы пишем что-то более сложное чем Hello, World. Однако несмотря на казалось бы изученный вдоль и поперек вопрос, вариантов его решения вы можете на просторах интернета найти великое множество. И в каждом месте оно подается как единственно правильное. И как же выбрать? Предлагаю в этой статье немножко рассмотреть подходы, их плюсы и минусы, немножко поиграться со Swift’ом вообще и попробовать его новые фичи в виде @PropertyWrapper’s.

неділя, 16 серпня 2020 р.

CS193p iPhone Application Development Spring 2020

Lecture videos from the Stanford University course CS193p, Developing Applications for iOS using SwiftUI. These lectures were delivered on-line (due to the novel coronavirus outbreak) to Stanford students during Spring quarter (April) of 2020 and are now being made available for all to watch.

Supporting materials (homework write-ups, demo code, etc.) that were distributed to students at the time the course was given have been archived at https://cs193p.stanford.edu.

четвер, 27 лютого 2020 р.

Entity Component System (ECS)

Все мы неоднократно слышали о чудесах объектно-ориентированного программирования (ООП), позволяющих контролировать сложность программ, которые мы разрабатываем. Объект реального мира сопоставляется объекту какого-либо класса в коде. Вспомним, к примеру, хрестоматийный пример с Animal, Dog, Cat и т.д.

Но оказывается, игровая индустрия уже давно ушла от ООП в сторону Data Oriented Design (DOD), дизайна программ основанного на данных. Вот главные причины:

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

Эти и многие другие проблемы ООП в играх рассматривает Кэтрин Вэст (Catherine West) в своем выступлении Using Rust For Game Development на RustConf 2018.

Кэтрин, как апологет языка Rust, показывает, как использование устаревшего антипаттерна SuperObject в этом языке ведет к бесконечной борьбе с borrow-checker'ом. "Сдавшись", Кэтрин постепенно начинает логично модифицировать архитектуру игры так, что в итоге приходит к Entity Component System (ECS), пожалуй, самой знаменитой реализации концепции Data Oriented/Driven Design, в которую Rust вписывается чуть более, чем полностью. В результате получается гибкая и более производительная система сущностей и компонентов, которые могут быть без труда сериализованы на диск или в сеть.

Кстати, есть более длинная, но и более интересная версия доклада в виде поста с кодом в блоге Кэтрин

неділя, 15 вересня 2019 р.

Что нового в C++ 20 и какие изменения ожидают язык в будущем?

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

После C++ 17 это будет шестая редакция стандарта. Программирование на C++ включает в себя множество возможностей, от простейшего «С с классами» до написания кода наивысшего уровня.

О том, что нового ждёт разработчиков на C++, можно почитать в оригинале статьи.

C++20 IS FEATURE COMPLETE; HERE’S WHAT CHANGES ARE COMING

пʼятниця, 12 жовтня 2018 р.

REST is not RPC

Тебе не приелось слово REST? Нет, я не говорю об отдыхе, я говорю про тот самый архитектурный стиль. Пожалуй, слишком часто я слышу о том, что у тех REST API, у этих REST API, а потом, оказывается что всё не так просто. Здесь пойдет речь о том какой смысл в этой аббревиатуре и что в неё вкладывают все вокруг, мы вспомним идеи и посмотрим как их реализуют.

понеділок, 10 вересня 2018 р.

Browsh

Нашел интересную штуку: текстовый браузер, который может работать в терминале и поддерживает HTML5, CSS3, JS, видео и WebGL.

неділя, 12 серпня 2018 р.

Книга по x86 ассемблеру

Многие говорят, что сейчас знание ассемблера не нужно, что это прошлый век и все такое. Однако когда такие "советчики" встречаются с багом компилятора или с непонятным core dump'ом они почему-то сразу смолкают.

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

Неплохое введение по ассемблеру можно найти в книге А. Столярова "Программирование на языке ассемблера NASM"

Книга бесплатная. Рекомендую, если вы совсем "чайник".

пʼятниця, 4 травня 2018 р.

Git в качестве создателя отчетов

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

git log --author="author_name" --after="1 week ago" --oneline

субота, 10 березня 2018 р.

Мягкое введение в машинное обучение

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

пʼятниця, 9 березня 2018 р.

Инициализаторы в if С++17

В C++ можно объявлять переменные, которые преобразуются в bool, прямо в скобках оператора if:

 if (bool is_enabled = IsEnabled())
   assert(is_enabled);

 while (bool should_contunue = ShouldContinue())
   assert(should_continue);

 if (void* ptr = GetPointer())
   assert(ptr != nullptr);

 if (std::optional<int> value = GetOptional())
   assert(value.has_value());

В C++17 ввели инициализаторы непосредственно в операторе:

 if (Status status = Foo(); !status.ok())
   return status;

Что сильно напоминает Go:

 if err:= Foo(); err != nil {
   return err
 }

середа, 28 лютого 2018 р.

Разработчики Instagram о работе с Python и Django

Нашел серию статей разработчиков Instagram о том, к каким методам им приходится прибегать для поддержания работы веб-версии, написанной на Python и Django.

пʼятниця, 23 лютого 2018 р.

Квадрокоптеры-атлеты

Квадрокоптеры-атлеты балансируют с тростью. Странно звучит, не так ли? Сегодня поделюсь с вами видео из robot lab в TEDGlobal. Raffaello D'Andrea демонстрирует применение моделей из теории управления и не только на квадрокоптерах. Сначала, один коптер с одной и тойже моделью балансирует как с тростью, так и с фужером с жидкостью. Смотрится очень эффектно. Затем, коптеры-атлеты выполняют кувырки и ловят мячи сетью, отбивают летящие мечи и имитируют другую среду, например, вязкую жидкость или гравитацию Плутона. В общем, очень занимательное видео, длится 16 минут. Рекомендую к просмотру.

понеділок, 19 лютого 2018 р.

"японский морской бой" на квантовом компьютере

В январе писал про квантовые вычисления и вот попалась интересная статья. Уже видел "квантовые шахматы", на ютубе есть ролик со Стивеном Хокингом и человеком-муравьём из одноименного фильма. Здесь же "японский морской бой". Автор рассказывает как воспользоваться облаком IBM для квантовых вычислений в примитивной игре. Статья даст вам некоторое представление о том, где может пригодиться суперпозиция кубита.

Оригинал

Перевод

середа, 7 лютого 2018 р.

Телеграм сделал виджет для аутентификации

Долгое время все те, кто хотел прикрутить к своему сайту или приложению аутентификацию через телеграм выкручивали всякие финты с ботами и даже с кастомными клиентами (на хабре есть пара статей), мне тоже на паре своих пет-проектов пришлось через это пройти. Проблема была в том, что пользователю необходимо было явно обратиться к боту авторизации и только после этого процесс взаимодействия мог быть запущен (deep linking спасал нас как мог). Вчера телеграм наконец-то представил возможность разместить на сайте виджет для аутентификации. Попробую в ближайшее время, тем более есть где заменить самописную реализацию. По заявлениям это первая стадия введения Telegram ID. Ссылка на официальный обзор

неділя, 4 лютого 2018 р.

Kotlin Generics

Первый релиз языка Kotlin включает в себя Kotlin Generics. Обобщенные типы, благодаря которым мы с вами можем писать более гибкие приложения с меньшим дублированием кода и большей типобезопасностью. Одно из важных преимуществ, которое дает вашему приложению использование Generics - проверка типов на этапе компиляции. Дизайнеры языка Kotlin ввели новые ключевые слова для работы с дженериками, что по началу может ввести в ступор даже опытного Java разработчика. Сегодня мы с вами обсудим что такое “дженерики”, удалим страх перед словами типа “контравариантность”, а заодно познакомимся с reified generics и star-projection.

Система типов в Kotlin

Нашёл отличную статью, которая на пальцах в картинках разбирает иерархию типов, включая Any, Nullable Types, Unit и Nothing. Для новичков в Kotlin - cтатья полезная, для опытных разработчиков, только если закрыть какие-то пробелы.

Ссылка на статью

HyperComments for Blogger

comments powered by HyperComments