Latest Posts

Ping-HTTP — сервис мониторинга веб проектов

Ping-HTTP — сервис мониторинга веб проектов

ping-http.com — простой сервис для мониторинга и веб проектов. При помощи данного сервиса вы можете получать уведомления и включать автоматизацию при наличии проблем с вашим веб проектом. В общий план также входит SSL мониторинг и система уведомлений по Email или Telegram.

В панели монитора также доступны следующие функции:

Read more

Агрегатор лучших предложений по обмену валют — Bitchange

Агрегатор лучших предложений по обмену валют — Bitchange

Представляем вашему вниманию агрегатор лучших курсов для проведения обменных операций различных электронных платежных систем — bitchange.visla.dev

При помощи данного сервиса вы сможете найти лучший обменный пункт с высоким рейтингом и доступными резервами в режиме реального времени. Сервис использует источники различных мониторингов платежных систем и подбирает наилучшее предложение.

Read more

Поднятие 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.

Read more

Получение обновленного 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.

Read more

Поднятие прокси-сервера Squid при помощи Docker за 3 минуты

Поднятие прокси-сервера Squid при помощи Docker за 3 минуты

Squid — это мощный кеширующий прокси-сервер для протоколов HTTP, HTTPS и FTP. Он помогает ускорить доступ к веб-ресурсам, снижает нагрузку на канал и может использоваться для фильтрации трафика.

В этой статье мы развернём Squid в Docker-контейнере и настроим его работу.


Шаг 1: Создание конфигурационного файла

Создадим файл squid.conf с базовыми настройками:

Read more

Скрипт парсинга курсов Bestchange

Скрипт парсинга курсов Bestchange

Скрипт проводит выборку курсов по заданным входным параметрам и может выдавать готовую json структуру по заданным направлениям. Выборка курсов производится через публичный API и содержит в себе всю необходимую информацию по лучшим курсам и параметрам обменных пунктов:

  • Минимальная цена заявки
  • Максимальная цена заявки
  • Курс
  • Резервы
  • Отзывы (Положительные — Отрицательные)
  • Название обменного пункта

Пример работы скрипта:

Read more

Golang &#8212; использование 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 декодеры и многое многое другое.

Read more

Golang sqlmock db tests &#8212; 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)
}

 

Read more

Docker &#8212; сохранить image в tar

Docker — сохранить image в tar

Для сохранения image в tar контейнер достаточно выполнить:

docker save my_image > my_image.tar

Теперь мы можем спокойно переносить docker image и далее «загружать» image:

docker load <input_path>/my_image.tar

 

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read more

Golang &#8212; Mock для sqlx драйвера базы данных

Golang — Mock для sqlx драйвера базы данных

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

Read more