Ping-HTTP — сервис мониторинга веб проектов
Ping-HTTP — сервис мониторинга веб проектов
ping-http.com — простой сервис для мониторинга и веб проектов. При помощи данного сервиса вы можете получать уведомления и включать автоматизацию при наличии проблем с вашим веб проектом. В общий план также входит SSL мониторинг и система уведомлений по Email или Telegram.
В панели монитора также доступны следующие функции:
Агрегатор лучших предложений по обмену валют — Bitchange
Агрегатор лучших предложений по обмену валют — Bitchange
Представляем вашему вниманию агрегатор лучших курсов для проведения обменных операций различных электронных платежных систем — bitchange.visla.dev
При помощи данного сервиса вы сможете найти лучший обменный пункт с высоким рейтингом и доступными резервами в режиме реального времени. Сервис использует источники различных мониторингов платежных систем и подбирает наилучшее предложение.
Поднятие Docker контейнеров в тестах с Go и Dockertest
Поднятие Docker контейнеров в тестах с Go и Dockertest
Для запуска интеграционных тестов в Golang часто требуются внешние зависимости в виде базы данных, брокера сообщений либо еще каких-то сторонних компонентов.В итоге для поднятия внешних сервисов мы используем Docker и пишем docker-compose.yml файл который выглядит как-то так:
version: '3'
services:
db:
image: postgres:10.6-alpine
ports:
- '5432'
environment:
LC_ALL: C.UTF-8
POSTGRES_DB: test
POSTGRES_USER: test
POSTGRES_PASSWORD: pass
Далее до запуска go test мы делаем docker-compose up -d.
Получение обновленного kubeconfig в DigitalOcean
Получение обновленного kubeconfig в DigitalOcean
Доступ к Kubernetes в DigitalOcean лимитирован одной неделей, получается каждую неделю нужно получать новый пароль доступа к кластеру. Скачать обновленный kubeconfig можно через консоль в DigitalOcean либо можно воспользоваться командой ниже:
curl -X GET "https://api.digitalocean.com/v2/kubernetes/clusters/<cluster-id>/kubeconfig" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $DO_TOKEN" -o ~/.kube/config
Для работы требуется действующий DigitalOcean токен, который можно получить в разделе API.
Поднятие прокси-сервера Squid при помощи Docker за 3 минуты
Поднятие прокси-сервера Squid при помощи Docker за 3 минуты
Squid — это мощный кеширующий прокси-сервер для протоколов HTTP, HTTPS и FTP. Он помогает ускорить доступ к веб-ресурсам, снижает нагрузку на канал и может использоваться для фильтрации трафика.
В этой статье мы развернём Squid в Docker-контейнере и настроим его работу.
Шаг 1: Создание конфигурационного файла
Создадим файл squid.conf с базовыми настройками:
Скрипт парсинга курсов Bestchange
Скрипт парсинга курсов Bestchange
Скрипт проводит выборку курсов по заданным входным параметрам и может выдавать готовую json структуру по заданным направлениям. Выборка курсов производится через публичный API и содержит в себе всю необходимую информацию по лучшим курсам и параметрам обменных пунктов:
- Минимальная цена заявки
- Максимальная цена заявки
- Курс
- Резервы
- Отзывы (Положительные — Отрицательные)
- Название обменного пункта
Пример работы скрипта:
Golang — использование envconfig для environment variables
Golang — использование envconfig для environment variables
Для работы с переменными окружения в Golang без использования библиотеки envconfig просто не обойтись:
//AppConfig struct to manage configuration env vars
type AppConfig struct {
DBHost string `envconfig:"DB_HOST" required:"true"`
DBPort int `envconfig:"DB_PORT" required:"true"`
DBUser string `envconfig:"DB_USER" required:"true"`
DBName string `envconfig:"DB_NAME" required:"true"`
DBPassword string `envconfig:"DB_PASSWORD" required:"true"`
}
...
// and let's use it in our main func:
var cfg AppConfig
err := envconfig.Process("myApp", &cfg)
if err != nil {
return nil, err
}
// finally, let's use our app configuration
fmt.Println(cfg.DBHost)
Библиотека также поддерживает default значения, required флаги, custom декодеры и многое многое другое.
Golang sqlmock db tests — SELECT тесты
Golang sqlmock db tests — SELECT тесты
func TestFindAll(t *testing.T) {
dbMock, mock, err := sqlmock.New()
if err != nil {
t.Errorf("An error '%s' was not expected when opening a stub database connection", err)
}
defer dbMock.Close()
columns := []string{"id", "date", "name", "code"}
expectedData := Data{
Id: 1,
Date: time.Time{},
Name: "Name",
Code: "Code",
}
dbConn := sqlx.NewDb(dbMock, "")
mock.ExpectQuery(`SELECT id,date,name,code FROM datas ORDER BY name ASC`).
WillReturnRows(sqlmock.NewRows(columns).AddRow(expectedData.Id, expectedData.Date, expectedData.Name, expectedData.Code))
r := NewRepository(dbConn)
currencies, err := r.FindAll()
assert.NoError(t, err)
if err := mock.ExpectationsWereMet(); err != nil {
t.Error(err)
}
expectedListOfDatas := []*Currency{&expectedData}
assert.Equal(t, expectedListOfDatas, datas)
}
Docker — сохранить image в tar
Docker — сохранить image в tar
Для сохранения image в tar контейнер достаточно выполнить:
docker save my_image > my_image.tar
Теперь мы можем спокойно переносить docker image и далее «загружать» image:
docker load <input_path>/my_image.tar
Golang — Mock для sqlx драйвера базы данных
Golang — Mock для sqlx драйвера базы данных
Для написания юнит тестов часто требуется «мокать» часть зависимостей, одна из самых распространенных — соединение и операции с базой данных. Если нет возможности использовать внедрение зависимости и использовать интерфейсы типа ExecerContext на входе функции то в дело вступают не совсем чистые хаки в виде Monkey patching.