Pull to refresh
46
0
Aleksandr Shpak @shpaker

Бью лапками по клавке

Send message

Типы для HTTP-API, написанных на Python: опыт Instagram

Reading time9 min
Views8.8K
Сегодня мы публикуем второй материал из цикла, посвящённого использованию Python в Instagram. В прошлый раз речь шла проверке типов серверного кода Instagram. Сервер представляет собой монолит, написанный на Python. Он состоит из нескольких миллионов строк кода и имеет несколько тысяч конечных точек Django.



Эта статья посвящена тому, как в Instagram используют типы для документирования HTTP-API и для обеспечения соблюдения контрактов при работе с ними.
Читать дальше →
Total votes 32: ↑32 and ↓0+32
Comments2

Реверс инжиниринг протокола активации Яндекс.Станции

Reading time4 min
Views61K


«Яндекс.Станция» — умная колонка с голосовым помощником Алиса. Чтобы её активировать, нужно поднести телефон и проиграть звук из приложения «Яндекс». Под катом я расскажу, как устроен этот сигнал, про пароль от WiFi в открытом виде и попробую развить идею передачи данных через звук.
Читать дальше →
Total votes 175: ↑171 and ↓4+167
Comments84

Учебный курс по React, часть 1: обзор курса, причины популярности React, ReactDOM и JSX

Reading time14 min
Views188K
Представляем вашему вниманию первые 5 занятий учебного курса по React для начинающих. Оригинал курса на английском, состоящий из 48 уроков, опубликован на платформе Scrimba.com. Возможности этой платформы позволяют, слушая ведущего, иногда ставить воспроизведение на паузу и самостоятельно, в том же окне, в котором ведётся демонстрация, экспериментировать с кодом. Курс показался нам интересным, мы решили перевести его на русский и преобразовать в формат традиционных публикаций.



Полагаем, этот курс будет полезен всем, кто, что называется, «не умеет в React», но хочет научиться. В то же время, на то, чтобы превратить этот курс в обычные публикации, нужны немалые силы и время, поэтому мы, прежде чем принимать окончательное решение о запуске этого проекта, предлагаем всем желающим оценить курс и поучаствовать в опросе о целесообразности его перевода.
Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments60

Как обустроить себе рабочее место

Reading time7 min
Views120K
В офисе вопросами обустройства рабочего места озабочен работодатель, но его экономный подход не так уж часто нравится сотрудникам. Помня о том, как приходилось сидеть на неудобном стуле в шумном опенспейсе, начинающий удаленщик пытается закрыться в тихом кабинете и купить себе кресло подороже, да железо пошустрее. И на этом в большинстве случаев фантазия заканчивается. Но вопрос подготовки рабочего места намного шире.

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

image
(рабочее место одного из наших сотрудников)
Читать дальше →
Total votes 45: ↑39 and ↓6+33
Comments85

Система «Умный дом» своими руками

Reading time9 min
Views88K

Пару недель назад в нашем чате появилось вот такое сообщение:




А еще чуть позже — вот такое:




Автор сообщений — Женя, программист, руководитель отдела обучения и электронщик. В 5 лет он заметил, что если вырвать из магнитофона моторчик, подключить к нему лампочку и начать его крутить, то лампочка будет гореть. В шесть — что если у моторчика поменять полярность подключения, он будет крутиться в другую сторону. В 18 поступил на Измерительные инновационные технологии в Политех. А в 24 пришел работать в «Сибирикс».


Это к тому, что цель всей затеи — не Умный дом и метеостанция как таковые. Цель — почесать руки (потому что чешутся) и не дать им окислиться (потому что из золотого сплава). Так что все, кто недоумевает, зачем тратить время, когда можно просто купить такие девайсы — идите лесом-DNCом. А тем, кому интересна тема DIY-электроники (или DIY-электронщиков, что тоже не зазорно), можно скроллить дальше.


Скроллить дальше
Total votes 37: ↑25 and ↓12+13
Comments58

В кабине машиниста поезда

Reading time9 min
Views50K

Жёлтая кнопка наверху — одно из самых древних и важных легаси: это открытие бункера с песком, чтобы просыпать песок перед колёсами локомотива для экстренного торможения. Песочницы ставятся на поезда ещё с первых паровозов. Большая красная кнопка — открытие тормозной магистрали в атмосферу для аварийной остановки поезда и полного обесточивания поезда до аккумуляторной батареи.

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

В общем, добро пожаловать в кабину поезда «Аэроэкспресс» и в рабочий день машиниста. Причём не обычного, а Алексея Александровича Назарова — человека, который испытывал первые швейцарские составы компании Stadler, принимал их для России и учил других машинистов обращаться с ними.
Total votes 92: ↑91 and ↓1+90
Comments131

Time series данные в реляционной СУБД. Расширения TimescaleDB и PipelineDB для PostgreSQL

