Skip to content

Instantly share code, notes, and snippets.

View ghostiam's full-sized avatar
👻
Boo

Vladislav Fursov ghostiam

👻
Boo
View GitHub Profile
@ghostiam
ghostiam / .grpc-gateway - multipart form-data unmarshaler.md
Last active February 22, 2023 12:29
grpc-gateway - multipart/form-data unmarshaler
marshaler = &runtime.JSONPb{
    MarshalOptions: protojson.MarshalOptions{UseProtoNames: true, EmitUnpopulated: true},
}

grpcMux := runtime.NewServeMux(
    GWMultipartForm(marshaler),
    runtime.WithMarshalerOption(runtime.MIMEWildcard, marshaler),
)
@ghostiam
ghostiam / dataloader.go
Created August 9, 2022 08:12
Generic (Golang 1.18) version of the generator https://github.com/vektah/dataloaden
package storage
import (
"sync"
"time"
)
// LoaderConfig captures the config to create a new UserLoader
type LoaderConfig[Key comparable, Result any] struct {
// Fetch is a method that provides the data for the loader
@ghostiam
ghostiam / purge_prom_pushgateway.sh
Last active February 21, 2020 07:27 — forked from fvigotti/purge_prom_pushgateway.sh
this is a sample script that clean old metrics from pushgateway, not very clean but working anyway, used as sample in a issue
#!/usr/bin/env bash
trap 'echo "got sigterm" ; exit 0' SIGTERM
EXPIRATION_SECONDS=${EXPIRATION_SECONDS:-900}
PGW_URL=${PGW_URL:-http://127.0.0.1:9091}
function convert_to_standardnotation() {
# convert number from scientific notation to standard( ie '1.5383780136826127e+09' )
echo $1 | awk '{printf("%.0f", $1)}'
@ghostiam
ghostiam / BattlelogKeeperFixer.user.js
Last active December 17, 2018 09:59
Battlelog battlefield 4: true player count userscript
// ==UserScript==
// @name Battlelog keeper fixer
// @namespace battlelog
// @version 0.1
// @description Changes the keeper endpoint to https one so the match info and scoreboard starts working again
// @author xfileFIN
// @match http://battlelog.battlefield.com/bf4/*
// @match https://battlelog.battlefield.com/bf4/*
// @grant none
// ==/UserScript==
@ghostiam
ghostiam / start-lvm.sh
Last active November 28, 2018 07:25
Create lvm partitions from files for testing
#!/bin/bash
# https://help.ubuntu.ru/wiki/lvm
LVM_FILES_PATH=/mnt/lvm
LVM_FILES_SIZE=1G
LVM_PARTS=("first|1G" "second|1G") # array of "name|size"
VG_NAME=vg
set -x
Аббревиатура REST расшифровывается как representational state transfer — «передача состояния представления» или, лучше сказать, представление данных в удобном для клиента формате. Термин “REST” был введен Роем Филдингом в 2000 г. Основная идея REST в том, что каждое обращение к сервису переводит клиентское приложение в новое состояние. По сути, REST — не протокол и не стандарт, а подход, архитектурный стиль проектирования API.
Любой ресурс имеет ID, по которому можно получить данные.
Сервер не хранит состояние — это значит, сервер не отделяет один вызов от другого, не сохраняет все сессии в памяти.
Методы POST и PUT должны возвращать обратно объект, который они изменили или создали, — это позволит сократить время обращения к сервису вдвое.
Возвращайте соответствующие http коды статуса в каждом ответе. Успешные ответы должны содержать следующие коды:
200 — для GET запроса и для синхронных DETELE и PATCH
201 — для синхронного POST запроса
202 — для асинхронных POST, DELETE и PATCH запросов
@ghostiam
ghostiam / reset_id_column.sql
Created February 28, 2018 16:27 — forked from irazasyed/reset_id_column.sql
MySQL: Reset id column to auto increment from 1
-- your_table: The table to modify
-- id: The id field/column to reset
SET @num := 0;
UPDATE your_table SET id = @num := (@num+1);
ALTER TABLE your_table AUTO_INCREMENT =1;