Обновить
16K+

Ruby *

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

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

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

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

Программирование — это не только алгоритмы и логика, но и удивительное разнообразие синтаксиса языков. Работая над новым средством подсветки синтаксиса для llamafile, разработчик Justine Tunney* исследовала 42 языка программирования — от классического C и экзотического Tcl до мощного Ruby. 

Justine делится своими открытиями о том, насколько причудливым и непредсказуемым может быть лексический синтаксис. Например, триграфы в C — устаревший инструмент для поддержки клавиатур с ограниченными символами, фиксированные длины строк в FORTRAN, вложенные комментарии в Haskell или строки с двойными квадратными скобками в Lua. Ruby вообще оказался чуть ли не самым сложным языком для подсветки из-за его контекстно-зависимого синтаксиса.

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

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис

Читать далее

Язык Crystal на микроконтроллерах

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели5.3K

Язык Crystal каждый раз удивляет меня. Я думал что язык с синтаксисом Руби не может быть быстрым как Си. Я думал что учитывая что его авторы сидят на Маке или Линуксе его никогда не портируют на винду. Я думал что не справятся с многопоточностью учитывая насколько это усложняет шедулер. И уж совершенно точно я был уверен что портировать его на микроконтроллеры нереальная задача - большой рантайм, ориентированная на GC стдлиба.

Сейчас я покажу как можно писать для микроконтроллеров на Crystal.

Читать далее

Rails сквозь года: Ключевые изменения от версии 1 к версии 8

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели3.3K

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

Читать далее

Два месяца и релиз языка программирования Ruby 3.4.0 готов

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

Привет, Хабр! На связи команда Selectel. Разработчики Ruby молодцы: прошло всего два месяца — и уже готов новый выпуск языка, на этот раз 3.4.0. Напомню, что это динамически объектно-ориентированный язык программирования. Его хвалят за возможность быстро разрабатывать приложения.

Ruby вобрал в себя лучшие черты таких языков, как Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp, чтобы предложить разработчикам простой и гибкий инструмент для решения задач. Код Ruby распространяется под лицензиями BSD («2-clause BSDL») и «Ruby», которая совместима с GPLv3 и ссылается на последнюю версию лицензии GPL. Но хватит о языке, давайте, наконец, поговорим о его новом выпуске.
Читать дальше →

Ускоряем Ruby, переписав C… на Ruby

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

В последнее время я часто видел обсуждения репозитория сравнения языков. В нём CRuby был третьим снизу, обгоняя по скорости только R и Python.

Автор репозитория @BenjDicken создал забавную визуализацию производительности каждого из языков. В одной из визуализаций из визуализаций Ruby по бенчмаркам Ruby оказывается третьим с конца.

Читать далее

Simple Rails. Часть 1 — начало: свой веб сервер

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели4.5K

Всем привет, думаю, читатель, нажавший на данный заголовок, уже догадывается, о чем примерно пойдет речь. Данная статья рассчитана на тех, у кого уже есть какое-либо понимания языков программирования (лучше если именно Ruby), а также хотя бы общие сведения о HTML, работе ОС и сети.

Для тех, кто не в курсе в мире веб разработки существует фреймворк Ruby on Rails. Фреймворк горячо любим автором и сообществом и используется для создания полнофункционального сайта или по-другому веб приложения. Но все ли знают и понимают, как оно там вообще работает?

Читать далее

Лёгкости перехода: четыре разработчика о том, почему они перешли на Go

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

Микросервисная архитектура — это новый черный: кажется, уже все бигтехи пилят монолиты на сервисы и и ищут гошников в штат. Спрос рождает предложение — всё больше ребят переходят с других бэкенд-языков на Golang. 

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

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

Читать далее

Mount — ещё один способ уменьшения размера Docker-образа

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели28K

Делюсь лайфхаком по уменьшению размеров Docker-образов. Как-то нам попалась на поддержку и развитие CRM-система, написанная на Ruby...

Обновили Ruby-пакеты и под них код, написали Dockerfile. Первая сборка была удручающей: образ в 2Гб. Это нормальный размер, если ты собираешь образ с Torch и другой ML-штуковиной, но CRM - нет. В результате дальнейших действий, удалось сократить размер образа до 200Мб.

Cделали следующее, чтобы сократить размер

Декомпозиция монолитной системы с использованием Strangler-паттерна

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели21K

Привет! Меня зовут Дима, я архитектор в Купере. Сегодня расскажу о шаблоне проектирования Strangler, который мы использовали для поэтапного выноса бизнес-логики из монолитной системы в отдельный сервис. 

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

Читать далее

Сравним ruby, lisp и python

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели7.6K

На примере простых алгоритмов (вычисление расстояния между точками, сумма членов геометрической прогрессии, формирование массива простых чисел по алгоритму Эратосфена, числа Фибоначчи) сравниваются три языка программирования - Lisp, Python и Ruby. Сравнение проходит по следующим параметрам: компактность и читаемость кода, скорость работы.