Reading time21 min
Views59K
Time series данные или временные ряды — это данные, которые изменяются во времени. Котировки валют, телеметрия перемещения транспорта, статистика обращения к серверу или нагрузки на CPU — это time series данные. Чтобы их хранить требуются специфичные инструменты — темпоральные базы данных. Инструментов — десятки, например, InfluxDB или ClickHouse. Но даже у самых лучших решений для хранения временных рядов есть недостатки. Все time series хранилища низкоуровневые, подходят только для time series данных, а обкатка и внедрение в текущий стек — дорого и больно.



Но, если у вас стек PostgreSQL, то можете забыть о InfluxDB и всех остальных темпоральных БД. Ставите себе два расширения TimescaleDB и PipelineDB и храните, обрабатываете и проводите аналитику time series данных прямо в экосистеме PostgreSQL. Без внедрения сторонних решений, без недостатков темпоральных хранилищ и без проблем их обкатки. Что это за расширения, в чем их преимущества и возможности, расскажет Иван Муратов (binakot) — руководитель отдела разработки в «Первой Мониторинговой Компании».
Total votes 50: ↑48 and ↓2+46
Comments16

Создание робота для соревнований Roborace

Reading time4 min
Views11K

Специфика Roborace


image

Roborace – это состязания, в которых соревнуются роботы-автомобили на специальной кольцевой трассе. Можно провести некоторую аналогию между Roborace и гонками Формулы 1, за исключением двух моментов.
  • Во-первых, вместо полномасштабных гоночных болидов участвуют уменьшенные модели авто и оригинальные конструкции с габаритными и весовыми ограничениями (максимальные ШхД=25х50 см и вес до 3 кг).
  • Во-вторых, вместо пилотов автомобилем управляет бортовой компьютер, который анализирует показания различных датчиков и ориентирует автомобиль на трассе, выбирает скорость движения, предотвращает столкновения с препятствиями и соперниками. Собственно “поведение” авто на трассе определяется управляющей программой бортового компьютера.

Roborace проводится в виде чемпионата, состоящего из этапов, которые организуются в различных городах Беларуси и за рубежом. Участие в чемпионате принимают как конструкции начального уровня (например, на базе конструктора типа LEGO), так и сложные робототехнические устройства. Регламенты соревнований формируются таким образом, чтобы охватить как можно более широкий спектр характеристик и возможностей робототехнических конструкций.
Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments0

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

Reading time6 min
Views25K
В данной статье описывается процесс синтаксического анализа предложения русского языка с использованием контекстно-свободной грамматики и алгоритма LR-анализа.

Обработка естественного языка — общее направление искусственного интеллекта и математической лингвистики. Оно изучает проблемы компьютерного анализа и синтеза естественных языков.

В общем, процесс анализа предложения естественного языка выглядит следующим образом: (1) разбиение предложения на синтаксические единицы — слова и словосочетания; (2) определение грамматических параметров каждой единицы; (3) определение синтаксической связи между единицами. На выходе — абстрактное дерево разбора.
Читать дальше →
Total votes 36: ↑34 and ↓2+32
Comments19

Используем Web Bluetooth API для подключения пульсометра и разрабатываем приложение используя Vue.js

Reading time12 min
Views25K

Продолжаем обсуждать темы затронутые на You Gonna Love Frontend конференции. Эта статья вдохновлённая докладом Michaela Lehr. Видео с конференции будут доступны уже на этой недели, пока есть слайды. (Видео уже доступно)


Читать дальше →
Total votes 34: ↑32 and ↓2+30
Comments2

Настройка с нуля сервиса управления ИБП Network UPS Tools (NUT) для управления локально подключенным ИБП

Reading time8 min
Views74K

Настройка Network UPS Tools на Linux на примере ИБП Eaton 5E650iUSB


Описание


Сервис Linux NUT (Network UPS Tools) — это комплекс программ мониторинга и управления различными блоками бесперебойного питания (далее ИБП). Полный список поддерживаемых моделей можно получить, посмотрев список драйверов в файле /usr/share/nut/driver.list.


В руководстве описана настройка отключения ПК агентом NUT при потере напряжения в сети на примере ИБП Eaton 5E 650iUSB на Ubuntu-подобных дистрибутивах. Для использования под другие дистрибутивы используйте пакетный мененджер своего дистрибутива или соберите из исходных кодов. Новейшую версию Network UPS Tools можно скачать на GitHub по ссылке ссылке.

Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments8

5 лучших дистрибутивов Kubernetes

Reading time5 min
Views18K


Kubernetes (K8s) — это мощная платформа, которая за последние пять лет кардинально изменила методы работы с программным обеспечением. Она пользуется активным спросом, и поэтому некоторые компании стали предлагать Kubernetes-as-a-service. Cloud4Y предлагает познакомиться с наиболее интересными дистрибутивами K8s.

У платформы есть сильное open-source комьюнити, которое привносит в продукт множество инноваций. Отсюда происходят и некоторые из текущих недостатков: трудность в установке, сложность в настройке. Во многом Kubernetes похож на ядро Linux: он предоставляет среду для запуска программного обеспечения, но не предоставляет никаких инструментов для управления.
Читать дальше →
Total votes 15: ↑11 and ↓4+7
Comments5

