Обновить
2.1

Ruby *

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

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

Как мы собрали 12-этажный стек технологий и не сошли с ума

Время на прочтение8 мин
Охват и читатели7.3K
Appodeal — это компания из ~100 человек, которые работают в Москве, Сан-Франциско, Барнауле, Луцке, Кирове, Барселоне, а с июня 2018 года — еще и в Минске.

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

image

Для тех, кто еще не знаком с Ad Tech — это область работы технологичных компаний, которые работают в сфере рекламы. Когда рассказываешь кому-то, что ты работаешь в сфере мобильной рекламы, то люди часто реагируют скептически — видимо, на ум приходит надоедливая реклама «Азино три топора». На самом деле это лишь верхушка айсберга, и вся эта “дикая” реклама не имеет никакого отношения к настоящему рекламному бизнесу.
Читать дальше →

Интервью c Аароном Паттерсоном, спикером конференции RubyRussia 2018

Время на прочтение12 мин
Охват и читатели2.6K
Привет! Продолжаем серию интервью со спикерами конференции RubyRussia. Аарон Паттерсон (он же tenderlove) — член Ruby core team и Rails core team, ведущий инженер-программист в маленьком стартапе под названием GitHub. Павел Аргентов пообщался с Аароном перед его второй поездкой в Россию.



Начнем со стандартного вопроса. Какова твоя личная ruby-история? Как ты сел на этот поезд? Расскажи про свои достижения? Получилось ли сделать мир лучше?
Читать дальше →

Интервью со спикером конференции RubyRussia Маркусом Ширпом

Время на прочтение5 мин
Охват и читатели1K
Всем привет! Чуть больше, чем через неделю в Москве пройдет конференция RubyRussia. В сегодняшнем интервью разработчик из Evrone Михаил Моргунов пообщался с одним из наших спикеров — Маркусом Ширпом, создателем популярного инструмента Ruby Mutation Testing.


Первый вопрос — про Mutant. Что нам нужно знать об этом инструменте? О чем будет доклад на RubyRussia?
Читать дальше →

Идеала нет: как я искал язык программирования для себя

Время на прочтение6 мин
Охват и читатели19K


От переводчика: этот пост — несколько сокращенный перевод оригинальной статьи Гала Шлезингера, опытного frontend-разработчика. Ему очень нравится программировать, а его хобби — изучение различных (и порою весьма неожиданных) языков программирования как для рабочих целей, так и для собственных pet-проектов. О достоинствах и недостатках нескольких из них Гал и рассказывает в этом материале.

Несмотря на то что на работе я чаще всего работаю с Java, JS и Ruby, мне нравится изучать новые языки и фреймворки. Мне кажется, что постоянное обучение помогает формировать новые интересные идеи, которые можно использовать при необходимости для решения определенной задачи. Кроме того, функциональное программирование помогает понять больше про объектно-ориентированное программирование, а постоянная работа с Rails позволяет изучить многие нюансы тестирования (конечно, если вы будете практиковаться). Проблема в том, что рано или поздно в процессе изучения других языков вы начинаете задумываться: а есть ли среди них идеальный, где были бы собраны все полезные функции, найденные вами в других?

Код в стиле Ruby: грамотно, красиво и рационально. Пример для начинающих

Время на прочтение4 мин
Охват и читатели25K
image

Это перевод поста Майкла МакКи. Майкл — профессиональный программист, который время от времени делится своим опытом и навыками с коллегами, как начинающими кодерами, так и профессионалами.

Большинство программистов в последнюю очередь думают об эстетике кода, который они создают. Конечно, общих правил придерживаются почти все. Но что, если пойти дальше? Хороший код, в первую очередь, должен работать. Но я считаю, что у него должен быть свой стиль, это касается не только содержания, но и формы.
Читать дальше →

Различия Phoenix и Rails глазами новообращённого

Время на прочтение8 мин
Охват и читатели10K

Что больше всего бросилось в глаза заядлому рубисту, когда он только только начал изучать Elixir с Phoenix-ом.
Посмотреть чужими глазами

Как поднять проект тестирования на windows 10 (Cucumber + capybara + selenium-webdriver)

