Pull to refresh
16K+
117
Марк Шевченко@markshevchenko

программист

10,9
Rating
100
Subscribers
Habr CareerHabr Career
Send message

0/7. Целая прорва связных списков, чтобы выучить Rust: Введение

Level of difficultyHard
Reading time8 min
Reach and readers6.4K

Начал перевод, видимо, базового руководства по сложным темам в Rust (не считая Растономикона, который вообще про чёрную магию) — Learning Rust With Entirely Too Many Linked Lists.

Надеюсь закончить всё с течение мая. Сегодня — введение. Первая глава — после выходных.

Читать далее

7. Проектирование с помощью типов: Нестроковые типы

Level of difficultyMedium
Reading time4 min
Reach and readers6.1K

Можно ли использовать размеченные объединения с одним вариантом (SCDU, Single Case Descriminated Unions) не только со строками, но и с другими типами? Можно ли накладывать бизнес-ограничения на такие штука, как количество позиций в заказе или дата рождения?

Скотт Влащин делится секретами разработки бизнес-логики на языке с алгебраическими типами. Подробности внутри.

Читать далее

6. Проектирование с помощью типов: Типизированные строки

Level of difficultyMedium
Reading time9 min
Reach and readers5.7K

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

Разберёмся, как это выглядит в языках с алгебраическими типами.

Читать далее

5. Проектирование с помощью типов: Делаем состояние явным

Level of difficultyMedium
Reading time13 min
Reach and readers6.9K

Пятый пост Скотта Влащина посвящён конечным автоматам (они же машины состояний или даже стейт-машины). Функциональные языки хорошо подходят для реализации конечных автоматов, а конечные автоматы хорошо подходят для реализации бизнес-логики.

Попробуем?

Читать далее

4. Проектирование с помощью типов: Исследуем новые концепции

Level of difficultyMedium
Reading time5 min
Reach and readers6.4K

Четвёртый пост из серии Скотта Влащина посвящена предметной области. Как с помощью типов описывать бизнес-правила? Как типы позволяют углубить понимание предметной области?

Узнаем прямо сейчас.

Читать далее

3. Проектирование с помощью типов: Делаем недопустимые состояния непредставимыми

Level of difficultyMedium
Reading time4 min
Reach and readers6.4K

Новая глава из цикла Скотта Влащина. Обсуждаем, как сделать код надёжным с помощью развитых типов из F#.

Читать далее

2. Проектирование с помощью типов: одновариантные типы-объединения

Level of difficultyMedium
Reading time11 min
Reach and readers6.5K

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

Читать далее

Где хранить пароли в NixOS?

Level of difficultyMedium
Reading time10 min
Reach and readers6.9K

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

Читать далее

1. Проектирование с помощью типов: Введение

Level of difficultyMedium
Reading time3 min
Reach and readers5.1K

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

Читать далее

20. Nix в пилюлях: Основные зависимости и хуки

Level of difficultyMedium
Reading time6 min
Reach and readers1.1K

Финальная глава! Люка Бруно рассказывает о секретном оружии Nix — хуках. Их используют, когда больше ничего не помогает, в частности, для кросс-компиляции.

Читать далее

19. Nix в пилюлях: Основы stdenv

Level of difficultyMedium
Reading time5 min
Reach and readers1.1K

Эта глава посвящена деривации stdenv, благодаря которой собирается большинство пакетов из репозитория nixpkgs. Она поддерживает инструментарий GCC, GNU make, autotools и другие распространённые системы сборки.

Читать далее

18. Nix в пилюлях: Пути хранения Nix

Level of difficultyMedium
Reading time5 min
Reach and readers959

Для того, чтобы различать пакеты разных версий, Nix хранит их в каталогах с именами, которые содержат хеш. В главе 18 мы разберёмся, как вычисляется этот хеш для файлов, каталогов и tar-архивов.

Читать далее

17. Nix в пилюлях: Переопределение пакетов nixpkgs

Level of difficultyMedium
Reading time4 min
Reach and readers786

Знакомимся с интересным трюком, который позволяет функциональному языку Nix делать то, то, что в императивных пакетных менеджерах делается с пол-пинка.
У них там, правда, dependency hell, а в Nix всё чинно и благородно.

Читать далее

16. Nix в пилюлях: Параметры nixpkgs

Level of difficultyMedium
Reading time4 min
Reach and readers1.4K

Вы начинаете сборку вашего пакета не на пустом месте. Репозиторий nixpkgs, куда входит ваш пакет, при запуске скрипта сборки передаёт ему параметры. В этой главе мы поговорим о двух основных параметрах: system и config.

Читать далее

15. Nix в пилюлях: Поисковые пути Nix

Level of difficultyMedium
Reading time5 min
Reach and readers1.8K

В Nix для поиска дериваций используется переменная окружения NIX_PATH. Она похожа на PATH, но есть и важные отличия. Разбираемся с тем, как устроен репозиторий nixpkgs.

Читать далее

14. Nix в пилюлях: Паттерн проектирования override (переопределение)

Level of difficultyMedium
Reading time5 min
Reach and readers1.9K

Продолжаем изучать паттерны проектирования, используемые при создании пакетов в Nix. В этой пилюле разберёмся с паттерном override (переопределение).

Читать далее

13. Nix в пилюлях: Паттерн проектирования callPackage

Level of difficultyMedium
Reading time6 min
Reach and readers941

Разбираемся, как работает второй из базовых паттернов Nix — callPackage. Автоматизируем передачу параметров, сокращаем код репозитория.

Читать далее

12. Nix в пилюлях: Репозитории пакетов и паттерн Входные параметры

Level of difficultyMedium
Reading time8 min
Reach and readers3K

Разбираемся в тонкостях разработки пакетов. Изучаем паттерны, которые применяются при создании пакетов и репозиториев в Nix.

Читать далее

История о том, как мы собирали разработчиков Nix в России и… собрали

Level of difficultyEasy
Reading time6 min
Reach and readers4.8K

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

Читать далее

Information

Rating
689-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

Бэкенд разработчик
Ведущий
From 550,000 ₽
Golang
Rust
Алгоритмы и структуры данных
Проектирование архитектуры приложений
F#
Функциональное программирование