Как опубликовать консольную утилиту на PyPI за 1 минуту

Reading time2 min
Views8.6K


Разработав консольную утилиту, вы решаетесь опубликовать её на PyPI. Ну правда, что может быть лучше, чем сделать её доступной через pip install? Погуглив, что для этого надо, вы, возможно, наткнётесь на единственный найденный мной пост по теме, который мало того что от 2014 года, так ещё и требует от вас создать кучу папок и файлов для совершенно ненужных (вам) вещей.


Как же решить эту задачу без лишней головной боли в 2019 году? Я уже задавался этим вопросом и поэтому, прочитав тонну документации, создал для вас этот туториал. Вот пошаговая инструкция.

Читать дальше →
Total votes 44: ↑42 and ↓2+40
Comments1

Шпаргалка по структурам данных в Go

Reading time6 min
Views66K

Некоторые компании проводят собеседования с online написанием кода. Требуется решить олимпиадную задачку на скорость. В таких условиях нет времени посмотреть подробности реализации структур данных — нужно сразу реализовать идею. Но курсы по алгоритмам и структурам данных дают примеры или на псевдокоде, или на С++. Ещё эталонные решения задач написаны зачастую на С++. Готовясь к собеседованию, составил шпаргалку библиотек — аналогов контейнеров STL, что бы не тратить драгоценное время на поиск.
Читать дальше →
Total votes 52: ↑47 and ↓5+42
Comments11

Тот, кто воскресил Duke Nukem: интервью с Рэнди Питчфордом, волшебником из Gearbox

Reading time33 min
Views15K
RUVDS совместно с Хабром продолжают проект, состоящий из серии интервью с интересными, на наш взгляд людьми в IT-среде. В прошлый раз мы познакомились с Ричардом (Levelord) Греем, дизайнером Duke Nukem, American McGee’s Alice и многих других популярных игр.

Сегодня представляем вашему вниманию интервью с Рэндаллом Стюардом «Рэнди» Питчфордом II. Рэнди — президент, исполнительный директор и сооснователь компании Gearbox Software.


Краткая справка: Питчфорд некоторое время работал в 3D Realms, где внёс вклад в разработку Duke Nukem 3D Atomic Edition и Shadow Warrior.

С Gearbox Software Питчфорд создал Half-Life: Opposing Force (за которую он получил награду от академии интерактивных искусств и наук, как за лучшую экшн-игру 2000 года на ПК), Half-Life: Blue Shift, Half-Life: Decay, Counter-Strike: Condition Zero, James Bond 007: Nightfire, Tony Hawk's Pro Skater 3 и Halo: Combat Evolved для ПК и конечно Borderlands.

В интервью принимали участие редактор Хабра Николай Землянский, Ричард (Levelord) Грей, супруга Рэнди Кристи Питчфорд и его сын Рэнди младший.
Total votes 44: ↑42 and ↓2+40
Comments3

Что внутри asyncio

Reading time15 min
Views22K

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

Читать дальше →
Total votes 27: ↑25 and ↓2+23
Comments3

Arduino и прерывания таймера

Reading time8 min
Views159K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Timer interrupts" автора E.


Предисловие


Плата Arduino позволяет быстро и минимальными средствами решить самые разные задачи. Но там где нужны произвольные интервалы времени (периодический опрос датчиков, высокоточные ШИМ сигналы, импульсы большой длительности) стандартные библиотечные функции задержки не удобны. На время их действия скетч приостанавливается и управлять им становится невозможно.


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


Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments19

Еще более секретные Telegramмы

Reading time7 min
Views36K

Все привыкли считать телеграм надежной и безопасной средой для передачи сообщений любого сорта. Однако, под капотом у него крутится совершенно обычная комбинация а- и симметричного шифрований, а это ведь совсем не интересно. Да и в конце концов, зачем вообще явно доверять свои сообщения третьей стороне?
КДПВ за авторством Antonio Prohías
TL;DR — изобретаем приватный скрытый канал через блокирования пользователями друг друга.

Читать дальше →
Total votes 56: ↑52 and ↓4+48
Comments35

Эволюция CI в команде мобильной разработки

Reading time15 min
Views13K
Сегодня большинство программных продуктов разрабатываются в командах. Условия успеха командной разработки можно представить в виде простой схемы.



Написав код, вы должны убедиться, что он:

  1. Работает.
  2. Ничего не ломает, в том числе код, который написали ваши коллеги.

Если оба условия выполняются, то вы на пути к успеху. Чтобы легко проверять эти условия и не сворачивать с выгодного пути, придумали Continuous Integration.

CI — это рабочий процесс, при котором вы как можно чаще интегрируете свой код в общий код продукта. И не просто интегрируете, а еще и постоянно проверяете, что все работает. Так как проверять нужно много и часто, стоит задуматься об автоматизации. Можно все проверять на ручной тяге, но не стоит, и вот почему.
Total votes 45: ↑45 and ↓0+45
Comments3

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity