Как стать автором
Обновить
23
0.1
Aleks Lozovyuk @aleks_raiden

Криптовалюты, финансы, распределенные системы

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

Решение внутренних конфликтов: инженерный подход

Уровень сложностиСредний
Время на прочтение27 мин
Количество просмотров2.4K

Люди на Земле уже многие века как-то решают свои внутренние конфликты. Да что там говорить - это умеют делать даже обезьяны. Хотя у людей получается лучше: нам помогают не только инстинкты и развитый неокортекс, но и чужой опыт: мифы, религии, философские учения, нормы культуры, а порой даже и книги об "успешном успехе".

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

В этой статье вас ждёт:

Дизассемблирование структуры внутреннего конфликта до атомарных инструкций
Путешествие в джунгли legacy-кода, хранящегося в чертогах подсознания.
Разрешение внутренних конфликтов как выплата техдолга,
Формирование эффективных промптов для бионейросети (той, которая между ушами)
Простота: фреймворк, который подходит для решения доброй половины внутренних конфликтов
Глубина: экстремальное погружение во внутренний мир человека.

Читать далее
Всего голосов 10: ↑8 и ↓2+6
Комментарии6

Transient storage в EVM (EIP-1153): на грани добра и зла

Время на прочтение18 мин
Количество просмотров359

В одной из статей о расчете газа в Ethereum (ссылка) я рассказал об истории изменений механизмов подсчета газа для хранилища смарт-контракта (storage) — от правил, заложенных в протоколе изначально, до EIP-3529. Во всех этих изменениях прослеживается основная проблема: нерациональное использование газа, когда слот хранилища смарт-контракта изменяется в ходе транзакции и затем возвращается к исходному значению, например, при блокировке функции для защиты от атак reentrancy. Иными словами, в ситуациях, когда постоянное хранилище используется как временное, а также в случаях необходимости безопасной передачи данных между фреймами вызовов.

В этой статье рассмотрим нововведение хард-форка Dencun (Cancun-Deneb), где в рамках обновления слоя выполнения был представлен EIP-1153: Transient storage opcodes, предлагающий решение этой проблемы за счет введения двух новых опкодов (TSTORE, TLOAD) и создания нового типа памяти в EVM - transient storage.

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

GPT-4, Claude 3, Gemini Pro или опенсорс — как выбрать LLM под свою задачу?

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров14K
image

Несмотря на то, что сейчас из каждого утюга рекламируется доступ к ChatGPT и GPT-4, вообще говоря, в мире существует несколько больше разных поставщиков LLM (больших языковых моделей), и некоторые из которых могут гораааздо более эффективнее решать какие-то конкретные задачи.

Я уже полгода веду проект VseGPT.ru с доступом к разным LLM из России по OpenAI API (ну, и через вебчат). Львиная доля работы — подключение новых нейросетей. Сейчас их уже свыше 60, и каждую я попробовал хотя бы раз, ну, когда подключал.

Правда, сайт LLMExplorer, собирающий данные об опенсорс нейросетях с портала Hugging Face, говорит, что их там уже более 33 000 штук. М-да.

В общем, вероятно, я не знаю о текстовых сетках всё, но определенно знаю кое-что — хотя бы в пределах своего скромного опыта в 60 сеток. Так что кому интересно — прошу под кат.
Читать дальше →
Всего голосов 23: ↑26 и ↓-3+29
Комментарии22

Смарт-контракты на WebAssembly: зачем это надо и как работает

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров2.5K

В последнее время многие блокчейн-платформы для исполнения смарт-контрактов переключились на WASM — WebAssembly. Мы не стали исключением, и в последнем обновлении тоже добавили WebAssembly как альтернативу привычному Docker. В этом посте мы расскажем, для каких задач нам потребовался именно WASM, что мы достигли с ним на сегодня и как WASM отражается на производительности блокчейна.

Читать далее
Всего голосов 18: ↑17 и ↓1+16
Комментарии2

Структура объекта в JavaScript движках

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

С точки зрения разработчика, объекты в JavaScript довольно гибкие и понятные. Мы можем добавлять, удалять и изменять свойства объекта по своему усмотрению. Однако мало кто задумывается о том, как объекты хранятся в памяти и обрабатываются JS-движками. Могут ли действия разработчика, прямо или косвенно, оказать влияние на производительность и потребление памяти? Попробуем разобраться во всем этом в этой статье.

Читать далее
Всего голосов 30: ↑30.5 и ↓-0.5+31
Комментарии1

Представляем планировщик Go: Вы никогда не смотрели на горутины с этой стороны

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров9.8K

Вероятно, вы слышали о планировщике Go раньше, но насколько хорошо мы знает о том как он работает? Как он связывает горутины с потоками?

Разберем по очереди операции, которые выполняет планировщик.

Читать далее
Всего голосов 36: ↑33 и ↓3+30
Комментарии1

Внутри S3. Доклад Яндекса

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

Привет, я Паша, разработчик в Yandex Infrastructure, и я катаю гусей. С 2019 года я развиваю S3-хранилище как для внутренних пользователей Яндекса, так и для клиентов Yandex Cloud. А «гусём» называется наш бэкенд S3 API: он написан на Go, а из словосочетания Go + S3 получился goose. Возможно, вы также слышали про GeeseFS — это наш высокопроизводительный FUSE-клиент для S3. C его помощью вы можете на своём ноутбуке или виртуалке подмонтировать папку, которая будет работать с бакетом S3. 

Для чего нам «гуси» и прочая орнитология? Яндексовая инсталляция хранилища S3 хранит миллиарды файлов. Это огромные объёмы данных, а также метаданных. Для хранения метаданных мы научились использовать умное шардирование, и теперь сами управляем распределением занятого места и нагрузкой между шардами баз.

Так что сегодня я расскажу, как сделать так, чтобы ни один клиент, даже с самым неудобным паттерном нагрузки, не положил сервис.

Читать далее
Всего голосов 82: ↑81 и ↓1+80
Комментарии52

Проектируем микросервисы с Reactive Manifesto: 4 принципа распределенных систем

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров1.9K

Работаете с распределенными системами или только пытаетесь к ним подобраться? Проектировать такие системы с нуля бывает сложно и страшно: чтобы учесть все нюансы, нужен определенный багаж знаний. 

На помощь приходит Reactive Manifesto — документ, который обобщил опыт целого ряда компаний по созданию распределенных систем. Манифест формулирует главные принципы, на которые стоит опираться на этапе проектирования и эксплуатации таких систем.

Меня зовут Андрей Василевский, я системный архитектор в Lamoda Tech. В этой статье я на примерах из своей работы покажу, как применять Reactive Manifesto на практике. Статья будет полезна тем, кто только начал изучать распределенные системы, хочет закрепить теорию или тем, кто хочет структурировать проектирование микросервисов в своей компании.

Читать далее
Всего голосов 25: ↑24 и ↓1+23
Комментарии3

Как работает etcd с Kubernetes и без него

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

Если вы когда-либо взаимодействовали с кластером Kubernetes, скорее всего, он был основан на etcd. etcd лежит в основе работы Kubernetes, но несмотря на это, напрямую взаимодействовать с ним приходится не каждый день.

Этот перевод статьи от learnk8s познакомит вас с принципами работы etcd, чтобы вы могли глубже понять внутреннюю работу Kubernetes и получить дополнительные инструменты для устранения неполадок в вашем кластере. Мы установим и сломаем кластер etcd с тремя нодами и узнаем, почему Kubernetes использует etcd в качестве базы данных.

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

Стейкинг NFT: как это работает?

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

Все знают про стейкинг обычных ERC-20 токенов. А что с ERC-721? Вокруг стейкинга NFT уже давно ходят противоречивые мнения, и мы решили разобраться в этом с точки зрения технологии. Поговорим о том, как это работает: как организовать на смарт-контрактах, как рассчитываются вознаграждения и какую пользу это может принести проектам и держателям NFT.

Добро пожаловать в технический гид по стейкингу NFT!

Читать далее
Всего голосов 18: ↑13 и ↓5+8
Комментарии9

Тьюринг и Гёдель — два взгляда на искусственный интеллект и не только

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров2.3K

