Pull to refresh
1
0
Игорь @ZiggiPop

Администратор Linux-серверов, фронтенд-разработчик

Send message

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

Level of difficultyMedium
Reading time6 min
Views8K

Предисловие


В 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 22: ↑22 and ↓0+22
Comments14

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

Level of difficultyMedium
Reading time6 min
Views1.2K

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

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

Из пушек по воробьям. Генерация и решение лабиринта не самым обычным способом

Level of difficultyMedium
Reading time19 min
Views4.7K

На уходящей неделе мне попалась симпатичная, хоть и не новая мини‑серия статей на Дзен‑канале @zdgzdgzdg про процедурную генерацию лабиринта методом «коллапса волновой функции». Пока я читал эти статьи и знакомился с кодом, меня осенило: ведь это же вычисления в комонаде, погружённые в монаду! Я не издеваюсь, действительно, речь идёт о композиции двух паттернов функционального программирования: комонады Zipper, превращающей локальные правила в глобальное состояние, и монады Random, позволяющей генерировать случайные объекты.

И вот, в качестве баловства на выходных, я решил реализовать этот «квантовый» алгоритм генерации лабиринтов на Haskell, используя и комонады и монады, и вообще, ни в чëм себе не отказывая. И хотя язык программирования Haskell нужен не только для извращений, но именно для них он подходит идеально!

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

Автосборка Fsbl, U-Boot, linux kernel и установка debian для arm64 для Zynq Ultrascale zcu106

Level of difficultyMedium
Reading time15 min
Views3.8K

В данной статье описывается способ создания минималистичного образа sd карты c debian arm64 на примере отладочной платы с zynq ultrascale zcu106. Данный способ можно использовать для создания загрузочных образов других устройств с соответствующими изменениями. Битстрим, ядро Linux и dts для удобства разработки размещаются отдельными файлами.

Также описан способ загрузки по сети ядра Linux, dts и корневой файловой системы debian, который позволит сократить время разработки и ресурс карты памяти.

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

Глубже в дебри ФП

Reading time23 min
Views9.7K

Прежде чем начать, зацените эту красоту! Это — игра "жизнь" на языке APL:



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


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


Расчехляйте свои абстрагаторы ...
Total votes 23: ↑22 and ↓1+21
Comments22

Симулятор Графического Монохромного Дисплея на Graphviz

Level of difficultyEasy
Reading time4 min
Views3.3K

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

Проблема в том что у языка Си нет встроенной библиотеки для отрисовки битовых матриц в отдельном окне подобно тому как это есть в Python или C#. Поэтому отлаживают такой код обычно на конечных устройствах.

В этом тексте я написал как можно отлаживать графические дисплеи на DeskTop PC без самого физического дисплея.

Читать далее
Total votes 11: ↑9 and ↓2+7
Comments22

Как создать свой мод для Cyberpunk 2077? Шерстим исходники, Lua, C++ и Python

Reading time16 min
Views7K

Недавно мой коллега @Doctor_IT попросил помочь с его проектом — VR-жилетом, который «проецирует» ощущения урона, которые получает персонаж, на тело игрока. С моей стороны — мод, который будет отправлять данные из Cyberpunk 2077 на сам жилет.

Информации по теме моддинга мало, на русском языке материалов практически нет, а существующие статьи местами устарели — пора это исправить. Если вам интересно, как разработать свой мод для Cyberpunk 2077 и собрать VR-жилет, добро пожаловать под кат.
Читать дальше →
Total votes 50: ↑50 and ↓0+50
Comments10

Блокировки в bash скриптах

Reading time3 min
Views7.5K

Иногда бывает нужно сделать так, чтобы в каждый момент времени работало не больше одного экземпляра вашего bash скрипта. Если на вашей платформе есть команда flock, то это сделать достаточно просто:


#!/bin/bash

LOCK_FILE=/tmp/my-script.lock
LOCK_FD=9

get_lock() {
    # need to use eval here for proper expansion
    eval "exec $LOCK_FD>$LOCK_FILE"
    flock -n $LOCK_FD
}

get_lock || exit

# ...
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments20

Графический интерфейс для bash, делаем работу в командной строке удобнее

Level of difficultyMedium
Reading time3 min
Views17K

