Skip to content

Instantly share code, notes, and snippets.

View ArseniySavin's full-sized avatar
😏

savars ArseniySavin

😏
View GitHub Profile
@ArseniySavin
ArseniySavin / enum_attr_drop.sql
Last active January 23, 2025 09:17
The Postgres function drops the attribute value and checks constraint violation if the row contains the attribute value.
ALTER PROCEDURE enum_attr_drop OWNER TO {delete role for pg_enum};
CREATE OR REPLACE PROCEDURE enum_attr_drop(inType varchar, inAttr varchar)
LANGUAGE PLPGSQL
SECURITY DEFINER
AS $$
declare
isBind RECORD;
dQuery varchar;
hasRecord bigint;
@ArseniySavin
ArseniySavin / reflection.go
Created August 16, 2024 17:07 — forked from drewolson/reflection.go
Golang Reflection Example
package main
import (
"fmt"
"reflect"
)
type Foo struct {
FirstName string `tag_name:"tag 1"`
LastName string `tag_name:"tag 2"`
@ArseniySavin
ArseniySavin / docker-api-port.md
Created June 20, 2024 07:07 — forked from styblope/docker-api-port.md
Enable TCP port 2375 for external connection to Docker

Enable TCP port 2375 for external connection to Docker

See this issue.
Docker best practise to Control and configure Docker with systemd.

  1. Create daemon.json file in /etc/docker:

     {"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]}
    
@ArseniySavin
ArseniySavin / bit_mask.go
Created November 20, 2023 13:03
Bitmask example
package main
import "fmt"
func main() {
//arr := []int{1, 2, 3, 4}
arr := []string{"A", "B", "C", "D"}
n := len(arr)
for mask := 0; mask < (1 << n); mask++ {
@ArseniySavin
ArseniySavin / crc32.sql
Created October 13, 2022 09:48 — forked from cuber/crc32.sql
crc32 for postgresql
CREATE OR REPLACE FUNCTION CRC32(VARCHAR) RETURNS BIGINT AS
$BODY$
DECLARE
src alias FOR $1;
crc BIGINT not null default x'ffffffff'::BIGINT;
len INTEGER not null default 0;
i INTEGER not null DEFAULT 1;
table BIGINT[] not null DEFAULT ARRAY[
x'00000000'::BIGINT, x'77073096'::BIGINT, x'EE0E612C'::BIGINT, x'990951BA'::BIGINT,
x'076DC419'::BIGINT, x'706AF48F'::BIGINT, x'E963A535'::BIGINT, x'9E6495A3'::BIGINT,
@ArseniySavin
ArseniySavin / insert.go
Created May 23, 2022 12:51 — forked from miguelmota/insert.go
Golang SQL insert row and get returning ID example
func InsertOrder(order *Order) (int, error) {
var id int
tx, err := db.Begin()
if err != nil {
return id, err
}
{
@ArseniySavin
ArseniySavin / question.rest.md
Last active June 16, 2022 10:21
Вопросы по REST API. Можно понять основные концепции протокола
  • Что такое REST?
  • REST — это архитектурный стиль для веб-разработки.
  • REST означает передачу состояния.
  • Архитектура REST предлагает рекомендации по передаче ресурсов между клиентам и сервером по сети.
  • Что такое REST API?

REST API или RESTful API — это веб-API, соответствующий стилю архитектуры REST.

  • Ограничения REST и преимущества.
@ArseniySavin
ArseniySavin / revprox.go
Created October 30, 2021 11:09 — forked from JalfResi/revprox.go
Simple reverse proxy in Go
package main
import(
"log"
"net/url"
"net/http"
"net/http/httputil"
)
func main() {
@ArseniySavin
ArseniySavin / dumptransport.go
Created October 30, 2021 11:01 — forked from jboursiquot/dumptransport.go
Dump transport will dump Go HTTP request/response for debugging
package dumptransport
import (
"fmt"
"net/http"
"net/http/httputil"
)
type DumpTransport struct {
r http.RoundTripper
@ArseniySavin
ArseniySavin / question.sql.md
Last active September 13, 2022 18:20
Поговорим о SQL? Набор джентльмена для держания себя в форме.

Обязательные

  • Что такое SQL?

SQL (structured query language - "язык структурированных запросов") - формальный непроцедурный язык программирования, применяемый для создания, модификации и управления данными в произвольной реляционной базе данных, управляемой соответствующей системой управления базами данных (СУБД). SQL основывается на исчислении кортежей.

  • Какие есть типы JOIN'ов? Кратко опишите каждый из типов.

(INNER)JOIN - внутреннее соединение. В результирующем наборе присутствуют только записи, значения связанных полей в которых совпадают. LEFT JOIN - левое внешнее соединение. В результирующем наборе присутствуют все записи из Table1 и соответствующие им записи из Table2. Если соответствия нет, поля из Table2 будут пустыми. RIGHT JOIN - правое внешнее соединение. В результирующем наборе присутствуют все записи из Table2 и соответствующие им записи из Table1. Если соответствия нет, поля из Table1 будут пустыми. FULL JOIN - полное внешнее соединение. Комбинация двух предыдущих. В результирующем н