Как стать автором
Обновить
53
0
Dmitry Non @Nondv

Software Engineer

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

Программирование только классами

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

image


В моем посте Implementing numbers in "pure" Ruby ("Разрабатываем числа на "чистом" Ruby") я обозначил рамки, которые разрешали использовал базовые вещи из Ruby вроде оператора равенства, true/false, nil, блоки и т.п.


Но что, если бы у нас вообще ничего не было? Даже базовых операторов вроде if и while? Приготовьтесь к порции чистого объектно-ориентированного безумия.

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

Функциональное программирование, знакомься — ООП

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

Мне нравится экспериментировать с разными парадигмами и играться с разными интересными (для меня) идеями (некоторые из них превращаются в посты: раз, два). Недавно я решил проверить, смогу ли я писать объектно-ориентированный код на функциональном языке.

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

Еще один DSL для валидаций

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

Недавно я написал небольшой гем для валидаций и хотел бы поделиться с вами его реализацией.


Идеи, которые преследовались при создании библиотеки:


  • Простота
  • Отсутствие магии
  • Легкость в освоении
  • Возможность кастомизации и минимум ограничений.

Почти все эти пункты завязаны на первом — простоте. Итоговая реализация невероятно маленькая, поэтому я не отниму у вас много времени.


С исходным кодом можно ознакомиться здесь.

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

Боремся со слишком большими Msg в Elm приложениях

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

Согласно Elm Architecture, вся логика приложения сконцентрирована в одном месте. Это довольно простой и удобный подход, но с ростом приложения можно увидеть функцию update длиной 700 строк, Msg с сотней конструкторов и Model, не умещающуюся в экран.


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

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

Могу ли я использовать функциональное программирование в своем языке?

Время на прочтение3 мин
Количество просмотров4.4K
Перед вами любительский перевод эссе Эрика Норманда — консультанта и спикера, продвигающего функциональное программирование.

Я был довольно волен с терминами, не стеснялся использовать англицизмы вроде "фича". Меня смущает дословный перевод программистских терминов. Приятного чтения

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


Довольно часто опытные разработчики спрашивают меня: "Что может дать мне функциональное программирование такого, чего у меня нет? Могу ли я просто начать использовать ФП на своем языке?". Это отличный вопрос, я надеюсь, что смогу дать на него достойный ответ.

Read more →
Всего голосов 24: ↑15 и ↓9+6
Комментарии6

Настройка домашней среды для разработки (docker + gitlab + DNS)

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

Intro


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


У большинства из нас есть какие-нибудь мелкие личные поделки, которые не выходят за рамки наших домов. Кто-то хостит их на рабочем компьютере, кто-то — на Heroku, кто-то — на VPS, а у кого-то есть домашний сервер. На реддите даже есть сообщество r/homelab, в котором люди обсуждают разные железки и софт для т.н. домашней лаборатории.


Я не настолько увлечен этим вопросом, но у меня дома стоит Intel NUC, который проигрывает музыку с NAS с помощью MPD. Помимо MPD на нем крутятся мои мелкие поделки, которые помогают мне с ним работать: ныне мертвый бот для телеграма, HTTP API на синатре и корявенький фронтенд для него.


В посте я без особых подробностей (многих из которых сам не понимаю) опишу процесс установки DNS-сервера для работы с доменными именами для сервисов, схему одновременной работы нескольких сервисов с помощью Docker и установку Gitlab с CI. Ничего нового вы не узнаете, но вдруг кому-нибудь пригодится этот "гайд". К тому же я бы хотел услышать предложения по поводу того, как можно было бы сделать это проще/элегантнее/правильнее.

Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии21

Деплой webpack-приложения на github.io с помощью Travis CI

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

Задача


Есть приложение, сгенерированное с помощью create-react-app. Нужно развернуть его на github.io.


Проблемой является то, что Github Pages работает только со статическим кодом и Jekyll.

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

Я ненавижу константы в Ruby

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

Ruby — очень сложный язык программирования. Он невероятно красивый и читабельный, однако у него есть множество тем и особенностей, которые могут оставаться "темным лесом" даже для опытного Ruby-разработчика. Одной из таких тем является поиск констант.


Несмотря на заголовок, гнева в посте не будет.

Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии14

ruby -e для упрощения работы в консоли

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

