Обновить

Бэкенд

Сначала показывать
Порог рейтинга

Сегодня у нас задачка с подвохом для тех, кто пишет на Java. Какой результат будет выведен в консоль? Пишите в комментариях!

import java.util.stream.Stream;
public class Main {
    public static void main(String[] args) {
        Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
        Integer result = prepareStream(stream);
        System.out.printf("Result after stream processing: %s%n", result);
    }

    private static Integer prepareStream(Stream<Integer> stream) {
        System.out.printf("Incoming stream with: %d elements%n", stream.count());
        return stream
                .map(integer -> integer++ + ++integer)
                .filter(integer -> integer % 3 == 0)
                .reduce(0, Integer::sum);
    }
}

Дальше будет решение, поэтому если не хотите спойлеров — не читайте!

.

.

.

Подвох в том, что будет выброшено исключение:

Exception in thread "main" java.lang.IllegalStateException: stream has already been operated upon or closed
 at java.base/java.util.stream.AbstractPipeline.<init>(AbstractPipeline.java:203)
 at java.base/java.util.stream.ReferencePipeline.<init>(ReferencePipeline.java:96)
 at java.base/java.util.stream.ReferencePipeline$StatelessOp.<init>(ReferencePipeline.java:800)
 at java.base/java.util.stream.ReferencePipeline$3.<init>(ReferencePipeline.java:191)
 at java.base/java.util.stream.ReferencePipeline.map(ReferencePipeline.java:190)
 at Main.prepareStream(Main.java:16)
 at Main.main(Main.java:7)

Исключение выбрасывается из-за того, что при выводе в консоль лога с количеством элементов стрима мы использовали операцию stream.count(), которая является терминальной и делает дальнейшее использование стрима невозможным.

System.out.printf("Incoming stream with: %d elements%n", stream.count());

Ну а после того, как мы избавимся от лога, который нам все ломает, правильный ответ будет — 18.

С учетом postfix и prefix инкремента числа в каждой итерации мы получаем:
.map(1 → 1 + 3)...(5 → 5 + 7)

Потом после фильтрации по делению на 3 без остатка в стриме остаются числа 6 и 12. И при помощи операции reduce() находим сумму этих чисел.

Теги:
Всего голосов 9: ↑4 и ↓5+2
Комментарии0

Автоматическое добавление номера задачи в коммит

Привет, Хабр! 👋
Хочу поделиться небольшой, но полезной фичей, которая упростила мне жизнь при оформлении коммитов.

В своей работе я придерживаюсь структурированного подхода к именованию веток и сообщений коммитов. Подробнее об этом можно почитать здесь:
📎 https://habr.com/ru/articles/820547/

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

Почему это удобно?

Указание номера задачи позволяет быстро понять, какие именно тикеты попадают в релиз. Особенно это помогает при ревью и при деплое.

Пример структуры ветки:

feat/dev-123_filter или fix/dev-432_filter

Сообщения коммитов я пишу в следующем формате:

dev-123 | настроил сортировку в фильтре

Чтобы не вставлять руками номер задачи каждый раз, я написал небольшой shell-скрипт, который делает это автоматически.

Скрипт prepare-commit-msg

#!/bin/sh

COMMIT_MSG_FILE=".git/COMMIT_EDITMSG"
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)

if echo "$BRANCH_NAME" | grep -qE 'dev-[0-9]+'; then
  TASK_ID=$(echo "$BRANCH_NAME" | grep -oE 'dev-[0-9]+')

  if ! grep -q "$TASK_ID" "$COMMIT_MSG_FILE"; then
    sed -i.bak "1s/^/$TASK_ID | /" "$COMMIT_MSG_FILE"
    rm -f "$COMMIT_MSG_FILE.bak"
  fi
fi

Скрипт нужно сохранить как .git/hooks/prepare-commit-msg и сделать исполняемым:

chmod +x .git/hooks/prepare-commit-msg

Как это работает?

  • COMMIT_MSG_FILE — путь до файла, в который Git записывает текст коммита.

  • BRANCH_NAME — название текущей ветки.

  • Сначала проверяется, есть ли в названии ветки номер задачи (dev-123).

  • Если он найден и ещё не указан в коммите — скрипт добавляет его в начало первой строки сообщения.

Таким образом, ваш коммит автоматически будет выглядеть так:

