Обновить
35
7
Эдгар@ZergsLaw

Пользователь

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

Monkey patching? В Go? Серьёзно? Или как писать тесты и не сойти сума

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели8K

На днях подходит ко мне коллега с вопросом: «Слушай, а как в Go сделать замену логики функции в тесте?»

Я уточняю, что он имеет в виду. А он такой: «Ну, хочу monkey patching, чтобы подменять функции из коробки. Типа time.Now возвращала фиксированное время, uuid.New конкретный ID. Чтобы удобно тестироваться».

И тут я, конечно, немного завис :D

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

Читать далее

Часть вторая. Как я пытался засунуть gRPC в браузер — продолжение

Время на прочтение5 мин
Охват и читатели6.2K

Предыдущая часть

Картина мира: почему браузер — главный блокер для «настоящего» gRPC

Если коротко, gRPC живёт поверх HTTP/2 и активно полагается на стримы. А в браузере до сих пор нет низкоуровневого API, который позволил бы JavaScript управлять HTTP/2‑стримами на том уровне, который нужен gRPC. Даже unary‑вызов в gRPC — это частный случай стрима: открыли поток, отдали запрос, забрали ответ, закрылись. Пока браузеры не дадут этот «рычаг», все WEB‑решения — это компромиссы разной степени изящности.

Чем это оборачивается на практике:

Нативные bidi‑стримы из браузера недоступны

Приходится конвертировать транспорт: HTTP/1.1 или WebSocket → что‑то «похоже на gRPC» → gRPC/HTTP2 на бэкенде

Добавляются прокси, адаптеры и слой совместимости, где теряется часть достоинств «чистого» gRPC

Читать далее

Как я пытался засунуть gRPC в браузер — часть первая

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели9K

Одна из самых основных проблем в работе с gRPC - необходимость наружу вытаскивать отдельно REST API для web клиента, но, надо ли отдельно его писать, или можно как-то унифицировать и эту историю?

И вот начал я копать эту тему, и чем глубже копал, тем больше удивлялся. Оказывается, за последние почти 10 лет было целых ТРИ ЧЕТЫРЕ серьезных попытки затащить gRPC в веб. И знаете что самое смешное? Самая первая попытка, сделанная в 2015 году японкой-одиночкой (в команде с коллегами), до сих пор остается самым адекватным решением. А Google со всеми своими миллиардами и армией разработчиков так и не смог ничего нормального придумать. Но обо всем по порядку.

Ах, да, меня зовут Эдгар Сипки, я все также евангелист gRPC && OpenSource :) Кстати, мой канал, там я гораздо чаще пишу (а скоро еще и начну снимать очень много крутого контента про gRPC и Go), ну и конечно один из основателей инструмента EasyP

Ссылка на полный доклад, если хочется посмотреть - YouTube

Читать далее

Консолидация памяти — или как избежать альцгеймера у LLM

Время на прочтение7 мин
Охват и читатели9K

Просыпаюсь утром, открываю свой чат с GPT, начинаю увлеченно обсуждать архитектуру нового проекта. Через час диалог превращается в философский трактат о смысле жизни, еще через час - в рецепт борща. И вот, когда я пытаюсь вернуться к архитектуре, модель смотрит на меня как на незнакомца: "А что за проект? Борщ, говорите?"

Если очень коротко, у современных LLM есть одна маленькая проблема, они вполне страдают тем же самым “альцгеймером”, что и люди, хоть и причины немного иные (а может и нет) и это конечно не медицинский диагноз, а конкретная технологическая проблема, которое бьет не только по качеству результата, но и по нашим с вами кошелькам :)

В итоге, пройдя 10 кругов ада, так и решил наконец сесть и разобраться, а почему они начинают забывать все важные детали, а также можно ли как-то удешевить таки API в подобных задачах?

Читать далее

Это не баг — это фича: как мы начали писать свою open-source альтернативу Buf, потому что нас заблокировали

Время на прочтение4 мин
Охват и читатели5.2K

Решил я ворваться тоже в “Сезон Open Source”, но как обычно в стиле «🐢» а не вот эти вот ваши молнии.

Читать далее

Dockerfile, только для LLM

Время на прочтение7 мин
Охват и читатели3.4K

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

Чаще всего я настраивал это все на уровне кода, но, некоторый период назад наткнулся на Modelfile и решил изучить и попробовать его, в ходе экспериментов наткнулся на реально большое число неожиданностей и решил таки написать о нем тут подробнее :)

Modelfile позволяет упаковывать модели и формировать готовых агентов. В нем оказалось много реально неожиданного поведения, и одновременно с этим есть сложности и странности. Однако с его помощью можно взять множество разных моделей из того же Hugging Face и запустить под Ollama, а самое важное, удобства в тюнинге (или же наоборот отупливании модели :D ).

Читать далее

Docker теперь конкурент Ollama?

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели9.9K

Ребята зарелизили новую крупную фичу, и, как по мне, это самая крупная механика с момента выхода dev containers, так как это показывает, насколько всё-таки AI всё глубже интегрируется в разработку.

Docker Model Runner - фактически инструментарий для запуска моделей локально, и это буквально полный конкурент для Ollama, но, будем объективны, пока что ещё очень сырой.

