Pull to refresh
8
Karma
0
Rating

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

Руководство по программированию сокетов на Python. Протокол и сообщения

Reading time 23 min
Views 3.9K
SkillFactory corporate blog Python *Programming *Network technologies *
Translation



К концу руководства вы освоите основные функции и методы модуля Python socket, научитесь применять пользовательский класс для отправки сообщений и данных между конечными точками и работать со всем этим в собственных клиент-серверных приложениях. Материалом делимся к старту курса по Fullstack-разработке на Python.

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

Ещё раз про умный дом

Reading time 11 min
Views 8.4K
Java *Interfaces *C *Programming microcontrollers *Systems engineering *
Sandbox

Представляю программно-аппаратный проект: локальную сеть умный дом с акцентом на режим охраны. В качестве управляющего устройства используется сотовый телефон с ОС Android версией не ниже 5.0. Через кабель USB телефон подключен к устройству USB/RS485. Для питания всей системы используется блок бесперебойного питания . Узлы управления сбором информации от датчиков и управления исполнительными устройствами реализованы на микросхемах ESP 32. Обмен информацией и питание внешних устройств производится через сетевой кабель. Управляющее устройство (телефон) периодически опрашивает узлы сети и если есть информация от датчиков, в зависимости от настроек, передает сообщения либо в виде SMS, либо в TELEGRAM. А если получена SMS – команда она передается для исполнения на ВУ. Также возможна автономная работа по заложенным сценариям.

Читать далее
Total votes 14: ↑13 and ↓1 +12
Comments 14

Учимся создавать пакеты Python

Reading time 8 min
Views 16K
Издательский дом «Питер» corporate blog Python *Programming *
Translation
imageПочему важно уметь создавать пакеты Python?
• Пакеты легко устанавливаются (pip install demo).
• Пакеты упрощают разработку (Команда pip install -e устанавливает ваш пакет и следит за тем, чтобы он сам обновлялся в ходе всего процесса разработки).
• Пакеты легко запускать и тестировать (from demo.main import say_hello, а затем тестируем функцию).
• Пакеты легко версионировать, при этом вы не рискуете нарушить работу кода, зависящего от этого пакета (pip install demo==1.0.3).
Читать дальше →
Total votes 28: ↑26 and ↓2 +24
Comments 14

Как Postgres хранит строки

Reading time 6 min
Views 12K
OTUS corporate blog PostgreSQL *Database Administration *
Translation

Мне стало интересно разобраться, как PostgreSQL хранит данные на диске, и в процессе своего исследования я обнаружил несколько интересных фактов, которыми хочу с вами поделиться.

Мы будем рассматривать только файлы кучи (heap). Heap-файл — это просто файл записей. Не путайте heap-файл с heap-памятью. Хотя их использование очень похоже: хранение динамических данных.

Читать далее
Total votes 23: ↑20 and ↓3 +17
Comments 5

NULL-значения в PostgreSQL: правила и исключения

Reading time 8 min
Views 12K
Postgres Professional corporate blog PostgreSQL *SQL *

Навскидку многим кажется, что они знакомы с поведением NULL-значений в PostgreSQL, однако иногда неопределённые значения преподносят сюрпризы. Предлагаем вашему вниманию расшифровку доклада Алексея Борщева с PGConf.Russia 2022 — он был полностью посвящён особенностям NULL-значений в Postgres.

NULL простыми словами

Что такое SQL база данных? Согласно одному из определений, это просто набор взаимосвязанных таблиц. А что такое NULL? Обратимся к простому бытовому примеру: все мы задаём друг другу дежурный вопрос: «Как дела?». Часто мы получаем в ответ: «Да ничего...» Вот это «ничего» нам и нужно положить в базу данных — NULL, неопределённое, некорректное или неизвестное значение.

Читать далее
Total votes 35: ↑34 and ↓1 +33
Comments 22

Действительно ли генераторы помогают экономить память?

Reading time 6 min
Views 6.7K
Website development *PHP *Programming *Reading room
Translation


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


Сначала я удивился — откуда взялись такие идеи? Ведь мы много лет работали с большими объемами данных без всяких генераторов. Лучшая статья про генераторы в РНР, опубликованная ещё десять лет назад, Что генераторы могут для вас сделать Антонио Феррары тоже практически не упоминает экономию памяти. У меня и у самого всегда было чёткое ощущение, что хотя генераторы — это совершенно отличное изобретение, у которого есть множество разнообразных применений, но вот только экономии памяти среди них нет.


В итоге у меня разыгралось любопытство и я решил разобраться с этим вопросом.

Читать дальше →
Total votes 26: ↑23 and ↓3 +20
Comments 11

