Как стать автором
Обновить
1
0
jeeper @jeeper

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

Отправить сообщение

Использование кодовой базы проекта Chromium в качестве SDK для разработки кроссплатформенных приложений

Время на прочтение11 мин
Количество просмотров15K
Помимо вполне понятной официальной документации (Chromium Wiki), существуют и статьи о том, как получить исходный код и собрать проект Chromium (например).

Я же хотел рассказать о том, как на основе этого кода можно создавать приложения на C++, способные компилироваться и выполняться на нескольких операционных системах и архитектурах. Конечно, для этой цели уже существуют библиотеки, такие как Qt и boost. Но именно поэтому данная статья относится к разделу 'ненормальное программирование', ведь никто всерьез не рассматривает код Chromium как основу для кроссплатформенного приложения.
Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии5

Конечный Aвтомат Аппаратного I2C-Трансивера

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров3.3K

В этом тексте я показал как конечный автомат может работать ядром для драйвера аппаратного I2C трансивера.

Меня удивляет, что в оригинальном коде от вендоров микроконтроллеров программисты прошли мимо конечных автоматов при написании I2C кода внутри своих официальных uHAL. Непорядок...

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

Читать далее
Всего голосов 21: ↑16 и ↓5+14
Комментарии24

Как настраивать сети: определения, типовые схемы, особенности

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров10K


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

Мы подготовили материал, состоящий из трех частей. Цель трилогии — помочь всем, кому необходимо разбираться в особенностях сетей, в том, как их использовать для выстраивания новой инфраструктуры или улучшения существующей. В основе — накопленные знания при обработке клиентских запросов.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+36
Комментарии0

Алгоритмы поиска путей на пальцах. Часть 2: Алгоритм Дейкстры

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров3.6K

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

Теперь вы, как специалист на посту разработчика 2GIS изучили местность более подробно и поняли, что BFS не подходит для решения вашей задачи, так как дороги имеют разную протяженность и маршрут от A до B не может исчисляться в условной единице.

Читать далее
Всего голосов 4: ↑3 и ↓1+3
Комментарии8

Графики, которые работают: выбор лучшей визуализации

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров9.4K

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

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


График — многопараметрический объект, рассматривать и оптимизировать который можно часами. Для простоты эксперимента давайте остановимся хотя бы на одном параметре — визуальная кодировка. Еще проще - ограничимся пятью самыми популярными: барчарт, линейный, скаттерплот, пайчарт и таблица.

Читать далее
Всего голосов 9: ↑4 и ↓50
Комментарии12

GraphQL — знакомство на практике через Postman [пошаговая инструкция]

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров6.3K

В этой статье вы найдёте пошаговую инструкцию по тестированию открытого GraphQL API через Postman.

Статья постоена по принципу: сначала практика -> потом теория.

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

Читать далее
Всего голосов 7: ↑6 и ↓1+5
Комментарии4

Анатомия GNU/Linux

Время на прочтение13 мин
Количество просмотров117K

Какое-то время назад на Хабре была небольшая волна постов на тему «Почему я [не] выбрал Linux». Как порядочный фанатик я стриггерился, однако решил, что продуктивнее что-нибудь рассказать о своей любимой системе, чем ломать копии в комментариях.

У меня сложилось впечатление, что многие пользователи GNU/Linux слабо представляют, из чего сделана эта операционная система, поэтому утверждают, что она сляпана из попавшихся под руку кусков. В то же время, архитектура большинства дистрибутивов является устоявшейся и регламентируется рядом стандартов, включая стандарт графического окружения freedesktop.org и Linux Standard Base, расширяющий стандарты Unix. Мне при знакомстве с GNU/Linux несколько лет назад для погружения не хватало простой анатомической карты типичного дистрибутива, поэтому я попробую рассказать об этом сам.

Читать далее
Всего голосов 161: ↑161 и ↓0+161
Комментарии137

Получение, обработка, анализ и визуализация спутниковых снимков с помощью библиотек: GDAL, numpy и matplotlib

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров1.9K

Эта статья является продолжением цикла статей посвященных развитию стартапа "Arrow". Ребята из моей команды тоже не отстают и те, кого больше интересует бизнес-сторона вопроса можете почитать "Старт проекта и гибкость как залог успеха: путь команды ARROW", а те кто больше по разработке оставайтесь здесь. Первая техническая статья на примере нашего проекта освещает проблему построения Веб-ГИС приложения и сервисов. Логика приложения, в том числе, будет реализовывать инструменты получения спутниковых снимков и их обработки по специальным алгоритмам, что позволит решать задачи мониторинга территорий - дешифрировать, классифицировать и кластеризировать объекты и явления местности на основе технологий машинного обучения.

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии4

