
Sign up to save your podcasts
Or


Проект loon
Не проследили за балансом микрофонов, поэтому Боря в этом выпуске звучал тише, чем обычно. Приносим извенения за неудобства.
В подкасте подняли вопрос о сообщениях об ошибках в API.
Этот документ предлагает унифицированное решение по форматированию (схеме) ответа проблемы/ошибки для API-сервисов. Несмотря на то, что документ достаточно свежий (весна 2016) мы едва ли обнаружили для себя удобное решение, которое одновременно будет удобно и для клиента API.
RFC предлагает дополнительный Content-Type: application/problem+json. Частичное применение некоторых идей мы нашли в API DHL v4
Обсудили применимость использования Content-Language для последующей локализации. В большинстве наших проектов мы используем английский.
Обсудили предложение RFC по использованию в качестве кодов ошибок URI и насколько это удобно использовать клиенту.
Рассказали схему ошибки, которую мы используем в своих проектах.
Встраиваемая key-value база данных. Чем-то напоминает SQLite за исключением того, что это просто key-value. Всего <3K LOC. Не поддерживается более, но стабильна: новых фич автор добавлять не планирует. Отлично подходит для интенсивных чтений. Использует lock'и.
В Pharo всего 6 ключевых слов.
Поговорили о:
Подкасть чуть более чем полностью о Go
Обсудили два способа инжектирования зависимостей в хендлерах:
Много говорили о базе данных в роли зависимости.
Опубликовано: 05.03.2020
Теги: Go, сервис-контейнер, зависимости, python, оптимистическое программирование
excelize, упомянутый в прошлом эпизоде удалось за прошедшую неделю применить. В деле показал себя отлично. Не часто заказчик требует обмен данных в XLSX-формате через API. Это был тот редкий случай.
Проходил на coursera курс по алгоритмам от ВШЭ. Среди языков, на которых можно делать submission нет Go, но для мня это неплохой повод попрактиковаться в Python или Rust. Последний мы не используем в проектах, а вот проекты на Python у нас есть. Так вот на каждый язык свои лимиты по рантайму:
Язык программирования
Лимит времени выполенения, сек
C, C++, Rust 1
Java, C# 1.5
Haskell 2
Scala 3
Ruby, JavaScript, Python 5
Несколько неожиданно, что Scala дали такой лимит.
Идея в том, чтобы написать две имплементации и сравнивать выходные значение при одинаковых входных. Чаще применяется для тестирования алгоритмов когда есть медленное, но простое решение и быстрое, но, возможно, с ошибками в реализации. В тестах мы чаще сами придумываем входные данные для тестируемого метода. При стресс-тестировании входные данные генерируются произвольным образом. Стресс-тесты не отменяют необходимости в корнер-кейсах, когда мы тестируем пограничные состояния: отрицательные, одинаковые значение, неверные типы, нулевые значения и т.д.
Графики предварены несколько сомнительной цитатой:
Пожалуй действительно любят из этой тройки Python. JavaScript как раз едва ли любят, поэтому и перетягивает на себя популярность TypeScript, добавивший строгости. А Go - это хороший шаг в сторону упрощения кода и он оппонирует Java, C++, C#, Scala. Go в рейтинге IEEE №1.
На главной популярные и рекомендуемые репозитории. В каждом пакете можно посмотреть зависимости и кто использует этот пакет.
Обсудили также пару пакетов из x/sync:
Коротко обсудили алгоритм зайца и черепахи для поиска петли в связанном списке. Вдохновился на некоторое углубление в тему этим видео (каким бы было аниме о программировании).
Позволяет запускать Go-приложение прямо на процессоре, без операционной системы. Концепция unikernel. Пока поддерживается только их же (f-secure) SoC (Systm-on-Chip) MkII (~150USD). В планах добавить поддержку Raspberry PI Zero (~25USD).
Кстати будет упомянуть книгу Code: The Hidden Language of Computer Hardware and Software by Charles Petzold. Основы изложены лучше, чем вам их дадут в университете.
Просто упомяну библиотеку для чтения и записи XLSX-файлов в Go:
Статья о использовании Python для небольших скриптов. Полностью поддерживаю автора. Среди прочего автор упомянул сложность идентификации версии Go-программы: имеешь дело с бинарным файлом. В Go можно использовать ldflags:
Отличная вводная статья на DigitalOcean про использование go build для модификации значений переменных пакета. Также к недостаткам Go автор отнес отсутсвие REPL, но он есть.
Обсудили популярную библиотеку NLTK, написанную на Python, для решения нашей одной из повседневных задач для определения HTC-кода посылки по её описанию для таможни в США.
From the publisher's feed