Skip to content

Instantly share code, notes, and snippets.

View radimih's full-sized avatar

Radimir Mikhailov radimih

  • IT2G
  • Russia, Kemerovo
View GitHub Profile
@radimih
radimih / service_wait.sh
Last active April 4, 2017 04:46
bash: ожидание доступности сервиса на порту
while ! nc -z {host} {port}
do
sleep 3
done
echo "+++ Service is ready +++"
@radimih
radimih / docker-entrypoint.sh
Last active March 24, 2022 11:16
Точка входа в Django-контейнер
#!/bin/bash
while ! nc -z db 3306
do
echo "*** looks like mysql is not ready yet"
sleep 3
done
echo "+++ Mysql server is ready +++"
python manage.py migrate # Apply database migrations
@radimih
radimih / id_by_date.sql
Created April 4, 2017 04:35
MySQL: функция бинарного поиска
DROP FUNCTION IF EXISTS squid_log.id_by_date;
CREATE FUNCTION `id_by_date`(day DATE)
RETURNS int(11)
DETERMINISTIC /* Чтобы в where-выражении функция не вызывалась для каждой записи */
READS SQL DATA
COMMENT 'Получить id записи, ближайшей к указанной дате'
BEGIN
/*******************************************************************************
* Получить id записи, ближайшей к указанной дате
* ----------------------------------------------
@radimih
radimih / get_domain.sql
Created April 4, 2017 04:38
MySQL: функция получения доменного имени из URL
DROP FUNCTION IF EXISTS squid_log.get_domain;
CREATE FUNCTION `get_domain`(url TEXT, level SMALLINT)
RETURNS VARCHAR(100)
DETERMINISTIC
COMMENT 'Получить доменное имя из URL'
BEGIN
/*******************************************************************************
* Получить доменное имя из URL
* ----------------------------
* Дополнительно из доменного имени удаляется поддомен www и все его поддомены.
@radimih
radimih / get_interval.sql
Created April 4, 2017 04:42
MySQL: функция получения времени, кратному заданному интервалу
DROP FUNCTION IF EXISTS squid_log.get_interval;
CREATE FUNCTION `get_interval`(moment TIMESTAMP, lenght SMALLINT)
RETURNS TIME
DETERMINISTIC
COMMENT 'Получить время, кратное заданному интервалу'
BEGIN
/*******************************************************************************
* Получить время, кратное заданному интервалу
* -------------------------------------------
* Получить интервал времени, в котором находится заданный момент времени.
@radimih
radimih / convert.sh
Created April 4, 2017 15:15
ffmpeg: объединение и конвертация видео-файлов
#!/bin/sh
#-------------------------------------------------------------------------------
# Скрипт объединения видео-файлов в один и конвертация его в формат MPEG4
# -----------------------------------------------------------------------
# Скрипт берет исходные файлы *.MTS из указанного каталога и генерирует из них
# один файл формата mp4 с названием как исходный каталог.
#
# Входной параметр: имя каталога, содержащий исходные файлы
#-------------------------------------------------------------------------------
@radimih
radimih / natural_sort.py
Created May 4, 2017 04:44
python: "естественная" сортировка
# Чтобы сортировка производилась в "естественном" порядке (например,
# file1, file10, file11, file2 --> file1, file2, file10, file11), ключ
# сортировки дополняется слева нулями до строки в N символов (в примере 30).
# Из этого следует ограничение метода: необходимо заранее оценить
# максимальную длину отдельного элемента списка.
list = ['item_1', 'item_10', 'item_11', 'item_2']
list.sort(key=lambda x: '{0:0>30}'.format(x).lower())
@radimih
radimih / check-swarm-service.yml
Last active November 15, 2019 13:17
Проверить статус обновления Docker Swarm-сервиса
---
# ВНИМАНИЕ! При создании сервиса, к сожалению, невозможно по выдаче команды
# docker service inspect определить успешность запуска реплик сервиса -
# секция UpdateStatus отсутсвует, а по другим параметрам все ок.
# Соответственно, этот плейбук бесполезен при создании сервиса.
- name: "Swarm service '{{ service }}': get status"
docker_swarm_service_info:
name: "{{ service }}"
register: service_info
@radimih
radimih / Dockerfile
Last active April 20, 2023 10:53
Spring Boot Actuator based Docker HEALTHCHECK
FROM openjdk:11-jre-slim
EXPOSE 8080
ENV TZ=Europe/Moscow
RUN adduser --system --group --home /opt/app appuser
RUN apt-get update \
&& apt-get install -y --no-install-recommends curl jq \
@radimih
radimih / .gitlab-ci.yml
Last active March 3, 2020 10:33
GitLab CI/CD: Mattermost notification
variables:
project_stand: test
mattermost_webhook: "http://mattermost.example.ru/hooks/jfdlkds74jldkfjd34dd"
stages:
- deploy
deploy:
stage: deploy
when: manual