Вычисления с GPU-ускорением на Python

Уровень сложностиСложный
Время на прочтение9 мин
Количество просмотров6.9K

GPU, также именуемый «видеокартой» или «графическим процессором» – это важнейший компонент компьютера, отвечающий за отображение картинок и видео. Графический процессор, в отличие от обычного ЦП (CPU), превосходно дробит задачи на подзадачи и распараллеливает их. В GPU всегда много ядер, поэтому вычисления на нём выполняются более эффективно. Поэтому GPU идеально подходит для многозадачности. В следующей таблице даётся упрощённое сравнение CPU и GPU.

Читать далее
Всего голосов 33: ↑28 и ↓5+37
Комментарии4

Микросервисы: Почему именно gRPC?

Время на прочтение5 мин
Количество просмотров17K

Архитектура микросервисов широко распространена в современном программировании. Благодаря этой архитектуре разработчики смогут самостоятельно разрабатывать сервисы и управлять ими. Однако очень важно выбрать правильный протокол для эффективного взаимодействия между микросервисами. Здесь протокол gRPC (Google Remote Treatment Call) выделяется своей высокой эффективностью и скоростью. В этой статье мы предоставим подробную информацию о RPC и gRPC, рассмотрим преимущества gRPC в архитектурах микросервисов и продемонстрируем их различия на примерах кода на языке программирования Go.

Читать далее
Всего голосов 22: ↑3 и ↓19-12
Комментарии28

Вакуумная установка для самодельных радиоламп

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров8.2K

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

Читать далее
Всего голосов 70: ↑69 и ↓1+99
Комментарии80

Правильный путь создания python-библиотеки: от создания до публикации

Уровень сложностиСредний
Время на прочтение30 мин
Количество просмотров6.6K

Привет, Хабр! Стоит ли говорить, что Python ОЧЕНЬ и ОЧЕНЬ популярный язык программирования, местами даже догоняя JavaScript. Python в мире программирования — это эсперанто, легкий язык созданный для всех, но его владельцам не мешало бы помыться.

В мире программирования создание собственных библиотек — это не просто возможность пополнения своего портфолио или способ структурировать код, а настоящий акт творческого самовыражения (и иногда велосипедостроения). Каждый разработчик иногда использовал в нескольких своих проектах однообразный код, который приходилось каждый раз перемещать. Да и хотя бы как упаковать свои идеи и знания в удобный и доступный формат, которым можно будет поделиться с сообществом.

Если вы ловили себя на мысли: «А почему мне бы не создать свою полноценную библиотеку?», то я рекомендую прочитать вам мою статью.

Эту статью вы можете использовать как шпаргалку для создания своих python-библиотек. Я полностью расскажу все этапы создания библиотеки: документация, тестирование, архитектура, публикация и управление зависимостями

Некоторые из вас могут подумать что мы изобретаем велосипед. А я в ответ скажу — сможете ли вы прямо сейчас, без подсказок, только по памяти, нарисовать велосипед без ошибок?

Читать далее
Всего голосов 27: ↑25 и ↓2+32
Комментарии6

Забудьте про терминал! Как я избавлялся от рутинных ADB команды с помощью Shortcuts

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров3K

До этого года я спокойно пользовался терминалом для установки android приложений на тестовые устройства: каждый раз вручную копировал название файла, выбирал нужную команду из истории терминала, стирал старое название и вставлял новое. Это меня очень раздражало, но я не искал решений.

А ведь кроме установки, есть множество других команд ADB, которые приходится использовать время от времени. Например, отправка фалов на устройство или выгрузка последних логов из logcat на компьютер, для чего тоже нужно было прописывать путь для сохранения файла — очень неудобно и отнимает драгоценное время.

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

В конце статьи ссылки на готовые команды 🌚

Читать далее
Всего голосов 5: ↑4 и ↓1+6
Комментарии4

База, которую нужно знать про JSON Schema

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров16K

Привет, Хабр!

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

Читать далее
Всего голосов 37: ↑31 и ↓6+35
Комментарии11

Популярный, но неправильный способ перевода строки в нижний регистр

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров6.1K

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

Но он ошибочен по многим причинам.

Во-первых, std::tolower — это неадресуемая функция. Среди прочего, это значит, что мы не можем брать адрес функции, как мы делаем это здесь, когда передаём указатель на функцию std::transform. То есть нам нужно использовать лямбду.

