Как стать автором
Обновить
47
-0.9
Сергей @onegreyonewhite

Специалист

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

Создание собственного ключа Android приложения

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

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

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

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

Запускаем privateGPT локально на WSL c поддержкой GPU Nvidia

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

Приватный GPT - это готовый к производству проект искусственного интеллекта, который позволяет задавать вопросы о ваших документах, используя мощь больших языковых моделей (LLM), даже в сценариях без подключения к Интернету. 100% приватный, никакие данные не покидают ваше окружение выполнения в любой момент.

Запуск на Windows Subsystem для Linux (WSL) с поддержкой GPU может значительно улучшить его производительность. В этом руководстве я проведу вас пошаговый процесс установки PrivateGPT на WSL с использованием ускорения GPU.

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

Простой CRUD на chi. Часть 1

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

Согласно официальному сайту, chi — это легковесный, идиоматический и композируемый маршрутизатор для создания HTTP-сервисов на Go. Он на 100% совместим с net/http и довольно легок в обращении, однако его документация предназначена скорее для опытных разработчиков, чем для новичков, поэтому я решил написать серию статей, в ходе которых мы будем постепенно развивать и перерабатывать простейший CRUD, написанный на chi.

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

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

Пишем свой Chat GPT

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

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

У меня давно было желание  поработать с непосредственно с самим API от Open AI и с другими LLM моделями. Решил написать свой чат с возможностью адаптировать под внутренние нужды команды в дальнейшем. Проект выложен в открытый доступ, скачать можно по ссылке. Сам проект находится в активной разработке, так что вы можете писать ваши замечания / пожелания в комментариях или отправить ваш pull request с исправлениями. Будем оперативно исправлять ошибки. 

На бэкенде был выбран Python, Django Rest Framework. На фронтенде React, Redux, Saga, Sass. Начнем с бэкенда, им занимался Егор. Далее про серверную часть проекта он пишет от себя.

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

Операторы PostgreSQL для Kubernetes. Как мы выбирали идеальный вариант для организации системы DBaaS

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

Некоторое время назад у нас возникла задача организовать возможность создания managed баз данных. Сложность данной задачи в том, что нам надо развертывать и управлять тысячами баз данных PostgreSQL, которые обеспечивают репликацию, бэкапы, мониторинг и другие полезные пользователям функции. При этом в ядре нашей системы лежит Kubernetes, в котором запускаются приложения пользователей. И по ряду факторов нам требовалось запускать базы данных внутри кластера.

Чтобы не изобретать велосипед, мы решили рассмотреть известные операторы, позволяющие разворачивать базы данных PostgreSQL в Kubernetes и управлять ими.

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

Фильтры Ansible: превращаем сложное в простое

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

Используя Ansible в качестве инструмента автоматизации, часть приходится сталкиваться с задачей обработки и фильтрации структурированных данных. Как правило, это набор фактов, полученных с управляемых серверов, или ответ на запрос к внешним API, которые возвращают данные в виде стандартного json. Многие неопытные инженеры, используя Ansible в таких случаях, начинают прибегать к помощи привычных консольных команд и начинают городить то, что среди специалистов получило название bashsible. В общем, вспоминается известный мем:

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

OpenAPI/Swagger для начинающих

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

Эта статья в основном для аналитиков, которые впервые сталкиваются с необходимостью описания запросов в Swagger, но может быть полезна всем, кто хочет разобраться или ищет подсказку.

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

Тест производительности Web-фреймворков для Rust

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

В этой статье мы сравним производительность 3 наиболее популярных бекэнд-фреймворков для Rust: AxumActix и Rocket.

Сравним основные особенности, качество документации и самое главное - проведём тест производительности. Для этого напишем с помощью каждого фреймворка простой REST-сервис с тремя эндпоинтами - один будет просто возвращать отформатированную строку, второй засыпать на 20 миллисекунд имитируя небольшую работу с БД или запрос к внешнему сервису, а третий будет выполнять тяжёлую работу вычисляя хеш bcrypt, имитируя какую-нибудь сложную бизнес-логику.

Читать далее
Всего голосов 18: ↑16 и ↓2+14
Комментарии12

Как я проектирую и разрабатываю расширения Python на Rust

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

В этой статье я хочу рассказать о том, как я проектирую комплексные расширения для Python на Rust с использованием PyO3 и почему я принимаю те или иные проектные решения.

Читать далее
Всего голосов 19: ↑17 и ↓2+15
Комментарии12

Основы дискретной математики

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

