Pull to refresh
25
0
Programmer @Programmer

Пользователь

Send message

Генератор дезинформации, топливо без выбросов и приближение лечения рака — 3 прорыва 2020-2021

Reading time 7 min
Views 5.9K

В этой статье разберём три технологических прорыва 2020–2021 годов: генератор текстов на нейросетях GPT-3, экологически чистый «зелёный» водород и алгоритм AlphaFold 2, который решил сложную задачу биологии.

Читать далее
Total votes 11: ↑8 and ↓3 +5
Comments 8

DI.kt: одна из первых DI библиотек для Kotlin Multiplatform

Reading time 5 min
Views 3.1K

Прошу приветствовать одну из первых DI библиотек для Kotlin multiplatform — DI.kt

Вы можете спросить: «А зачем нам ещё DI либы?». Долгое время полноценного DI для Kotlin Multiplatform не было. Существующие библиотеки — это сервис-локаторы (Koin, Kodein, Popkorn), которые не валидируют граф зависимостей во время компиляции. А это одна из важнейших фич многих привычных Java и Android сообществам DI библиотек и фреймворков. Чтобы принести эту фичу в Kotlin Multiplatform, я и написал DI.kt. Библиотека намного проще привычного нам Dagger — нет мультибиндингов и прочих концептов, которые делают его таким сложным в освоении (и периодически используются неправильно).

Читать далее
Total votes 16: ↑16 and ↓0 +16
Comments 0

Bobaos — доступ к шине KNX TP/UART c Raspberry Pi

Reading time 6 min
Views 9.4K

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


Далее я покажу каким образом я решил для себя эту задачу, используя Raspberry Pi и модуль KNX BAOS 838 kBerry от Weinzierl.


Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Comments 9

Выбираем лучшее время для проведения email-рассылки

Reading time 7 min
Views 4.2K

Разберемся вместе, как подобрать идеальное время для проведения email-рассылки и добиться максимальной эффективности ваших писем / Расскажем о новой функции DashaMail, которая поможет это сделать.

Читать далее
Total votes 12: ↑9 and ↓3 +6
Comments 5

STM32F3xx + FreeRTOS. Modbus RTU с аппаратным RS485 и CRC без таймеров и семафоров

Reading time 9 min
Views 25K
Всем привет! Относительно недавно, закончив ВУЗ, я попал в небольшую компанию, которая занималась разработкой электроники. Одна из первых задач с которой я столкнулся — необходимость в реализации Modbus RTU Slave протокола с использованием STM32. С грехом пополам я её тогда написал, однако этот протокол начал встречаться мне из проекта в проект и я решил зарефакторить и оптимизировать либу с использованием FreeRTOS.
Читать дальше →
Total votes 34: ↑33 and ↓1 +32
Comments 24

Пишем прошивку под TI cc2530 на Z-Stack 3.0 для Zigbee реле Sonoff BASICZBR3 с датчиком ds18b20

Reading time 22 min
Views 53K


Предполагается, что читатель уже имеет начальные знания языка C, что-то знает о Zigbee, чипе cc2530, методах его прошивания и использования, а также знаком с такими проектами, как zigbee2mqtt. Если нет — подготовьтесь или сходите почитать на https://myzigbee.ru и https://www.zigbee2mqtt.io/
Статья написана сперва подробно, но постепенно ускоряется и уже не останавливается на деталях, а описывает готовый код прошивки. Если кому-то не интересны рассуждения, то просто открывайте исходники прошивки и читайте их.

Исходный код готовой прошивки

Код и подход к разработке не претендует на идеальность. “Я не волшебник, я только учусь.”

Цель


Основная цель — разобраться, как писать прошивки под Z-Stack, давно хотел. Поэтому решил реализовать альтернативную прошивку под готовое оборудование (в качестве примера выбрано реле Sonoff BASICZBR3) и добавить возможность подключения популярного датчика температуры ds18b20.

Дополнительно хотел показать начинающим Zigbee-разработчикам пример разработки прошивки под чип TI cc2530 на Z-Stack.
Читать дальше →
Total votes 33: ↑33 and ↓0 +33
Comments 21

