Пользователь
Разворачиваем сервис построения маршрутов OSRM
Первым делом, мы начали смотреть маршруты Google и Яндекс. И к сожалению, пришлось от них отказаться, т.к. первые разрешали показывать их только на родных картах, вторые, не знали что есть велосипеды и даже пешеходы.
Немного изучив предметную область, мы нашли наконец что искали: Open Source Routing Machine. Проект, с открытым исходным кодом, который позволяет развернуть у себя на сервере, свой собственный сервис построения маршрутов.
Тайлы: MapBox, Яндекс-Карты
Картографические данные: участники OpenStreetMap
Разобравшись, как его настраивать и запускать, мы решили поделиться этим и пересказать своими словами процесс установки, и то с чем пришлось столкнуться в процессе.
CAN sniffer
Пишем расширение Chrome, которое ворует вообще всё
Пусть Manifest v3 и ограничил возможности браузерных расширений, но я считаю, что они далеко не исчерпаны. Чтобы доказать это, создадим расширение Chrome, крадущее максимально возможное количество данных.
Мы добьёмся двух целей:
- Исследуем грани возможного для расширений Chrome
- Продемонстрируем, что вы подвержены опасности, если не будете аккуратны с тем, что устанавливаете.
Примечание: на самом деле реализация этого расширения — злодейство. Вам не следует использовать в злонамеренных целях полномочия расширений, красть пользовательские данные и создавать зловредные браузерные расширения. Любые реализации, производные расширения или применение этих техник без разрешения Национальной баскетбольной ассоциации не рекомендуются.
Как обойти капчу: нейросеть на Tensorflow,Keras,python v числовая зашумленная капча
попутно понять работу простой нейросети на практике, а также улучшить ее результаты.
Systemd за пять минут
В CentOS7, так же как и в его родителе RHEL7, используется systemd — менеджер системы и служб для Linux, совместимый со скриптами инициализации SysV и LSB. systemd обеспечивает возможности агрессивной параллелизации и много всего прочего.
Огромный монстр с множеством возможностей, гибкими настройками и мегабайтами документации…
Но что делать, если стоит задача быстро-быстро, вот прямо вчера, сделать автозапуск некоего сервиса?
Давайте выжмем из документации минимально необходимый набор информации для создания простых старт-стоп скриптов.
Увеличение размера диска с LVM на VirtualBox
Приветствую, меня зовут Иван, я системный администратор. Решил попробовать писать такие вот заметки на задачи, которые делаю редко, чтобы потом вспомнить, если понадобится. Надеюсь и ещё кому-то пригодится.
Все пути и имена разделов мои, меняйте соответственно на своё. Все действия на свой страх и риск, делайте бэкапы.
Задача следующая. Есть виртуалка, к ней подключен виртуальный диск, на нём система Debian 10, разметка сделана автоматически с LVM, отдельные разделы /var
, /tmp
, /home
и т.д. Требуется расширить существующий раздел /root
не добавляя дополнительный том в LVM.
(И да, если вам удобнее - есть возможность расширять разделы LVM добавляя дополнительные физически тома в группу томов, я такой способ сейчас не описываю, у меня немного другая задача).
Управление несколькими версиями Python под управлением Ubuntu 20.04
Одно из моих первых разочарований при разработке на Python не имело ничего общего с самим Python, а скорее с излишне изотерическими действиями по развертыванию приложений на Python. Учебные курсы и руководства отлично справляются с задачей обучения студентов запуску Python кода локально, но действительно стоящие приложения не запускают на локальных машинах: они работают на интернет серверах потому что именно в этом и есть их назначение, не так ли? Хотя может быть я высказал сумасшедшую идею.
Ubuntu 20.04 это первая LTS версия Ubuntu в которой отсутствует Python2 и которая поставляется из коробки с установленной версией Python 3.8.5. Но что если написанное вами приложение использующее более новую версию Python? Если вы, как и я, пытались заменить установленную по умолчанию в системе версию, то в процессе сломали вашу ОС. Если до этого вам никто не говорил не делать этого, тогда я возьму на себя эту честь: не делайте этого.
Итак, что же нам делать? Существует нескольок путей как обновить версию Python на Ubuntu, но использование вастроенного в Ubuntu's механизма "alternative install" оптимально по нескольким причинам:
JIRA как средство от бессонницы и нервных срывов
Источник
Дорабатываем Яндекс.Станцию для просмотра YouTube
Под катом история, как я это сделал несмотря на то, что официального открытого API нет.
Доступно о криптографии на эллиптических кривых
Тем, кто знаком с криптографией с открытым ключом, наверно известны аббревиатуры ECC, ECDH и ECDSA. Первая — это сокращение от Elliptic Curve Cryptography (криптография на эллиптических кривых), остальные — это названия основанных на ней алгоритмов.
Сегодня криптосистемы на эллиптических кривых используются в TLS, PGP и SSH, важнейших технологиях, на которых базируются современный веб и мир ИТ. Я уже не говорю о Bitcoin и других криптовалютах.
До того, как ECC стала популярной, почти все алгоритмы с открытым ключом основывались на RSA, DSA и DH, альтернативных криптосистемах на основе модулярной арифметики. RSA и компания по-прежнему популярны, и часто используются вместе с ECC. Однако несмотря на то, что магия, лежащая в фундаменте RSA и подобных ей алгоритмов легко объяснима и понятна многим, а грубые реализации пишутся довольно просто, основы ECC всё ещё являются для большинства людей загадкой.
В этой серии статей я познакомлю вас с основами мира криптографии на эллиптических кривых. Моя цель — не создание полного и подробного руководства по ECC (в Интернете полно информации по этой теме), а простой обзор ECC и объяснение того, почему её считают безопасной. Я не буду тратить время на долгие математические доказательства или скучные подробности реализации. Также я представлю полезные примеры с визуальными интерактивными инструментами и скриптами.
ESP32 в окружении VSCode
В нескольких следующих статьях я хотел бы детально рассмотреть настройку окружения VSCode для работы с фреймворком ESP-IDF. Не совсем популярная комбинация ПО обладает как преимуществами, так и недостатками, которые при детальном рассмотрении мы попытаемся исправить, обойти или превратить в достоинства.
Изыскания проводятся в рамках разработки программно-аппаратного комплекса полетного контроллера на чистых кватернионах, без применения углов Эйлера.
Поскольку предполагается многопользовательская удаленная разработка, то мы решили вначале отработать выбор и настройку самой среды разработки. После нескольких экспериментов с Eclipse, Visual Studio и QT Creator выбор пал на кроссплатформенный VSCode и плагин от разработчика Espressif IDF для работы с фреймворком ESP-IDF.
В качестве «сердца» контроллера рассмотрим двухъядерный микроконтроллер ESP32, который обладает рядом преимуществ, и которые планируется использовать и раскрыть в проекте, а именно:
Поваренная книга разработчика: DDD-рецепты (5-я часть, Процессы)
Введение
В рамках предыдущих статей мы описали: область применения, методологические основы, пример архитектуры и структуры. В данной статье, я хотел бы рассказать как описывать процессы, о принципах сбора требований, чем отличаются бизнес требования от функциональных, как перейти от требований — к коду. Рассказать о принципах применения Вариантов Использования (Use Case) и как они нам могут помочь. Разобрать на примерах варианты реализации шаблонов проектирования Interactor и Service Layer.
Примеры приведенные в статье даны с использованием нашего решения LunaPark, оно поможет вам с первыми шагами в описанных подходах.
Отделяем функциональные требования от бизнес требований.
Снова и снова случается так, что многие бизнес-идеи на самом деле не превращаются в конечный, намеченный продукт. Зачастую это происходит из-за неспособности понять разницу между бизнес-требованиями и функциональными требованиями, что в конечном итоге, приводит к несоответствующему сбору требований, ненужной документации, задержкам проекта и крупным проектным сбоям.
Или иногда мы сталкиваемся с ситуациями, в которых, хотя окончательное решение отвечает потребностям клиентов, но каким-то образом бизнес-цели не достигаются.
Поэтому крайне важно разделить бизнес-требования и функциональные требования, до того момента, как вы начнете их определять. Давайте разберем пример.
Поваренная книга разработчика: DDD-рецепты (3-я часть, Архитектура приложения)
Введение
В рамках предыдущих статей мы выделили область применения подхода и рассмотрели основные методологические принципы Domain Driven Design.
В данной статье я хотел бы обозначить основные современные подходы к построению архитектуры корпоративных систем: Supple, Screaming, Clean и дать им свою четкую интерпретацию в виде полноценного готового решения.
В дальнейшем рассмотрим каждый шаблон проектирования подробно: обозначим область применения, приведем примеры кода, выделим рекомендуемые практики. В итоге, напишем готовый микросервис.
Поваренная книга разработчика: Domain Driven Design рецепты ( 2-я часть, структура и взаимодействие )
Введение
В первой статье мы выделили область применения обозначенных практик, для каких проектов их можно применять, а для каких не следует.
В данной статье я хотел бы сделать краткий обзор основных принципов DDD, а также поделиться личным опытом их применения. Более подробно будет рассказано о коммуникационных и структурных подходах с примерами их реализации.
В следующих статья распишу возможные комбинации применяемых паттернов проектирования с учетом их имплементации, и в конечном итоге приведу пример конкретной реализации одного небольшого микросервиса.
Поваренная книга Ruby-разработчика: Domain Driven Design рецепты ( 1-я часть, область применения )
Введение
Я хотел бы рассказать об опыте применения практик DDD к существующему Ruby on Rails проекту. Изначально, мы имели монолит, который писался 10 лет. Основная трудность проекта была в достаточно сложных процессах, и высокой связанности. Нам удалось не только декомпозировать приложение на отдельные сервисы, но и существенно повысить читаемость кода, сделать описываемые процессы прозрачными.
Решение задач в рамках системы стало предсказуемым, мы перестали работать с черным ящиком, и в конечном итоге система сама стала подсказывать нам решения.
Для облегчения как восприятия, так и написания, рассказ о применяемых подходах будет представлен в виде цикла статей. Данный подход не является "серебряной пулей", поэтому я бы хотел выделить прежде всего тот сегмент проектов, которым это решение сможет подойти. Далее, я более подробно расскажу о DDD методологии и микросервисной реализации данного паттерна, распишу возможные комбинации применяемых паттернов с учетом их имплементации, и в конечном итоге приведу пример конкретной реализации одного небольшого сервиса.
Реверс-инжиниринг протокола ngrok v2
Реверс-инжиниринг протокола Ngrok v2
ngrok — это сервис, позволяющий создавать туннели на локальный компьютер пользователя. Иными словами, резервируется публичный адрес, все обращения по которому пробрасываются на локальный порт.
К сожалению, с 2016 года поддержка open-source версии клиента (ngrok v1) прекращена, и чтобы воспользоваться сервисом, нужно запустить закрытую версию (ngrok v2), что во многих случаях неприемлемо. Данная статья описывает процесс изучения протокола, используемого официальным клиентом, и создания альтернативного открытого клиента.
Universal Radio Hacker — легкий способ исследовать цифровые радиопротоколы
Universal Radio Hacker (URH) — невероятно простой и понятный инструмент для анализа цифровых радиопротоколов. В отличие от монстров вроде GNU Radio, освоить его можно за пять минут, без мучений.
Главные особенности URH:
- Работает на всех платформах — на macOS/Linux/Windows, из коробки! Не нужно часами компилять километры зависимостей.
- Поддерживает популярные SDR — нативная поддержка RTL-SDR, HackRF, LimeSDR, AirSpy и других.
- Все в одном — все нужные инструменты встроены в одну программу: анализатор спектра для поиска частот, запись сигнала, интерпретатор цифрового сигнала для автоматического преобразования записанного сигнала в цифровые данные.
- Поддерживает передачу — для проведения replay-атаки достаточно выделить мышкой нужный отрезок сигнала и нажать Replay. Великолепно!
В статье мы будем анализировать сигнал пульта от шлагбаума, при помощи народного RTL-SDR (радио из дешевого USB ТВ-тюнера) и macOS.
Понимаем декораторы в Python'e, шаг за шагом. Шаг 1
На Хабре множество раз обсуждалась тема декораторов, однако, на мой взгляд, данная статья (выросшая из одного вопроса на stackoverflow) описывает данную тему наиболее понятно и, что немаловажно, является «пошаговым руководством» по использованию декораторов, позволяющим новичку овладеть этой техникой сразу на достойном уровне.
Итак, что же такое «декоратор»?
Впереди достаточно длинная статья, так что, если кто-то спешит — вот пример того, как работают декораторы:
def makebold(fn):
def wrapped():
return "<b>" + fn() + "</b>"
return wrapped
def makeitalic(fn):
def wrapped():
return "<i>" + fn() + "</i>"
return wrapped
@makebold
@makeitalic
def hello():
return "hello habr"
print hello() ## выведет <b><i>hello habr</i></b>
Многопользовательский онлайн-шутер на WebGL и asyncio, часть вторая
В этом материале постарался описать создание браузерного
3D
-шутера, начиная от импорта симпатичных моделей танков на сцену и заканчивая синхронизацией игроков и ботов между собой с помощью websocket
и asyncio
и балансировкой их по комнатам.Введение
1. Структура игры
2. Импорт моделей и blender
3. Подгрузка моделей в игре с babylon.js и сами модели
4. Передвижения, миникарта и звуки игры в babylon.js
5. Вебсокеты и синхронизация игры
6. Игроки и их координация
7. Балансировка игроков по комнатам и объектный питон
8. Asyncio и генерация поведения бота
9. Nginx и проксирование сокетов
10. Асинхронное кэширование через memcache
11. Послесловие и RoadMap
Всех кому интересна тема асинхронных приложений в
Python3
, WebGL
и просто игр, прошу под кат.Информация
- В рейтинге
- Не участвует
- Откуда
- Ярославль, Ярославская обл., Россия
- Зарегистрирован
- Активность