backend_podcast

backend_podcast

By Artem OstretsovTechnology
Download on the App Store

backend_podcast episodes

  • ep021 / gitlab runners, Don't touch my code

    - свой ранер (runner) на gitlab и какие проблемы при этом возникли (Docker in Docker, несовместимость конфига `.gitlab-ci.yml`);

    - ушли с shared ранера потому что:
       * нет кеша слоев Docker'а;
       * мало ресурсов;
       * иногда нужно ждать когда выделят ранер).
    - немного про файловую систему Docker'a;
    - тестирование с использованием `docker-compose`;
    - статья ["Don't Touch My Code"][1] о качестве кода в зависимости от ownership'а.

    [1]: https://www.microsoft.com/en-us/research/publication/dont-touch-my-code-examining-the-effects-of-ownership-on-software-quality/

    48 min
  • ep020 / Go, логи, Upwork

    - когда использовать `done` канал в Go;

    - немного про го-рутины и их равноправие;
    - пара предложений по работе на Upwork;
    - хранение логов в time series БД, rsyslog, CloudWatch logs и вообще поиск альтератив ElasticSearch + Graylog;

    37 min
  • ep019 / код-ревью, буферизация, тесты в конкурентной среде

    - [эффект Даннинга — Крюгера][1];

    - немного про код-ревью;
    - возможные ошибки в concurrency коде;
    - буферизация;
    - всегда используйте defer;
    - тестирование в конкурентной среде (race флаг).

    [1]: https://ru.wikipedia.org/wiki/%D0%AD%D1%84%D1%84%D0%B5%D0%BA%D1%82_%D0%94%D0%B0%D0%BD%D0%BD%D0%B8%D0%BD%D0%B3%D0%B0_%E2%80%94_%D0%9A%D1%80%D1%8E%D0%B3%D0%B5%D1%80%D0%B0

    29 min
  • ep018 / Go race condition, TypeScript, Python

    - что такое race condition на примере;

    - пример приложения, в котором мы ушли от go-рутины за счет инфраструктурного решения на базе kubernetes;
    - kubernetes SDK для создания своих типов (`kind`);
    - удобство двух мониторов при разработке frontend web-приложений;
    - первые впечатления от TypeScript'а;
    - [react-testing-library][1];
    - мысли о том, что стоит попробовать Python (Django) для следующего проекта.

    [1]: https://github.com/testing-library/react-testing-library

    40 min
  • ep017 / Матан для продолжающих

    Большинство программистов не используют широко математический аппарат в ежедневной практике.

    Еще раз поговорили об этом после того как я закончил чтение первой главый [A Programmer's Introduction to Mathematics][1].

    Концептуально коснулись проблемы доказательства **существования** и **уникальности** в математическом анализе.

    Компьютерная эра могла начаться на 50-70 лет раньше.
    Этого не произошло из-за того, что для существующих научных открытий не смогли найти приложение в создании вычислительных машин.  

    Бинарный оператор `xor` и его применение.

    Боря порекомендовал также неплохой [YouTube-канал Eddie Woo][2] для тех, кто хочет вспомнить базовые концепции в математике.

    [1]: https://pimbook.org/  
    [2]: https://www.youtube.com/user/misterwootube

    38 min
  • ep016 / SpaceX Demo-2 миссия

    **Концовка эпизода к сожалению не записалась из-за проблем со связью.**


    Поговорили о:
    1) недавнем запуске Dragon компанией SpaceX: миссия Demo-2;
    2) [World's fastest internet speed from a single optical chip][1];
    3) игра по крупному в крупных корпорациях;
    4) структура с единственным полем в `errors` package в Golang.

    [1]: https://www.sciencedaily.com/releases/2020/05/200522095504.htm

    28 min
  • ep015 / cloud computing

    Три модели ведения IT-бизнеса:

    * создание своего одного продукта;
    * саппорт существующего одного продукта;
    * решение текущих бизнес-задач.
       
    Удвоение рынка облачных вычеслений в ближайшие 2-3 года. В рамках этой темы упомянули Game-as-a-service:
    PlayStation Now (Sony), Stadia (Google), xCloud (Microsoft), GameFly (ElectronicArts). Для подобных сервисов
    нужны кластера. Рассматриваю возможный свич в углубление знаний кластерных технологий, например, Kubernetes.

    Коснулись тем языка программирования Go:
    * пустых структур для создания set'а через map `map[string]struct{}`;
    * `io` пакета;
    * поговорили о маленьком пакете [go-gelf][1];
    * и [fsnotify][2].

    [1]: https://github.com/Graylog2/go-gelf
    [2]: https://github.com/fsnotify/fsnotify

    48 min
  • ep014 / embedding интерфейсов в Go

    embedding интерфейсов в Go - возможность встроить один тип в другой.

    Самый частый пример в Go - это mutex'ы. Zero value интерфейса - это `nil`.

    Организация кода в Go-приложении в части интеграции со сторонними сервисами.

    Впечатления о книге ["A Programmer's Introduction to Mathematics"][1].
    Математика, необходимая для Computer Science для тех, кто подзабыл про неё.

    [1]: https://pimbook.org/

    37 min
  • ep013 / MongoDB, BSON, overlay fs

    Пару недель назад в сайд-проекте решил попробовать MongoDB. Несколько поделился первыми ощущениями от MongoDB.

    Коснулись [доклада][1] Айка Саргсяна (Юла) "Крупный проект на одной NoSQL".

    Обсудили общую тему базы данных для стартапа на начальной стадии.

    Коснулись хранения данных в MongoDB, [спецификацию BSON][2], join'ы, мигарции.

    Упомянули отличную книгу [Designing Data-Intensive Applications][3].

    ## Overlay fs

    Неплохая свежая [статья][4] объясняющая как работают docker images на примере overlay fs.

    Немного про организацию наших проектов: gitlab, registry, CI, k8s.

    [1]: https://www.youtube.com/watch?v=ZLOFOxsDJIY
    [2]: http://bsonspec.org/spec.html
    [3]: https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321
    [4]: https://dev.to/napicella/how-are-docker-images-built-a-look-into-the-linux-overlay-file-systems-and-the-oci-specification-175n

    43 min
  • ep012 / конфигурирование Go-приложения

    Поговорили о конфигурировании Go-приложения.

    Касались следующих тем:
    - [12-factor app][1], а конкретно [3ий раздел, посвященный конфигам][2];
    - глобальный контекст - хорошо или плохо; когда глобальный контекст плох;
    - популярные/удобные проекты для конфигурирования:
       - https://github.com/spf13/viper;
       - https://github.com/plaid/go-envvar;
    - простое решение по конфигурированию для небольших проектов - функция, заполняющая структуру со значениями по умолчанию из переменных окружения;
    - [плагин][3] для GoLand для использования `.env`-файла при запуске билда/тестов;
    - тестирование http-хендлеров;
    - table-тестирование в интеграционных тестах;
    - пирамида тестов;

    Также я поделился первым знакомством с couchbase документной БД:
    - важная разница community & enterprise версий;
    - язык запросов N1QL - спинофф ANSI SQL;
    - [сравнение][4] Couchbase и MongoDB

    [1]: https://12factor.net/
    [2]: https://12factor.net/config
    [3]: https://plugins.jetbrains.com/plugin/7861-envfile
    [4]: https://db-engines.com/en/system/Couchbase%3BMongoDB

    36 min

About backend_podcast

From the publisher's feed

Разрабатываем бэкэнды, делимся впечатлениями