Обзор всех сервисов для аналитики каналов в Телеграм

Итак, как проанализировать что происходит в Телеграме?Допустим вы хотите понять что происходит в вашем канале или купить рекламу на другом канале. Как оценить качество и интересы аудитории? Как понять живые люди там или боты? Делается это достаточно просто и элементарно, однако большая часть сервисов такой информации не предоставляет даже за […]

Маленькая книга о Go – Глава 1: Основы

Go компилируемый язык со статической типизацией. Он имеет C-подобный синтаксис и сборку мусора. Что это означает? Компиляция Компиляция это процесс перевода исходного кода, который написали вы, в язык более низкого уровня – либо ассемблер (как в случае с Go), либо в какой-то другой промежуточный язык (как в случае с Java […]

Как в Golang сделать горячую перезагрузку данных из конфига

Возможность перезагрузить (reload) конфигурацию без перезапуска (restart) программы стало не излишеством, а производственной необходимостью. Например, такая функция есть в Nginx и Postgresql (не для всех настроек, но для большинства). Основная проблема при решении подобных задач это обеспечить одновременный доступ для чтения и записи к общему объекту содержащему конфигурацию. Существует много […]

Краткий обзор 10 популярных архитектурных шаблонов приложений

Вы когда-нибудь задавались вопросом о том, как именно разрабатываются масштабные системы крупных предприятий? До того, как перейти к непосредственной разработке программного обеспечения, мы определяемся с правильным архитектурным шаблоном, который даст нам желаемое качество и функционал. Следовательно, мы должны разбираться в нюансах различных архитектур еще до того, как применить их к […]

Как в Golang задать proxy для http-запросов

Допустим нужно запросить данные с какого-либо сайта, но делать это нужно через прокси-сервер. Вариантов как это сделать множество. Рассмотрим некоторые из них. Самый очевидный, если вы используете стандартный http-клиент, сконфигурировать его:

Как в Golang посчитать md5 хеш строки

Да, в Golang нет решения из коробки для получения привычного md5-хэша в виде строки в 16-ричной системе счисления. Для этого необходимо создать свою обёртку: import ( «crypto/md5» «encoding/hex» ) func GetMD5Hash(text string) string { hasher := md5.New() hasher.Write([]byte(text)) return hex.EncodeToString(hasher.Sum(nil)) }

Блочная сортировка

Блочная сортировка (Карманная сортировка, корзинная сортировка, англ. Bucket sort) — алгоритм сортировки, в котором сортируемые элементы распределяются между конечным числом отдельных блоков (карманов, корзин) так, чтобы все элементы в каждом следующем по порядку блоке были всегда больше (или меньше), чем в предыдущем. Каждый блок затем сортируется отдельно, либо рекурсивно тем же методом, либо другим. […]

Как в Golang получить максимальное или минимальное число

В это сложно поверить, но в Golng нет встроенной функции для определения максимального или минимального числа! Вместо этого программисту предлагается реализовывать эти функции каждый раз самостоятельно: func max(x, y int64) int64 { if x < y { return y } return x }

Как в Golang сделать сортировку по пользовательской функции

Допустим, нужно отсортировать массив, но порядок элементов должен определяться не возрастанием или убыванием значения, а любой другой операцией или функцией. Делается это элементарно: sort.Slice(A, func(i, j int) bool { return A[i] & 1 == 0 })