Как стать автором
Обновить
17
0
Сергей Климов @klim0v

Golang Blockchain Developer

Отправить сообщение

Почему PostgreSQL тормозит: индексы и корреляция данных

Время на прочтение12 мин
Количество просмотров33K

"Хочешь ускорить запросы, построй индекс" – классический первый шаг по увеличению производительности в PostgreSQL. Вот только на практике можно встретить ситуацию, когда индексы в PostgreSQL есть, но тормоза никуда не делись. Не все индексы являются эффективными. Одна из возможных причин тормозов индексов – это отсутствие корреляции данных. Давайте поговорим о пенальти на производительность, которое дает расположение данных: почему это происходит и как это можно предотвратить.

Ускорить свой PostgreSQL
Всего голосов 46: ↑46 и ↓0+46
Комментарии29

Что такое решения второго уровня (Layer 2) для блокчейн?

Время на прочтение10 мин
Количество просмотров6.4K

Второй уровень (Layer 2, L2) - это любая офф-чейн сеть, система или технология, построенная поверх блокчейна (обычно известного как сеть первого уровня), которая помогает расширить возможности сети базового уровня. Сети второго уровня могут поддерживать любой блокчейн для внедрения таких улучшений, как например, более высокая пропускная способность транзакций.

Одним из основных требований к сети, системе или технологии второго уровня является то, что она наследует безопасность блокчейна, на базе которого она построена. Данные транзакций должны в той или иной форме проверяться и подтверждаться базовой сетью блокчейна, а не отдельным набором узлов. Например, сайдчейны часто не считаются вторым уровнем, поскольку они обычно используют собственные механизмы консенсуса и валидаторы, что приводит к иному набору гарантий безопасности, чем в сети базового уровня.

Для блокчейнов, которые жертвуют масштабируемостью для достижения более высокой децентрализации и безопасности, второй уровень обеспечивает большую пропускную способность транзакций, что может привести к снижению комиссий. Второй уровень можно рассматривать как одно из решений проблемы масштабируемости, обеспечивающее быстрое и масштабируемое исполнение без ущерба для децентрализации и безопасности.

Читать далее
Всего голосов 14: ↑9 и ↓5+4
Комментарии2

Описание алгоритмов сортировки и сравнение их производительности

Время на прочтение24 мин
Количество просмотров668K

Вступление


На эту тему написано уже немало статей. Однако я еще не видел статьи, в которой сравниваются все основные сортировки на большом числе тестов разного типа и размера. Кроме того, далеко не везде выложены реализации и описание набора тестов. Это приводит к тому, что могут возникнуть сомнения в правильности исследования. Однако цель моей работы состоит не только в том, чтобы определить, какие сортировки работают быстрее всего (в целом это и так известно). В первую очередь мне было интересно исследовать алгоритмы, оптимизировать их, чтобы они работали как можно быстрее. Работая над этим, мне удалось придумать эффективную формулу для сортировки Шелла.

Во многом статья посвящена тому, как написать все алгоритмы и протестировать их. Если говорить о самом программировании, то иногда могут возникнуть совершенно неожиданные трудности (во многом благодаря оптимизатору C++). Однако не менее трудно решить, какие именно тесты и в каких количествах нужно сделать. Коды всех алгоритмов, которые выложены в данной статье, написаны мной. Доступны и результаты запусков на всех тестах. Единственное, что я не могу показать — это сами тесты, поскольку они весят почти 140 ГБ. При малейшем подозрении я проверял и код, соответствующий тесту, и сам тест. Надеюсь, что статья Вам понравится.
Читать дальше →
Всего голосов 80: ↑76 и ↓4+72
Комментарии55

Как концептуально работает Tornado Cash, который «забанили» власти США

Время на прочтение6 мин
Количество просмотров9.2K