Как, думаю, многим известно, Ruby создавался под влиянием Perl, поэтому нет ничего удивительного в том, что Ruby может подменить Perl в его нише "практического извлечения данных и составления отчетов". В данном небольшом посте речь пойдет об использовании ruby для мелкой обработки текста в консоли.

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

Как я использую git

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

Intro


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


  • git add <path>
  • git commit
  • git checkout <path/branch>
  • git checkout -b <new branch>

И дополнительно:


  • git push/pull
  • git merge <branch>
  • git rebase master (а что, можно еще и на другие ветки ребейзить? О_о)

В принципе, я и сейчас во многом так считаю, но со временем волей-неволей начинаешь узнавать интересные трюки.

Читать дальше →
Всего голосов 117: ↑106 и ↓11+95
Комментарии195

Настройка голосовых команд Mac OS для запуска произвольного кода

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

Предыстория


Когда вышла Mac OS Sierra, одной из громких новостей было появление Siri. Меня, как пещерного человека, очень удивила и заинтересовала возможность управления ноутбуком с помощью голоса (да-да, это не инновации, но лично я с этим до этого никогда не пользовался и считал это чем-то бесполезным).


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


Но тут я неожиданно узнал о голосовых командах, которые есть в маке уже черт знает сколько времени (лет?)


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

ruby -run

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

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


Intro


Относительно недавно искал способ в одну строчку запустить веб-сервер в текущей директории.


На просторах Stack Overflow нашел примерно такую команду:


ruby -run -e httpd -- -p 9090 [DIR]

Что же это за загадочная опция -run и почему ее нет в мануале?


Читать дальше →
Всего голосов 23: ↑18 и ↓5+13
Комментарии17

Использование lambda в качестве локальных функций

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

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


Если вы просто хотите ознакомиться с реализацией класса, то эти самые вспомогательные методы очень сильно мозолят глаза, приходится прыгать по коду туда-сюда. Да, конечно, можно разнести их по отдельным модулям, но я считаю, что зачастую это слишком избыточно (я, например, не хочу создавать модуль, который, по сути, определяет только один метод, декомпозированный на n частей). Особенно неприятно, когда эти вспомогательные функции состоят из одной строки (например, метод, который выдергивает определенный элемент из распарсенного JSON).

Читать дальше →
Всего голосов 14: ↑9 и ↓5+4
Комментарии51

ActiveResource, prefix и вложенные ресурсы

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

Предыстория


Я программист с очень небольшим стажем (недавно накопилось около года в трудовой).
Около полугода назад я начал работать с Ruby (вне Rails) и сразу же познакомился с Active Resource и Redmine.

Это был очень интересный опыт, сейчас мне кажется, что Ruby — практически идеальный язык (именно язык, я не задаюсь вопросом потребления памяти и скорости работы).

Однако в нем весьма много магии, которую бывает сложно понять, когда читаешь исходный код сколько-нибудь крупных проектов (ActiveResource я отношу к ним, хотя по сравнению с rails, частью которого он является, этот гем кажется каплей в море).

Проблема


Проект заключался в создании консольной утилиты (Thor-based), работающей с Redmine REST API и предоставляющей всякие ништяки (кстати, вдохновленный проектом, я в данный момент работаю над подобной утилитой, частично дублирующей функционал: https://github.com/Nondv/redmine_cli).

Если посмотреть на документацию по Versions или Issue Relations (http://www.redmine.org/projects/redmine/wiki/Rest_IssueRelations), то можно обратить внимание, что для получения списка отношений используется адрес вида issues/<id>/relations.xml, а для конкретного объекта — relations/<id>.xml.
Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Комментарии0

Обзор мини-клавиатуры Ducky Mini

Время на прочтение6 мин
Количество просмотров18K
Здравствуйте все!

Прошу меня простить за небольшую тавтологию в заголовке — этим я хотел подчеркнуть, что клавиатура действительно мини.

Многие, кто интересуется механическими клавиатурами, слышали про тайваньскую компанию Ducky Channel. Недавно у них появился официальный ресселер в России, что не может не радовать (еще бы курс доллара был пониже, тогда счастья были бы полны мои шорты).

У этого ресселера (не буду называть его, поскольку будет рекламой, посмотреть можете на сайте компании в разделе Where to buy) я и приобрел данную клавиатуру по предзаказу.


Читать дальше →
Всего голосов 20: ↑14 и ↓6+8
Комментарии28

Информация

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

Специализация

Backend Developer, Fullstack Developer
Senior