Читать далее
Всего голосов 24: ↑23 и ↓1+35
Комментарии17

Асинхронное программирование (полный курс)

Время на прочтение2 мин
Количество просмотров101K

Методы асинхронного программирования


Асинхронное программирование за последнее время стало не менее развитым направлением, чем классическое параллельное программирование, а в мире JavaScript, как в браузерах, так и в Node.js, понимание его приемов заняло одно из центральных мест в формировании мировоззрения разработчиков. Предлагаю вашему вниманию целостный и наиболее полный курс с объяснением всех широко распространенных методов асинхронного программирования, адаптеров между ними и вспомогательных проемов. Сейчас он состоит из 23 лекций, 3 докладов и 28 репозиториев с множеством примеров кода на github. Всего около 17 часов видео: ссылка на плейлист.

Читать дальше →
Всего голосов 48: ↑48 и ↓0+48
Комментарии17

Доступ к потоковой передаче данных в режиме реального времени

Время на прочтение10 мин
Количество просмотров3.3K

Как Redpanda и Materialize — продукты, не основанные на JVM — делают потоковую обработку доступной для широких масс за счет снижения операционных издержек? Обсудим в статье.

Читать далее
Всего голосов 11: ↑7 и ↓4+4
Комментарии2

Потребление ресурсов в Prometheus: кто виноват и что делать (обзор и видео доклада)

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров5.2K

У Prometheus есть серьёзный недостаток — чрезмерное потребление ресурсов. Проблема может заключаться в недостаточном понимании инструмента и его неверном использовании. А Prometheus требует грамотного управления метриками и лейблами.

В своем докладе технический директор Deckhouse Observability Platform Владимир Гурьянов выяснил, кто виноват в этом и что делать.

Читать далее
Всего голосов 39: ↑39 и ↓0+49
Комментарии7

Три распространенных ошибки с метриками Kubernetes в PromQL

Время на прочтение4 мин
Количество просмотров2K

Миллионы разработчиков пишут запросы PromQL и создают пользовательские дашборды Grafana для Kubernetes. И все используют одинаковые метрики из node-exporter, kubelet и kube-state-metrics. К сожалению, не все знают, как при работе с метриками обойти некоторые подводные камни.‍

Команда VK Cloud перевела статью, в которой автор разбирает ошибки в одном простом с виду запросе Prometheus для Kubernetes. Он должен возвращать сведения об использовании памяти пода:

Читать далее
Всего голосов 5: ↑5 и ↓0+15
Комментарии4

Можно ли получить рут при помощи одной зажигалки?

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров18K
Спойлер: ДА.

Элитный инструмент для хакинга; от вас скрывают, что он уже у вас есть

Прежде чем писать эксплойт, нам нужен баг. А если багов нет, то приходится быть изобретательными — тут нам на помощь приходит внесение неисправностей. Внесение неисправностей (fault injection) может принимать множество различных форм, в том числе быть управляемым ПО повреждением данных, глитчингом питания, тактовым глитчингом, электромагнитными импульсами, лазером и так далее.

Для внесения аппаратных неисправностей обычно требуется специализированное (и дорогостоящее) оборудование. Его цена связана с высокой точностью времени и места внесения неисправностей. Для снижения цен было совершено множество отважных попыток такими проектами, как PicoEMP на основе RP2040 и вплоть до «Laser Fault Injection for The Masses». (Неожиданная популярность RP2040 связана с его низкой ценой и периферией PIO, обеспечивающей ввод-вывод с чёткими таймингами и задержками.)

Какое-то время назад я прочитал об использовании соединённой с индуктором пьезоэлектрической зажигалки для барбекю в качестве низкобюджетного устройства для внесения электромагнитных неисправностей (electro-magnetic fault injection, EMFI). Меня захватила эта идея. Я задался вопросом, а чего можно добиться при помощи такого примитивного устройства? На тот момент мне пришёл в голову лишь эксплойтинг работающей на Arduino программной реализации AES при помощи DFA. И это сработало!

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

Перенесёмся в наше время: пару недель назад уже ожидалось объявление о выпуске Nintendo Switch 2. Предполагается, что системное ПО Switch 2 будет практически таким же, как и на Switch 1, а программные баги для изучения у нас закончились. Поэтому у меня возникла мотивация смахнуть пыл с моих навыков взлома оборудования, и я вернулся к мыслям о низкобюджетном EMFI.
Читать дальше →
Всего голосов 71: ↑70 и ↓1+97
Комментарии17
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность