Как стать автором
Обновить
4
0.3

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

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

Блокировка Docker Hub для России. Без паники разбираемся как работать дальше

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

Главной новостью этой недели стала блокировка пользователей из России ресурсом Docker Hub. Она осуществляется по Geo IP.

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

В статье три проверенных мною способа, как получить доступ к ресурсу.

Читать далее
Всего голосов 73: ↑69 и ↓4+81
Комментарии35

Финансовая арифметика в PostgreSQL

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

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

Читать далее
Всего голосов 30: ↑26 и ↓4+28
Комментарии52

Как уменьшить количество обращений к DockerHub из инфраструктуры CI/CD при помощи кэширования образов Docker?

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


Компания Docker объявила о введении ограничений на частоту скачивания данных сервиса DockerHub в бесплатном тарифе. В этой статье мы расскажем о стратегиях, позволяющих пользователям смягчить влияние новых ограничений частоты запросов при использовании сервиса GitLab, установленного на своих мощностях.

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

Настройка bluetooth микрофона с шумоподавлением в PipeWire

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

В череде дней «длинных» майских праздников решил развернуть голосовой помощник на сервере домашней автоматизации Home Assistant. Мой домашний сервер работает под управлением ОС Ubuntu Server 23.10 и не имеет никаких предустановленных источников или приемников аудио и видео информации. В Ubuntu были установлены аудиосервер PipeWire и менеджер сеансов WirePlumber. Такой выбор был продиктован тем, что эти приложения являются стандартным ПО по обработке аудио и видео потоков в Linux. В сети мне не удалось обнаружить какого-либо полного описания процесса настройки, и эта статья, в некоторой степени, восполняет этот пробел.

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

Vo(IP) Really Simple: пишем простое VoIP решение

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

Будучи поклонником suckless философии, минимализма и простоты в программном обеспечении, я не нахожу простых и маленьких VoIP решений. Программ связанных с VoIP очень много. Но это либо колоссальные системы для построения SIP-based экосистемы, либо что-то из мира WebRTC. Особняком выделяю Mumble -- популярное решение среди геймеров: централизованный сервер, указываешь его адрес и вот уже слышишь в наушниках другого человека. А нет ли чего ещё попроще?

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

Оптимизация Arch Linux до небес

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

Всем привет! Наверно, многие пришли к линуксу, когда их старый компьютер или ноутбук не тянул, или плохо тянул операционные системы от Microsoft. Многие пробовали разные дистрибутивы — AntiX, MX Linux, Linux Lite, Lubuntu, Xubuntu, и многие другие. Но скорее всего, вы в итоге пришли к Arch Linux — по моему скромному мнению, одному из лучших дистрибутивов.


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


Устанавливая какое-либо DE или WM, вы скорее всего установите минимальную комплектацию, а также из-за минималистичности арча — вы получаете систему, которая не будет есть много ресурсов вашего ПК, ибо не будет никаких лишних сервисов и демонов.


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

Читать дальше →
Всего голосов 21: ↑18 и ↓3+21
Комментарии33

Большая иерархия в SQL запросе + PostgreSQL

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

Сначала запрос адаптирован для работы в PostgreSQL 15.6.

Затем работа запроса проверена на достаточно объемной иерархии - в качестве источника данных использована структура архива jdk-master.zip из OpenJDK 22

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

Обработка ошибок в web apps не должна быть такой сложной

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

В процессе работы с Go я столкнулся с ещё одной проблемой — обработкой ошибок в хендлерах. Как можно сделать этот процесс удобным и эффективным для 150+ обработчиков? Как обеспечить консистентность и поддержку при обработке ошибок?

Разумеется, мои поиски палочки-выручалочки закончились ничем, хочется чтобы бум и все готово. Есть протокол RFS7807, есть библиотека, есть масса противоречивых статей. По существу статья ниже полностью не отвечает на все, но в ней есть позиция и предложено решение, и я думаю, это решение может быть полезным. Статья лишь повод/предложение поделиться вашими примерами успешных кейсов.

Собственно, статья, приятного прочтения.

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

Кто реально угрожает C++ (нет, Rust, не ты)

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

Привет! Меня зовут Александр Каленюк, и я крепко подсел на C++. Пишу на C++ 18 лет кряду, и все эти годы отчаянно пытаюсь избавиться от этой разрушительной зависимости.

Всё началось в конце 2005 года, когда мне довелось писать движок для симуляции 3D-пространства. В этом движке было буквально всё, чем язык C++ мог похвастаться в 2005 году. Трёхзвёздочные указатели, восьмиуровневые зависимости, C-подобные макросы повсюду. Кое-где – вкрапления ассемблера. Итераторы в стиле Степанова и мета-код в стиле Александреску. В общем, всё. Кроме ответа на самый важный вопрос: зачем?

Читать далее
Всего голосов 220: ↑208 и ↓12+244
Комментарии361

Выжимаем максимум из PostgreSQL

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

Привет, Хабр! Меня зовут Максим, я работаю тестировщиком оборудования в Selectel Lab. В лаборатории мы занимаемся тестированием нового оборудования для дата-центров. О том, как мы измеряли производительность PostgreSQL на разных конфигурациях — под катом!
Читать дальше →
Всего голосов 49: ↑47 и ↓2+66
Комментарии22

Установка Arch Linux кратко и (почти) без боли

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

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

Приступим к установке
Всего голосов 16: ↑12 и ↓4+12
Комментарии74

PostgreSQL + pgAdmin + mTLS + certificate-based authentication + docker-compose в одном флаконе

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