Читать далее

Контрактные тесты с Pact: гарантия стабильности микросервисов

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

Привет! Меня зовут Юрий, я старший разработчик в Купере в команде Ruby Platform, занимающейся разработкой внутренних библиотек, инструментов мониторинга и поддержки микросервисов.

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

Из данной статьи вы узнаете:

- общий принцип работы контрактных тестов;

- о проблемах, с которыми мы столкнулись при внедрении контрактного тестирования и как их решали;

- как мы разработали свое решение для контрактного тестирования Ruby-приложений;

- о настройке CI/CD для автоматизации контрактных тестов.

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

Читать далее

Реализация сапёра в 100 строках чистого Ruby

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели10K

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

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

В нашем случае мы проделаем это на примере старого доброго «Сапёра». Помню, как играл в него на Windows XP ещё пацаном. Если и вы разделяете аналогичные воспоминания, то приветствую вас, мои друзья-миллениалы!
Читать дальше →

Кратко про библиотеку Rumale для машинного обучения на Ruby

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели2.5K

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

Библиотека Rumale создана для того, чтобы сделать машинное обучение доступным и удобным для разрабов на Ruby. Она имеет большой выбор алгоритмов и инструментов, аналогичных тем, что можно найти в Scikit-learn для Python.

Краткий формат статьи выбран из-за сходств с Sckit learn.

Читать далее

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

Transactional Outbox: от идеи до open-source

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели50K

Привет! На связи Миша Меркушин. Я тимлид команды Ruby Platform, ответственной за разработку внутренних библиотек и улучшение архитектуры микросервисов на Ruby в СберМаркете. Эта статья про архитектурный паттерн Outbox и инструмент, который мы создали и итерационно развивали внутри команды и лишь недавно «выпустили» его в мир. Он решает проблему обеспечения надежной и согласованной отправки сообщений из приложения, гарантируя, что сообщение будет отправлено после успешного завершения транзакции базы данных.

Читать далее

Собственные проекты, углубленная практика алгоритмов и другое: поднимаем навыки программирования на новый уровень

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели9.7K

Неважно, новичок ли вы, отлаживающий вашу первую программу «Hello World», или опытный инженер, — у каждого из нас всегда есть возможность улучшить свои навыки. Александр Шелютин, Data Architect в KarmaHQ, расскажет о разнице между тем, как просто заставить что-то работать, и написанием действительно хорошего кода.

Читать далее

Как делать многоуровневые формы в Rails

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели1.3K

Работа с многоуровневыми формами в Ruby on Rails — это то, что точно поднимет ваш скилл в Ruby. В этой рассмотрим, как упростить этот процесс с помощью двух гемов: Wicked и Cocoon.

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

Читать далее

Безработные айосники, мертвый PHP и бесполезные “саперы”: топ-5 мифов о будущем российского IT

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели25K

Мы в hitch занимаемся аутстаффингом – выводим опытных IT-специалистов на бигтех-проекты. Поэтому непрерывно следим за любыми изменениями на рынке, а еще с удовольствием слушаем экспертов — но не во всём с ними соглашаемся. Сегодня разберем прогнозы и обещания, которые всколыхнули рынок, но показались нам нереалистичными.

Читать далее

Как дальнобойщик в 38 лет стал разработчиком на Ruby on Rails

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели9.6K

Недавно мне представилась возможность взять интервью у Педро Давида Гарсии Лопеса, разработчика на Ruby on Rails из Великобритании, который до этого работал дальнобойщиком. Интересно то, что он решил стать программистом в 38 лет. В этой статье я расскажу его историю, которая, надеюсь, покажется вам такой же вдохновляющей, какой она показалась мне.
Читать дальше →

Уязвимости на GitHub: в библиотеке Ruby, которую скачали 250 000 раз, модулях для электронных замков и популярных играх

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

В конце марта в блоге GitHub вышла статья, как защищаться от уязвимостей типа RepoJacking. В первых строчках автор советовал использовать пакетные менеджеры типа NPM и PyPI, чтобы киберугроза этого вида «не угрожала пользователю напрямую». Можно было бы вздохнуть с облегчением, но читатели Хабра уже знают об исследовании команды МТС RED ART, которое позволило найти более 1300 уязвимых для RepoJacking репозиториев.

Меня зовут Андрей Сомсиков, я — руководитель команды МТС RED ART. В этой статье — вторая часть нашего исследования уязвимых репозиториев на GitHub. Мы нашли уязвимости в популярных библиотеках: для разработки на Ruby, для электронных замков и даже для пользователей Reddit и Minecraft. Но не всё так страшно! В конце дам рекомендации от всей нашей команды по борьбе с уязвимостями в популярных хостингах кода.

Читать далее

Hosting Ruby. Обзор вариантов и пример деплоя Ruby on Rails приложения

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели3.2K

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

Читать далее