Search
Write a publication
Pull to refresh
5
0
Андрей @UncleAndy

User

Send message

Аудиомодификации для Android-смартфонов

Level of difficultyMedium
Reading time6 min
Views22K

Предыдущая статья была посвящена теме качества мобильного звука в Android смартфонах. Углубляясь в эту тему мы подробно рассмотрим что из себя представляют аудиомодификации, требования для их установки, принципы работы magisk модуля и способы улучшения качества звука на примере "NLSound". После установки модификации проведём анализ работы устройства и качества звука.

Читать далее

Как мы отказались от JPEG, JSON, TCP и ускорили ВКонтакте в два раза

Reading time24 min
Views171K

На протяжении всей жизни мне приходится экономить вычислительные и сетевые ресурсы: сначала были компьютеры с 300 кГц (кило — не гига!) и 32 Кбайт RAM, интернет по dial-up. Потом я решал олимпиадные задачки. Теперь имею дело с терабайтами трафика и 50 млрд событий в сутки. И хотя современные телефоны в 1 000 раз мощнее любого оборудования двадцатилетней давности, я до сих пор оптимизирую. Думал даже, что это со мной что-то не так. Но потом понял, что все постоянно что-нибудь оптимизируют. 

Эта статья в меньшей степени о том, почему нужно бороться за производительность, и в большей о том, на что сейчас стоит заменить устаревший стек из JPEG, JSON, gzip и TCP — и как это сделать. 

Спойлер: у нас есть решение и мы его не только показываем — ссылки на open source в конце статьи.

Читать далее

Латунирование, это просто

Reading time7 min
Views43K

Эта статья - простая и подробная инструкция, как можно в домашних условиях покрыть латунью металлические детали, применяя только подручную химию. cut/ В ней, подробно описанны все ньюансы и "подводные камни". После прочтения этой статьи, у вас просто не может не получиться делать такие же превращения деталей, как на картинке.

Читать далее

Автореконнекты к RabbitMQ в Go

Reading time9 min
Views15K

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

Практически нет языка, под который не была бы сделана соответствующая клиентская библиотека. Для Go такой библиотекой является github.com/streadway/amqp (далее по тексту библиотека amqp). Она имеет широкий функционал, можно подключаться к RabbitMQ, создавать каналы, настраивать очереди и exchange. Не хватает только самой малости – реконектов. А именно автоматических реконнектов при потери связи.

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

Читать далее

Ретроноутбуки в фильме «Хакеры»

Reading time10 min
Views26K
С возрастом появляется новая сложная фича, когда вдруг прикидываешь срок знакомства с каким-либо артефактом собственной жизни и, не веря, переспрашиваешь сам себя: «сколько-сколько?!». Фильму «Хакеры» в сентябре этого года исполнилось двадцать шесть лет. А это в моем понимании новое кино, в смысле не старое, где Луи де Фюнес, Пьер Ришар и Жан-Поль Бельмондо. «Хакеры» — это фильм о технологиях, который за четверть века должен был безнадежно устареть. Но нет, он свеж и бодр, возможно потому, что показывает эти технологии очень условно. Это модемная буффонада, кремниевая сказка, вольная пьеса про транзисторы и интернет.


Впервые я посмотрел «Хакеров» довольно поздно, кажется году в 1999-м. И был сражен наповал богатством техники в фильме: вроде бы такие же старшеклассники как я используют портативные компьютеры, да еще и раскрашенные в разные цвета. Это было невероятно, и совершенно не соответствовало реалиям, что нашим победнее, что западным побогаче — большинство нормальных людей в конце девяностых прекрасно обходились подержанным десктопом на «первом пне». Я во второй раз пересматриваю кино в попытке найти и назвать поименно реальные компьютерные и околокомпьютерные железки. Вот что получилось.
Спойлеры!

GoLand 2021.3: полная поддержка WSL, запуск gofmt при сохранении файла, Inline Function, удаленная разработка

Reading time8 min
Views6.8K

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

Сегодня расскажем о свежем релизе GoLand.

Что нового: полная поддержка WSL, запуск gofmt при сохранении по умолчанию, рефакторинг Inline Function, удаленная разработка (Beta), поддержка gRPC в HTTP-клиенте, улучшения отладчика и многое другое!

Под катом подробный разбор новых возможностей с гифками. 

Скачать GoLand 2021.3 можно на сайте JetBrains или через приложение Toolbox App.

Читать далее

Как мы работаем с логами (сбор, хранение, анализ при помощи Graylog)

Reading time12 min
Views133K

Всем привет! В этой статье мы хотим поделиться нашим опытом использования полезной платформы Graylog, которая ежедневно помогает собирать, надежно хранить и анализировать логи с десятков серверов, окутанных заботой нашей поддержки :)

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

Читать далее

Партицирование таблиц в PostgreSQL: чек-лист для старта

Reading time13 min
Views68K

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

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

Читать далее

Что такое проблема оракулов в блокчейн?

Reading time10 min
Views7.9K

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

Смарт-контракты представляют огромный потенциал преобразить то, как независимые структуры вступают в контрактные обязательства и производят платежи. Отдельно от индустрии смарт-контрактов, мы имеем огромную традиционную цифровую экономику, состоящую из множества устройств, связанных с помощью интернета, и производящих вычисления онлайн. Производный продукт такой цифровой инфраструктуры — постоянно увеличивающийся объем данных и API, который дает представление о том как все в нашем мире работает; например, результаты поиска, выдающие самые популярные темы, или сенсоры IoT (Internet of Things или Интернет Вещей) предлагающие наиболее распространенные модели трафика.

Смарт-контракты построенные на блокчейн и традиционные базы данных и API имеют огромный потенциал для объединения в гибридные смарт-контракты и создания новой архитектуры для автоматизации баз данных. Но как связать эти два мира? В этом и заключается “Проблема оракулов” — главная тема этой статьи.

Статья разделена на пять частей:

Читать далее

Изучение слепой подписи

Reading time10 min
Views7.2K

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

Читать далее

Ренессанс Quake: краткая история 25 лет моддинга игры

Reading time9 min
Views10K
image

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

Казалось, что такая же смерть уготована и моддингу Quake 1. Однако несколько лет назад Quake начал активно развиваться. Сегодня заново отмоделенный монастырь Quake привлекает тысячи новых членов, поддерживающих жизнь этого учения. В этой статье мы расскажем краткую историю ренессанса Quake, внезапного возрождения сообщества моддеров игры, которой исполнилось 25 лет.
Читать дальше →

Отложенные ретраи силами RabbitMQ

Reading time7 min
Views29K

Меня зовут Алексей Казаков, я техлид команды Клиентских коммуникаций в ДомКлике. В этой статье я хочу поделиться с вами «рецептом», который позволил нам реализовать отложенные ретраи при использовании брокера сообщений RabbitMQ


rabbit_retry
Читать дальше →

Микрооптимизация кода на Go на примере простого веб-сервиса

Reading time15 min
Views17K


Привет, Хабр! Я работаю старшим Go-разработчиком в «Лаборатории Касперского». Сегодня хочу поговорить о том, как искать узкие места и оптимизировать код на Go. Разберу процесс профилирования и оптимизации на примере простого веб-сервиса — покажу, с помощью каких встроенных инструментов искать функции, активнее всего использующие CPU и память. Расскажу, какие можно применять подходы, чтобы повысить производительность. Хотя речь пойдет о микрооптимизации, в моем примере шаг за шагом производительность удалось поднять в 5 раз!

Читать дальше →

Golang для Embedded Linux

Reading time8 min
Views12K