8 августа 2022 года Управление по контролю за иностранными активами Министерства финансов США (OFAC) наложило санкции на Tornado Cash, миксер криптовалюты, что вызвало шквал обсуждений в криптосреде. В этой статье разберем как концептуально работает криптомиксер Tornado Cash, что было понять, что есть в этой технологии, что против нее вводят санкции.

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии4

О том как написать и опубликовать смарт-контракт в Telegram Open Network (TON)

Время на прочтение27 мин
Количество просмотров13K

О чем эта статья?


В статье я расскажу о том, как поучаствовал в первом (из двух) конкурсе Telegram по блокчейну, не занял призовое место и решил зафиксировать опыт в статье, чтобы он не канул в Лету и, возможно, помог кому-нибудь.


Так как мне не хотелось писать абстрактный код, а сделать что-то рабочее, для статьи я написал смарт-контракт моментальную лотерею и сайт, который показывает данные смарт-контракта напрямую из TON без использования промежуточных хранилищ.


Статья будет полезна тем, кто хочет сделать свой первый смарт-контракт в TON, но не знает с чего начать.


На примере лотереи я пройду от установки окружения до публикации смарт-контракта, взаимодействия с ним и напишу сайт для получения и публикации данных.

Читать дальше →
Всего голосов 5: ↑5 и ↓0+5
Комментарии2

Go Channels Internals

Время на прочтение12 мин
Количество просмотров23K
На Go можно реализовать тысячи goroutine одновременно без больших требований к железу. При этом горутины могут легко и просто обмениваться данными между собой и синхронизироваться с помощью каналов. Но как устроены каналы внутри? Об этом написано не так уж много, а в условиях многопоточки и асинхронного кода хорошо бы не просто работать с каналами, а понимать, как их использовать более практично и эффективно.

Егор Гришечко, старший разработчик в Insolar, разрабатывает блокчейн для b2b сегмента (по сути, стартап), и у команды как раз большая многопоточка и много асинхронного кода. Егор не только разобрался на практике, как работают каналы, что это такое и как они вообще устроены внутри. Он еще рассказал о каналах внутри команды, а потом, увидев интерес, поделился на конференции Golang Conf 2019.

Сегодня мы публикуем расшифровку его доклада.


Читать дальше →
Всего голосов 42: ↑41 и ↓1+40
Комментарии2

Xdebug через Windows Subsystem For Linux 2 (WSL2)

Время на прочтение5 мин
Количество просмотров15K

Под катом небольшая заметка про то как можно настроить удобное окружение для работы с PHP, xdebug через Windows Subsystem For Linux 2 (WSL 2).


Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии32

Интервью с Александром Афеновым — тимлидом тимлидов из Lamoda

Время на прочтение16 мин
Количество просмотров3.1K

Всем привет. Ко мне в онлайн-гости на интервью зашел Александр Афенов — руководитель направления разработки в Lamoda. Пообщались про онбординг, тимлдиство в Lamoda, devrel и другое.



Интервью было в формате онлайн-трансляции на YouTube — запись доступна по ссылке. Также можно послушать в формате аудио-подкаста. Ну а под катом расшифровка интервью.

Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии0

GO Scheduler: теперь не кооперативный?

Время на прочтение8 мин
Количество просмотров35K
Если вы читали release notes для версии GO 1.14, то возможно заметили несколько довольно интересных изменений в рантайме языка. Вот и меня очень заинтересовал пункт: «Goroutines are now asynchronously preemptible». Выходит что GO scheduler (планировщик) теперь не кооперативный? Что же, после прочтения по диагонали соответствующего proposal любопытство было удовлетворено.

Тем не менее, через некоторое время я решил более подробно исследовать нововведения. Результатами этих исследований и хотелось бы поделиться.

image
Читать дальше →
Всего голосов 59: ↑55 и ↓4+51
Комментарии9

Интервью с Сергеем Жуком — автором книг и скринкастов по ReactPHP

Время на прочтение9 мин
Количество просмотров2.1K