dev-123 | добавил пагинацию в список товаров

Вроде мелочь, а приятно — экономит время и упрощает навигацию по истории коммитов.

Если будет интересно — это и другие полезные скрипты, на моём GitHub

https://github.com/prog-time

Спасибо за внимание! ✌️

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии3

Откровения евангелистов БЯМ (LLM) для целей софтостроения генерируются публикуются с высокой скоростью. Не только на хабре, LinkedIn заполнен ими "под завязку". Прочитывать всё невозможно, да и не нужно, но некоторый тренд в изложении присутствует.

К сожалению, авторы много пишут о процессе, забывая собственно цели. Упоминание о функциональной сложности программы, как правило, отсутствует. Длина описаний процесса может создать ложное впечатление о развесистой функциональности, хотя большинство примеров находятся на уровне "записная книжка". В этом нет ничего плохого, просто не забываем, что 30 лет назад RAD типа Delphi умели создавать такие же "книжки" без написания кода вообще: достаточно было "накидать" компонентов на форму, настроить, связать их, и нажать "Run".

Накидали, и что дальше?

За словами "писать на близком к естественному языку", скрывается постепенное создание быстро растущего "промпта" - детальной спецификации, местами - псевдокода. Как следствие, необходимо иметь версии таких "исходников", как и раньше для кода (об этом практически не пишут). Для сторонних пакетов, API служб и прочих зависимостей не забываем указывать версии. По сравнению с таким "псевдокодом" техзадание может показаться увлекательной беллетристикой. Речь идет по сути о конечных спецификациях, ведь программирование - не столько кодирование (от силы 20% времени), сколько детальное проектирование и стабилизация.

Размер спецификаций псевдокода вкупе с описаниями контекста среды могут превзойти собственно размеры генерируемого кода, написанного программистом на формальном ЯВУ. Спецификации придется так же хранить в Git, и нервно просматривать, что же изменилось в сценариях, почему, ***, вместо слова "опять" кто-то написал "снова".

Для детерминированности процесса желательно, чтобы моделька была в том же состоянии, что и на предыдущем этапе генерации, но для внешних БЯМ-сервисов это недостижимо. Напомню, что компиляторы и классические генераторы кода (CASE, MDD) - детерминированные.

На первый план выходят тесты, их нужно писать "больше и лучше", потому что под капотом теперь только "черный ящик", "белого" больше нет. Тесты нужно постоянно обновлять в зависимости от объема изменений. Если ваши новые спецификации меняют 20% существующей кодовой базы, то тестов придется менять вдвое больше, принимая 2:1 за стандартное соотношение тестов к коду. Для языков без статической типизации тестирование еще более усложняется.

В реальных проектах написание сотен строк в день - это режим стартапа, причем на "нулевом цикле". Достаточно быстро программист приходит к естественной норме десятков строк в день, остальное время занимает понимание текущего потока проблем, поиск ошибок, интеграция и стабилизация. Хороший программист минимизирует объем порождаемого кода. Нужно ли включать БЯМ для написания 50 строк в день - вопрос.

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

Напоследок накину немного философского. Евангелисты любят упоминать, что человеческий мозг и БЯМы работают на одних и тех же принципах. Часто выясняется, что курса "Аналоговые ЭВМ" на их потоке уже не было, что несколько удручает. Еще более простой вопрос на примере несуществующей (пока?) телепортации: "Человек на входе телепортера и на выходе - это одна и та же личность?"

Теги:
Всего голосов 3: ↑2 и ↓1+2
Комментарии6

One Day Offer для разработчиков, аналитиков, тестировщиков 1С от Ozon Tech

Сразу 9 команд в поиске специалистов, которые уже проектировали и внедряли 1С-решения в крупных IT-компаниях. Получить оффер в Ozon Tech можно всего в 3 шага.
1С в Ozon — не просто ещё одна платформа. Это система учёта ведущего e-com России с охватом в 10 стран. В ней всё — от тарифов для селлеров из Еревана до графика работы ПВЗ в Караганде. 

Кто нам нужен? 
Опытные специалисты с глубокой экспертизой — разработчики, тестировщики, аналитики.
Вакансии открыты в 9 команд, и во всех — нешаблонные задачи на пределе возможностей 1С.
Подать заявку до 15 июля. 

Как всё пройдёт?
Онлайн и по расписанию. Даты интервью можно изменить по договорённости.
17.07 — знакомство с командами в формате презентации и Q&A — до 30 минут.
18.07 — техническое интервью, основанное на реальных задачах — 60-90 минут.
19.07 — финальное интервью с тимлидом — до 60 минут.

Почему стоит участвовать?
Во-первых, потому что мы — Ozon Tech, наши проекты вдохновляющие и перспективные, а условия — на высшем уровне бигтеха.

Во-вторых, в таком формате вы получаете максимум результата при минимальных затратах, как временных, так и эмоциональных: мы сократили 1 этап интервью и с оффером вернемся в день проведения финального интервью. 

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

Присылайте его сюда, как закончите: https://s.ozon.ru/WfnJy67

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

Пет-проекты, доп доход и финансовая независимость.

Сейчас совсем нет времени на личные проекты, которые уже сгенерил мозг, но когда-то я пытался обеспечить себе ими финансовую независимость. И по инерции мне всё еще капают небольшие деньги от старых попыток:

— в telegram автоматизированный анонимный канал + боты с партнерками.

— Доход от РСЯ с моих сайтов

— И даже что-то прилетает от моей деятельности в арбитраже трафика 10 лет назад, когда я просто пробовал там себя, еще работая в МВД. Лучше всего у меня получалось монетизировать dating трафик и юридический.

— Ну и если помните, одно время я автоматизировал работу со всякой веб3 скаминой, и простенькими скриптами тоже нафармил N всяких криптокоинов, а что-то даже капнет в будущем, возможно.

Были и еще кое-какие прощупывания всемирной сети, но об этом как-нибудь в другой раз)

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

Ну а вы как используете интернет, кроме просмотра рилсиков?

Теги:
Всего голосов 4: ↑0 и ↓4-4
Комментарии1

Хорошо ли вы разбираетесь в Python?

В Академии Selectel есть небольшой тест на владение синтаксисом Python. Он позволит оценить свои знания и отыскать пробелы. Вопросы подобраны для тех, кто уже не пугается None, но продолжает разбираться, что происходит «под капотом». Бонусом — подборка полезных материалов для изучения Python!

Пройти тест →

Теги:
Всего голосов 8: ↑5 и ↓3+2
Комментарии0

Бесплатные курсы Route 256 от Ozon Tech для Go-инженеров уровня middle

Route 256 — это эффективная прокачка знаний и навыков работы с микросервисами. Программа курса составлена ведущими экспертами Ozon Tech — командой, которая разрабатывает сервисы, выдерживающие экстремальные нагрузки до 382 000 RPS.

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

Как минимум, они бустанут ваше портфолио. Как максимум, вы получите оффер в команду. Заходите на сайт Route 256, изучайте требования и подавайте заявку.

Отборочный контест уже 3 августа!

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

Эффективные хеш-таблицы на Go

В Go нет недостатка хеш-таблиц. Вы всегда можете использовать встроенную map[Key]Val, с ошеломительной скоростью обладающую непревзойденным удобством! А изобилие типов Keyразрешенных к использованию, способно довести до изумления!

Вот только ни указатель, ни слайс не подходят... Невозможно подсунуть свои операции (равенства и хеширования). Но хоть со скоростью все хорошо! (извините, не удержался)

Итого, мне пришлось написать HashMap[K, V any], закрывающую проблемы.

------------------8<------------------

В это трудно поверить, но:

  • Без резервирования памяти (конфигурация R0), map[uint64]uint64 работает в 1.93 раза медленнее UintMap! И производит в 5.64 раза больше мусора!!

  • А с полным резервированием (R1), в 1.72 раза медленнее! И аж в 16.5 раз больше мусора!!!

Вдумайтесь! На коленке написанная хеш-таблица для целых чисел UintMap почти в два раза обгоняет ЖУТКО оптимизированную нативную map[uint64]uint64!! И существенно менее мусорит!!!

Но раз трудно поверить, то давайте проверим:

