Search
Write a publication
Pull to refresh
10
0
Сысолятин Павел @PSyton

User

Send message

Дневник альтруиста. OpenBlt

Level of difficultyMedium
Reading time24 min
Views2.9K

В данной статье будет рассмотрен Си проект OpenBlt с точки зрения системы сборки CMake. Я постараюсь не теоретически или эмпирически, а именно на практике продемонстрировать, что в составном проекте лучше один раз уделить время на подготовку хорошего фундамента для архитектуры, чем впоследствии мириться с тонной дублируемого и не универсального поведения. Также я постараюсь доказать, что cmake генераторы выражений - намного легче и приятнее, чем они кажутся на первый взгляд.
И да, я понимаю, что и на второй, и на третий взгляд за генераторы выражений хочется жалобу на Kitware подать. :D

* Превью сгенерировано с помощью Adobe Firefly

Читать далее

Транзакции в БД на Go с использованием многослойной архитектуры

Level of difficultyMedium
Reading time17 min
Views11K

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

Однажды, я столкнулся с инцидентом на проде и обратился за помощью к самому опытному инженеру. Он пришел на помощь и с легкостью изменил значение в БД с помощью... ручного обновления. 🤯 Проблема заключалась в том, что набор SQL-обновлений не был выполнен внутри транзакции.

Работа в новой компании — это всегда увлекательно. Я осознал, что даже если какой-то аспект кажется простым, например, SQL-транзакции, его легко упустить из виду.

SQL кажется чем-то, что мы все хорошо знаем, и мало чем может удивить. (Ему уже 50 лет!) Возможно, пришло время пересмотреть подходы, так как мы уже прошли фазу хайпа по поводу NoSQL, и снова возвращаемся к “используйте просто Postgres”, а иногда и к “SQLite тут за глаза”.

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

Основной принцип многослойной архитектуры заключается в разделении критически важных частей кода (логики) от деталей реализации (например, SQL-запросов). Одним из способов достижения такого разделения является паттерн «Репозиторий». Однако, наиболее сложным аспектом такой архитектуры является обработка транзакций.

Читать далее

Ещё один инструмент для обновления зависимостей

Level of difficultyEasy
Reading time6 min
Views1.5K

Обновление зависимостей в проектах на Go может быть утомительным и трудоемким процессом, особенно когда речь идет о множестве репозиториев. В данной статье автор делимся опытом разработки скрипта go-mod-bump, который значительно упрощает эту задачу, автоматизируя рутинные операции и минимизируя риск ошибок.

Читать далее

Туннель IPv6 через IPv4 для обхода замедления Youtube на уровне роутера

Level of difficultyEasy
Reading time3 min
Views171K

Туннели IPv6 через IPv4 помогают получить доступ к сайтам и сервисам, которые используют новый протокол IPv6, даже если у вас старый IP‑адрес версии 4 (IPv4). Чтобы его настроить, нужно зарегистрироваться на сайте провайдера, который предоставляет такую услугу (его еще называют туннельный брокер), и использует технологию 6in4. После регистрации вы получите все необходимые данные для подключения.

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

Туннель работает только с белым IP‑адресом (некоторые провайдеры выдают его бесплатно, некоторые за определённую сумму в месяц).

Читать далее

Спиральная динамика — как эволюционирует команда

Reading time14 min
Views14K

• Как отношения внутри команды влияют на достижение цели?
• Из-за чего сильные сотрудники могут не уживаться в коллективе?
• Как сделать команду привлекательной для новичков?
• Через какие этапы становления проходит команда?
• Какие кризисы связаны с переходом на новый этап?
• Как история IBM и Apple демонстрируют уровни спиральной динамики?

В этой статье я постарался интересно и вдумчиво разобраться в модели эволюционного развития организаций — спиральной динамике.

Читать далее

Self Hosted для домашнего сервера

Level of difficultyMedium
Reading time10 min
Views47K

Есть отличный термин self hosted, который очень популярен в англоязычном интернете.
Но он плохо переводится, почти как open source - хотя википедия и пытается дать ужасно звучащий термин "самохостинг"...

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

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

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

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

Читать далее

Диаграмма последовательности (sequence-диаграмма)

Level of difficultyEasy
Reading time8 min
Views145K

Что такое диаграмма последовательности? Из чего она состоит? Где и как пользоваться?

Простым языком о sequence диаграммах.

А еще тут есть интересные возможности, о которых ты мог не знать.

Читать далее

Многообразие связных списков

Level of difficultyMedium
Reading time13 min
Views11K

Связный список — классическая структура данных, которая позволяет быстрые вставки/удаления, но при этом просаживает другие операции (случайный доступ к элементу). Мы пройдёмся от базовой реализации до других возможных вариаций этой структуры данных и, надеюсь, вместе узнаем что‑то новое. Краем глаза увидим возможные применения связных списков. И в конце, для любителей C++, бонус: использование связного списка для сбора диагностики выделений динамической памяти в вашем коде.

Связать себя со знаниями!

Семь бордов и одна таска

Level of difficultyMedium
Reading time24 min
Views7.4K

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

Полезные борды и другие приёмы из личной практики.

Добро пожаловать на борд!

