Обновить
4
0
Андрей@UncleAndy

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

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

Обзор пакета unsafe: как обходить ограничения Go (но лучше этого не делать)

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

Когда вы впервые открываете Go, вас встречает строгая и безопасная среда: никаких сюрпризов, сегфолтов, фишек с указателями. Всё строго, как в хорошо организованной организации. Но есть в этом языке лазейка, которая ломает весь этот порядок и это — пакет unsafe.

Читать далее

Go: нужно ли закрывать канал?

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

Эта статья посвящена каналам. Поднимается вопрос необходимости закрытия каналов. Приводится множество примеров, на escape-анализе и трассировке которых объясняются особенности сохранения каналов в памяти, взаимодействие с GC, горутинами. Также поднимается вопрос уместности закрытия каналов. Подсвечивается практическая польза использования однонаправленных каналов.

Читать далее

Netpoll: пишем сервера, которые не умирают от нагрузки

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

Вы знаете, что обычные сетевые библиотеки Go начинают «тяжело дышать», если их нагрузить десятками тысяч соединений? Неважно, делали вы HTTP API или свой TCP сервер — дефолтные инструменты вроде net всегда имеют свои лимиты. Тут-то хорош зайдет Netpoll — библиотека, которая позволяет серверам обрабатывать сотни тысяч соединений одновременно и при этом не терять в производительности.

Читать далее

Как зашифровать информацию до определённой даты

Время на прочтение3 мин
Охват и читатели4.1K

Настольные атомные часы URWERK AMC с наручным модулем

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

Прогрессор (в терминологии Стругацких) хочет убедиться, что определённая информация не будет доступна до определённого времени.
Читать дальше →

Пара слов о вредоносном ПО для Linux и способах защиты вашей системы

Время на прочтение15 мин
Охват и читатели5.8K

Если вы следите за последними новостями в области IT‑безопасности, то, возможно, заметили рост числа атак на сетевую инфраструктуру Linux‑систем. Среди основных разновидностей вредоносного ПО, о которых вы должны знать, можно выделить Cloud Snooper, EvilGnome, HiddenWasp, QNAPCrypt, GonnaCry, FBOT и Tycoon.

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

Читать далее

Выбираю Open Source БД для себя

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

Задача такая: искал Open Source БД для своего пет-проекта. Решил посмотреть в интернете новые решения в рамках БД. После чтения статей и отбора из 6-7 БД остались три (3), которые понравились лично мне. Больше ничего путного не нашел. 

Почему именно эти? Во-первых, они Open Source, а во-вторых, у них есть ответы на два главных моих вопроса «Для чего это нужно?» и «Работает ли из коробки?».

Давайте покажу на примерах.

Читать далее

Уровни изоляции транзакций в БД

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

В этой статье обсудим, что из себя представляет изолированность транзакций в БД, какие есть уровни изоляции транзакций, как их установить, какие бывают аномалии на разных уровнях, и что такое MVCC. Естественно, всё на простых примерах.

Читать далее

Реализация Bloom-фильтров в Golang

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

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

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

Читать далее

Как настроить пайплайн с разделением на стадии в GitLab CI

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

В GitLab CI пайплайны выполняют основную роль в автоматизации процессов CI/CD. Они позволяют разбить весь процесс сборки, тестирования и деплоя на отдельные, логически связанные задачи — или "джобы". Эти джобы структурируются в стадии, каждая из которых представляет собой определенный этап работы — например, сборка, тестирование или развертывание. Такое разделение позволяет ускорить разработку и минимизировать ошибки при доставке кода на продакшн.

В этой статье рассмотрим, как настроить пайплайн с разделением на стадии в GitLab CI.

Читать далее

HTTP-серверы на Fiber в Golang

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

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

Когда речь заходит о создании HTTP-серверов на Go, большинство сразу думают о привычных решениях, таких как net/http или Gin. Эти инструменты проверены временем, но что, если нужен сервер, который не просто стабилен, а работает очень быстро? Здесь помогает Fiber — лёгкий, но невероятно мощный HTTP-фреймворк, способный вывести производительность сервера на новый уровень.

С синтаксисом, знакомым всем юзерам Express.js, Fiber избавляет от лишней сложности и позволяет сосредоточиться на главном — максимальной скорости и эффективности.

Читать далее

Давайте работать с proto ошибками правильно :)

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

В программировании всегда есть несколько способов решения одной и той же проблемы. Но не все они одинаково эффективны. Сегодня поговорим о способах обработки ошибок в gRPC — удачных и не очень.

Разобраться подробнее

Matrix: децентрализованные открытые мессенджеры с E2E-шифрованием. Обзор возможностей и настройка своего сервера

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

В этой статье я расскажу о протоколе Matrix и мессенджерах, основанных на нем, а так же приведу инструкцию по настройке своего сервера и клиентов.