Применение расстояния Левенштейна с целью оптимизации работы склада

Reading time 14 min
Views 7.8K
Algorithms *Industrial Programming *

Активно изучаем различные алгоритмы? Читаем про поиск k-ближайших соседей, задачу о рюкзаке, всякие алгоритмы сортировки, поиска и т. п.? А часто читаем примеры их практического внедрения на каком-нибудь предприятии? Такие истории встречаются реже, чем даже обзоры книг по этим же алгоритмам.

Предлагаю всем вместе начать исправлять эту ситуацию и приглашаю почитать о том, как на промышленном складе применяли — внезапно! — алгоритм Левенштейна (способ нечёткого сравнения строк).

Значительная часть нюансов спрятана под спойлеры, чтобы не отвлекать от сути статьи, а также не отпугивать маленьких. Обычно такие статьи становятся очень длинными, но мне удалось уместиться примерно в 3200 слов.

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

Читать далее
Total votes 23: ↑22 and ↓1 +21
Comments 35

Тоссим руду: очень неочевидная ИТ-задача

Reading time 10 min
Views 17K
Группа НЛМК corporate blog Project management *Systems engineering *

Дробилка с выдвигаемым конусом

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

Это чистая оптимизационная задача: надо дробить в заданном коридоре и всем будет счастье. Проблема в том, что мы не знаем, слишком мелко мы дробим или слишком крупно. Конвейер огромный, едет со скоростью 3,15 метра в секунду, глазами люди там ничего отличить не могут. А нужно знать фракционный состав руды.

Советские инженеры это решили специальным ведром, которое зачерпывает руду раз в 24 минуты и кладёт в тестовый бункер. Через каждые пять зачерпываний бункер опустошается на несколько сит, просеивается, и после этого человек взвешивает, сколько руды осталось на каждом из них. Так мы получали данные механическим способом раз в два часа.

И тут такие приходим мы из ИТ и говорим производству: а хотите в реальном времени? Производство сначала крутит пальцем у виска, а потом говорит, что хочет. Потому что цена эффекта — 115 миллионов рублей в год.
Читать дальше →
Total votes 129: ↑129 and ↓0 +129
Comments 79

Реализация Интернета вещей для промышленного оборудования простыми методами

Reading time 8 min
Views 4.5K
Programming *System Analysis and Design *Industrial Programming *Development for Raspberry Pi *IOT

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

Эту идею реализовал в работе, связанной с "умными" очистителями воздуха для помещений.

Читать далее
Total votes 11: ↑10 and ↓1 +9
Comments 11

CloudFlare отказывается от Nginx в пользу in-house HTTP-прокси на Rust

Reading time 9 min
Views 7.4K
Rust *
Translation

Введение

Сегодня мы поговорим о Pingora, новом HTTP-прокси, который мы создали у себя внутри с помощью Rust. Прокси обслуживает более 1 триллиона запросов в день, форсирует производительность и предоставляет множество новых функций для клиентов Cloudflare, при этом требуя всего лишь треть ресурсов CPU и памяти нашей предыдущей прокси-инфраструктуры.

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

Многие клиенты и пользователи Cloudflare используют нашу глобальную сеть в качестве прокси-сервера между HTTP-клиентами (такими как веб-браузеры, приложения, устройства IoT и т. д.) и серверами. В прошлом мы много говорили о том, как браузеры и другие пользовательские агенты подключаются к нашей сети, мы разработали множество технологий и внедрили новые протоколы (см. QUIC и оптимизация для http2), чтобы сделать эту часть соединения более эффективной.

Сегодня мы сосредоточимся на другой части уравнения: службе, которая проксирует трафик между нашей сетью и серверами в Интернете. Этот прокси-сервис поддерживает наши CDN, Workers fetch, Tunnel, Stream, R2 и многие, многие другие функции и продукты.

Give me more
Total votes 25: ↑25 and ↓0 +25
Comments 23

Имплементируем WebSocket протокол на Go

Reading time 9 min
Views 14K
Website development *Programming *IT Standards *Go *Browsers
Sandbox

Статья для тех, кто хочет познакомиться с устройством технологии WebSocket или языком программирования Go.

Или узнать с какой простотой Go стал одним из самых популярных языков программирования для написания сетевых приложений.

Читать далее
Total votes 39: ↑38 and ↓1 +37
Comments 9

Я каждый день рискую запустить восстание машин, но всё ещё жив

Reading time 13 min
Views 17K
Smart House IOT DIY The future is here
Sandbox

Я создал чудовище.  

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

Как я дошёл до жизни такой
Total votes 26: ↑22 and ↓4 +18
Comments 55