Мир IT полон интересных людей, что стало причиной создание проекта MoreView где я беру интервью у разных людей и познаю IT. Я достаточно давно связал свою жизнь с PHP и уже брал интервью у разработчика фреймворка Yii. Чуть более 7 лет назад в мир ворвался асинхронный PHP с библиотекой ReactPHP.


7 лет прошло и технология продолжает развиваться. В этот раз я взял интервью у Сергея Жука (seregazhuk) — автора книг, статей и скринкастов по ReactPHP.


Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии3

Акинатор и математика

Время на прочтение6 мин
Количество просмотров110K
На Хабре уже несколько раз всплывала тема Акинатора, в том числе и с тегом не знаю как оно работает. Я на него наткнулся недавно и, разумеется, был восхищен. Затем, как вероятно и многим другим, мне в голову пришла мысль: «А как же это работает?» Ответа на этот вопрос я нигде не нашел, а потому задался целью написать аналогичную по функциональности программу, разобравшись по ходу дела что к чему.
Читать дальше →
Всего голосов 103: ↑95 и ↓8+87
Комментарии78

Роскомнадзор и Телеграм боты через прокси

Время на прочтение2 мин
Количество просмотров71K

Лучшей рекламы для прекрасного мессенджера и придумать невозможно — “несгибаемый Дуров держит оборону и стоит за конфиденциальность своих клиентов, как за свою жизнь”. Но суть данного поста не в маркетинговой составляющей блокировки Telegram на территории России. Если ваш Telegram бот перестал работать и вам нужно эту работу срочно восстановить, добро пожаловать под кат.

Читать дальше →
Всего голосов 39: ↑35 и ↓4+31
Комментарии32

Интервью с Александром Макаровым (Yii) про Opensource, конференции и Yii

Время на прочтение14 мин
Количество просмотров4.3K

Всем привет! Недавно взял интервью у разработчика фреймворка Yii Александра Макарова (SamDark) на разные темы — IT конференции России, удаленная работа и работа за рубежом и, разумеется, про Yii Framework.


Читать дальше →
Всего голосов 32: ↑30 и ↓2+28
Комментарии16

Как я начал выступать на конференциях и не могу остановиться

Время на прочтение6 мин
Количество просмотров8.5K

Современный мир разработки, по-своему, прекрасен. Хорошей практикой считается свободное распространение своих знаний и разработок. Стремление к знаниям создает спрос, а habr, toster (ныне qna), github, митапы, конференции и прочее являются отличным предложением. О митапах и конференциях я сегодня и хотел бы рассказать. Под катом история как я, будучи разработчиком и собственником IT-компании, начал выступать на IT конференциях.

Читать дальше →
Всего голосов 42: ↑37 и ↓5+32
Комментарии29

Полный набор gRPC, RESTful JSON API, WS и Swagger из одного proto файла. От введения до нюансов и тонкостей grpc-gateway

Время на прочтение9 мин
Количество просмотров33K

В этой статье я опишу процесс создания сервера с gRPC и RESTful JSON API одновременно и Swagger документацию к нему.


Эта статья — продолжение разбора различных способов реализаций API-сервера на Golang с автогенерацией кода и документации. Там я обещал более подробно остановиться на этом подходе.


grpc-gateway — это плагин protoc. Он читает определение сервиса gRPC и генерирует обратный прокси-сервер, который переводит RESTful JSON API в gRPC. Этот сервер создается в соответствии с пользовательскими параметрами в вашем определении gRPC.


Это выглядит вот так:


Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии16

Инструменты реализации API-сервера на Golang с автогенерацией кода и документации

Время на прочтение13 мин
Количество просмотров31K

Я бы хотел в этой статье рассказать вам о том как можно быстро и просто сделать веб сервер на языке Golang с документацией к нему. И о том какие есть подходы и инструменты для их реализации


Сегодня мы разберем эти готовые инструменты:


Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии0

MVCC-1. Изоляция

Время на прочтение25 мин
Количество просмотров127K
Привет, Хабр! Этой статьей я начинаю серию циклов (или цикл серий? в общем, задумка грандиозная) о внутреннем устройстве PostgreSQL.