Читать далее

Как подключить AFFiNE к Ollama?

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели1.8K

Когда я пытался подключить AFFiNE к Ollama или к DeepSeek я сразу столкнулся с большой проблемой, AFFiNE попросту не умеет работать с моделями отличными от GPT, вопрос, почему? Да потому что ребята просто захардкодили названия моделей в коде
Честности ради, ребята все еще в бете, так что причину отлично понимаю

Покопавшись в коде, я понял, что там попросту ну никак нельзя конфигурировать что либо КРОМЕ url и API ключа от OpenAI, так как названия моделей буквально захардкожены

Читать далее

AFFiNE — Obsidian здорового человека

Время на прочтение5 мин
Охват и читатели35K

9 сентября — это был последний день, когда мы могли еще нормально использовать Notion. Объективно, я что тогда, что сейчас так и не нашел инструмента лучше, удобнее, гибче и ПРОЩЕ, чем Notion. Да, он во всем был лучше как для жизни, так и для работы.

В конце концов, о его уходе анонсировали еще в конце августа, и я до сих пор помню статью «Obsidian — Notion свободного человека», после которой я, как и, думаю, многие другие, пытались пересесть. Однако у меня так и не вышло это, как бы я ни пытался — всегда слишком много сложностей и деталей. Так вот, эта история про поиск альтернативы.

Читать далее

DeepSeek на железе за 45к

Время на прочтение3 мин
Охват и читатели18K

Джарвис — мечта многих гиков. Однако будем объективны: мы реально все ближе к его появлению. Я бы не очень хотел, чтобы все мои запросы передавались на серверы OpenAI, DeepSeek, Anthropic и других компаний. Ну и ещё с лета начал свою домашнюю рубрику — ЭЭЭЭКСПЕРИМЕНТЫ на домашнем сервере.

Я хотел собрать домашнюю станцию с полностью самостоятельной, self-hosted LLM моделью и настроить всё под себя. Однако я не знал, какой мощности сервер нужен, чтобы получить адекватную работоспособность. Практически не найти в сети нужные тесты, бенчмарки и эксперименты, так что, немного погрустив, нашел в шкафу свой старый добрый Intel NUC и понял — он и будет моим тестовым стендом!

Читать далее

Опять DeepSeek? Побудем в роли детектива

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

Когда про DeepSeek-r1 начали говорить уже из каждого утюга, я долго думал, а стоит ли еще и свои 5 копеек вставлять в эту историю, и подумал, конечно же да! Ведь могу.

Если коротко, просыпаюсь в понедельник и вижу сотни постов в час на тему «революции в ИИ», «гигантский скачок в развитии LLM», «Акции big tech компаний падают», «NVIDIA потеряла сотни миллиардов долларов» — все эти статьи и посты имели кое-что общее — упоминание DeepSeek. Первое, что я почувствовал, это, конечно, небольшое недоумение — так он уже несколько дней точно лежит в библиотеке ollama, а до этого еще лежал на hugging face, да еще и я уже и развернул его на домашнем сервере и тестирую, так почему он внезапно то хайповать стал?!

Подумал, подумал, и пошел работать, лишь к вечеру вернувшись к этому вопросу. Решил разобраться, откры Хабр и понял, что уже куча опубликованных статей в стиле «⚡️», так что решил подождать чуть более логичных рассуждений обо всей этой истории. В итоге, время шло-шло-шло, я уже состарился на целую неделю, параллельно изучая причины происходящего, но, так и не дождался полноценного разбора произошедшего, так что я решил написать статью в стиле «🐢».

Читать далее

Давайте работать с proto ошибками правильно :)

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели6.7K

В программировании всегда есть несколько способов решения одной и той же проблемы. Но не все они одинаково эффективны. Сегодня поговорим о способах обработки ошибок в gRPC — удачных и не очень.

Разобраться подробнее

Откажитесь уже наконец от gin, echo и <иной ваш фреймворк>

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели11K

Введение: Пересмотр Традиций в Мире Go

В мире разработки на Go выбор фреймворка часто превращается в лояльность, сопоставимую с выбором между Apple и Android. Фреймворки вроде Gin, Echo и Beego долгие годы были верными спутниками программистов, помогая быстро развертывать проекты и достигать первых успехов. Они предлагали удобные инструменты и привычные шаблоны работы, но со временем становится очевидным, что у каждого свой «язык». Это создаёт трудности при переходе между ними или интеграции с другими системами.

Ну что же, давайте разберемся

Protobuf и buf: блеск, нищета и импортозамещение

Время на прочтение11 мин
Охват и читатели22K

Если для компиляции proto-файлов вы всё ещё используете protoc, самое время перестать и перейти на buf. Разберём, как это сделать и почему это необходимо. Также рассмотрим проблемы доступа к buf.build.

Меня зовут Эдгар Сипки, я Go-разработчик в Ozon Fintech. buf — мощная утилита для линтинга протофайлов, проверки обратной совместимости API, генерации кода и валидации запросов. Однако, из-за санкций она недоступна в России. Поэтому я расскажу, как мы разрабатывали собственное решение в рамках импортозамещения.

Читать далее

Информация

В рейтинге
957-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Бэкенд разработчик
Старший