Чего у меня не отнять, дак это мастерства заголовка...

В какой-то момент при локальной разработке (да, в общем-то и при тестировании на иных стендах) задумываешься о том, как бы избавиться от довольно монотонных действий. Одним из них является ввод пароля в рамках процесса аутентификации в PostgreSQL. В этой статье я расскажу как слегка автоматизировать данный процесс.

Данная статья является легким переосмыслением того, что я написал на медиуме. Ибо думать я продолжаю на русском.

TL;DR исходники к вашим услугам.

В рамках любых взаимодействий мы сталкиваемся с такими сущностями как авторизация и аутентификация. Повторять в 100500 раз что есть что я не буду (но мне не лень такую длинную ремарку напечатать, ага). В рамках PostgreSQL первое обеспечивается через Roles, а второе через Privileges.

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

Домашний CICD: Docker, Jenkins и Nexus3

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

Практика CI/CD широко распространена в современном мире и представить ручной деплой у FAANG с их бесчисленными ежедневными изменениями просто невозможно. То же будет справедливо и для продуктовых компаний: десятки ручных деплоев в день вытянуть можно, но это потребует колоссальных ресурсов.

Освоить эту практику можно дома, в среде, где что-то сломать не страшно, ведь всегда можно начать все с самого начала. В этом гайде рассмотрим как развернуть и настроить Jenkins в Docker, как создать агентов для сборки, а еще запушим образ в приватный Nexus.

Настроить CI/CD этому господину
Всего голосов 8: ↑6 и ↓2+5
Комментарии1

Настраиваем CI/CD с GitHub Actions и werf: инструкция для новичков

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

В этой статье мы рассмотрим, как настроить пайплайн CI/CD в GitHub: подготовим репозиторий, зальём туда приложение, создадим файлы конфигурации GitHub Actions, в которых опишем, как собирать наше приложение и деплоить его в кластер Kubernetes, развёрнутый под управлением Deckhouse Kubernetes Platform. Деплоить будем с помощью Open Source CLI-утилиты werf. Она помогает организовать полный цикл доставки приложений в Kubernetes и рассматривает Git как единый источник истины для состояния развёрнутого приложения. Статья рассчитана на тех, кто только начинает свой путь в мире облаков и кластеризации.

Читать далее
Всего голосов 22: ↑21 и ↓1+26
Комментарии2

Как я склеил картон и продал на маркетплейсах на 50 млн в год

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

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

Читать далее
Всего голосов 241: ↑217 и ↓24+242
Комментарии295

TOTP без смартфона

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

Когда я решил избавиться от необходимости постоянно носить с собой смартфон, одной из проблем оказалась двухфакторная аутентификация (2FA, приложение Google Authenticator). Остаться без возможности авторизации на множестве сервисов было неприемлемо, нужна была альтернатива.

Беглый поиск вывел меня на утилиту oathtool: командная строка, POSIX, OSS — всё, как я люблю, проблема в принципе решена. Но, как и большинство CLI утилит, её удобно использовать в сочетании с другими утилитами, а для этого полезно написать скриптовую обвязку. Собственно этой обвязкой, а также опытом использования, я и решил поделиться.

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

Как пишут SQL-запросы гуманитарии

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

Когда говорят «мы ускорили выполнение нашего запроса в N раз» это значит, что сначала сделали плохо а потом начали думать как улучшить.

Так я думал раньше.

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

SQL HowTo: один индекс на два диапазона

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

В прошлой статье я показал, как условие с парой однотипных неравенств, плохо поддающееся индексации с помощью btree, можно переделать на эффективно gist-индексируемое в PostgreSQL условие относительно диапазонных типов, а наш сервис анализа планов запросов explain.tensor.ru подскажет, как именно это сделать.

Но что делать, если неравенств у нас не два, а целых четыре, да еще и с разными типами участвующих полей? Например, для целей бизнеса это может быть задачей вроде "найди мне все продажи за декабрь на сумму 10-20K", что на SQL будет выглядеть примерно так:

dt >= '2023-12-01'::date AND dt <= '2023-12-31'::date AND

sum >= 10000::numeric AND sum <= 20000::numeric

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

Pgpool-II

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

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

Pgpool-II позволяет юзерам PostgreSQL управлять пулами соединений БД, реализовывать репликацию данных между серверами БД. Pgpool-II работает как прокси-сервер между клиентскими приложениями и серверами PostgreSQL, перехватывая запросы от клиентов и направляя их к соответствующим серверам БД согласно настроенным правилам и политикам.

Pgpool-II также поддерживает множественные режимы репликации, включая репликацию на уровне строки и репликацию на уровне транзакций. Репликация на уровне строки позволяет синхронизировать изменения данных между серверами в реальном времени, в то время как репликация на уровне транзакций сосредотачивается на синхронизации транзакций целиком.

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

DIY: Ваше собственное облако на базе Kubernetes (часть 3)

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

Вот мы и подобрались к самому интересному: запуску Kubernetes в Kubernetes. В этой статье мы поговорим о таких технологиях, как Kamaji и Cluster API, а также о том, как интегрировать их с KubeVirt.

В прошлых статьях мы уже рассказывали, как мы готовим Kubernetes на bare metal, и о том, как превратить Kubernetes в средство запуска виртуальных машин. Эта статья завершает серию, объясняя, как, используя всё вышеперечисленное, можно построить полноценный managed Kubernetes service и запускать виртуальные Kubernetes-кластеры по клику.

И начнём мы, пожалуй с Cluster API.

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

Информация

В рейтинге
1 981-й
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность