https://www.youtube.com/watch?v=kndvbzIRI5I Второй выпуск из серии по Lua. В этот раз речь про написание собственных команд и автокоманд.
YouTube
Автоматизация с NeoVim: запуск внешних утилит | avito.code
Привет! Это новый выпуск avito.code. Здесь опытные инженеры Авито делятся знаниями и рассказывают про свои рабочие инструменты.
Антон Губарев, платформенный инженер в Platform as a Service, продолжит рассказывать про возможности автоматизации в NeoVim.…
Антон Губарев, платформенный инженер в Platform as a Service, продолжит рассказывать про возможности автоматизации в NeoVim.…
Я стал проще относится к названиям на русском 🤔 https://habr.com/ru/news/t/719194/#comment_25273434
Хабр
«Росэнергоатом» начал тестировать российские ПК «Бобёр» на базе процессора «Байкал-М»
Концерн «Росэнергоатом» (входит в электроэнергетический дивизион Госкорпорации «Росатом») начал тестировать российские ПК производства Delta Computers, а именно решение « Бобёр » на базе процессора «...
https://www.youtube.com/watch?v=R3ti2N5Llb0 Третье и заключительное видео про настройку NeoVim. В этот раз речь идет о способе добавления/удаления тегов у структур (в качестве демонстрационного примера, это для тех кто сразу пойдет писать что такое уже есть в любой IDE, в vim-go это тоже есть). Основной материал про работу с tree-sitter, с помощью которого можно делать с кодом много интересного.
YouTube
Автоматизация с NeoVim: Treesitter или теги в GO | avito.code
Привет! Это новый выпуск avito.code. Здесь опытные инженеры Авито делятся знаниями и рассказывают про свои рабочие инструменты.
Антон Губарев, платформенный инженер в Platform as a Service, расскажет, как работать с Treesitter — утилитой для парсинга кода.…
Антон Губарев, платформенный инженер в Platform as a Service, расскажет, как работать с Treesitter — утилитой для парсинга кода.…
“Этот ваш кубернетес” стал настолько сложным, что его уже не обновляют. Гораздо проще и дешевле поднять новый кластер и перенести туда все что есть в старом. История падения reddit https://www.reddit.com/r/RedditEng/comments/11xx5o0/you_broke_reddit_the_piday_outage/
Reddit
From the RedditEng community on Reddit
Explore this post and more from the RedditEng community
Консольный браузер https://github.com/fathyb/carbonyl С одной стороны не очень понятно для чего, но с другой текст он отображает более чем читабельно. А это значит что можно гуглить не отрываясь от коноли. Медиа контент я бы предпочел все же смотреть как и всегда. Посмотрим как будет развиваться дальше.
GitHub
GitHub - fathyb/carbonyl: Chromium running inside your terminal
Chromium running inside your terminal. Contribute to fathyb/carbonyl development by creating an account on GitHub.
Годная сравнительная таблица golang библиотек для моков https://gist.github.com/maratori/8772fe158ff705ca543a0620863977c2
Gist
Comparison of golang mocking libraries
Comparison of golang mocking libraries. GitHub Gist: instantly share code, notes, and snippets.
https://github.com/bats-core/bats-core отличная утилита для небольшого количества e2e тестов с минимальным количеством приседаний. Написано на shell, а значит что для запуска ничего особенного не нужно. Нашел пример использования в одном из CNCF проектах https://github.com/open-policy-agent/conftest/blob/master/acceptance.bats
Очень удобно чтобы запустить бинарь и проверить код ответа или сделать http/grpc запрос и не возиться с либами на go/python/etc.
Очень удобно чтобы запустить бинарь и проверить код ответа или сделать http/grpc запрос и не возиться с либами на go/python/etc.
GitHub
GitHub - bats-core/bats-core: Bash Automated Testing System
Bash Automated Testing System. Contribute to bats-core/bats-core development by creating an account on GitHub.
Интересное нововведение обсуждается для go 1.22 https://github.com/golang/go/wiki/LoopvarExperiment Исправление старой проблемы. Ну как проблемы. Особенности, которая на самом деле порождала частые ошибки. Даже в FAQ вынесли https://go.dev/doc/faq#closures_and_goroutines. Приходилось делать в циклах костыли вроде i:=i.
Пока что возможность доступна через переменную окружения, так как разработчики не уверены к каким последствиям это может привести. Но шанс появления этого в будущих версиях не нулевой.
Пока что возможность доступна через переменную окружения, так как разработчики не уверены к каким последствиям это может привести. Но шанс появления этого в будущих версиях не нулевой.
Open Policy Agent https://www.openpolicyagent.org/ незаслуженно мало освещен в интернетах. Очень сложно найти истории его внедрений (хотя они есть). Это дипломированный проект CNCF, который уже имеет множество интеграций. Мы взяли его основу для реализации межсервисной авторизации. И вот в ноябре еду с докладом на Highload++ https://highload.ru/moscow/2023/abstracts/10743
Содержание доклада это проект, который я проектировал и лидил в текущей компании весь последний год. Разработанный с нуля и внедренный в существующий service mesh с ~2500 сервисами, и который претерпел различные изменения и продолжает активно дорабатываться.
По пути получено огромное количество опыта. Тут точно есть о чем рассказать.
Основной интерес может представлять борьба с latency, валидация политик (как случайно не закрыть существующие связи), и как не заставлять пользователей учить rego и еще много другого потенциально полезного, что можно взять за идею или основу для своих решений.
Содержание доклада это проект, который я проектировал и лидил в текущей компании весь последний год. Разработанный с нуля и внедренный в существующий service mesh с ~2500 сервисами, и который претерпел различные изменения и продолжает активно дорабатываться.
По пути получено огромное количество опыта. Тут точно есть о чем рассказать.
Основной интерес может представлять борьба с latency, валидация политик (как случайно не закрыть существующие связи), и как не заставлять пользователей учить rego и еще много другого потенциально полезного, что можно взять за идею или основу для своих решений.
В этот четверг буду с докладом на онлайн митапе. Расскажу про service mesh, как он устроен в Авито, и про межсервисную авторизацию как пример одной из возможностей меша. Конечно за менее чем полчаса сложно рассказать обо всем, что считаешь нужным и важным. Доклад будет полезен в первую тем, кто в процессе погружения в эту тему Однако, всегда можно задавать доп вопросы разной сложности на самом мероприятии или в коментах здесь. Постараюсь ответить всем.
Расписание и регистрация по ссылкам ниже.
👉 Регистрация на онлайн https://avitotech.timepad.ru/event/2620083/
👉 Регистрация на оффлайн https://avitotech.timepad.ru/event/2619816/
Расписание и регистрация по ссылкам ниже.
👉 Регистрация на онлайн https://avitotech.timepad.ru/event/2620083/
👉 Регистрация на оффлайн https://avitotech.timepad.ru/event/2619816/
Алгоритмы такая штука, которая требует регулярности, иначе навык начинает теряться и забываться. Ничего удивительного, не так часто оно бывает нужно, и сильно зависит от специфики решаемых задач. Но! Удачно примененное знание в нужны момент, вероятно поможет решить задачу, которую другие не смогли, или же причинить пользу, которую смогут оценить другие. Поэтому стараюсь время от времени алго все же тренить.
Для этого использую восновном два источника, которые считаю годными и надеюсь что кому-то еще они окажутся полезными (буду признателен за рекомендации других материалов).
🔹”Грокаем алгоритмы” от Адитья Бхаргава. Коротко и понятно об основном.
🔹”Алгоритмы. Теория и практическое применение” от Стивенс Род. Использую как справочник, когда другие способы не помогли или не достаточны.
Сами задачки беру конечно же с leetcode. Раньше сидел на платном аккаунте, но профита от него не получил. Премиум полезен больше для подготовки к собесам за рубежом. Для повседневного тренинга подойдет бесплатный.
Пробовал ходить на курс от ОТУС. Но там препод уже с первых вводных занятий ушел глубоко в математику. Я для себя не нашел применения такой глубины изучения.
Ну и конечно куда же без коллег, среди которых обязательно найдутся спецы. Поделюсь одним таким из своей компании. Алексей Ивасюта ведет канал https://news.1rj.ru/str/algorithmics_cl, где подробно разбирает решение задачек с собесов. Ведь алгоритмы давно превратились в популярный инструмент проверки кандидатов (хорошо это или плохо тема отдельного разговора), и если собиратесь походить за оферами, то точно знания стоит подтянуть или освежить.
Для этого использую восновном два источника, которые считаю годными и надеюсь что кому-то еще они окажутся полезными (буду признателен за рекомендации других материалов).
🔹”Грокаем алгоритмы” от Адитья Бхаргава. Коротко и понятно об основном.
🔹”Алгоритмы. Теория и практическое применение” от Стивенс Род. Использую как справочник, когда другие способы не помогли или не достаточны.
Сами задачки беру конечно же с leetcode. Раньше сидел на платном аккаунте, но профита от него не получил. Премиум полезен больше для подготовки к собесам за рубежом. Для повседневного тренинга подойдет бесплатный.
Пробовал ходить на курс от ОТУС. Но там препод уже с первых вводных занятий ушел глубоко в математику. Я для себя не нашел применения такой глубины изучения.
Ну и конечно куда же без коллег, среди которых обязательно найдутся спецы. Поделюсь одним таким из своей компании. Алексей Ивасюта ведет канал https://news.1rj.ru/str/algorithmics_cl, где подробно разбирает решение задачек с собесов. Ведь алгоритмы давно превратились в популярный инструмент проверки кандидатов (хорошо это или плохо тема отдельного разговора), и если собиратесь походить за оферами, то точно знания стоит подтянуть или освежить.
👍5
Сети для самых маленьких https://linkmeup.ru/sdsm/ Этот источник знаний поможет понять магию, которая происходит на самых низких уровнях, по которым летают наши любимые HTTP запросы. Раньше я думал "а зачем оно мне надо если я не сисадмин и сетевой инженер". Вобщем-то да. Однако, даже занимаясь продуктовой разработкой, некоторые вещи мог делать иначе. Когда имеешь дело с go, то такие ситуации случаются чаще. Помимо всего прочего, даже банальное пониманые работы NAT помогает организовать себе удобное рабочее пространство для, например, работы с веб хуками. Очень рекомендую этот мануал как первое приближение к теме. Особенно если подумываете о смене направления работы в сторону инфраструктуры.
Второй по важности пласт я бы назвал TCP/IP. Когда занялся платформенной разработкой и коснулся service mesh, то осознал масштаб упущенных знаний. По этой теме есть два на мой взгляд наиболее предпочтительных источника
🔹Таненбаум. Компьютерные сети
🔹Олиферы. Компьютерные сети (учебник в российских ВУЗах)
Я себе второй даже приобрел в бумажном виде и использую как справочник. Без этих знаний понять что происходит в современных инфраструктурных инструментах будет крайне сложно.
Второй по важности пласт я бы назвал TCP/IP. Когда занялся платформенной разработкой и коснулся service mesh, то осознал масштаб упущенных знаний. По этой теме есть два на мой взгляд наиболее предпочтительных источника
🔹Таненбаум. Компьютерные сети
🔹Олиферы. Компьютерные сети (учебник в российских ВУЗах)
Я себе второй даже приобрел в бумажном виде и использую как справочник. Без этих знаний понять что происходит в современных инфраструктурных инструментах будет крайне сложно.
👍11🔥1
Нашел полезную тулзовину для любителей бОльшую часть операций с git проводить в консоли https://github.com/wfxr/forgit. Основана на fzf. Может быть полезна тем, что позвляет выполнять простые действия быстрее. Например просмотр лога и поиск по нему, checkout на комит или ветку, работы по stash и прочее. Правда я себе уже успел напилить немного хелперовhttps://github.com/antgubarev/dotfiles/blob/master/.zsh/functions/git.sh до того как наткнулся на такую штуку.
👍7🔥1🥰1
Довелось тут потрогать grpc-gateway https://grpc-ecosystem.github.io/grpc-gateway/ и оценить в работе на реальной задаче. Суть этой штуки в том, что она транслирует REST запросы в gRPC. То есть вы пишите protobuf а она генерирует вам HTTP сервис.
Для чего это может быть нужно? Например, если ваше приложение состоит из нескольких компонентов, которые должны общаться, и вам не хочется возиться с REST, ведь есть же gRPC с кодогенерацией. Но при этом один из компонентов должен таки REST предоставлять скажем для фронтента. GRPC-gateway поможет избавить от двойной работы.
Как это устроено?
Сначала вы описываете какой-то сервис в protobuf
Затем запускаете генератор кода
Получается несколько файликов, которые содержат http сервис с хэндлерами, которые могут превращать ваши HTTP запросы в gRPC.
Далее используете этот сгенерированный код
Готово!
Тут же рядом можно нагенерить openAPI схему. REST реализован практически бесплатно. Приколы конечно есть свои у продукта, куда же без них, и куда стремиться тоже, но все равно это огромная польза и экономия времени.
В сочетании с kube generator можно еще
👉 Из гошной структуры сгенерить protobuf файлы
👉 Из гошной структуры генерить клиенты для CRD
👉 И даже сами CRD манифесты
То есть если один из компонентов приложения это кубовый контроллер, то вообще сказка. Описываем нашу апишку в структурах и генерим из нее вообще все. Ну почти, если не считать что куборгенератор может делать пока что только proto2 синтакс и надо все же сам сервис описать, но это все прям мелочи.
Нашел даже реальный пример - Argo продукты, которые используют всю эту машинерию, argo workflow и argocd точно. Так что в проде это используется. Рекомендую присмотреться подробнее, мне зашло.
Для чего это может быть нужно? Например, если ваше приложение состоит из нескольких компонентов, которые должны общаться, и вам не хочется возиться с REST, ведь есть же gRPC с кодогенерацией. Но при этом один из компонентов должен таки REST предоставлять скажем для фронтента. GRPC-gateway поможет избавить от двойной работы.
Как это устроено?
Сначала вы описываете какой-то сервис в protobuf
syntax = "proto3";
package your.service.v1;
option go_package = "github.com/yourorg/yourprotos/gen/go/your/service/v1";
message StringMessage {
string value = 1;
}
service YourService {
rpc Echo(StringMessage) returns (StringMessage) {}
}
Затем запускаете генератор кода
protoc -I . \
--go_out ./gen/go/ --go_opt paths=source_relative \
--go-grpc_out ./gen/go/ --go-grpc_opt paths=source_relative \
your/service/v1/your_service.proto
Получается несколько файликов, которые содержат http сервис с хэндлерами, которые могут превращать ваши HTTP запросы в gRPC.
Далее используете этот сгенерированный код
mux := runtime.NewServeMux()
opts := []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())}
gw.RegisterYourServiceHandlerFromEndpoint(ctx, mux, *grpcServerEndpoint, opts)
http.ListenAndServe(":8081", mux)
Готово!
Тут же рядом можно нагенерить openAPI схему. REST реализован практически бесплатно. Приколы конечно есть свои у продукта, куда же без них, и куда стремиться тоже, но все равно это огромная польза и экономия времени.
В сочетании с kube generator можно еще
👉 Из гошной структуры сгенерить protobuf файлы
👉 Из гошной структуры генерить клиенты для CRD
👉 И даже сами CRD манифесты
То есть если один из компонентов приложения это кубовый контроллер, то вообще сказка. Описываем нашу апишку в структурах и генерим из нее вообще все. Ну почти, если не считать что куборгенератор может делать пока что только proto2 синтакс и надо все же сам сервис описать, но это все прям мелочи.
Нашел даже реальный пример - Argo продукты, которые используют всю эту машинерию, argo workflow и argocd точно. Так что в проде это используется. Рекомендую присмотреться подробнее, мне зашло.
👍12❤1
Василий Романов выложил свой курс по Golang бесплатно в качестве новогоднего подарка. https://stepik.org/course/187490/promo
Помню как когда-то осваивал гошку по его курсам. Прекрасная подача по принципу коротко и по делу (только такое мне и заходит). А тут еще и бесплатно. Крайне рекомендую.
Помню как когда-то осваивал гошку по его курсам. Прекрасная подача по принципу коротко и по делу (только такое мне и заходит). А тут еще и бесплатно. Крайне рекомендую.
🔥19👍1💩1
Я представляю вам видезапись доклада с Highload++ 2023 https://www.youtube.com/watch?v=yyrAH7nl7RM о крупном и интересном проекте межсеврисной авторизации. Я был лидом и основным разработчиком этого проекта с самого начала и продолжаю работать над ним до сих пор. В течение 30 минут я расскажу о всех важных аспектах проекта, но, конечно, за это время невозможно охватить все детали. Я сосредоточусь на самом важном.
Этот проект не только технический и связан с борьбой за миллисекунды. Интеграция в работающие сервисы - это настоящее испытание, не говоря уже об интеграции в головы пользователей. В целом проект оказался успешным, хотя и не без ошибок. Я уверен, что те, кто стоит перед подобной задачей, смогут извлечь из него полезные уроки.
Этот проект не только технический и связан с борьбой за миллисекунды. Интеграция в работающие сервисы - это настоящее испытание, не говоря уже об интеграции в головы пользователей. В целом проект оказался успешным, хотя и не без ошибок. Я уверен, что те, кто стоит перед подобной задачей, смогут извлечь из него полезные уроки.
🔥9
В продолжение темы изучающих гошку (или углубляющихся), я мог бы дополнительно порекомендовать Go101 https://go101.org/article/101.html. Как оказывается, не все видели или знают об этом материале. Читал по диагонали и останавливался только на своих пробелах. Инженеры самых разных уровней смогут для себя найти что-то новое.
👍10❤2💩1
Продолжаю делиться накопившимися полезными источниками информации. На этот раз еще один достойный труд (и даже на русском) на тему проектирования API. Автор делает упор на API-first подход частенько, и можно к этому подходу относиться по-разному, но это не отменяет полезности остального материла. https://twirl.github.io/The-API-Book/API.ru.html
👍7🔥4
Еще один инструмент для работы с внутренними (и не только) TLS сертами. Можно использовать для реализации CA куба или автоматизированной выдачи сертификатов для mutual TLS, пользователеям и прочего. https://github.com/smallstep/certificates
GitHub
GitHub - smallstep/certificates: 🛡️ A private certificate authority (X.509 & SSH) & ACME server for secure automated certificate…
🛡️ A private certificate authority (X.509 & SSH) & ACME server for secure automated certificate management, so you can use TLS everywhere & SSO for SSH. - smallstep/certificates
Отличная книжка для желающих получить базовые или первоначальные знания в ИИ и тоже быть на хайпе и больше понимать. Много положительных отзывов от коллег и знакомых.
👍6👎1