func MyUintMap() {
    const N = umN

//R0|    um := lib.NewUintMap(0)
    um := lib.NewUintMap(N) //R1|

    for i := uint64(0); i < N; i++ {
        um.Findsert(i, i+N)
    }
    lib.Assert(um.Size() == N)

    cnt := 0
    for i := uint64(0); i < N; i++ {
        if *um.Val(um.Find(i)) == i+N {
            cnt++
        }

        if um.Find(i+N) == -1 {
            cnt++
        }
    }
    lib.Assert(cnt == N*2)

    for i := uint64(0); i < N; i++ {
        um.Delete(i)
    }
    lib.Assert(um.Size() == 0)
}

func GoUintMap() {
    const N = umN

//R0|    m := make(map[uint64]uint64)
    m := make(map[uint64]uint64, N) //R1|

    for i := uint64(0); i < N; i++ {
        m[i] = i + N
    }
    lib.Assert(len(m) == N)

    cnt := 0
    for i := uint64(0); i < N; i++ {
        if m[i] == i+N {
            cnt++
        }

        if _, ok := m[i+N]; !ok {
            cnt++
        }
    }
    lib.Assert(cnt == N*2)

    for i := uint64(0); i < N; i++ {
        delete(m, i)
    }
    lib.Assert(len(m) == 0)
}

Здесь всего-то лишь вставка, два поиска и удаление. Запустите go test -bench=UintMap -benchmem и увидите сами. Вот только можно ли ругать Google за неэффективный map[uint64]uint64?

------------------8<------------------

Итоги?

  1. Смело берите HashMap[K, V any] для слайсов и указателей!

  2. Немного оптимизированная BytesMap -- лучший выбор для []byte.

  3. Интересно оптимизированная UintMap -- это выбор для целых чисел. Разберитесь, что там "не так", и используйте за основу.

И как всегда, исходный код, подробности и пару неудачных шуток вы можете найти в моей статье https://ders.by/go/hashmap/hashmap.html

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

Привет! Такое важное дело:

Мы в Хабре ищем к нам в команду старшего PHP-разработчика — можно работать удаленно.

Сильно ждем того, кто готов быть активным участником всего процесса разработки: начиная от проектирования и заканчивая запуском и поддержкой. Того, кто не боится участвовать в обсуждении идей и заниматься исследовательской деятельностью. Того, кто может продвигать свои и чужие идеи и добиваться их реализации. Кто понимает, что важно не только писать новый код, но и поддерживать старый.

Зарплатную вилку, требования и обязанности оставили на странице вакансии — откликайтесь, если хотите попасть в команду, или отправляйте вакансию друзьям, которые ищут работу.

Посмотреть вакансию

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

Неочевидные проблемы Kubernetes, которые вы могли пропустить

➡️ бесплатный вебинар 16 июля

Ведущий: Виталий Лихачев, SRE в крупнейшем голландском тревелтехе

Спикер: Руслан Гайнанов, главный инженер DevOps, T1 Иннотех

Вместе они разберут типовые ошибки, которые можно допустить при деплое сервисов в кластер, от некорректной настройки лимитов ресурсов, до более сложных кейсов с admission webhooks.

В конце вебинара — рекомендации по настройке вашего кластера и приложений для безотказной работы.

Когда: 16 июля в 19:00 мск

Занять место на вебинаре — через бота.

Теги:
Рейтинг0
Комментарии0

Давно не виделись! Надо исправлять. А поскольку у нас с вами лето, нельзя просто так взять и собраться — устраиваем митап для всех, кто связал свою жизнь с С++. Программа плотная:

18:00-19:00 Сбор гостей и welcome-кофе

19:00-19:30 Использование С++ библиотек при разработке прикладных решений в Astra Linux

19:45-20:15 C++ как производительный runtime для микросервисов: обсудим подход, при котором C++ усиливает Node.js, а Node.js ускоряет интерфейсную часть C++-систем.

20:15-20:45 Брейк на обсуждения

20:45-21:15 «Дайджест по нейросетям и их применению в IT» 

21:15-22:00 Холиварный сейшен с экспертами: С++ мертв или нет. Обсуждаем эффективные практики и методы использования С++ в задачах разработки и интеграции.

Встречаемся на Бауманская ул., 11, стр. 8 — около 10 минут от м. Бауманская или м. Красносельская.

Подробности и регистрация тут

Теги:
Всего голосов 3: ↑3 и ↓0+4
Комментарии1

Почему нам стыдно верить в астрологию, а в программирование — нет?

Вот вам два примера:

  • Это Сергей. Он — архитектор, скорпион с асцендентом в раке и Кету в первом доме. Уверен, что ретроградный Меркурий влияет на то, когда нужно проводить встречи.

  • Это Николай. Он — бэкенд-разработчик, пишет коннекторы к месседж-брокеру в платёжном агрегаторе. Утверждает, что настоящий программист должен знать Таненбаума и делать всё по SOLID.

Современный, считающий себя прогрессивным человек посмеётся над Сергеем и кивнёт Николаю. Потому что держит в руках айфон — и он как-то работает, значит, эти «технологии» не вымысел. Хотя сам вряд ли объяснит, как это происходит.

Из этих двоих чаще оказывается прав именно Сергей — по крайней мере, он точно знает, когда не стоит катить на прод. А Николай… он не может объяснить, почему всё падает после его деплоя.

Но в общем и целом: Николай знает, как работает код — пока он работает. А вот почему он не работает, когда падает — уже нет. Сергей знает, как система должна работать, но не знает, как она работает на самом деле. И все мы делаем вид, что во всём разбираемся и только Меркурий — честно ретрограден.

Теги:
Всего голосов 7: ↑2 и ↓5-3
Комментарии2

Ближайшие события

В продолжении серии постов про Claude Desktop MCP Servers.

В этом посте расскажу про первый из 4 серверов, с которыми работаю

Вот какие MCP сервера подключены у меня

🟢 TickTick — мой таск трекер (на чтение и на запись)
🟢 Notion (на чтение и на запись)
🟢 GitHub (на чтение и на запись)
🟢 Google Analytics 4 (только на чтение)

------------

Недавний пост-введение

Моя статья про MCP сервера в общем

------------

Этот пост коротко про Tick Tick MCP

TickTickэто мой таск трекер. Типо ToDoist

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

Первый MCP, с которого я начал свое изучение этой темы — Tick Tick MCP
Было интересно сделать себе мини ассистента

Как это работает

У меня есть чат в Claude Desktop, в контекст которого вгружена роль Claude в этом диалоге

Затем в этот чат я пишу, что я хочу, Claude сам понимает, хочу ли я обратиться к TickTick или просто спрашиваю что-то. Если из контекста он понимает, что нужно использовать TickTick, то он вызывает ту функцию, которую примерно определил

Что умеет мой MCP TickTick

  1. Ставить задачи, можно даже на конкретное время

  2. Удалять задачи, переносить задачи

  3. Добавлять описание задачам

  4. Создавать / удалять проекты, группировать задачи по проектам

В среднем, каждый MCP умеет делать то, что в нем написали. И то, насколько богатое API есть у сервиса, к которому будет подключен наш MCP.

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

Какие основные кейсы при работе с TickTick MCP есть у меня

  1. Почти каждую неделю я планирую в воскресенье вечером. Этот процесс у меня в основном происходит внутри ChatGPT, чтобы он был в контексте моих планов

  2. Затем, я закидываю получившийся план в Claude, и прошу поставить мне эти задачи на неделю через TickTick, например, через такой промпт

    Вот мой список задач на неделю.
    К каждой задаче поставь Start Date и End Date в течении следующих 7 дней, учитывая их приоритет.
    Выполнение каждой задачи в этом списке в среднем должно занимать не больше 3 часов.
    После каждой задачи ставь буфер в 40 минут. Для каждой задачи можешь примерно добавить Definition of Done
    Учти, что сейчас я живу в Бангкоке, работаю в среднем с 12 дня до 10 вечера. Суббота и Воскресенье -- не нагружай меня больше чем на 4 часа работы
    Старайся не допускать накладывания задач на уже существующие задачи

    Сначала напиши список и скинь в чат, а затем, после моего аппрува, добавь в TickTick

Это самый частый кейс ⤴️

Иногда закидываю в него разовые задачи

Например, я в Spotify увидел, что недалеко от меня через 2 месяца будет концерт. Я скинул скрин в Claude и попросил, чтобы он собрал инфу о билетах и поставил напоминалку через пару недель

Он задействовал свой deep research и все собрал в задачу. Я потом просто перейду по ссылке и куплю

Или, например.

Мне нужно купить новые кроссовки в диапазоне 200$, скорее всего найк

Поставь это в задачи, и перед этим проанализируй их модельный ряд, сравни с NB, PUMA и Adidas. Выбери топ 3 под мой запрос -- бег по городу, 5-6км в среднем. А затем глянь, есть ли они в Бангкоке

И оформи в задачу, чтобы я через неделю сгонял в магазин

---------

Пока на этом все

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

Вот тут можно посмотреть огромный набор MCP серверов

А вот тут в более удобном интерфейсе

o((>ω< ))o

Теги:
Рейтинг0
Комментарии0

Как настроить работу Grafana с Zabbix

Собрали подробный гайд для начинающих о Grafana и Zabbix — эффективном комбо для контроля IT-инфраструктуры. Zabbix выступает инструментом для сбора данных, контроля состояния систем и приложений. Grafana же обеспечивает широкие возможности визуализации.

Почему Grafana и Zabbix полезно использовать вместе:

  • Grafana отображает данные, которые поступают из Zabbix — отсюда оперативное обнаружение проблем;

  • интеграция позволяет создавать кастомизированные дашборды и графики, адаптированные под потребности конкретных команд или проектов, а также упрощает работу с данными и оптимизирует процесс мониторинга;

  • можно настроить систему оповещений в Grafana и оперативно реагировать на проблемы;

  • объединение мониторинга в единой платформе дает целостное представление об IT-инфраструктуре. 

В базе знаний Облака Рег.ру читайте о подготовке к совместной работе Grafana + Zabbix и смотрите подробную инструкцию по настройке инструментов.

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

Мое новое увлечение — завожу себе MCP сервера в Claude

Немного технический пост, но если я его не напишу в таком виде тут, то и в большую легкую статью в будущем он не превратится
Немного технический пост, но если я его не напишу в таком виде тут, то и в большую легкую статью в будущем он не превратится

Ранее писал про MCP сервера на хабре

И вот уже как два месяца пользуюсь этим сам

Если супер просто, то вот что такое MCP сервера внутри Claude Desktop

Прослойка с кодом, которая связывает клиент, например Claude Desktop, и сервис на той стороне

Связывает таким способом, что я могу человеческим языком писать в чат Claude, а эта прослойка сама понимает, какую функцию нужно вызвать

Есть официальные прослойки, которые пишут сами компании. А есть те, которые написаны энтузиастами. К одному MCP серверу, нужному мне, я тоже приложил руку, а точнее форк

Вот тут можно посмотреть набор серверов, но это не полный список

Пока что технически установить и подключить эти сервера не так просто, хотя Anthropic, создатели протокола, постоянно думают над упрощением процесса установки и подключения

Вот какие MCP сервера подключены у меня

🟢 Notion (на чтение и на запись)
🟢 GitHub (на чтение и на запись)
🟢 TickTick — мой таск трекер (на чтение и на запись)
🟢 Google Analytics 4 (только на чтение)

Какие сценарии использования есть у меня

MCP Server TickTick — мой сервис для задач

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

Например,

Поставь мне вот эти 10 задач на неделю, к каждой напиши Definition of Done и выстави время в течении недели, когда эту задачу лучше сделать, учти зависимости с другими задачами

Или

Передвинь задачи из этого проекта на день вперед, я не успеваю сегодня их сделать

А что у меня сегодня запланировано

В общем, как будто через ассистента задачами управляете

Дальше идет Notion — моя база знаний и хранение всего подряд

Claude через Notion MCP знает все файлы, к которым я дал ему доступ. Может создавать там сложные таблицы и контент, который я его прошу
В Notion у него есть доступы к моей таблице управления UTM ссылками, финансовому дашборду и бизнес дашборду.

Во все эти места у Claude есть доступ, и все это он умеет заполнять, пока я просто ему наговариваю, что хочу

Затем — Google Analytics

К моему продукту, гайду по ChatGPT, подключеные две аналитики. Яндекс и Гугл. И вот в Google Analytics мой Claude умеет смотреть.

Может приносить мне инсайты недели, какие источники лучше работают, по каким источникам лучше / хуже удержание и возвращаемость

И последний в списке, но не по значимости — GitHub

Через MCP GitHub я улучшаю мои MCP сервера — если понимаю, что их можно улучшить. Claude сам мне может подсказать, что текущая конфигурация MCP сервера ему не нравится, и предлагает улучшения. Мы с ним делаем форк существующего MCP сервера и улучшаем

Плюс все мои сайты могу создавать напрямую из Claude -> GitHub

Это был краткий экскурс в MCP сервера, надеюсь в течении пары дней я смогу упаковать это в подробный пост 🧑‍💻

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии2

Запускайте контейнерные приложения в облаке с Evolution Container Apps 💭

❓ Что за сервис? Evolution Container Apps позволяет запускать контейнерные приложения в облаке, причем для этого не нужно разбираться в Kubernetes или развертывать виртуальные машины. Запуск проиcходит на базе Docker-образов.

🖥 Особенности и преимущества. Возможности сервиса применимы для любого стека — контейнеры могут использовать любую среду выполнения и любой язык программирования. В зависимости от нагрузки экземпляры контейнеров создаются или удаляются автоматически. Не нужно настраивать кластеры Kubernetes: достаточно загрузить Docker-образы в реестр и создать контейнеры в личном кабинете. А еще у Evolution Container Apps есть free tier: ежемесячный объем бесплатных ресурсов — 480 ГБ RAM и 120 vCPU, запускать небольшие приложения можно без оплаты.

👨‍💻 Кому будет полезно. Всем, кто использует Docker и хочет облегчить развертывание и масштабирование:

  • Разработчикам и DevOps-инженерам, чтобы быстро тестировать и запускать приложения.

  • Небольшим компаниям и стартапам, которые хотят сэкономить на инфраструктуре и попробовать бесплатные возможности Evolution Container Apps.

  • Большим проектам с микросервисной архитектурой, чтобы облегчить оркестрацию, развертывание сложных приложений за счет контейнеров sidecar и init.

Хотите узнать больше о сервисе? Смотрите запись доклада с GoCloud 2025, где мы рассказали, как сохранить данные в S3 при работе с Evolution Container Apps. А еще сохраняйте пошаговый туториал, как запустить облачное приложение с Evolution Container Apps, без Kubernetes и развертывания ВМ.

Теги:
Рейтинг0
Комментарии0

SRE: когда надёжность становится дорогой ошибкой?

Поговорим об этом 9 июля, в 17:00 МСК на заключительной встрече в рамках проекта по FinOps.

Разберём кейс — как не допустить избыточной работы SRE, и обсудим:

  • как гонка за 100% uptime съедает бюджет;

  • почему стремление к 100% аптайму может навредить бизнесу;

  • как SRE помогает найти баланс между стабильностью и развитием.

Спикер: Кирилл Борисов, SRE-инженер в VK.

Занять место и получить ссылку на вебинар — в боте-помощнике.

Теги:
Рейтинг0
Комментарии0

Я внедрил скрам и не могу закончить ремонт на балконе.

Начинал всё по уму: разбил эпик на задачи, расставил приоритеты. Какие-то оценил сам, по другим — созвал консилиум. Привлек электрика: в команде не было экспертизы, хотя сын уверенно заявил, что справится. Оставим это на его совести — еще вчера он пытался вставить батарейку в игрушку вверх ногами, но делал это с таким выражением лица, что потенциал сеньора виден невооружённым глазом.

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

Поначалу шло бодро: за первый месяц 30% задач закрыто — утепление, 3 из 4 стен покрашены. Но как водится, наступил кризис ресурсов - внезапно вышел Kingdom Come: Deliverance II и съел все капасити ведущего разработчика. Прогресс застопорился.

Ретроспективы с женой проходят регулярно: я зажигаю команду речами о важности коммитмента, о наших ценностях и цели. Но стена всё еще не покрашена.

Дополнительные таски множатся: надо помыть окна по всей квартире, разобраться с дверцей шкафа, которая теперь открывается строго по фазе луны. Думаю, пора внедрять SAFe — горизонт проектов растёт.

P.S. Прогресса по основной задаче нет, но радует, что бизнес пока не планирует резать косты.

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

Контур проводит исследование о том, как живёт .NET-сообщество в России. Анкета активна до 15 июля.

Вопросов чуть больше 20, но большинство из них закрытые, так что много времени не займет. Мы не спрашиваем ваши персональные данные и зарплатные вилки. Мы хотим узнать, как C# разработчики обмениваются знаниями и какие выбирают инструменты для развития.

Об итогах напишем на Хабре.

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