Как стать автором
Обновить
0
0
Игорь @ZiggiPop

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

Отправить сообщение

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

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров9.8K

Предисловие


В 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-совместимых ОС.

Читать дальше →
Всего голосов 23: ↑23 и ↓0+24
Комментарии14

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

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров1.9K

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

Читать далее
Всего голосов 4: ↑4 и ↓0+6
Комментарии0

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

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров5.1K

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

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

Читать далее
Всего голосов 38: ↑38 и ↓0+38
Комментарии7

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

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров4.9K

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

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

Читать далее
Всего голосов 16: ↑16 и ↓0+16
Комментарии9

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

Время на прочтение23 мин
Количество просмотров10K

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



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


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


Расчехляйте свои абстрагаторы ...
Всего голосов 18: ↑17 и ↓1+21
Комментарии22

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

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров3.6K

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

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

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

Читать далее
Всего голосов 7: ↑5 и ↓2+7
Комментарии22

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

Время на прочтение16 мин
Количество просмотров7.8K

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

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

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

Время на прочтение3 мин
Количество просмотров8.3K

Иногда бывает нужно сделать так, чтобы в каждый момент времени работало не больше одного экземпляра вашего 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

# ...
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии20

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

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров18K

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

Читать далее
Всего голосов 27: ↑26 и ↓1+29
Комментарии29

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

Время на прочтение13 мин
Количество просмотров26K

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


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


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


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



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

Читать дальше →
Всего голосов 22: ↑20 и ↓2+24
Комментарии39

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

Время на прочтение8 мин
Количество просмотров26K


Сегодня у нас на обзоре долгожданный контроллер 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 «с человеческим лицом», за редкими исключениями, с одним из которых я и приглашаю вас познакомиться…
Читать дальше →
Всего голосов 43: ↑21 и ↓22+6
Комментарии50

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

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров18K

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

Что меняется при передаче: MAC или IP?
Всего голосов 13: ↑12 и ↓1+11
Комментарии23

Зачем Clojure Flutter

Время на прочтение13 мин
Количество просмотров7.9K

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

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

Читать далее
Всего голосов 15: ↑13 и ↓2+12
Комментарии17

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

Время на прочтение5 мин
Количество просмотров60K

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

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

Читать далее
Всего голосов 70: ↑67 и ↓3+81
Комментарии33

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

Время на прочтение9 мин
Количество просмотров73K

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

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

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

В статье будет небольшой конкурс с призами.
Всего голосов 61: ↑55 и ↓6+67
Комментарии366

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

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

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

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

Время на прочтение5 мин
Количество просмотров2.1K

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

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

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

Читать далее
Всего голосов 10: ↑9 и ↓1+10
Комментарии3

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

Время на прочтение8 мин
Количество просмотров70K

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

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


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

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

Время на прочтение9 мин
Количество просмотров17K

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

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

Читать далее
Всего голосов 31: ↑27 и ↓4+32
Комментарии43

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

Время на прочтение14 мин
Количество просмотров27K

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

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

Читать далее
Всего голосов 113: ↑113 и ↓0+113
Комментарии11

Информация

В рейтинге
Не участвует
Откуда
Арулько, Арулько
Дата рождения
Зарегистрирован
Активность