Время на прочтение4 мин
Охват и читатели9.8K
Статья рассчитана на знакомоство с автотестированием и разверткой среды в Windows 10 и предназначена для тех, кто хоть чуть — чуть знает о Cucumber + Capybara + Selenium-webdriver. Идея для статьи появилась из-за различий в разворачивании окружения на Windows 10 и Linux.


Пару слов о gem-ах (библиотеках) Cucumber + Capybara + Selenium-webdriver, которые нужны для запуска и наполнения проверками UI тесты.

Cucumber


Сucumber — гем, позволяющий писать тесты на человеческом языке. Для этого используется нотация Gherkin, которая определяет структуру и правила написания сценариев. Подробно почитать можно тут


Capybara


Capybara — гем, позволяющий искать/кликать/… по элементам браузера. Т.е. представляет собой связующее звено между Cucumber шагами (steps) теста, и webdriver-ом (экземпляр вызываемого браузера). Здесь можно глянуть методы этого гема.

Selenium-webdriver


Selenium-webdriver — это инструмент для автоматизации действий веб-браузера. По сути это есть экзмеплял (инстанс) браузера.
Читать дальше →

Интервью со спикером конференции RubyRussia Годфри Чаном

Время на прочтение16 мин
Охват и читатели1.4K
Всем привет! 6 октября в Москве пройдет конференция RubyRussia — cтарый добрый RailsClub, но с новым именем. Спикеры этого года: Aaron Patterson, Charles Nutter, Godfrey Chan, Maciej Mensfeld, Markus Schirp и не только. Ну и конечно, 600 участников, лучшие компании со стендами в холле и огненное афтепати.

Традиционно, перед конференцией мы разговариваем о самых актуальных темах в Ruby и Rails. Сегодня знакомим вас с Godfrey Chan — ex-Rails core team, работает в Tilde, где разрывается между созданием умного Rails-профайлера Skylight, работой над Ember.js и развитием JavaScript на TC39. Тим-лид из Evrone Дмитрий Матвеев задал нашему гостю важные вопросы.

image

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

Осваиваем новые языки программирования, опираясь на уже изученные

Время на прочтение9 мин
Охват и читатели11K
Здравствуйте, коллеги.



Снимок Дженни Марвин с сайта Unsplash

Сегодня мы подготовили для вас перевод статьи о принципиальном сходстве многих языков программирования на примере с Ruby и C#. Надеемся, что идеи уважаемого Северина Переса помогут многим из вас поскорее приступить к изучению нового языка программирования, и дело пойдет с толком и удовольствием.
Читать дальше →

Понижаем уровень связанности с помощью DI для улучшения тестируемости кода, пример реализации

Время на прочтение4 мин
Охват и читатели2.1K

В началье статьи хочу сразу заметить, что я не претендую на новизну, а только хочу поделиться/напомнить о такой возможности как IoC DI.


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


О чем вообще речь


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


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


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


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


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

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

Курс «Языки веб-программирования» (на основе Ruby) от МГТУ им. Н. Э. Баумана на канале Технострим

Время на прочтение14 мин
Охват и читатели22K


В этой статье мы расскажем о курсе «Языки веб-программирования», который читается на кафедре «Компьютерные системы и сети» (ИУ-6) МГТУ им. Н.Э. Баумана. Примеры приводятся на Ruby, а сам курс и представляет собой 16 видеолекций, доступных бесплатно на канале Технострим. В «Бауманке» курс читается для студентов второго курса, уже знакомых с высокоуровневыми языками программирования, такими как Pascal, C++ или Java. Основной акцент делается на системное понимание технологий, используемых в веб-программировании, а не на глубину освоения именно технологий Ruby. Поэтому курс также будет полезен слушателям, имеющим отрывочные знания о веб-технологиях на любых языках.

Сокрытие в Ruby. А ещё скрываем классы из Top-Level

Время на прочтение3 мин
Охват и читатели3.4K

Что бы далеко не ходить, сразу определимся с терминами.


  • Инкапсуляция — упаковка данных и функций в единый компонент.
  • Сокрытие — представляет собой принцип проектирования, заключающийся в разграничении доступа различных частей программы к внутренним компонентам друг друга.

Взято с вики. В языке программирования Ruby с инкапсуляцией вроде как всё хорошо. С сокрытием на первый взгляд тоже, нам доступны локальные переменные, переменные инстансов, разные уровни доступа к методам (public, protected, private). Но иногда этого может не хватать.

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

RubyMine 2018.2: присоединение отладчика к удаленным процессам, chruby, улучшенный анализ кода и многое другое

Время на прочтение4 мин
Охват и читатели3.2K
Привет, Хабр!

Сезон летних обновлений IDE на базе IntelliJ продолжается, и в этой серии мы расскажем, чему новому научился RubyMine в версиях 2018.1 и вышедшей на днях RubyMine 2018.2.


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

Молчание Ruby-эксепшенов: транзакционный Rails/PostgreSQL триллер

Время на прочтение9 мин
Охват и читатели7.1K

Это история о том, почему вы никогда не должны замалчивать ошибки, когда вы внутри транзакции в базе данных. Узнайте, о том как правильно использовать транзакции и что делать, когда их использовать — не вариант. Спойлер: речь пойдёт об advisory locks в PostgreSQL!


Я работал над проектом, в котором пользователи могут импортировать большое количество тяжёлых сущностей (назовём их товарами — products) из внешнего сервиса в наше приложение. К каждому товару при этом загружается ещё больше разнообразных связанных с ним данных с внешних API. Нередка ситуация, когда пользователю нужно загрузить сотни товаров вместе со всеми-всеми зависимостями, в итоге импорт одного товара занимает ощутимое время (30-60 секунд), а весь процесс может порядочно так затянуться. Пользователю может надоесть ждать результата и у него есть право нажать кнопку «Отмена» в любой момент и приложение должно быть полезным с тем количеством товаров, которые удалось загрузить к этому моменту.

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

Saint P Rubyconf 2018: 10 июня, Санкт-Петербург

Время на прочтение1 мин
Охват и читатели1.8K
Здравствуй Хабр и Ruby-сообщество! Спешим сообщить, что уже совсем скоро, 10 июня 2018 года, во второй раз состоится конференция для разработчиков на Ruby и Ruby on Rails — Saint P Rubyconf 2018. Слоган конференции — «Ruby: the best parts». Место проведения — Санкт-Петербург, Корпус ИТМО на ул. Ломоносова, 9.
Читать дальше →

Анонс митапа RubyRoars #1 в Харькове

Время на прочтение2 мин
Охват и читатели1.1K


Большой опыт проведения митапов Sync.NET, ThinkPHP, ThinkJava, WordPress Kharkiv и iThink привел нашу команду к логичному вопросу — а не пора ли нам создать и Ruby-сообщество? Пора, именно поэтому мы приглашаем всех Ruby-разработчиков на стартовую встречу RubyRoars, призванную положить начало новому большому сообществу от NIX Solutions :).
Читать дальше →

GeekBrains открывает набор на бесплатные курсы подготовки программистов

Время на прочтение2 мин
Охват и читатели15K


Всем привет! Мы открываем набор на бесплатные курсы обучения для Ruby и Frontend-разработчиков. Для участия необходимо пройти конкурс. Пять лучших выпускников пройдут стажировку у нас и останутся работать в офисе. Заявки на обучение принимаются по 17 июня включительно. Подробности набора и программа обучения – под катом.

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

Переиспользуемые UI компоненты в приложениях на Ruby on Rails

Время на прочтение5 мин
Охват и читатели3.6K

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

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

Тестирование API сервисов и RSpec

Время на прочтение5 мин
Охват и читатели11K
image

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

Делаем приём платежей криптовалютой своими руками

Время на прочтение8 мин
Охват и читатели84K

Привет, Хабр!


Время от времени замечаю вопросы о том, как принимать платежи Bitcoin на своём сайте без использования сторонних сервисов. Это достаточно просто, но надо учитывать, что есть подводные камни.


В этой статье я постараюсь максимально подробно, без акцента на каком-либо языке программирования, описать, как сделать приём платежей Bitcoin (а также, при желании — Litecoin, Dash, Bitcoin Cash, Steep, ONION и т.п.), начиная с разворачивания полной ноды и заканчивания проверкой поступления платежа.

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

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