Как стать автором
Поиск
Написать публикацию
Обновить
1.47

Ruby *

Динамический высокоуровневый язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Анонс Ruby Meetup #6

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

Традиционная встреча рубистов с докладами, общением и пиццей состоится 20 июля в офисе компании Rambler&Co!
Читать дальше →

Ruby on Rails соглашение. Часть 4

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


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


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

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

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

Развертывание Redmine с помощью Capistrano

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


Это вторая часть моего руководства о том, как самостоятельно администрировать Redmine в долгосрочной перспективе. Первая часть была посвящена управлению собственной версией Redmine с помощью Git (ссылка на перевод).


Имея собственный репозиторий Redmine, пришло время ...

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

Анонс RamblerElixir #3

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

Приглашаем разработчиков, тимлидов и всех, кто так или иначе связан с разработкой на Elixir, принять участие в RamblerElixir Meetup, который состоится 14 июня 19:00, в среду, на уютной мансарде Rambler&Co.
Читать дальше →

Ruby on Rails соглашение. Часть 3

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


Ни одна парадигма


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

В Rails — это не так. Это не один, идеальный крой ткани. Это одеяло. Совокупность многих разных идей и даже парадигм. Многие из них, как правило, противоречат друг другу, если их сравнивать друг с другом и один за другим. Но это не то что мы пытаемся сделать. Это не одно большое соревнование, в котором должен быть объявлен один победитель.

Возьмите шаблоны, с которыми мы создаем представление в нашем Rails-MVC-пироге. По умолчанию все хелперы, которые позволяют нам извлекать код из этих шаблонов, — это просто большой набор функций! Это единое пространство имен. О, потрясение и ужас, это как PHP-суп!
Читать дальше →

Как правильно писать логи (?)

Время на прочтение4 мин
Количество просмотров65K
Тема может и банальная, но когда программа начинает работать как то не так, и вообще вести себя очень странно, часто приходится читать логи. И много логов, особенно если нет возможности отлаживать программу и не получается воспроизвести ошибку. Наверно каждый выработал для себя какие то правила, что, как и когда логировать. Ниже я хочу рассмотреть несколько правил записи сообщений в лог, а также будет небольшое сравнение библиотек логирования для языков php, ruby и go. Сборщики логов и системы доставки не будут рассматриваться сознательно (их обсуждали уже много раз).
Читать дальше →

Ruby on Rails соглашение. Часть 2

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


Соглашение над конфигурацией


Один из ранних девизов Rails звучал так: «Ты не красивая и уникальная снежинка». Девиз гласил, что отказываясь от индивидуальности можно обойти решение тривиальных проблем и добиться более быстрого прогресса в областях, которые действительно значимы.

Кого волнует, в каком формате описываются ваши первичные ключи в базе данных? Действительно ли это важно, если речь идет о «id», «postId», «posts_id» или «pid»? Достойно ли это решение постоянного обсуждения? Нет.
Читать дальше →

Лучший способ загрузки файлов в Ruby с помощью Shrine. Часть 2. Загрузчик

Время на прочтение5 мин
Количество просмотров3.1K
Это вторая часть из серии постов о Shrine. Цель этой серии статей – показать преимущества Shrine над существующими загрузчиками файлов.



В предыдущем посте я говорил о том что мотивировало меня на создание Shrine. В этой статье я хочу показать вам фундамент, на котором основан Shrine — хранилище, загрузчик и загруженные файлы.
Читать дальше →

Лучший способ загрузки файлов в Ruby с помощью Shrine. Часть 1

Время на прочтение10 мин
Количество просмотров6.3K
Это первая часть из серии постов о Shrine. Цель этой серии статей – показать преимущества Shrine над существующими загрузчиками файлов.


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

Прежде чем углубиться в разъяснение преимуществ, нужно сделать шаг назад и рассмотреть подробно, что в первую очередь послужило мотивацией для разработки Shrine.

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

Высокопроизводительные сервисы на Crystal, введение от новичка

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

Введение


DISCLAIMER

мнение автора может не совпадать с вашим мнением, добро пожаловать в комментарии.


В доисторические времена высокопроизводительные Web-приложения можно было писать, в основном, на C или C++. Поддерживать такие приложения было не просто дорого, а очень дорого.


Потребность в среде программирования, в которой удобно писать, читать и изменять высокопроизводительные приложения, появилась давно.


В первую очередь термины "производительность" и "надежность" относятся к Erlang. В своей нише он великолепен, но синтаксис заставляет желать лучшего. Собственно, именно поэтому появился Elixir, но речь сейчас не об этой экосистеме.


Если же немного снизить планку надежности, то здесь перед нами широкий выбор, включая Node, Go, Nim и Crystal. Можно взглянуть на типичные сравнительные данные по производительности, включая более обширные.


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


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


Если нам нужно больше запросов в секунду, то выбор на сегодня — Go. Эта среда программирования обладает великолепными характеристиками производительности, поддержку со стороны крупных компаний и немалое число активных проектов.


Так почему же Crystal?

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

Из Rails 4 в Rails 5: как это было

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

Жил-был поставщик облачных сервисов и захотелось ему не отставать от прогресса. И решил он обновиться с Rails 4.2.8 до Rails 5.0.2. А как это было, что по пути отвалилось, что по лбу вдарило с ускорением и какой опыт из этого вынесли — читайте под катом.