Когда пишешь код в IntelliJ IDEA, привыкаешь что везде есть подсказки, везде где можно работает комплишен, всегда можно одним кликом перейти на декларацию метода или на его юсаджи. После этого интерфейс командной строки выглядит как-то бедно. Конечно, он очень хорошо продуман, сделан настолько удобным, насколько это возможно в текстовом UI, но в графическом UI возможностей намного больше. Представляю вам плагин для JetBrains IDE, позволяющий работать в командной строке cо всеми удобствами IDE.

Читать далее
Total votes 31: ↑30 and ↓1+29
Comments29

Почему типы так много значат для программистов?

Reading time13 min
Views26K

Адаптация статьи What do types mean for programmers? (Ville Tirronen)


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


Основное значение слова «Тип»


Что имеют в виду учёные-информатики или программисты, когда используют слово «тип»? В обычном смысле слово «тип» используется в таких предложениях, как «не люблю этот тип людей» или «есть разные типы лыж». Его синонимы включают такие слова, как «вид», «род», «класс», «семейство» и т.п. (забавно, что эти слова в английском языке также являются ключевыми в некоторых языках программирования: kind, sort, class, ...). Мы используем это слово, чтобы выразить мысль, что некоторые вещи отличаются от других, обычно по какому-то фундаментальному признаку. И именно это, я считаю, также объясняет происхождение данного термина в программировании.



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

Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments39

NORVI Arita. Контроллер на ATmega2560

Reading time8 min
Views25K


Сегодня у нас на обзоре долгожданный контроллер NORVI Arita на ATmega2560. Долгожданный он потому, что большинство производителей, на мой взгляд незаслуженно, игнорируют замечательный микроконтроллер ATmega2560, и там где нужно и, самое главное, где не нужно, используют ESP32.

У ATmega2560 нет Wi-Fi, но зато есть «дубовая» 5-вольтовая логика, 4 хардверных Serial-а (на отдельных пинах), 53/69 (!) GPIO, 16 аналоговых входов, 15 портов с ШИМ, 4КБ «честной» EEPROM памяти, 40 мА нагрузочная способность пинов и прочие практически полезные прелести. На этом фоне ESP32 с его десятком рахитичных GPIO смотрится просто каким-то недоразумением.

В умелых руках ATmega2560, в совокупности с сетевым интерфейсом W5100/W5500 и картридером для microSD карт (до 32 ГБ), превращается в самодостаточное устройство с развитым (ничуть не хуже, чем на ESP32) веб-интерфейсом, огромными возможностями по управлению различным оборудованием, поддержкой сложной многослойной логики и коммуникаций с внешним миром по Ethernet, LoRa, nRF24 и т. д. и т. п.

Проблема только одна — на рынке нет Arduino Mega «с человеческим лицом», за редкими исключениями, с одним из которых я и приглашаю вас познакомиться…
Читать дальше →
Total votes 50: ↑28 and ↓22+6
Comments50

Что меняется во фреймах Ethernet при передаче информации от роутера к роутеру?

Level of difficultyMedium
Reading time7 min
Views16K

Давайте обсудим как выглядят фреймы на каждом этапе передачи от клиента к коммутатору, к роутеру, к межсетевому экрану и к серверу и какие поля при этом там меняются.

Что меняется при передаче: MAC или IP?
Total votes 13: ↑12 and ↓1+11
Comments23

Зачем Clojure Flutter

Reading time13 min
Views7.5K

”Если вам нравятся Руби, Свифт, Дарт, Эликсир, Эльм, С++, Питон или даже С, используйте их ради бога. Но выучите Кложур, и выучите его хорошо” — Дядя Боб (твит, а также твиты: 1, 2, 3).

Статей о Clojure написано много, цель этой — дать свое видение некоторых преимуществ языка для кросплатформенной разработки на Flutter. Ориентируюсь в первую очередь на dart-разработчиков, но статья может быть интересна всем, кто работает с Clojure и/или Flutter.

Читать далее
Total votes 16: ↑14 and ↓2+12
Comments17

Экструдер для получения филамента из PET тары

Reading time5 min
Views54K

Всем привет! Цены на филамент в последнее время вообще не радуют. Также особенностью 3D печати является тот факт, что некоторые детали приходится перепечатывать по нескольку раз для достижения желаемых результатов. Процесс разработки и печати детали иногда бывает достаточно итеративным и медитативным )).А что если бы у Вас был безлимитный пластик? Эдакая "супер способность" - человек-филамент? Помогло бы это Вам в Вашем 3D ремесле?

Представляю Вашему вниманию компактный экструдер филамента из PET бутылок!

Читать далее
Total votes 87: ↑84 and ↓3+81
Comments33

Программисты, ходите на собеседования

Reading time9 min
Views72K

Картинка взята из видеоролика с канала «Воинствующие Аметисты»

Около 10 лет я работал системным программистом под Linux. Это модули ядра (kernel space), различные демоны и работа с железом из пространства пользователя (user space), различные загрузчики (u-boot и др.), прошивки контроллеров и многое другое. Даже иной раз случалось пилить web-интерфейс. Но чаще бывало, что приходилось и с паяльником посидеть, да с проектировщиками печатных плат взаимодействовать. Одна из проблем такой работы это то, что достаточно сложно оценить уровень своей компетенции, поскольку одну задачу ты можешь знать очень глубоко, а рядом можешь не знать совсем. Единственный адекватный способ понять куда идти, и какие течения сейчас есть – это ходить на собеседования.

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

В статье будет небольшой конкурс с призами.
Total votes 79: ↑73 and ↓6+67
Comments366

Классы типов, монады

Reading time15 min
Views13K
Темой сегодняшней статьи будут классы типов, некоторые стандартные из них, синтаксический сахар с их использованием и класс монад.
Классы привносят динамический полиморфизм, как и интерфейсы в традиционных императивных языках, а также могут быть использованы как замены отсутствующей в Хаскеле перегрузки функций.
Я расскажу, как определить класс типов, его экземпляры (instance) и как это всё устроено внутри.

Предыдущие статьи:
Типы данных, паттернг матчинг и функции
Основы
Читать дальше →
Total votes 30: ↑29 and ↓1+28
Comments24

Перевод документации React Redux и проблемы переводчиков

Reading time5 min
Views2K

Я решил перевести документацию react-redux, позвал напарника, и мы вместе решали проблемы, связанные с этим. Собственно, о проблемах и решениях пойдёт речь.

Ссылка на перевод

Кратко: поговорили с авторами библиотеки, развернули перевод на github-pages, получили домен, получаем обновления через свой сервер и хотим внимания)

Читать далее
Total votes 12: ↑11 and ↓1+10
Comments3

Как выбрать для новичка такой проект, чтобы он уволился

Reading time8 min
Views70K

У вас возникал синдром «сожалений специалиста по найму»? Это когда вы жалеете о том, что наняли кого-то сразу после того, как он начал работать. Может быть, вам не нравится внешность новичка, а может вы просто желаете погрузить мир в хаос. Или, хуже того, он как-то упомянул, что любит джаз. Какой бы ни была причина, этот пост поможет вам заставить его уволиться самостоятельно, выбрав для него худший первый проект.

Не ждите, пока он обустроится


Ему всё ещё не выдали монитор? Менеджер проекта так и не добрался до него, чтобы познакомить с продуктом, над которым работает команда? Его бейдж не работает и ему приходится просить коллег провести его в туалет? Это самое подходящее время встретиться с ним и объяснить все подробности нового проекта. Есть какой-то компонент, который он пока не освоил? Сэкономьте своё время и пока не объясняйте его — пусть разберётся самостоятельно после завершения проекта.
Читать дальше →
Total votes 111: ↑107 and ↓4+103
Comments80

Почему RISC-V? — лекция Станислава Полонского

Reading time9 min
Views16K

Здравствуйте! Меня зовут Станислав Полонский. Я представляю Samsung Advanced Institute of Technology (SAIT) - научно-исследовательский центр, специализирующийся на передовых технологиях будущего.

Сегодня мы поговорим о том, что такое архитектура RISC-V (читается, как «РИСК-Пять»). Я расскажу вам о прошлом и будущем этих процессоров, о том, почему эта архитектура так подходит для Интернета вещей, а в конце скажу, как можно продолжить своё образование в этом направлении.

Читать далее
Total votes 40: ↑36 and ↓4+32
Comments43

Спектрометр из смартфона, картона и осколка DVD-диска: смотрим на спектры лампочек, фонариков, солнца

Reading time14 min
Views25K

Всем привет! Продолжаем придумывать, как можно использовать устаревший смартфон в новом качестве. Эта статья подготовлена по материалам второго сезона видеокурса “Galaxy Upcycling - новая жизнь старого смартфона”. В  уроках первого сезона мы уже сделали 3D-голограмму, проектор (и написали об этом статью на Хабр), микроскоп, часы, гирлянду, а сегодня делаем еще один исследовательский прибор.

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

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

Information

Rating
Does not participate
Location
Арулько, Арулько
Date of birth
Registered
Activity