Когнитивные искажения, о которых стоит помнить

Reading time15 min
Views97K

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

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

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

Читать далее

Как содержать пароли. Мой сетап

Level of difficultyMedium
Reading time7 min
Views65K

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

Меня интересовало, как я могу залогиниться туда, где многофакторная авторизация через телефон, в случае потери телефона. 

Или, как обезопасить себя от забывания мастер пароля от менеджера паролей? На моей практике я несколько раз забывал пин-код от банковской карты, состоящий из 4-ёх цифр, после ежедневного использования на протяжении многих месяцев. Мозг - странная штука. 

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

Читать далее

i18n в Go: работа с переводами — Часть 2

Reading time12 min
Views2.9K

В предыдущей части мы реализовали в нашем приложении базовый функционал перевода сообщений. Теперь давайте сделаем что-то более сложное — разберемся, как работать с переводами, содержащими переменные.

Читать далее

i18n в Go: работа с переводами — Часть 1

Reading time14 min
Views8.3K

Недавно мне впервые довелось создавать полностью интернационализированное (i18n) и локализированное (L10n) веб-приложение, в котором я задействоал набор пакетов Go golang.org/x/text. Я обнаружил, что пакеты и инструменты, собранные в golang.org/x/text, невероятно полезны и очень хорошо спроектированы. Однако мне было довольно сложно понять, как объединить все это вместе в реальном приложении.

В этом руководстве я постараюсь объяснить, как вы можете использовать golang.org/x/text для работы с переводами в вашем приложении.

Читать далее

3X-UI: Shadowsocks-2022 & XRay (XTLS) сервер с простой настройкой и приятным интерфейсом

Level of difficultyEasy
Reading time13 min
Views555K

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

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

Поэтому сегодня мы поговорим об установке и использовании графической панели 3X-UI для сервера X-Ray с поддержкой всего того, что умеет X-Ray: Shadowsocks-2022, VLESS с XTLS и т.д.

Читать далее

Свой ChatGPT бот в Telegram в 2025

Level of difficultyMedium
Reading time8 min
Views118K

Я решил сделать свою интеграцию ChatGPT в Telegram, чтобы лучше понять, как работает ChatGPT API, какие настройки мне доступны и пользоваться ботом без всяких ограничений, а также иметь свободный доступ к модели GPT-4.

Мне не хотелось для этого проекта держать отдельный сервер, покупать домен и делать под него SSL сертификат, который требует Telegram для настройки WebHook. Поэтому я решил настроить всю систему с помощью serverless-технологий. 

Читать далее

Самый быстрый поиск пути на Go без аллокаций и СМС

Reading time10 min
Views11K

Алгоритмы важны. Но реализовать их можно очень по-разному.


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


Любите оптимизации, специализированные структуры данных и трюки с битами? Тогда скорее под кат!


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

Obsidian + Dataview: Таблицы

Reading time8 min
Views119K

На статью меня вдохновил этот комментарий .

Dataview - это мощный плагин для Obsidian позволяющий отбирать данные (теги, даты, числа и любые другие пользовательские параметры) markdown-заметок, а затем их фильтровать и отбирать как пожелаешь.

Это такой своеобразный аналог Notion-таблиц, где можно создать таблицу с бесконечной вложенностью (таблица, внутри одной ячейки, а внутри еще таблица и еще и еще).

На КДПВ как раз собраны четыре кейса реализации функционала плагина Dataview.

Как всё это работает

1. Dataview работает на встроенном языке запросов

2. Все запросы должны писаться внутри подобного блока кода:

А разбирать каждый кейс будем под катом.

Обзор клавиатуры из половинок. Keyboard Model 100

Reading time7 min
Views9.7K

3 года назад я загорелся тем, что хочу эргономичную клавиатуру. Готовых вариантов было немного, Keyboard Model 1 оказалась одной из них, но была слишком дорогой. И тут её переиздают на кикстартере, где собирают почти миллион долларов. Страдаю, жду полтора года производства и вот она у меня.

Много фото и подробный обзор

6 качеств человека, которые стоит перенести на свой бренд

Reading time3 min
Views3.3K

Ценность продукта через контент-маркетинг и человечность бренда. Еще раз о том, что всем известно. Но сейчас на это нужно обращать пристальное внимание.

Читать далее

Классика фантастики и фэнтези, которая лишь недавно добралась до русскоязычного читателя

Reading time6 min
Views58K

В фэнтези и фантастике есть целый пласт произведений, которые уже давно считаются классическими и хорошо известны читателям. Большая часть таких книг давно переведена на русский язык, ведь в 90-х годах в наших палестинах очень активно издавались книги популярных фантастов. Однако некоторые романы, по праву имеющие на Западе статус классических, на русском языке впервые увидели совсем недавно. Иногда из-за того, что пик их популярности пришелся на время до распада Советского Союза, когда с переводами западной фантастики все было гораздо сложнее, иногда из-за неформатности или предполагаемой сложности для читателя, иногда по финансовым причинам. Рассказываем о нескольких таких произведениях, с которыми русскоязычные читатели смогли познакомиться только в последнее время.

Читать далее
1
23 ...

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity