Pull to refresh
98
5
Марк Шевченко @markshevchenko

программист

Send message

8. Nix в пилюлях: Универсальные скрипты сборки

Level of difficultyMedium
Reading time6 min
Views739

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

Люка Бруно продолжает свой захватывающий рассказ.

Читать далее
Total votes 6: ↑6 and ↓0+9
Comments0

Вычислительные выражения: Реализуем Delay и Run

Level of difficultyHard
Reading time10 min
Views683

Скотт Влащин продолжает рассказ о вычислительных выражениях в F#. Вычислительные выражения очень похожи на монады из Haskell, но у них есть свои особенности.

Одной из необычных особенностей Haskell являются ленивые (отложенные) вычисления. В F# вычисления энергичные, как и в большинстве других языков, поэтому там нельзя просто так взять и "прервать" вычисление.

Но если очень хочется, то можно. В этой статьей Скотт рассказывает, как сделать ленивые вычислительные выражения в F#.

Читать далее
Total votes 5: ↑5 and ↓0+6
Comments0

7. Nix в пилюлях: Работающая деривация

Level of difficultyMedium
Reading time7 min
Views463

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

В очередной — седьмой — пилюле от Люка Бруно создадим деривацию, которая реально собирает и устанавливает программу в хранилище Nix.

Читать далее
Total votes 4: ↑4 and ↓0+6
Comments0

Вычислительные выражения: Реализуем Combine

Level of difficultyHard
Reading time11 min
Views1K

Вычислительные выражения — поистине неисчерпаемая тема. Мы научились возвращать пустые значения, а теперь нам предстоит разобраться, как возвращать множественные. Скотт Влащин рассказывает, как использовать метод Combine.

Читать далее
Total votes 3: ↑3 and ↓0+4
Comments0

6. Nix в пилюлях: Наша первая деривация

Level of difficultyMedium
Reading time9 min
Views1K

Медленно, но верно мы добрались до шестой пилюли, посвящённой пакетному менеджеру и чистому функциональному языку Nix.

Попробуем создать нашу первую деривацию.

Читать далее
Total votes 6: ↑6 and ↓0+9
Comments0

Вычислительные выражения: Реализуем Zero и Yield

Level of difficultyHard
Reading time10 min
Views1.5K

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

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments0

5. Nix в пилюлях: Функции и импорт

Level of difficultyMedium
Reading time5 min
Views788

Пятая часть в цикле статей Люка Бруно рассказывает о функциях в языке Nix. Оказывается, у них не бывает имени и только один параметр. Как такое может быть?

Читаем статью, разбираемся. Помимо функций, вы также узнаете, как в Nix устроены модули и их импорт.

Читать далее
Total votes 5: ↑4 and ↓1+5
Comments0

Неразрешимые проблемы программирования

Level of difficultyEasy
Reading time8 min
Views13K

Неразрешимые задачи в программировании определены очень строго. Фактически, для каждой такой задачи существует доказательство, что её нельзя решить на машине Тьюринга.

Но это теория. На практике, в нашей жизни есть другие неразрешимые задачи. У таких задач нет формального определения, и очень часто программисты думают, что и проблем то никаких нет. Попробуем разобраться: может быть, действительно, нет?

Читать далее
Total votes 36: ↑34 and ↓2+38
Comments28

Вычислительные выражения: Подробнее про типы-обёртки

Level of difficultyHard
Reading time9 min
Views999

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

Глубже погрузимся в исследование типов-обёрток и узнаем, наконец, почему список тоже может быть обёрткой.

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments2

Вычислительные выражения: Типы-обёртки

Level of difficultyHard
Reading time8 min
Views1.2K

Четвёртая статья из цикла Вычислительные выражения Скотта Влащина. Скотт рассказывает о типах-обёртках и об их глубокой связи с вычислительными выражениями.

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments0

4. Nix в пилюлях: Основы языка

Level of difficultyMedium
Reading time6 min
Views1.2K

Четвёртая часть из цикла статей Люка Бруно, посвящённой пакетному менеджеру и языку программирования Nix.

Здесь мы знакомимся с основами языка.

Читать далее
Total votes 6: ↑6 and ↓0+7
Comments0

3. Nix в пилюлях: Погружаемся в среду

Level of difficultyMedium
Reading time6 min
Views1.5K

Третья статья из цикла Nix в пилюлях. Наконец-то, практика! Разбираемся, что такое окружения и поколения, учимся откатывать изменения, выясняем, как работать с каналами

Читать далее
Total votes 4: ↑4 and ↓0+6
Comments0

Вычислительные выражения: Введение в 'Bind'

Level of difficultyHard
Reading time6 min
Views1.1K

Третья статья из цикла про вычислительные выражения в F#. Продолжаем разбираться с функциями-продолжениями и исследуем метод "Bind".

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments0

Разрабатываем Nix в России

Reading time4 min
Views2.2K

Спринт — особый формат мероприятий, который разработчики Nix и NixOS придумали, чтобы собираться вместе и вместе работать на проектами.

Что-то вроде хакатона, но без элемента соревновательности. Следующий спринт, если всё получится, пройдёт в Казани в августе. Здесь начало истории...

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments6

2. Nix в пилюлях: Установка в вашей системе

Level of difficultyMedium
Reading time5 min
Views2K

Вторая статья из цикла Nix в пилюлях. Устанавливаем Nix в нашу систему, разбираемся и профилями и поколениями, и выясняем, что в Nix есть база данных.

Читать далее
Total votes 10: ↑9 and ↓1+13
Comments4

Вычислительные выражения: Разбираемся с продолжениями

Level of difficultyHard
Reading time10 min
Views1K

Вторая часть из цилка статей про вычислительные выражения в F#. Здесь Скотт Влащин рассказывает про функции-продолжения. Сложная, но очень важная тема.

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments0

1. Nix в пилюлях: Почему вам стоит попробовать Nix

Level of difficultyMedium
Reading time7 min
Views8.6K

Предисловие


В 2014 и 2015 годах Люка Бруно (Luca Bruno aka Lethalman) опубликовал серию постов, описывающих пакетный менеджер Nix, операционную систему NixOS и хранилище Nixpkgs.


Люка назвал свои посты пилюлями (англ. pill — таблетка, пилюля).


Берясь за перевод, я пытался выяснить, нет ли у выражения in pills устойчивого смысла.
Оказалось, что скрытый смысл есть у самого слова Nix.
Это одна из торговых марок перметрина — средства против клещей, которое доступно только в виде мази.
Иными словами, медицинского Никса ни в пилюлях, ни в таблетках не бывает.


С момента публикации, Nix в пилюлях считается классическим введением в Nix. В 2017 году Грэм Кристиансен (Graham Christensen aka grahamc/gchristensen) инициировал работу по переводу серии статей в формат электронной книги.


Актуальную оригинальную версию книги вы найдёте по адресу https://nixos.org/guides/nix-pills/.
Там же доступен вариант в формате EPUB.


В 2024 году Марк Шевченко начал перевод книги на русский язык.
Актуальная версия доступна по адресу https://nix-pills-ru.github.io.


ℹ️ В примерах, команды, которые начинаются с символа "решётка" (#), должны быть запущены с правами пользователя root.

(Адрес статьи на официальном сайте перевода).


Почему вам стоит попробовать Nix


Введение


Добро пожаловать на первую пилюлю из цикла «Nix в пилюлях».
Nix — это чистый функциональный пакетный менеджер и система развёртывания для POSIX-совместимых ОС.

Читать дальше →
Total votes 23: ↑23 and ↓0+24
Comments14

Вычислительные выражения: Введение

Level of difficultyHard
Reading time9 min
Views1.8K

Скотт Влащин — безусловный гуру в мире F#, написавший введение в язык, которое рекомендуют новичкам вместо официального руководства.


Группа энтузиастов давно (и с переменным успехом) пытается перевести руководство Скотта на русский.


Я завершаю перевод цикла, посвящённого одной из самых сакральных тем языка — вычислительным выражениям. Это как монады, только в .NET.


Неизвестно, когда нам удастся запустить полноценный русский сайт, поэтому я попросил у ребят разрешения опубликовать цикл на Хабре.
Материал интересный и хочется им поделиться.


Далее передают слово автору. Перед вами — первая статья цикла.




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


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


Введение


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


С одной стороны, их достаточно легко применять. Любой, кто написал достаточно кода на F# наверняка использовал стандартные конструкции, такие как seq{...} или async{...}.


Но как вы можете создать новую похожую конструкцию? Как они работают за кулисами?

Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments1

Нелояльный, немотивированный

Level of difficultyEasy
Reading time8 min
Views13K

Сотрудники должны быть лояльными и мотивированными — об этом знают все. Даже люди, далёкие от кадров, такие, как я. Насколько я слышал, существуют методы расчёта лояльности. Надеюсь, что они работают. По крайней мере должны.

Потому что мой опыт говорит об обратном.

И в этом я не одинок. Хотите пример? Вот отрывок из вакансии, которую мы обсуждали в чате программистов пару дней назад.

Читать далее
Total votes 49: ↑32 and ↓17+25
Comments28

Как сделать интересный технический доклад

Reading time16 min
Views5K

Если спросить начинающего докладчика, чего он больше всего боится перед выступлением, он, может быть, назовёт дотошного и даже скандального слушателя, или скажет, что самое страшное — это забыть слова.

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

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

Перестать делать скучные доклады
Total votes 8: ↑7 and ↓1+7
Comments0
1

Information

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

Specialization

Backend Developer
Lead
From 450,000 ₽
C#
Rust
Algorithms and data structures