Привет! Меня зовут Саша Шутай, я руководитель направления PHP в AGIMA. Мы с командой подготовили большой разбор научных взглядов двух великих ученых: Алана Тьюринга и Курта Гёделя. Подумали, что будет интересно сравнить их биографии и подходы к искусственному интеллекту. Если тема зайдет, будем и дальше рассказывать об истории математики и разработки.

Как известно, у программиста стакан наполовину Алан, а у математика — наполовину Курт. Алан Тьюринг и Курт Гёдель — два величайших ума XX века, вклад которых в науку фундаментален. Полнота по Тьюрингу — критерий того, что вычислительная система способна решить любую разумную задачу. Неполнота по Гёделю — свойство любой достаточно сложной теории, из-за которого в ней нельзя ни доказать, ни опровергнуть некоторые утверждения.

Кажется, что из этих двоих Тьюринг — «хороший полицейский»: Тьюринг-полнота утверждает, что любая задача разрешима, даже если ты программист на Brainfuck. А Гёдель в этой парочке, соответственно, плохиш: его теорема говорит, что некоторые вещи не доказать совсем никак, и в свое время она конкретно обломала программу Гильберта по формализации всея математики. Все ли так однозначно? В чем на самом деле фундаментальное различие между их взглядами? Искусственный интеллект в заголовке — это кликбейт? Ответы на эти и другие вопросы ожидают вас под катом.

Читать далее
Всего голосов 36: ↑33 и ↓3+30
Комментарии3

Расчет количества газа необходимого для выполнения транзакции в Ethereum. Часть 2 — storage

Уровень сложностиСложный
Время на прочтение18 мин
Количество просмотров1.3K

Привет всем! В прошлой статье мы с вами изучили общую механику расчета газа при выполнении транзакций. В этой статье мы сфокусируемся на самых «дорогих» операциях работы с хранилищем смарт‑контракта (storage), а также пройдемся по истории EIPs, связанных с расчетом газа в Ethereum, чтобы увидеть, по каким принципам сообщество принимало решения об изменениях «правил игры» и как сегодня, на основе этой истории, правильно выполнять такие расчеты.

Статья для тех, кто хочет разобраться почему слоты в storage бывают теплыми и холодными, грязными или свежими и за что возвращают газ. Также затронем списки доступа и intrinsic gas. Наконец увидим полную картину учета газа от инициализации транзакции до ее выполнения.

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

Эффективные трассировки в Go

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров2.2K

Пакет runtime/trace содержит мощный инструмент для понимания программ Go и устранения неполадок. Функциональность внутри позволяет создавать трассировку исполнения каждой горутины за определенный период времени. С помощью go tool trace command (или превосходного инструмента gotraceui с открытым исходным кодом) можно визуализировать и исследовать данные в этих трассировках.

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

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

С 500 мс до нуля, или история о том, как я написал Node.js C++ addon и ускорил скидочный сервис в 500 раз

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров18K

Приветствую тебя! Меня зовут Дмитрий и я работаю в LAD.
Сегодня я поведаю историю о том, как эволюционировал скидочный сервис одного из наших проектов. Пройдя путь от всеми нелюбимого, "тормозящего" сервиса, до сервиса,
который имеет наилучшие показатели на недельных графиках SLA.

Читать далее
Всего голосов 44: ↑43 и ↓1+42
Комментарии37

CI/CD Kubernetes платформа Gitorion. Непрерывная доставка CD на базе Jenkins

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров2.2K

Привет всем! В предыдущей статье мы подробно рассмотрели реализацию непрерывной интеграции CI в платформе Gitorion. В данной статье предлагаем вашему вниманию подробный разбор внедрения непрерывной доставки CD в платформу Gitorion на базе Jenkins.

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

Почему рациональный выбор невозможен

Время на прочтение8 мин
Количество просмотров8.7K
image

Примерно до середины XX века экономисты искренне верили в Homo Economicus — разумного человека, обладающего всей необходимой для принятия решений информацией, способного качественно её проанализировать и сформулировать лучшее решение, которое принесёт всем максимальную пользу. Но потом внезапно выяснилось, что люди устроены немножко сложнее, чем думали экономисты, и в природе такой «сферический Homo Economicus в вакууме» встречается редко.

Чаще всего вместо этого самого лучшего решения стоит искать удовлетворительное и приемлемое, которое устроит всех. Но даже это получается далеко не всегда.

Иногда достаточно найти просто первое подходящее.

А пока — знакомьтесь, примерно вот так представляли в 1844 году новый вид человека — сверхрационального Homo Economicus:

  • Безупречная рациональность.
  • Узкий личный интерес.
  • Неизменные в течение жизни цели и стремления.
  • Возможность обработать любой объём информации.
  • Возможность получить доступ к любой информации, имеющей отношение к задаче (и нет, Интернета тогда не было).

Как вы понимаете, с эволюцией человечества тоже что-то пошло не по этому плану.
Читать дальше →
Всего голосов 32: ↑28 и ↓4+24
Комментарии17

Обзор Polygon zkEVM: как работает L2 решение для Ethereum

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров1.1K

Привет, Хабр! Меня зовут Леша Куценко, я разработчик смарт-контрактов в команде MetaLamp, мой основной стек – Solidity. В этой статье я подробнее расскажу про решение для масштабирования с нулевым разглашением (Zero-knowledge proof), а именно – о блокчейне второго уровня Polygon zkEVM. Как блокчейн решает проблему высокой стоимости газа в транзакциях и использует другие преимущества ZK-Rollups? Ответы на эти и другие вопросы в этой статье. 

Для более детального понимания Zero-Knowledge Proofs (ZKP), рекомендую обратиться к этой статье в нашей Blockchain-Wiki на Гитхабе.

Погнали!:)

Читать далее
Всего голосов 15: ↑14 и ↓1+13
Комментарии2

Реальность обладает поразительным числом деталей

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров14K

Мой отец эмигрировал из Колумбии в Северную Америку, когда ему было 18. Сделал он это в поисках лучшей жизни. Для меня и моего брата это значило — проводить много времени на уличном холоде. Отец выбрал путь улучшения своей судьбы через улучшение того, что его окружает. Меня и брата «добровольно» завербовали в помощники по работам над принадлежащими нам постройками.

Именно так значительную часть подростковых лет я провёл, чиня изгороди, роя ямы, строя перекрытия и навесы. И если я чему и научился, занимаясь всеми этими строительными делами, так это тому, что реальность обладает удивительным количеством деталей.

Читать далее
Всего голосов 49: ↑47 и ↓2+45
Комментарии68

CI/CD Kubernetes платформа Gitorion. Непрерывная интеграция CI на базе Gitea/Forgejo

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров2.7K

Привет всем! В предыдущей статье мы обзорно рассмотрели основные компоненты CI/CD Kubernetes платформы Gitorion. В данной статье подробнее остановимся на реализации хостинга кода, системы управления версиями и непрерывной интеграции CI.

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

Когда одного Postgres'a мало: сравнение производительности PostgreSQL и распределенных СУБД

Уровень сложностиСложный
Время на прочтение12 мин
Количество просмотров10K

Общеизвестно, что PostgreSQL - крайне эффективная СУБД с богатой функциональностью. При этом не секрет, что PostgreSQL масштабируется только вертикально и её производительность ограничена возможностями одного сервера.

Написано много хороших постов, в которых сравнивают архитектуру монолитных и распределенных СУБД. К сожалению, обычно авторы ограничиваются теоретическим сравнением и не приводят конкретные цифры. Данный пост же наоборот основан на эмпирическом исследовании с использованием бенчмарка TPC-C, который является промышленным стандартом для оценки производительности транзакционных СУБД (On-Line Transaction Processing, OLTP).

Мы расскажем, когда именно одного Postgres'a становится мало, и какие возможны компромиссы между производительностью и надежностью. Для тех, кто не готов к компромиссам, мы покажем, что могут предложить такие распределенные СУБД, как CockroachDB и YDB.

Читать далее
Всего голосов 29: ↑28 и ↓1+27
Комментарии50
1
23 ...

Информация

В рейтинге
2 981-й
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность