Skip to content

Instantly share code, notes, and snippets.

View mantyr's full-sized avatar
🌴
study: coffee and woodwork

Oleg Shevelev mantyr

🌴
study: coffee and woodwork
View GitHub Profile
@mantyr
mantyr / main.go
Last active March 1, 2018 17:50
Выводим входные и выходные параметры
package main
import (
"fmt"
"go/parser"
"go/token"
"go/ast"
"os"
"log"
)
@mantyr
mantyr / jsonschema.go
Created February 26, 2018 18:05
Сохраняем сортировку параметров в произвольном объекте через map[string]Param
// https://play.golang.org/p/THhs6i482cA
package jsonschema
import (
"encoding/json"
"strings"
"io"
)
@mantyr
mantyr / Текстовая часть
Created February 22, 2018 21:32
Подготовка к докладу "Gometalinter наше всё:)"
Я вовсе не хочу что бы вы все стали использовать Gometalinter, напротив, я хочу что бы сами самостоятельно стали писать код чище, понятнее и от этого доступнее для понимания:) Gometalinter это лишь один из инструментов который позволяет выработать привычку. Привычку писать код граммотно, не допускать очевидных для Gometalinter ошибок и проверять с помощью него вашу работу время от времени.
Вот несколько примеров. Когда я начинал разработку на Go я писал примерно вот так. Это старый репозиторий, ему уже несколько лет. Где-то через год после написания этого кода я узнал о сервисе который выставляет оценки, проверил несколько своих библиотек и ужаснулся… я тогда подумал, ну зачем все эти сложности с отступами… ведь мне половинного таба вполне достаточно:) Сейчас я так уже не считаю. Удобно когда весь код одинаковый.
Теперь я пишу вот так. Обратите внимание что везде, абсолютно везде есть комментарии, конечно если это публичные методы или переменные, однако так же почти всегда комментарии есть у не публичных
@mantyr
mantyr / dtls-client.py
Created January 3, 2018 23:27 — forked from manuels/dtls-client.py
dtls for python
# -*- coding: latin-1 -*-
#
# Copyright (C) AB Strakt
# Copyright (C) Jean-Paul Calderone
# See LICENSE for details.
"""
Simple SSL client, using blocking I/O
"""
@mantyr
mantyr / gist:d360c9d92dab25d7ef45aa5f379f29ee
Created September 28, 2017 14:07
golang - изменение slice без поинтера на него при инициализации
Получаем сразу три свойства:
1. инициализацию пустым slice по-умолчанию при создании родительской переменной
2. возможность добавлять элементы
3. возможность навешивать дополнительный функционал
package main
import (
"fmt"
)
@mantyr
mantyr / redis
Last active September 20, 2020 23:15
Redis
Цитата из книги "Маленькая книга о Redis, Карл Сегуин":
Более сложным примером будут команды setbit и getbit. Есть замечательный пост о том, как Spool (Spool - приложение,
на которое ссылаются выше - прим. перев.) использует эти две команды для эффективного ответа на вопрос
«сколько уникальных посетителей было у нас сегодня?».
Для 128 миллионов пользователей ноутбук генерирует ответ менее чем за 50 мс и использует всего лишь 16 МБ памяти.
Книга "Маленькая книга о Redis, Карл Сегуин"
- https://github.com/kondratovich/the-little-redis-book/blob/master/ru/redis-ru.pdf
@mantyr
mantyr / bashrc
Last active September 18, 2017 16:12
Docker
eval $(minikube docker-env)
alias get-images="curl -k -s https://example.com/images | jq -r '.repositories[]'"
alias get-images-tags="curl -k -s https://example.com/images | jq -r '.repositories[]' | xargs -I{} curl -k -s https://example.com/get/{}/tags/list | jq -r '"\(.name): \(.tags | sort | reverse | join(", "))"' | awk 'BEGIN{FS=":"} {printf("%-35s %s\n", $1, $2)}'
когда нужно несколько локальный ip на макет в дополнении к первому
sudo ifconfig lo0 alias 127.0.0.2 up
sudo ifconfig lo0 alias 127.0.0.3 up
sudo ifconfig lo0 alias 127.0.0.4 up
Github - https://github.com/mantyr
Golang
https://github.com/mantyr/conf
- библиотека для удобного доступа к конфигам, поддерживаются ini файлы
https://github.com/mantyr/images
- нативная библиотека для ресайза изображений, а так же для накладывания фильтров
https://github.com/mantyr/startstop
- библиотека для приостановки горутин и последующего продолжения их работы
https://github.com/mantyr/metrics
Инкапсуляция - объединение данных и методов в одно целое - класс, объект, иерархия связей между ними
Полиморфизм - по сути речь о том что объекты разные, а методы схожих задач называются одинаково и это упрощает манипулирование объектами
Наследование - наследование свойств от другого объекта расширяя собственный объект
Инкапсуляция - механизм, объединяющий данные и обрабатывающий их код как единое целое.
- Многие преимущества ООП обусловлены одним из его фундаментальных принципов — инкапсуляцией
- Инкапсуляцией называется включение различных мелких элементов в более крупный объект, в результате чего программист работает непосредственно с этим объектом.
- Это приводит к упрощению программы, поскольку из нее исключаются второстепенные детали.
- В ООП php эта возможность обеспечивается классами, объектами и различными средствами выражения иерархических связей между ними.
Разница между HASH и BTREE индесами в MySQL
Hash:
- представляет собой результат функции по ключу
- не видит растояния до ближайших элементов
- не может использоваться для операций диапазонов > и <
- сравнивание ключа целиком
- линейный при индексировании
- О(1) при вытаскивании значения