Matrix — открытый протокол мгновенного обмена сообщениями и файлами с поддержкой голосовой и видеосвязи. Почему стоит обратить на него внимание, если у нас уже есть WhatsApp и Telegram? Причин несколько.

Во-первых, в последние дни Роскомнадзор снова начал развлекаться блокировками WhatsApp и Telegram, и иногда у него это даже получается более-менее успешно. В таких условиях всегда неплохо иметь запасной вариант, и Matrix здесь очень хорошо подходит, потому что во-первых он позволяет создавать свои собственные сервера, а во-вторых его протокол со стороны выглядит как самый обычный HTTPS.

Во-вторых, все больше и больше людей не доверяют WhatsApp и Telegram. В случае с Matrix же можно поднять свой личный сервер, протокол Matrix - открытый, исходники клиентов - открыты, исходники серверов - тоже открыты, а в самом протоколе end-to-end шифрование включено для чатов по умолчанию из коробки (в отличие, например, от Telegram, где оно доступно только в "секретных чатах"). Ну и само собой, не требуется нигде вводить телефонный номер для регистрации.

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

Сервер Matrix может работать как изолированно ("только для своих"), так и в составе "федерации" - когда разные серверы общаются между собой, и пользователи, подключенные к разным серверам, могут общаться друг с другом. Есть здесь олды, которые помнят Jabber и IRC? Ну вот, здесь такой же принцип. Я бы даже сказал, что Matrix - это этакий хипстерский Jabber на стероидах.

Читать далее

Шпаргалка для собеса по GoLang

Время на прочтение30 мин
Охват и читатели83K

"Правильно заданный вопрос - половина ответа". Осваиваю профессию Prompt Engineering. Это ответы на вопросы. Мопед не мой. Спасибо, Codeium. Не обрабатывал наводящие подвопросы, а надо бы. Но может быть кому-то пригодится и в таком виде.

Читать далее

Работа с аренами: почти избавляемся от GC

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

Меня зовут Максим Горозий. Я тимлид в Т-Банке, работаю над нашей образовательной платформой, которая служит для разных направлений бизнеса. В ИТ больше 10 лет и успел поработать в двух GameDev-компаниях, где управление памятью занимало весомое время в оптимизации производительности кода. Люблю строить системы и взаимосвязи между ними, а также EdTech и преподавание, а еще больше — работать над инструментами обучения. Хотя начинал с C, я идеологический фанат Go, DDD и Agile.

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

Читать далее

Оптимизация памяти и управление сборщиком мусора в Go: GOGC и GOMEMLIMIT

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели34K

Всем привет, меня зовут Нина Пакшина, я работаю Golang разработчиком в Лента Онлайн в команде операций.

В данной статье я расскажу о том, как управлять сборщиком мусора в Go, как оптимизировать потребление памяти приложением и защититься от ошибки out-of-memory.

Читать далее

Go's Garbage Collection: как работает и почему это важно знать

Время на прочтение7 мин
Охват и читатели78K

В статье посмотрим на Go Garbage Collector — механизм автоматического освобождения невостребованной памяти приложения в Go. Разберём его устройство и принципы работы.

Читать далее

Golang: context изнутри

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

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

Читать далее

Как я запустил Linux с Google Drive

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

Я грешен: во мне есть дух соперничества. Когда я услышал, что мой друг заставил Linux загружаться с NFS, мне обязательно нужно было его превзойти. Я обязан был доказать, что могу сделать что-то сложнее, лучше, быстрее, сильнее [прим. пер.: в оригинале отсылка к композиции Daft Punk «Harder, Better, Faster, Stronger»].

Как и все хорошие проекты, этот начался с идеи.

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

На грани безумия мой утомлённый мозг придумал мой magnum opus: запуск Linux с рута Google Drive.

▍ Но как?


Я хотел обеспечить автономность системы, поэтому не мог использовать в качестве «помощника» вторую машину. Мой разум сразу же вспомнил FUSE — программу, работающую драйвером файловой системы в пользовательском пространстве (с поддержкой со стороны ядра).

Мне достаточно было установить программы FUSE в initramfs ядра Linux и сконфигурировать сеть. В этом ведь не должно быть ничего сложного, так?
Читать дальше →

Выжимаем из Go максимум производительности

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

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

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

Читать далее

Быстро разворачиваем docker, nginx и certbot

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

В нашей команде мы часто сталкиваемся с необходимостью развертывания новых серверов с одинаковой конфигурацией: nginx, docker, docker-compose и certbot. nginx используем для проксирования докера и назначения человеческого DNS. Для того чтобы не повторяться мы, мы разработали набор скриптов...

Читать далее

Информация

В рейтинге
Не участвует
Откуда
Подгорица, Подгорица, Черногория
Дата рождения
Зарегистрирован
Активность

Специализация

Бэкенд разработчик, Разработчик баз данных
От 500 000 ₽
Golang
Docker
PostgreSQL
Git
Nginx
Высоконагруженные системы
Kubernetes
Linux
MySQL
Redis