Узнать как же это было

Ruby on Rails соглашение. Часть 1

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


Феноменальная популярность Ruby on Rails в значительной степени обусловлена переходом к новым трендам и технологиям в нужный момент времени.

Но, к сожалению, технические преимущества с течением времени становятся не актуальными. Поэтому необходимо подробное объяснение того, каким образом RoR не только продолжает оставаться актуальным, но расширяет свое влияние и сообщество.
Мое предположение, что несокрушимым фактором было и остается его противоречивое соглашение.

Соглашение активно развивалось последние десять лет, но большая часть основных идей осталась не тронута. Я не претендую на некую фундаментальную уникальность этих идей. Главное достижение Rails — это объединение вокруг себя сильного сообщества людей с нестандартным подходом и мировоззрением о природе программирования и программистах.
Читать дальше →

Не Ruby единым

Время на прочтение6 мин
Количество просмотров10K
Ведущий разработчик Александр Бугаев – один из Ruby-евангелистов в EPAM. Ему нравятся сложные задачи, он готов работать по ночам, творить дома или на хакатонах. Александр рассказал о своем авантюрном пути в программировании. О новых Ruby on Rails-проектах уровня enterprise, которым нужны разработчики. А также о том, почему не бывает универсальных решений.

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

Ближайшие события

RubyMine 2017.1: Docker, RuboCop, автогенерация Rails-тестов, улучшения для Puppet

Время на прочтение3 мин
Количество просмотров4.4K
Привет, Хабр! Недавно мы выпустили RubyMine 2017.1, новую версию нашей IDE для Ruby и Rails, и уже обновили её до более стабильной версии 2017.1.1. Пора рассказать о том, что в ней нового.


  • Docker
  • Создание RVM-гемсетов
  • RuboCop
  • Мгновенное создание Rails-тестов
  • Улучшения для разработки модулей Puppet
  • Структура проекта Puppet
  • Улучшения для JavaScript
  • Обновленный поиск в VCS

Как устроено автоматическое тестирование в Почте Mail.Ru под iOS

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

image


Некоторое время назад мы рассказали вам об автоматическом тестировании нашей Почты на Android и получили огромное количество вопросов от читателей. Сегодня приоткроем вам часть нашей «внутренней кухни», которая касается автотестирования на iOS. Для тестирования каждой сборки мы проводим более 500 автотестов, которые выполняются менее чем за один час. Как мы их реализовывали и зачем? С какими проблемами сталкивались и как смогли их решить? Обо всём этом читайте под катом.

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

SEM раз отмерь. Или «как узнать SEM ли ты и что с этим делать дальше?»

Время на прочтение6 мин
Количество просмотров5.7K
Да, мы запускаем вторую серию Турниров Кроссовера!

2 апреля в Петербурге — в этот раз мы ищем Software Engineering Managers и Technical Product Managers, а потом 22 апреля в Москве (.NET или Java техлидов).

Но прежде, чем рассказать о том, что будет – давайте посмотрим, как это было в Москве 18 февраля.



Честно говоря, когда мы решили проводить турниры по отбору классных разработчиков, вместо того, чтобы принимать все заявки онлайн – мы отчаянно рисковали.
Читать дальше →

«Ruby для меня — это отличный инструмент»

Время на прочтение5 мин
Количество просмотров11K
25 марта университет интернет-профессий «Нетология» совместно с сообществом ruby-разработчиков Moscow.rb провел митап на тему альтернативных решений в мире Ruby. Выясняем, есть ли нетривиальный Ruby и что-то кроме «рельсы», а также за что любить этот язык программирования.

image

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

Неудобно редактировать ERb/EEx шаблоны? Попробуйте Slim/Slime

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

ERb — стандартный язык разметки в мире Ruby. Это html со вставками на Ruby. В мире Elixir ту же роль выполняет EEx. Такой же синтаксис, только вместо Ruby — Elixir. Вот как это выглядит:


<!DOCTYPE html>
<html>
  <head>
    <title>Заголовок</title>
    <meta name="keywords" content="template <%= language_name %>">
    <meta name="author" content="<%= user_name %>">
  </head>
  <body>
    <h1 class="page-header"><%= page_header %></h1>
    <div id="content">
      <p><%= page_content %></p>
      Дополнительный текст.
    </div>
  </body>
</html>

То же самое можно написать в 1.5 раза короче без потери читаемости.

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

Микрооптимизации важны: предотвращаем 20 миллионов системных вызовов

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

Эта публикация — логическое продолжение поста «Как настройка переменной окружения TZ позволяет избежать тысяч системных вызовов». Здесь мы рассмотрим характерную ситуацию, когда микрооптимизации (например, удаление системного вызова) очень сильно влияют на производительность.

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

Анонс RamblerElixir #2

Время на прочтение1 мин
Количество просмотров4.5K
image

Если вы очарованы языком Elixir, то приходите 16 марта в 19:00 на Мансарду Rambler&Co. Мы поговорим про Elixir, Phoenix Framework, Erlang OTP и докажем превосходство наших buzzwords над любыми другими.
Читать дальше →

Вклад авторов