При разработке очередной платформы перед командой АТОЛ встал вопрос выбора языка программирования/стека технологий/железа/фреймворка для создания решений. Железо было выбрано на базе относительно недорогой Linux-платформы STM32MP153/512MB DDR3/8GB eMMC. Эта платформа имеет на несколько порядков больше ресурсов, чем используемые в нашей основной массе решений LPC1768/LPC1778/LPC4078/STM32F207. 100% наработок кода компании для устройств были написаны на C/C++, однако прогресс не стоит на месте, и периодически необходимо актуализировать инструменты и технологии разработки, особенно с учетом новых аппаратных возможностей. Из статьи станет ясно, как мы дошли до жизни такой и почему выбрали Golang для создания очередного набора решений.

Выбор стека технологий важен для всех компаний, которые занимаются разработкой железа и перерастают крошечные embedded контроллеры на Cortex M0/M3/M4/M7. Обычно команды при переходе на новую платформу выбирают одно из двух решений: стараются сделать новую версию системы на новом железе/технологиях/архитектуре, превращая решение в нестабильный долгострой, или наоборот — вносят минимальное количество изменений, но иногда вместо совокупности положительных черт разных подходов получают совокупность отрицательных.

В статье исследованы особенности различных языков программирования/технологий (Java, Python, C/C++, Rust, Golang), их плюсы и минусы, сформулированы критерии выбора и представлен выбор команды АТОЛ.

Для анализа использован метод SWOT-анализа. В качестве источников данных — информация сайтов фреймворков. Помимо этого, косвенная информация о боли и страданиях разработчиков получена на Stackoverflow, и часть субъективных выводов сделана на основе моего экспертного мнения за более чем 30-летний опыт программирования.

Читать далее

ElasticSearch: отказоустойчивый сервер отказал

Reading time8 min
Views14K
image
Всем привет, меня зовут Илья, я работаю в компании DINS на должности инженера отдела мониторинга. В этой статье расскажу о нашей боли при работе с ElasticSearch. Мне не удалось найти решение этой проблемы где-либо ещё, поэтому, думаю, этот туториал будет интересен всем, кто использует ElasticSearch.
Читать дальше →

Архитектура Вселенной, часть 2: Относительность

Reading time32 min
Views26K

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

Оба этих понятия настолько самоочевидны, что когда мы пытаемся дать им определение, то сталкиваемся с огромными трудностями и можем выдавить из себя только что-то вроде: "ну, пространство - это то, в чём все находится, а время - ну, оно течёт". Мы можем попробовать описать время, как процесс, но мы тут же натолкнемся на объяснительную рекурсию, ведь процесс - это то, что проистекает во времени. Но может быть все-таки существует лучшее определение времени?

Давайте посмотрим на то, что пишет о времени Википедия:

Время - это форма протекания физических и психических процессов, условие возможности изменения

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

Пространство -  трёхмерное пространство нашего повседневного мира.
Трёхмерное пространство - геометрическая модель материального мира.

Получается какая-то рекурсия: пространство - это геометрическая модель мира в мире. Видимо, проблемы с формулировками есть не только у меня. Почему же так трудно дать определение этим понятиям?

Читать далее

Создание и использование динамических библиотек в Rust

Reading time9 min
Views13K

Динамические библиотеки подключаются к программе во время выполнения. Это позволяет обновлять их реализацию и компилировать независимо от использующих программ. Такой подход открывает ряд дополнительных возможностей при разработке ПО. Например, написание разных модулей приложения на разных языках. Или создание системы динамически подключаемых плагинов. В данной статье мы рассмотрим, как создавать и загружать динамические библиотеки в Rust.

Читать далее

Information

Rating
Does not participate
Location
Подгорица, Подгорица, Черногория
Date of birth
Registered
Activity

Specialization

Backend Developer, Database Developer
From 500,000 ₽
Golang
Docker
PostgreSQL
Git
Nginx
High-loaded systems
Kubernetes
Linux
MySQL
Redis