Как открыть ИП в Грузии, в том числе удаленно?

Reading time 5 min
Views 54K
Freelance IT-emigration Remote work

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

Наиболее популярной формой легализации бизнеса и работы на территории Грузии является регистрация иностранного гражданина в организационно-правовой форме индивидуального предпринимателя.

Благоприятные факторы для ведения бизнеса в Грузии:

Читать далее
Total votes 16: ↑11 and ↓5 +6
Comments 23

Как россиянину получить ВНЖ в Армении?

Reading time 5 min
Views 85K
Freelance IT-emigration Finance in IT Remote work

Продолжение рассказов из Армении. Для начала какой смысл вообще получать ВНЖ в Армении, ведь гражданин РФ может находиться там в течение 180 дней без необходимости пересечения границы? Однако все не так просто, смысл есть. Начиная с 24 февраля 2022 года, довольно внушительное количество западных банков перестали открывать счета россиянам или приостановили сотрудничество по текущем счетам. К санкциям против граждан РФ также присоединились всевозможные платежные системы, брокеры, крипто-биржи, фриланс площадки и так далее. В большинстве случаев от россиянина требуют сменить место жительства, и в качестве подтверждения требуют вид на жительства иностранного государства.

Если в истории с банками Армении из предыдущего поста, возникают все большие сложности при открытии счета, то процесс получения ВНЖ в Армении и его варианты можно смело назвать доступными. Это, конечно же не история, когда можно сделать ВНЖ дистанционно, не вылезая из дома, но в сравнении с той-же Грузией, Сербией, Турцией и Кипром, мне показалось проще и по процедуре и по шансам на одобрение.

В Армении существует два вида ВНЖ: на основании открытия ИП в Армении и дополнительная форма временного ВНЖ на основании трудоустройства в армянской фирме. Эта форма обладает почти теми же возможностями, что и условный бизнес-ВНЖ

Читать далее
Total votes 51: ↑48 and ↓3 +45
Comments 24

Еще раз о KISS и трендах

Reading time 4 min
Views 11K
Python *Programming *

Последние несколько лет async вообще и asyncio в частности в питоне все больше набирают популярность и их все чаще используют. При этом иногда забывают о принципе KISS (Keep it simple, stupid) и о том, какие вообще проблемы решает асинхронный код и зачем он нужен. В этой статье я бы хотел описать пример, когда задачу можно и, на мой взгляд, нужно решать без использования async. И вообще, практически без всего.

Читать далее
Total votes 13: ↑10 and ↓3 +7
Comments 16

Главные астрономические явления 2022 года

Reading time 4 min
Views 13K
Astronomy

Для жителей европейской территории России 2022 год будет довольно насыщенным на астрономические явления. Самым знаковым событием станет Солнечное затмение. "Затмение года" будет частным солнечным и произойдет в новолуние 25 октября. Это затмение будет наблюдаться в разных фазах в западной части страны, а максимальная фаза затмения составит 0,861.

Даное частное солнечное затмение можно назвать наиболее благоприятным для Европейской части России, т.к. на всей ее территории фаза затмения будет превышать 0,6! Общая прдолжительность затмения составит более 4 часов, а точнее 4 часа 4 минуты. Наблюдаться оно будет с 12-00 до 16-00 по московскому времени, а наибольшей фазы затмение достигнет в 14-00.

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

Экспортируем модули из Go-сервиса: сотворение директории pkg

Reading time 6 min
Views 5.3K
Ozon Tech corporate blog Programming *API *Go *Microservices *

Чтобы поделиться кодом, нужно создать библиотеку и разместить её в самостоятельном репозитории. Но иногда возникает необходимость хранить библиотеку вместе с сервисом, который её использует, — это может быть полезно при разработке в open source, в процессе дробления монолита на микросервисы и при шеринге своим API. Среди Go-разработчиков существует мнение, что экспортируемые библиотеки стоит хранить в директории pkg.

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

Читать далее
Total votes 18: ↑16 and ↓2 +14
Comments 12

Gatling. Тестирование Kafka

Reading time 6 min
Views 5.1K
TINKOFF corporate blog High performance *IT systems testing *
Tutorial

Привет! Меня зовут Александра, я работаю в отделе тестирования производительности Тинькофф. Мы продолжаем наш цикл статей, посвященных работе Gatling с различными протоколами. Ранее мы уже рассмотрели работу с HTTP, JDBC и gRPC. В этой статье поговорим о работе Gatling с Kafka.

Читать далее
Total votes 16: ↑15 and ↓1 +14
Comments 3

Information

Rating
Does not participate
Location
Нижегородская обл., Россия
Date of birth
Registered
Activity