Эта статья содержит лишь малую часть информации по заявленной теме. Рассматривайте ее как вводный курс перед началом всестороннего изучения предмета. Надеюсь, вы найдете в ней полезную информацию. Знание дискретной математики помогает описывать объекты и задачи в информатике, особенно когда дело касается алгоритмов, языков программирования, баз данных и криптографии. В дальнейшем я планирую подробнее раскрыть темы, затронутые в этой статье. Приятного чтения!

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

Увеличиваем свою производительность в WebStorm / PhpStorm c помощью шаблонов

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

В статье рассмотрим как создавать шаблоны в продуктах Jesbrains (WebStorm, PhpStorm, Intellij, PyCharm).

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

Возможности QR-кодов

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

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


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


В этой статье будут рассмотрены некоторые из этих стандартов и описаны возможные типы данных, которые можно спрятать в qr-код.


Читать дальше →
Всего голосов 63: ↑56 и ↓7+49
Комментарии25

Секреты в kubernetes используя Hashicorp Vault + External Secrets Operator

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

Всем привет! Меня зовут Сергей Смирнов, я DevOps экосистемы «Своё» в РСХБ-Интех (технологическая дочка Россельхозбанка).

Сегодня я расскажу вам об одном из способов доставки секретов в kubernetes из Hashicorp Vault. Это поможет решить сразу несколько задач:

• Создать единственное хранилище секретов;

• Защитить от утечки секретов;

• Сделать работу с секретами для пользователей удобной.

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

Как рассчитать SLA на примере Nginx-сервера

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

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

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

Как в 1.5 раза повысить производительность фронтенда высоконагруженного интернет-магазина на Next.js

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

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

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

KivyMD на «кухне»

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

Доброго времени суток, всем!

Почему-то эта английская фраза, вынесенная в эпиграф, которая обычно используется, чтобы сказать о большом количестве вещей, которые были упакованы, собраны, и возможно даже украдены, в её второй части - " Kitchen Sink", стала общим обозначением программных демо-проектов. Вот и я не стал исключением, не стал придумывать название и представляю свою демонстрацию виджетов KivyMD, то бишь "кухонную раковину".

Для тех, кто не в курсе, поясню, что KivyMD - это "фреймворк на языке Python для кроссплатформенной разработки Kivy и библиотеки виджетов в стиле Google Material Design". Или же простыми словами, вы можете собрать вполне приличное, хорошо выглядящее приложение, как для Windows, так и для Андроид, Linux and еtс.

На Хабре есть много статей посвященных отдельным частям Kivy и KivyMD. Но, полазив в том числе по Интернет, я не нашел хорошего демонстрационного примера. Все проекты либо заточены по старую версию KivyMD и сходу не работают, либо достаточно куцые. Поэтому решил "наполнить раковину" сам. ;)

Проект лежит здесь: https://github.com/longvalery/KitchenSink.KivyMD.git

Он собран под текущую на данный момент версию KivyMD - kivy.require("2.2.1")

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

Но позволю себе дать некоторые пояснения общего характера, а затем кратко описать элементы приложения.

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

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

Наблюдаемость сетевой инфраструктуры Kubernetes. Часть вторая

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

Вторая часть статьи "Наблюдаемость сетевой инфраструктуры Kubernetes" про рассмотрение Observability инструментов.

В этой части мы сравним разворачиваемые решения в выбранном сетевом сценарии на основе собранных метрик приложения и кластера Kubernetes. Сделаем выводы о дальнейшем использовании инструментов в DevOps/K8S окружении.

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

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

Миграция с минимальным простоем виртуальных машин KVM между отдельными кластерами Proxmox VE

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

Некоторое время назад потребовалось решить задачу по переносу виртуальных машин KVM с одного кластера Proxmox VE на другой с минимальным временем простоя. В PVE «из коробки» такой возможности нет, но, как оказалось, онлайн-миграцию виртуальных машин между кластерами можно выполнить средствами KVM. Процедуру переноса я подробно опишу в этом руководстве.

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

Как делать бэкапы без проводов: restic + MinIO (S3)

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

До недавнего времени я делал бэкапы своих устройств на внешний HDD. Такой способ меня устраивал потому, что бэкапил данные редко - раз в неделю. Когда задумался о ежедневных бэкапах, понял, что бегать с внешним HDD будет непрактично. Хочу рассказать про удобное (по крайней мере для меня) решение для ежедневных бекапов без проводов.

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

Отслеживание сетевого трафика между подами в Kubernetes

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

Как работает связь между подами в Kubernetes?

Как трафик достигает пода?

В этой статье вы узнаете, как работает низкоуровневая сеть в Kubernetes.

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

Информация

В рейтинге
Не участвует
Откуда
Sacramento, California, США
Дата рождения
Зарегистрирован
Активность