Материал будет основан на учебных курсах по администрированию, которые делаем мы с Павлом pluzanov. Смотреть видео не все любят (я точно не люблю), а читать слайды, пусть даже с комментариями, — совсем «не то».

Конечно, статьи не будут повторять содержание курсов один в один. Я буду говорить только о том, как все устроено, опуская собственно администрирование, зато постараюсь делать это более подробно и обстоятельно. И я верю в то, что такие знания полезны прикладному разработчику не меньше, чем администратору.

Ориентироваться я буду на тех, кто уже имеет определенный опыт использования PostgreSQL и хотя бы в общих чертах представляет себе, что к чему. Для совсем новичков текст будет тяжеловат. Например, я ни слова не скажу о том, как установить PostgreSQL и запустить psql.

Вещи, о которых пойдет речь, не сильно меняются от версии к версии, но использовать я буду текущий, 11-й «ванильный» PostgreSQL.

Первый цикл посвящен вопросам, связанным с изоляцией и многоверсионностью, и план его таков:

  1. Изоляция, как ее понимают стандарт и PostgreSQL (эта статья);
  2. Слои, файлы, страницы — что творится на физическом уровне;
  3. Версии строк, виртуальные и вложенные транзакции;
  4. Снимки данных и видимость версий строк, горизонт событий;
  5. Внутристраничная очистка и HOT-обновления;
  6. Обычная очистка (vacuum);
  7. Автоматическая очистка (autovacuum);
  8. Переполнение счетчика транзакций и заморозка.

Ну, поехали.
Читать дальше →
Всего голосов 34: ↑34 и ↓0+34
Комментарии35

LLVM с точки зрения Go

Время на прочтение7 мин
Количество просмотров7.2K
Разработка компилятора — очень тяжёлая задача. Но, к счастью, с развитием проектов наподобие LLVM решение этой задачи значительно упрощается, что позволяет даже программисту-одиночке создать новый язык, близкий по производительности к C. Работа с LLVM осложняется тем, что эта система представлена огромным объёмом кода, снабжённого небольшой документацией. Для того чтобы попытаться этот недостаток исправить, автор материала, перевод которого мы сегодня публикуем, собирается продемонстрировать примеры кода, написанного на Go, и показать, как они транслируются сначала в Go SSA, а потом — в LLVM IR с использованием компилятора TinyGO. Код Go SSA и LLVM IR был немного отредактирован, из него было удалено то, что не относится к приводимым тут пояснениям, ради того, чтобы эти пояснения оказались бы более понятными.

image
Читать дальше →
Всего голосов 35: ↑34 и ↓1+33
Комментарии10

Управление Docker контейнерами в Go

Время на прочтение4 мин
Количество просмотров9.7K

Документация!


Когда вы решите написать, свой велосипед по ловле хуков из docker hub или из registry для автоматического обновления/запуска контейнеров на сервере, вам может пригодиться Docker Cli, который поможет управлять демоном Docker в вашей системе.
image

Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии4

Golang и эволюция взаимодействия с базами данных

Время на прочтение4 мин
Количество просмотров19K

В этой статье хочу обобщить проблемы работы с базами данных под управлением golang. При решении простых задач обычно эти проблемы не видны. С ростом проекта масштабируются и проблемы. Наиболее злободневные из них:


  • Снижение связности приложения, работающего с базой данных
  • Журналирование запросов в отладочном режиме
  • Работа с репликами

Статья построена на основании пакета github.com/adverax/echo/database/sql. Семантика использования этого пакета максимально приближена к стандартному пакету database/sql, поэтому не думаю, что при его использовании у кого-нибудь возникнут проблемы.

Читать дальше →
Всего голосов 19: ↑13 и ↓6+7
Комментарии4

Информация

В рейтинге
Не участвует
Откуда
Сочи, Краснодарский край, Россия
Дата рождения
Зарегистрирован
Активность