• Выбираемся из кроличей норы SPA при помощи современного Rails

    • Translation
    TL;DR: Тропа SPA темна и полна ужасов. Ты можешь бесстрашно сражаться с ними… или выбрать другой путь, который приведёт тебя к нужному месту: современный Rails.



    Я вспоминаю, как думал, что Rails фокусируется на неправильной цели, когда DHH анонсировали Turbolinks в 2012 году. Тогда я был убеждён в том, что мгновенное время ответа во время взаимодействия с пользователем — это ключ к превосходному UX. Из-за возникающих задержек сети, такая интерактивность возможна, только если вы минимизируете зависимость от сети и вместо сетевых обращений поддерживаете большую часть состояния на клиенте.

    Я думал, что это необходимо для приложений, над которыми я работал. И с таким мнением я перепробовал множество подходов и фреймворков для реализации одного и того же шаблона: Single-page applications (SPA). Я верил, что SPA — это будущее. Несколько лет спустя, я не уверен в том, каково же будущее, но я точно хочу найти альтернативу.
    Читать дальше →
  • Начинаем работать с Ruby on Rails в Docker

    • Translation

    Docker замечательно справляется с изолированием приложений и их окружений, облегчая распространение и репликацию состояний между различными средами (dev, test, beta, prod и т. д.). Его использование позволяет избавиться от проблемы «на моей машине все работает» и помогает с легкостью масштабировать приложение по мере его роста.


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


    В этой статье мы возьмем простое приложение на Rails и подготовим его для использования в Docker-контейнере («докеризуем»).

    Читать дальше →
    • +9
    • 13.4k
    • 4
  • Stimulus 1.0: скромный JavaScript фреймворк для HTML, который у вас уже есть

    • Translation

    От переводчика: Давид Хейнемейер Ханссон написал небольшой текст о том, почему он и его команда Ruby on Rails разработала свой собственный Javascript фреймворк. Оригинал текста размещен в репозитории нового проекта


    обновлено 4 февраля: оригинал статьи был официально опубликован в блоге Basecamp. Обновил ссылку на оригинал и название


    Мы пишем много Javascript в Basecamp, но мы не используем его для создания "JavaScript-приложений" в современном смысле. Все наши приложения рендерят HTML на стороне сервера, затем мы добавляем вкрапления Javascript, чтобы оживить их.


    Это путь величественного монолита. Basecamp работает на множестве платформ, включая нативные мобильные приложения, с единым набором контроллеров, представлений и моделей, созданных под Ruby on Rails. Иметь общий интерфейс, который обновляется из единого места, — это ключ к тому, чтобы маленькая команда работала хорошо, несмотря на множество поддерживаемых платформ.


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

    Читать дальше →
  • Шахматы для общего развития: история создания развивающей программы

      Всю свою жизнь у меня было два параллельных профессиональных интереса: программирование (и компьютеры в более широком смысле), и психология. Когда я работал психологом в государственных образовательных учреждениях, моя жизнь была очень осмысленна, я чувствовал, что несу миру добро (и готов утверждать, что некоторым отдельным людям его принёс), но не хватало чёткости мышления, задачек «на подумать», и зарплаты ИТ-шника. Когда я работал программистом, проблем с задачками и деньгами не было, но душило ощущение общей бессмысленности от необходимости решать чужие задачи, работать на цели других людей, никак не связанные с моим личным ощущением необходимости нести в мир «добро» (чтобы это ни значило).

      Но однажды мне крупно повезло — я оказался вовлечён в проект «Шахматы для общего развития», где и по сей день совмещаю обязанности программиста, психолога, школьного учителя, и много кого ещё. Об этом и хочу рассказать.
      Читать дальше →
    • Будущий релиз Symfony 4.0 и проект с использованием Symfony Flex

      • Tutorial

      30 Ноября 2017 года состоится релиз Symfony 4.0



      image

      Четвертая версия имеет ряд глобальных изменений, основным из которых можно назвать переход на Symfony Flex.

      Что же такое Symfony Flex?


      Это новый подход к организации приложений на симфони, основаный на «рецептах».
      Как заявляют разработчики — это должно упросить работу с зависимостями\бандлами\пакетами и привнести больше автоматизации.
      Читать дальше →
    • Ruby on Rails соглашение. Часть 4

      • Translation


      Цените интегрированные системы


      Ruby on Rails можно использовать для разных целей, но его конек — это монолитные интегрированные системы. Такие системы нацелены на решение всей задачи совокупно. Через Rails проходит все, начиная от генерации JavaScript для мгновенного обновления страниц, и заканчивая миграцией базы данных от одной версии к другой, когда проект уже в эксплуатации.

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

      Именно упор на расширение возможностей отдельного разработчика подталкивает нас к интегрированным системам. Интегрированная система позволяет убрать ненужные абстракции, уменьшить дублирование между слоями (например, использовать одни и те же шаблоны на сервере и на клиенте), а самое главное — до последнего не допустить перехода к распределенной архитектуре.
      Читать дальше →
    • Советы по Postgres для Rails разработчиков

      • Translation

      В апреле на RailsConf в Фениксе мы обсудили огромное количество советов по использованию Postgres с Rails, и подумали, что будет полезно их записать и поделиться с более широкой аудиторией. Здесь вы найдете некоторые из них, касающиеся отладки и улучшения производительности базы данных вашего Rails приложения.

      Читать дальше →
    • Как хвост виляет собакой. Азбука пропаганды

        Чем доступнее информация, тем больше её вокруг. Чем быстрее она распространяется, тем меньше остаётся времени на то, чтобы её проверить. Постепенно информационная среда превращается в некое подобие «белого шума». Всё труднее строить внутри себя новые информационные фильтры, чтобы отсеять лишнее: убрать в сторону лозунги, агитацию, пропаганду, а оставить только то, что на самом деле кроется за ними. А манипулировать нашими мыслями пытаются постоянно, и я говорю не о 25-ом кадре (он не работает), а о более земных вещах — приёмах пропаганды, которые так умело (а зачастую — очень топорно) используют политики, рекламщики и вообще, все, кому не лень. Об этих приёмах и пойдёт речь в статье.

        Хвост виляет собакой. ("Wag the dog") — чтобы избежать большого скандала или «замять», оставить незамеченным какое-нибудь важное, но неприятное событие, часто используется простой, но хитрый и ловкий приём, который англоязычные политтехнологи называют «Wag the dog», а русскоязычные — «Хвост виляет собакой». Он заключается в том, чтобы вовремя поднять волну обсуждения вокруг вопроса второстепенной важности, на фоне которой другое, более важное событие или действие пройдёт незаметно.
        Примеры таких вопросов: Отмена перехода на зимнее время, российское гражданство Депардье, поездка Путина или Саши Грей на Ладе Калине по России, полёты со стерхами и т.д.
        Своё название этот приём получил в честь английского выражения tail wagging the dog, который, в свою очередь, появился из следующего народного пассажа:
        — Почему собака виляет хвостом?
        — Потому, что собака умнее, чем хвост. Если бы хвост был умнее, он вилял бы собакой.

        Ещё 7 приёмов - под катом
      • Коллекция практических советов и заметок по вёрстке

          CSS Refresher


          Это большая коллекция практических советов и заметок по вёрстке. Своеобразная памятка для тех, кто каждодневно использует CSS. Освещаются самые разные темы, от деталей поведения плавающих элементов до использования SVG и спрайтов. Проект постоянно обновляется, активное сообщество github также принимает в нем участие, там добавляются интересные замечания, о которых, возможно, вы и не слышали.

          От переводчика


          Приветствую всех, меня зовут Максим Иванов, и сегодня я подготовил для вас перевод заметок разработчика из Сан-Франциско Васанта Кришнамурти (Vasanth Krishnamoorthy) «CSS Refresher». Web-программирование одна из самых быстро развивающихся отраслей в наше время. Казалось бы, возьми какой-нибудь видеокурс на tuts+ и освой html-верстку, однако, как говорил разработчик Opera Software Вадим Макеев, выступая на конференции CodeFest, они все равно это делают плохо. Но давайте посмотрим, может мы итак все это знаем.

          Содержание


          1. Позиционирование (position)
          2. Отображение элемента в документе (display)
          3. Плавающие элементы (float)
          4. CSS селекторы
          5. Эффективные селекторы
          6. Переотрисовка и перерасчет
          7. CSS3 свойства
          8. CSS3 медиа-запросы
          9. Адаптивный web-дизайн
          10. CSS3 переходы
          11. CSS3 анимации
          12. Масштабируемая векторная графика (SVG)
          13. CSS спрайты
          14. Вертикальное выравнивание
          15. Известные проблемы

          Читать дальше →
        • Пишем форум с нуля на Ruby on Rails и AngularJS

          • Tutorial
          Не так давно я рассказывал о геме Oxymoron, позволяющем очень просто и быстро строить современные Single Page Application на AngularJS и Ruby on Rails. Статья была встречена весьма позитивно, поэтому пришло время написать более-менее сложное приложение, чтобы показать все возможности гема.
          Читать дальше →
        • Архитектура построения Single Page Application на основе AngularJS и Ruby on Rails

          Заинтересовавшись методологией построения SPA-приложений на Ruby on Rails, я пришел к некоторым идеям, которые реализуются теперь в каждом моем приложении и впоследствии даже были выделены в отдельный гем Oxymoron. На данный момент на Oxymoron написано более 20 достаточно крупных коммерческих рельсовых приложений. Хочу вынести гем на общественный суд. Поэтому дальнейшее свое повествование буду вести уже на его основе.

          Пример готового приложения.
          Читать дальше →
          • +13
          • 21.8k
          • 5
        • Efficient Rails — новая книга по оптимизации процесса разработки Rails-приложений



            Эффективные Рельсы — более точного названия для книги придумать было бы сложно. Всё содержание описывается этими двумя словами и раскрывается для нас в сотне рецептов на 380+ страницах. В ожидании выхода финальной версии Rails 5, данное чтиво — то, на что стоит потратить время, благо потребуется его не так много. Но данное вложение вернётся колоссальной прибылью знаний и позволит, как говорится на обложке, «создавать Rails-приложения с нечеловеческой скоростью». Да и не только Rails, да и не только Ruby. Первые две главы включают в себя обилие информации по работе с терминалом и СКВ. Подробности под катом.
            Узнать подробнее и получить промокод
          • Введение в D3

            • Tutorial

            D3.js (или просто D3) это JavaScript-библиотека для обработки и визуализации данных. Она предоставляет удобные утилиты для обработки и загрузки массивов данных и создания DOM-элементов. Эта заметка описывает работу с основными методами библиотеки, она подойдёт для изучения основ библиотеки и погружения в её логику и возможности.

            Для понимания статьи пригодятся знания JS, HTML и CSS.

            Читать дальше →
            • +55
            • 130k
            • 7
          • React.js — Руководство для Rails разработчиков

            • Translation
            • Tutorial
            На начальном уровне такие переводы — мой вклад в развитие rails сообщества.
            Дальше в тексте все, что выделено курсивом, мои замечания (таких будет не много)

            image

            Введение в React.js

            React.js — это новый популярный парень из команды JavaScript фреймворков, он выделяется своей простотой. Когда другие фреймворки реализуют полный MVC (Model View Controller) подход, мы можем сказать React'у реализовать только View (Отображение) (факт — некоторые люди переписывают часть отображения (V) этих фреймворков c помощью React).

            Приложения с реактом основаны на 2х основных принципах Компоненты и Состояния. Компоненты могут состоять из более мелких компонентов встроенных или пользовательских. Состояния, что ребята из Facebook называют односторонний реактивный поток данных, подразумевая что наш интерфейс(UI) будет реагировать на каждое изменение состояния.

            Одна хорошая особенность React.js это то что он не требует каких-либо дополнительных зависимостей, что обеспечивает ему подключаемость с любой js библиотекой. Пользуясь этим, мы будем включать его в наш Rails стек для создания внешнего интерфейса или можно сказать для создания «Rails на стероидах».

            Макет для отслеживания расходов приложения



            Для этого гайда мы создадим маленькое приложение с нуля что бы отслеживать наши действия. Каждая запись(дальше, тоже самое что и Record) будет состоять из даты, названия и суммы. Запись будет рассматриваться как Кредит(Credit) если его сумма больше нуля, в противном случае она будет рассматриваться каr дебет. Вот макет проекта:

            image

            Суммарно приложение будет вести себя так:
            1. Когда пользователь создает новую запись через горизонтальную форму, она будет вставлена в таблицу записей
            2. Пользователь может редактировать любую существующую запись
            3. Кликнув на кнопку Delete он удалит ассоциацию из таблицы
            4. Добавление, редактирование или удаление существующей записи будет обновлять сумму в боксах в верху страницы


            Инициализация React.js в Rails проект


            Читать дальше →
          • Использование Redis EXPIRE для отслеживания онлайн-аудитории в Rails

            • Tutorial

            Кому


            • Тем кто на Ruby on Rails
            • Кто желает знать кто из пользователей онлайн, но ещё не задумывался как
            • Для кого не проблема использовать Redis (по причине хостинга например)


                Решение вопроса в сети пользователь или нет — это наверное как правило установка временной метки при обращении пользователя к приложению, а при необходимости узнать его (пользователя) текущий статус — сверка с этой временной меткой. Какой подход выбрать — решать Вам, но тот подход который предлагаю я — прост и не использует SQL базу данных, вместо этого используется Redis и одна из его встроенных возможностей — время жизни ключа (expire).

            Подробности
            • +3
            • 10.5k
            • 9
          • Бот для Telegram. Rails way

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

              • Легковесный клиент для API ботов.
              • Базовый класс для контроллера обновлений с парсером сообщений. Сделан на основе AbstractController из ActionDispatch, предоставляет колбэки, сессии, сохранение контекста сообщений и прочее.
              • Rack-middleware для продакшена, чтобы принимать update-хуки, и поллер с автоматической загрузкой обновленного кода для удобной разработки.
              • Rake таски, хэлперы для рельсовых маршрутов и тестов.

              Интересно? Для установки добавьте telegram-bot в Gemfile, подробности под катом.
              Читать дальше →
              • +8
              • 19.8k
              • 4
            • Как Дэвид Хайнемайер Хенссон организовывает контроллеры

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

              Оригинал статьи можно прочитать на сайте Jerome's Adventures in Software.


              Как DHH (Дэвид Хайнемайер Хенссон) организовывает rails контроллеры


              В недавнем интерьвью «с Full stack radio» наш гуру и спаситель DHH объяснил как он организовывает структуру rails контроллеров в последней версии Basecamp. Вот расшифровка его святых слов:

              Я пришел что бы рассказать, то что будучи почти фундаменталистом в создании контроллеров, я остаюсь приверженцем REST'у который постоянно меня выручает.
              Читать дальше →
              • +13
              • 6.8k
              • 1
            • Перевод книги «Выразительный Javascript» в pdf

                Хабр, привет.

                Не так давно SLY_G опубликовал цикл переводов книги Eloquent Javascript (за что ему большое спасибо). В комментариях раз за разом поднимались вопросы о сборке переводов книги, что, собственно, я и сделал при помощи сервиса Gitbook — «Выразительный Javascript», pdf, ePub, mobi и онлайн версия.

                Репозитарий книги, pull requests принимаются.
                Читать дальше →
              • Минималистичный Мобильный Лейаут

                мим В нашей работе часто встречаются задачи по вёрстке мобильных версий сайтов. Бывает очень сложно начать вёрстку мобильной версии без прототипа приложения. А бывает так, что мобильная версия нужна, а бюджет на неё не предусмотрели. Но лучше иметь хоть какой-то мобильный сайт, чем совсем никакого. В таких случаях на помощь приходит mimlМинималистичный Мобильный Лейаут.

                miml — это всего лишь 2 картинки, 4 стиля и 1 html файл шаблона.
                Читать дальше →
              • Играй на победу: как побеждать в играх и что нужно знать о профессиональных игроках в GameDev [часть 1]



                  Давным-давно мы с друзьями играли в Starcraft по диалапному модему. Я часто проигрывал, пока не прочитал на одной из BBS фразу, которая всё поменяла. Принцип очень простой: в стратегиях реального времени выигрывает тот, кто постоянно атакует. Нужно было научиться мыслить категориями постоянного создания угроз.

                  К чему я это. Есть такой мужик — Дэвид Сирлин. Киберспортсмен, чемпион по Street Fighter, гейм-дизайнер, настольщик, киберспортивный тренер. У него есть целая теория на тему того, как тренироваться и играть так, чтобы выигрывать. Универсальная, применима ко всем играм. Ниже — основные тезисы первой части и мои комментарии. Прочитать про основные вещи из книги будет интересно и с точки зрения GameDev (в особенности — балансировки), и просто по жизни.
                  Читать дальше →