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

    • Перевод
    Перед вами любительский перевод эссе Эрика Норманда — консультанта и спикера, продвигающего функциональное программирование.

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

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


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

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

    • Tutorial

    Intro


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


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


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


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

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

    • Tutorial

    Задача


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


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

    Читать дальше →
  • Я ненавижу константы в Ruby

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


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

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

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

        Читать дальше →
      • Как я использую git

          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 (а что, можно еще и на другие ветки ребейзить? О_о)

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

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

            Предыстория


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


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


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


            Читать дальше →
          • ruby -run

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


              Intro


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


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


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

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


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

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


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

                Читать дальше →
              • ActiveResource, prefix и вложенные ресурсы

                  Предыстория


                  Я программист с очень небольшим стажем (недавно накопилось около года в трудовой).
                  Около полугода назад я начал работать с 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.
                  Читать дальше →
                • Обзор мини-клавиатуры Ducky Mini

                    Здравствуйте все!

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

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

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


                    Читать дальше →