OSINT в Telegram

Reading time 15 min
Views 41K


Протокол Telegram известен своей доступностью и открытостью. У него есть множество публичных реализаций: tdlib/td, rubenlagus/TelegramApi, vysheng/tg, LonamiWebs/Telethon и другие. Однако, даже имея в распоряжении столь богатый инструментарий и объемную документацию (https://core.telegram.org/api), решить прикладную задачу, собрав из многообразия методов API нужную цепочку – не так-то просто. Сможет, например, “неподготовленный ум“ сходу догадаться, как решить прикладную задачу а-ля “поиск по номеру в Telegram“? — Скорее всего, придется потратить какое-то время на изучение API.


Официальный клиент Telegram содержит в себе массу API-цепочек, реализующих определенные пользовательские сценарии. Если подумать, взаимодействие на основе сценариев — наиболее удобный и предпочтительный способ, поэтому мы решили пойти по пути упрощения взаимодействия с Telegram на основе реализации библиотеки сценариев. Так как наша деятельность тесно связана с направлением OSINT, то в первую очередь мы решили реализовать ряд OSINT-сценариев, применимых в сети Telegram, о которых и хотим рассказать в этой статье.


Для решения задач OSINT мы еще давно начали работу над собственным клиентом для сети Telegram, который в последствии трансформировался в расширяемую библиотеку сценариев — telegram-osint-lib.

Читать дальше →
Total votes 13: ↑11 and ↓2 +9
Comments 4

10 лайфхаков разработки рекомендательных систем

Reading time 3 min
Views 7.5K
В предыдущей статье мы обсудили основы устройства рекомендательных систем и кейсы использования. Узнали, что основной принцип заключается в рекомендации товаров, понравившихся людям с похожим вкусом, и применении алгоритма коллаборативной фильтрации.

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


Читать дальше →
Total votes 11: ↑9 and ↓2 +7
Comments 6

Нейросеть, которая поможет выбрать фильм – «твои вкусы специфичны»

Reading time 4 min
Views 11K
Привет!

Бывает смотришь фильм, и в голове только один вопрос – «я что опять попался на кликбейт?». Решим эту проблему и будем смотреть только годное кино. Предлагаю немного поэкспериментировать с данными и написать простую нейросеть для оценки фильма.

В основе нашего эксперимента лежит технология сентимент-анализа для определения настроения аудитории к какому-либо продукту. В качестве данных берем датасет обзоров пользователей на фильмы IMDb. Среда разработки Google Colab позволит быстро обучать нейросеть благодаря бесплатному доступу к GPU (NVidia Tesla K80).

Я использую библиотеку Keras, с помощью которой построю универсальную модель для решения подобных задач машинного обучения. Мне понадобится backend TensorFlow, дефолтная версия в Colab 1.15.0, поэтому просто обновим до 2.0.0.

from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
!tf_upgrade_v2 -h

Далее импортируем все необходимые модули для предварительной обработки данных и построения модели. В предыдущих статьях делается акцент на библиотеках, можно заглянуть туда.
Читать дальше →
Total votes 14: ↑9 and ↓5 +4
Comments 13

Пишем защиту от DDoS-атак на XDP. Ядерная часть

Reading time 16 min
Views 16K

Технология eXpress Data Path (XDP) позволяет выполнить произвольную обработку трафика на интерфейсах Linux до того, как пакеты поступят в сетевой стек ядра. Применение XDP — защита от DDoS-атак (CloudFlare), сложные фильтры, сбор статистики (Netflix). Программы XDP исполняются виртуальной машиной eBPF, поэтому имеют ограничения как на свой код, так и на доступные функции ядра в зависимости от типа фильтра.


Статья призвана восполнить недостатки многочисленных материалов по XDP. Во-первых, в них дается готовый код, который сразу обходит особенности XDP: подготовлен для верификации или слишком прост, чтобы вызвать проблемы. При попытке потом написать свой код с нуля нет понимания, что делать с характерными ошибками. Во-вторых, не освещаются способы локально тестировать XDP без ВМ и «железа», при том, что у них свои «подводные камни». Текст рассчитан на программистов, знакомых с сетями и Linux, которым интересен XDP и eBPF.

Читать дальше →
Total votes 24: ↑24 and ↓0 +24
Comments 8

Gap — светлое будущее для отступов в Flexbox (как в Grid)

Reading time 4 min
Views 130K


Одна из моих любимых частей спецификации CSS Grid — это grid-gap. Они позволяют легко создавать отступы между элементами внутри сетки.

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

W3C порекомендовала отказаться от свойства grid-gap в пользу простого gap и его использования в Flexbox и Multi-Column.

В этом руководстве мы посмотрим, как добавляли margins в Flexbox раньше и как это делает свойство gap, позволяя нам получить внутренние отступы без дополнительных ухищрений.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 22

Кто внедряет IPv6, и что тормозит его развитие

Reading time 3 min
Views 12K
В прошлый раз мы говорили об истощении IPv4 — о том, кто владеет небольшой долей оставшихся адресов и почему так получилось. Сегодня обсуждаем альтернативу — протокол IPv6 и причины его медленного распространения — кто-то говорит, что виновата высокая стоимость миграции, а кто-то заявляет, что технология уже устарела.

Читать дальше →
Total votes 17: ↑13 and ↓4 +9
Comments 15

Как мы пробивали Великий Китайский Фаервол (ч.1)

Reading time 10 min
Views 45K

Всем привет!


На связи Никита — системный инженер из компании SЕMrush. Сегодня я расскажу вам о том, как перед нами встала задача обеспечить стабильность работы нашего сервиса semrush.com в Китае, и с какими проблемами мы столкнулись в ходе ее выполнения (учитывая местонахождение нашего дата-центра на восточном побережье США).


Это будет большая история, разбитая на несколько статей. Расскажу, как все это было у нас: от полностью неработающего сервиса из Китая, до показателей работы сервиса на уровне его американской версии для американцев. Обещаю, будет интересно и полезно. Итак, поехали.



Проблемы китайского интернета


Даже самый далекий человек от специфики сетевого администрирования хотя бы раз, да слышал о Великом Китайском Фаерволе. Ууу, звучит круто, да? Но что это такое, как оно работает на самом деле — вопрос довольно сложный. В интернете можно найти много статей, посвященных этому, но с технической точки зрения устройство этого фаервола нигде не описано. Что, впрочем, неудивительно. Признаюсь сразу, по итогам года работы я не смогу сказать точно, как он работает, но смогу рассказать о своих замечаниях и практических выводах. И начнем мы со слухов об этом фаерволе.

Читать дальше →
Total votes 78: ↑73 and ↓5 +68
Comments 46

Делегирование как инструмент руководителя

Reading time 14 min
Views 48K
В сфере управления людьми (куда многие из нас, айтишников, зачастую приходят внезапно), существует масса инструментов и подходов. Некоторые из них базовые, другие — идут следом. Но так или иначе огромное количество начинающих менеджеров открывают для себя инструментарий управления методом проб и ошибок.



Делегирование — один из базовых инструментов руководителя, о котором большинство знает. Но обращаются к нему часто слишком поздно, считая, что «ещё не пришло время делегировать — других дел полно». К сожалению, это может привести к не очень хорошим результатам.

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

Добро пожаловать под кат!
Читать дальше →
Total votes 43: ↑41 and ↓2 +39
Comments 40

Результаты бенчмарка сетевых плагинов Kubernetes (CNI) по сети 10 Гбит/с (обновлено: апрель 2019)

Reading time 6 min
Views 12K


Это обновление моего предыдущего бенчмарка, который теперь работает на Kubernetes 1.14 с актуальной версией CNI на апрель 2019 года.


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


Что изменилось с ноября 2018


Вот что изменилось с тех пор (если интересно):


Flannel остается самым быстрым и простым интерфейсом CNI, но все еще не поддерживает сетевые политики и шифрование.


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


WeaveNet теперь поддерживает сетевые политики для Ingress и Egress! Но производительность снизилась.


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

Читать дальше →
Total votes 24: ↑23 and ↓1 +22
Comments 2

Своя видео-платформа или чем занять много вычислительных ресурсов. Part 1

Reading time 4 min
Views 8K
На фото — первый летающий четырёхколёсный велосипед. Источник.

Сегодня, благодаря доступности нужных сервисов, размещение видео в сети не является сложной задачей. Однако материалов по внутреннему устройству подобных систем не так уж и много, особенно в русскоязычном сегменте.

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

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

Вторая часть.
Читать дальше →
Total votes 32: ↑29 and ↓3 +26
Comments 21

Про одного парня

Reading time 14 min
Views 191K
История реальная, я все видел своими глазами.

Несколько лет один парень, как и многие из вас, работал программистом. На всякий случай напишу так: «программистом». Потому что он был 1Сником, на фиксе, производственной компании.

До этого он пробовал разные специальности – 4 года во франче программистом, руководителем проектов, умел закрывать по 200 часов, одновременно получая процент с проекта, за руководство и немного занимаясь продажами. Пробовал самостоятельно разрабатывать продукты, был начальником IT-отдела в большой компании, численностью 6 тысяч человек, примерял разные варианты применения своей кавычечной профессии – программиста 1С.

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

Этому парню стало интересно, как можно зарабатывать больше денег, не занимаясь продажами и не создавая свой собственный бизнес.
Читать дальше →
Total votes 272: ↑239 and ↓33 +206
Comments 247

Оптимизация сайта для GooglePage Speed (учтены все особенности после его обновления) Часть 1

Reading time 4 min
Views 51K
Эта статья будет интересна, кто столкнулся с разного рода проблемами после обновления Google PageSpeed и претензиям со стороны заказчиков или начальника, почему упал бал или возникло такое количество замечаний. А так же тем, кто производит оптимизацию сайтов.
В первую очередь стоит упомянуть, что вот в этой статье, на мой взгляд, всё очень грамотно и доступно расписано.

Я же от себя добавлю больше практических советов, а так же будет интересно послушать вашу точку зрения и увидеть ваши наработки.
Читать дальше →
Total votes 26: ↑23 and ↓3 +20
Comments 57

Изучаем трассировку с помощью eBPF: Руководство и примеры

Reading time 6 min
Views 16K
Привет, Хабр! Предлагаю вашему вниманию перевод статьи Брендана Грегга, посвящённой изучению eBPF

На конференции Linux Plumbers было как минимум 24 выступления по eBPF. Он быстро стал не просто бесценной технологией, но и востребованным навыком. Возможно, вам хотелось бы поставить какую-то цель на новый год — изучите eBPF!


Термин eBPF должен означать что-то существенное, как например Virtual Kernel Instruction Set (VKIS), но по своему происхождению это расширенный Berkeley Packet Filter. Он применим во многих областях, таких как производительность сети, фаерволлы, безопасность, трассировка и драйвера устройств. По некоторым из них есть много свободно доступной информации в интернете — например, по трассировке, а по другим ещё нет. Термин трассировка относится к инструментам анализа производительности и наблюдения, которые могут генерировать информацию по каждому событию. Возможно, вы уже использовали трассировщик — tcpdump и strace являются специализированными трассировщиками.


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


  • Начинающим: запуск инструментов bcc
  • Опытным: разработка инструментов bpftrace
  • Продвинутым: разработка инструментов bcc, вклад в bcc и bpftrace
Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Comments 1

Как работает CPU Manager в Kubernetes

Reading time 8 min
Views 12K
Прим. перев.: Эта статья опубликована в официальном блоге Kubernetes и написана двумя сотрудниками Intel, принимающими непосредственное участие в разработке CPU Manager — новой возможности в Kubernetes, о появлении которой мы писали в обзоре релиза 1.8. В настоящий момент (т.е. для K8s 1.11) эта фича имеет статус бета-версии, а подробнее о её предназначении читайте далее в заметке.

Публикация рассказывает о CPU Manager — бета-фиче в Kubernetes. CPU Manager позволяет лучше распределять рабочие нагрузки в Kubelet, т.е. на агенте узла Kubernetes, с помощью назначения выделенных CPU на контейнеры конкретного пода.

Читать дальше →
Total votes 28: ↑27 and ↓1 +26
Comments 1

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity