Kodazm

Пишем хештейбл с дженериками

Перевод статьи “Go generics draft design: building a hashtable”.

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

MVVM для iOS с Combine и SwiftUI

Разработка под iOS постоянно развивается. Сравнительно недавно появился Swift. Разработчики пришли к выводу, что для сложных приложений обычной MVC архитектуры недостаточно. Разработка через storyboard не настолько гибкая, как хотелось бы. Со временем, пришли к VIPER - одной из вариаций чистой архитектуры.

Дебаг для Alamofire запросов

Alamofire - библиотека, для работы с HTTP написанная на свифте. Она упрощает жизнь разработчикам в разы.

iOS Нотификации. Подписка и рассылка

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

Нотификации в приложении генерируются из-за событий в самом приложении (например, по таймеру) или по сообщению с сервера. Первые называются локальными, а вторые – пуш-нотификациями.

Core Data

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

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

GopherCon Russia 2020

GopherCon Russia 2020 все ближе. Прошлая кнфа была просто шикарная, эта будет не хуже.

В этом году GopherCon Russia в Москве пройдет 28 марта. Обещают очень много гоферов(>= 800). Все это будет проходить один день, в 3 потока. Куча общения, стенды лучших кампаний и грандиозное автепати. В этом году приедет Dave Cheney! Юху! Ещу будут Mark Bates, Елена Морозова, Elias Naur и много других.

Инлайнинг defer

Перевод “Inlined defers in Go”.

defer в Go позволяет запланировать вызов функции перед выходом из основной функции. Это не обязательно должна быть одна функция - можно запланировать вызов нескольких функций. Как правило, defer используется для очистки ресурсов, завершения задач и тд. Такие запланированные функции хорошо использовать для обслуживания. Например, с помощью defer мы точно не забудем закрыть файл.

Пишем свой BitTorrent клиент на Go

Перевод “Building a BitTorrent client from the ground up in Go

Что происходит с момента визита на thepiratebay и появлением mp3 файла на вашем компьютере? В этом посте мы реализуем BitTorrent протокол на достаточном для скачивания образа Debian уровне. Можете сразу посмотреть исходный код и пропустить все подробные объяснения. Можете начинать с исходного кода и потом переходить к подробным объяснениям.

Безопасное использование unsafe

Перевод “Safe use of unsafe.Pointer

С помощью пакета unsafe можно делать множество интересных хаков без оглядки на систему типов Go. Он дает доступ к низкоуровневому АПИ почти как в C. Но использование unsafe - это легкий способ выстрелить себе в ногу, поэтому нужно соблюдать определенные правила. При написании такого кода очень легко совершить ошибку.

В этой статье рассмотрим инструменты, с помощью которых можно проверять валидность использования unsafe.Pointer в ваших Go программах. Если у вас нет опыта использования пакета unsafe, то я рекомендую почитать мою прошлую статью.

Внедрение зависимостей с Fx

Перевод статьи “Simple dependency injection in Go with Fx

В Uber очень легко создавать новые приложения. Немалую роль в этом играет Fx - удобная библиотека для внедрения зависимостей. В статье я кратко опишу проблему внедрения зависимостей, как Fx справляется с этой проблемой и покажу пример приложения, которое использует преймущества Fx.