Небольшая заметка о встраиваемой key-value БД под названием Coffer
, написанной на Golang. Если совсем коротко: в остановленном состоянии БД данные лежат на диске, при запуске данные копируются в память. Чтение происходит из памяти. При записи изменяются данные памяти, а изменения записываются в журнал на диск. Максимальный размер хранимых данных ограничен размером оперативной памяти. API позволяет создавать хидеры для записей БД и применять их в транзакциях, сохраняя при этом консистентность данных.
Читать полностью »
Рубрика «Go» - 19
Ящик для хранения данных в go-приложениях
2019-11-23 в 14:33, admin, рубрики: Go, golang, базы данныхПишем на Go простой балансировщик
2019-11-18 в 9:46, admin, рубрики: Go, load balancing, Блог компании Mail.Ru Group, высокая производительность, никто не читает теги, Разработка веб-сайтов, Сетевые технологии
Балансировщики нагрузки играют в веб-архитектуре ключевую роль. Они позволяют распределять нагрузку по нескольким бэкендам, тем самым улучшая масштабируемость. А поскольку у нас сконфигурировано несколько бэкендов, сервис становится высокодоступным, потому что в случае сбоя на одном сервере балансировщик может выбирать другой работающий сервер.
Поигравшись с профессиональными балансировщиками наподобие NGINX, я попробовал ради веселья создать простенький балансировщик. Написал я его на Go, это современный язык, поддерживающий полноценный параллелизм. Стандартная библиотека в Go имеет широкие возможности и позволяет писать высокопроизводительные приложения с меньшим количеством кода. К тому же для простоты распространения она генерирует единственный статически скомпонованный бинарник.
Читать полностью »
Архитектура компьютерных систем 1 часть. Логические вентили
2019-11-16 в 13:41, admin, рубрики: Go, golang, Анализ и проектирование систем, архитектура компьютера, булева логика, Компьютерное железо, логические вентили, ПрограммированиеЛогические элементы
Доброго времени суток, я начинаю серию статей по написанию виртуальной машины на языке Golang. Я выбрал этот язык так как он прост для чтения и имеет в стандартной библиотеке уже необходимые функции, которые пригодятся в дальнейшем.
Эта статья не несёт в себе абсолютно никакой новой информации для тех, кто умеет составлять таблицы истинности для простых логических вентилей. Если вы это умеете, то не тратьте время и переходите ко второй части.
Читать полностью »
Как создать свое первое веб-приложение с помощью Go
2019-11-11 в 14:39, admin, рубрики: Go, golang, web-разработкаПривет! Представляю вашему вниманию статьи "How to build your first web application with Go" автора Ayooluwa Isaiah.
Это руководство к вашему первому веб-приложению на Go. Мы создадим новостное приложение, которое использует News API для получения новостных статей по определенной теме, и развернём его на продакшн сервере в конце.
Как добавить проверки в NoVerify, не написав ни строчки Go-кода
2019-11-07 в 9:58, admin, рубрики: Go, golang, linter, noverify, open source, php, Блог компании ВКонтакте, Вконтакте, Совершенный кодВ статическом анализаторе NoVerify появилась киллер-фича: декларативный способ описания инспекций, который не требует программирования на Go и компиляции кода.
Чтобы вас заинтриговать, покажу описание простой, но полезной инспекции:
/** @warning duplicated sub-expressions inside boolean expression */
$x && $x;
Эта инспекция находит все выражения логического &&
, где левый и правый операнд идентичны.
NoVerify — статический анализатор для PHP, написанный на Go. Почитать о нём можно в статье «NoVerify: линтер для PHP от Команды ВКонтакте». А в этом обзоре я расскажу о новой функциональности и том, как мы к ней пришли.
Реверсим MIPS и Golang — основы реверса. Решение задач на реверсинг с r0от-мi. Часть 2
2019-11-05 в 19:57, admin, рубрики: ctf, Go, ralf_reverse, информационная безопасность
В данной статье разберемся с декомпиляцией MIPS бинарника в Ghidra и пореверсим программу, написанную на golang, в IDA.
Часть 1 — C, C++ и DotNet decompile.
- PWN;
- криптография (Crypto);
- cетевые технологии (Network);
- реверс (Reverse Engineering);
- стеганография (Stegano);
- поиск и эксплуатация WEB-уязвимостей.
Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Читать полностью »
Работа с ошибками в Go 1.13
2019-10-29 в 13:36, admin, рубрики: error, Go, Анализ и проектирование систем, Блог компании Mail.Ru Group, никто не читает теги, Программирование, Проектирование и рефакторинг
В последнее десятилетие мы успешно пользовались тем, что Go обрабатывает ошибки как значения. Хотя в стандартной библиотеке была минимальная поддержка ошибок: лишь функции errors.New
и fmt.Errorf
, которые генерируют ошибку, содержащую только сообщение — встроенный интерфейс позволяет Go-программистам добавлять любую информацию. Нужен лишь тип, реализующий метод Error
:
type QueryError struct {
Query string
Err error
}
func (e *QueryError) Error() string { return e.Query + ": " + e.Err.Error() }
Пишем блог на микросервисах – часть 2 «API Gateway»
2019-10-28 в 17:03, admin, рубрики: Go, golang, grpc, grpc-gateway, proto3, rest, X5RetailGroup, микросервисыВ первой части нашего цикла статей «Пишем блог на микросервисах» мы описали общий подход к решению задачи.
Теперь пришла очередь API Gateway или API GW.
В нашем c ptimofeev API GW мы реализуем следующие функции:
- Конвертация REST запросов в gRPC запросы и наоборот.
- Логирование запросов.
- Аутентификация запросов.
- Присвоение каждому запросу Trace ID для дальнейшей передачи его между микросервисами по всей цепочке выполнения запроса.
Пишем блог на микросервисах – часть 1 «Общее описание»
2019-10-28 в 17:01, admin, рубрики: Go, golang, grpc, grpc-gateway, proto3, rest, X5RetailGroup, микросервисыВ этой статье хочу поделится нашими c SergeyMaslov наработками решения типовых задач с использованием микросервисной архитектуры на примере задачи «создание блога» (в надежде, что читатель представляет как устроен блог и это не должно вызывать вопросов по функциональности:)
Читать полностью »
Розеттский код: измеряем длину кода в огромном количестве языков программирования, изучаем близость языков между собой
2019-10-15 в 12:07, admin, рубрики: autohotkey, C, c++, clojure, common lisp, D, Factor, Go, haskell, J, java, javascript, Julia, kotlin, Lua, mathematica, perl, perl 6, Phix, PicoLisp, python, Racket, REXX, ring, ruby, scala, Sidef, tcl, wolfram language, wolfram mathematica, Алгоритмы, Блог компании Wolfram Research, Занимательные задачки, изучение языков, Программирование, языки программирования
Скачать файл с кодом и данные можно в оригинале поста в моем блоге
Существует очень интересный проект — «Розеттский Код». Их цель — «представить решение одинаковых задач на максимально возможном числе различных языков программирования для того, чтобы продемонстрировать их общие места и различия и помочь человеку обладающему знаниями по решению проблемы одним методом узнать другой».
Этот ресурс предоставляет уникальную возможность сравнить коды программ на разных языках, этим мы и займемся в этой статье. Она является полной переработкой и доработкой статьи Джона Маклуна "Code Length Measured in 14 Languages".
Читать полностью »