<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Все статьи подряд / Ruby / Хабр]]></title>
    <link>https://habr.com/ru/hubs/ruby/articles/</link>
    <description><![CDATA[Ruby – динамический высокоуровневый язык программирования]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Tue, 05 May 2026 18:17:50 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[Как «красивый» Ruby‑синтаксис украл request из Grape и поломал нам Rate Limiting]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1030354/</guid>
      <link>https://habr.com/ru/articles/1030354/?utm_campaign=1030354&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/526/d9d/e62/526d9de62e95a19f6a3ba4a4d0c09434.png" /><p>Решили мы добавить Rate Limit заголовки к&nbsp;ошибкам <code>SubscriptionRequiredError</code>, чтобы фронт понимал, какие&nbsp;лимиты превышены. Но&nbsp;внезапно при&nbsp;обработке ошибки пропал <code>request</code>. А&nbsp;значит&nbsp;— нет ни <code>headers</code>, ни <code>current_user</code>. Куда он делся и как&nbsp;это починить?</p> <a href="https://habr.com/ru/articles/1030354/?utm_campaign=1030354&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 01 May 2026 04:12:56 GMT</pubDate>
      <dc:creator><![CDATA[Ruvaleev]]></dc:creator>
      
      <category><![CDATA[ruby]]></category><category><![CDATA[rubyonrails]]></category><category><![CDATA[swagger]]></category><category><![CDATA[errors]]></category><category><![CDATA[error handling]]></category><category><![CDATA[debug]]></category><category><![CDATA[grape]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[SLA для Redmine. Подходящих плагинов не оказалось]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1025174/</guid>
      <link>https://habr.com/ru/articles/1025174/?utm_campaign=1025174&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/d09/eec/bcc/d09eecbcc82675abeb51691d15a501c2.jpg" /><p>В любой компании, рано или поздно встает вопрос контроля сроков реакции и выполнения тех или иных задач. В статье речь пойдет о желании внедрить SLA (Service Level Agreement) в Redmine, о том как попытка найти и установить готовое решение, обернулось мини исследованием.</p> <a href="https://habr.com/ru/articles/1025174/?utm_campaign=1025174&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 19 Apr 2026 08:46:05 GMT</pubDate>
      <dc:creator><![CDATA[groTex22]]></dc:creator>
      
      <category><![CDATA[redmine]]></category><category><![CDATA[plugins]]></category><category><![CDATA[redmine plugin]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Async-background]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1024614/</guid>
      <link>https://habr.com/ru/articles/1024614/?utm_campaign=1024614&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/83c/a9d/1c2/83ca9d1c2fbfaed60960079862b9558c.png" /><p>У меня было Falcon-приложение на Async, и в нём накопились задачи, которые надо было выполнять где-то рядом: cron-задачи, интервалы, отложенные джобы. Классический ответ — Sidekiq + Redis. Но ради трёх задач в минуту тащить в проект Redis с отдельным контейнером, отдельным процессом и отдельной точкой отказа казалось перебором. А альтернативы либо тянули за собой Postgres (который в большинстве проектов уже занят бизнес-логикой и плохо реагирует, когда на него вешают ещё и очередь задач), либо не дружили с Async event loop.</p><p>Так родился <code>async-background</code> — лёгкий планировщик, у которого нет внешних зависимостей кроме SQLite, который живёт в том же event loop что и Falcon, и в котором я смог реализовать ещё одну важную для меня штуку — управляемую утилизацию воркеров: можно явно сказать «эти два воркера только cron, эти два только очередь», или прибить конкретную задачу к конкретному процессу, без переписывания кода.</p><p>В статье — история создания гема: какие альтернативы я смотрел и почему они не подошли, какие принципы я зафиксировал на берегу, какие технические находки получились по ходу (min-heap вместо тиков, две шкалы времени, CRC32-шардинг для multi-process safety, UNIX-сокеты для мгновенного wake-up очереди), и какие гочи я нашёл лбом — включая историю про то, как Docker overlay2 ел мою SQLite базу под нагрузкой на staging.</p><p><em>Это адаптация моей англоязычной статьи на </em><a href="https://medium.com/@romnhajdarov/building-a-lightweight-scheduler-for-ruby-on-async-bd8e40b99243" rel="noopener noreferrer nofollow"><em>Medium</em></a></p> <a href="https://habr.com/ru/articles/1024614/?utm_campaign=1024614&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">next</a>]]></description>
      
      <pubDate>Fri, 17 Apr 2026 11:15:17 GMT</pubDate>
      <dc:creator><![CDATA[RomanHaidarov]]></dc:creator>
      
      <category>ruby</category><category>async</category><category>background</category><category>concurrency</category><category>fiber</category><category>falcon</category><category>cron</category><category>sqlite</category><category>jobs</category><category>scheduler</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Партитура для невидимого оркестра]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1024412/</guid>
      <link>https://habr.com/ru/articles/1024412/?utm_campaign=1024412&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/b0b/b2f/3cf/b0bb2f3cf50b864ee1e2de7467e6d188.jpg" /><p>Представьте себе пятиэтажный дом без лифта, построенный в конце пятидесятых, где-нибудь на отшибе Автозаводской, или еще лучше – в Купчино. Каждый этаж использует свой язык со своей записью. Не в переносном, а в самом прямом смысле: первый этаж общается кириллицей, второй – латиницей, третий – иероглифами, четвертый – клинописью, а пятый, подобно Витгенштейну, принципиально молчит, полагая, что о чем невозможно говорить, о том следует молчать. Почтальон, доставляющий корреспонденцию, вынужден нести пять экземпляров одного и того же письма, переведенного на каждый из этих языков, и каждый раз стучаться в дверь, надеясь, что адресат не переехал на другой этаж.</p><p>Именно так устроен мир программирования. Проблема очевидна любому, кто хоть раз пытался написать инструмент для анализа кода. Допустим, вы создали превосходный анализатор цикломатической сложности для Python. Он великолепен: находит вложенные условия, считает точки ветвления, рисует графы потоков управления. Затем к вам приходит коллега и спрашивает: «А для <em>Ruby</em> сделаешь?» И тут выясняется, что весь ваш труд – все эти обходчики деревьев, все эти паттерн-матчинги над питоновским AST – нужно переписать заново. С нуля. Для другого дерева, с другими узлами, другой семантикой и другими подводными камнями. А потом придет третий коллега и попросит то же самое для <em>Haskell</em>.</p> <a href="https://habr.com/ru/articles/1024412/?utm_campaign=1024412&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">MetaAST to the rescue</a>]]></description>
      
      <pubDate>Fri, 17 Apr 2026 04:17:02 GMT</pubDate>
      <dc:creator><![CDATA[amcured]]></dc:creator>
      
      <category><![CDATA[ast]]></category><category><![CDATA[абстрактное синтаксическое дерево]]></category><category><![CDATA[metaprogramming]]></category><category><![CDATA[metamodel]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Выразительный DSL на Ruby]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1023302/</guid>
      <link>https://habr.com/ru/articles/1023302/?utm_campaign=1023302&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f92/318/a9a/f92318a9a2fbea7ae77366a28c997652.jpg" /><p>Всем известный Ruby on Rails, как самый яркий пример использования DSL, позволяет разработчикам абстрагироваться от низкоуровневых деталей реализации и сосредоточиться на бизнес-логике. Написание кода выглядит очень лаконично и выразительно, но как это работает? Давайте разберемся на простом примере.</p> <a href="https://habr.com/ru/articles/1023302/?utm_campaign=1023302&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Что, да как?</a>]]></description>
      
      <pubDate>Tue, 14 Apr 2026 11:11:39 GMT</pubDate>
      <dc:creator><![CDATA[Laranto]]></dc:creator>
      
      <category><![CDATA[ruby]]></category><category><![CDATA[rubyonrails]]></category><category><![CDATA[dsl]]></category><category><![CDATA[backend]]></category><category><![CDATA[metaprogramming]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Переверни его. Переверни наоборот]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1002854/</guid>
      <link>https://habr.com/ru/articles/1002854/?utm_campaign=1002854&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/ce6/4ff/746/ce64ff746f2a3e28a9d8b85296e94ac3.png" /><p><em>Пара слов о том, как программисты разных конфессий справляются с самой очевидной задачей в Computer Science.</em></p><p>Примеры правильных и неправильных разворотов списка на десяти разных языках.</p> <a href="https://habr.com/ru/articles/1002854/?utm_campaign=1002854&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">От питона до идриса</a>]]></description>
      
      <pubDate>Tue, 24 Feb 2026 05:29:53 GMT</pubDate>
      <dc:creator><![CDATA[cupraer]]></dc:creator>
      
      <category><![CDATA[списки]]></category><category><![CDATA[собеседование вопросы]]></category><category><![CDATA[собеседование]]></category><category><![CDATA[собеседования задачи]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Вытесняй и властвуй: еще раз про многозадачность]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1000924/</guid>
      <link>https://habr.com/ru/articles/1000924/?utm_campaign=1000924&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/e0c/427/f71/e0c427f712d5b318c89f1119e337a678.jpg" /><p>В последнее время мне довелось много заниматься распараллеливанием однопоточного кода и показалось уместным свести воедино более-менее всё, что нам известно про разные типы многозадачности, с примерами и комментариями.</p><p>Примеры на Ruby, Go, Java.</p> <a href="https://habr.com/ru/articles/1000924/?utm_campaign=1000924&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 18 Feb 2026 10:15:45 GMT</pubDate>
      <dc:creator><![CDATA[oeditus]]></dc:creator>
      
      <category><![CDATA[многопоточность]]></category><category><![CDATA[многозадачность]]></category><category><![CDATA[multithreading]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Сегодня я для себя открыл: Project Loom]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/990356/</guid>
      <link>https://habr.com/ru/articles/990356/?utm_campaign=990356&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/b27/1d3/f78/b271d3f78fecca0cf1d82f53cf857dcd.png" /><p>"Loom" означает "ткацкий станок" - так назывался проект по добавлению асинхронности в джаву. Тяжёлые системные потоки заменили легковесными виртуальными потоками. Потоки и нити в английском называются одинаково - thread - отсюда название.</p><p>Проект успешно внедрили пару лет назад, и я, к сожалению, это полностью пропустил. Основная причина, конечно - что я в принципе не ожидал от джавы никаких прорывов (и оказался на 100% неправ!) Ну и, как бэкенд-разработчик на питоне, я не очень-то слежу за развитием JVM-языков.</p><p>Но исправляюсь: Project Loom - это блестящая идея. Учитывая, что его внедрили совместимым образом, и почти не было ломающих изменений. Я считаю, это оптимальная реализация асинхронности для высокоуровневого серверного языка.</p><p>Уже почти все использующие JVM языки переехали на новую версию JVM, и, таким образом, на проект Loom: деваться им некуда. Так что, есть надежда, что это изменение откроет новую главу для некоторых из них. Есть также предположение, как оно может повлиять на скриптовые языки, такие как питон. Гипотеза только.</p><p>Также, вы узнаете, почему Гвидо ван Россум не&nbsp;ошибся, когда добавлял async/await в&nbsp;питон, а&nbsp;Мацумото&nbsp;— создатель Ruby&nbsp;— тоже угадал, когда, наоборот, отказался от&nbsp;async/await.</p> <a href="https://habr.com/ru/articles/990356/?utm_campaign=990356&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 30 Jan 2026 16:32:46 GMT</pubDate>
      <dc:creator><![CDATA[abetkin]]></dc:creator>
      
      <category><![CDATA[async]]></category><category><![CDATA[python]]></category><category><![CDATA[loom]]></category><category><![CDATA[graalpy]]></category><category><![CDATA[jvm]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Элементарный дебаггинг с binding.irb]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/971356/</guid>
      <link>https://habr.com/ru/articles/971356/?utm_campaign=971356&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Бывает так, что запускаешь тесты, а они падают там, где вроде бы всё должно работать. В логах — только сухая ошибка, без контекста. Открываешь код, смотришь на участок кода, где произошёл сбой, и начинаешь гадать:</p> <a href="https://habr.com/ru/articles/971356/?utm_campaign=971356&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">В чем  же дело?</a>]]></description>
      
      <pubDate>Fri, 28 Nov 2025 14:14:43 GMT</pubDate>
      <dc:creator><![CDATA[Laranto]]></dc:creator>
      
      <category><![CDATA[ruby]]></category><category><![CDATA[rubyonrails]]></category><category><![CDATA[debuging]]></category><category><![CDATA[errors]]></category><category><![CDATA[beginner manual]]></category><category><![CDATA[testing tools]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[ActiveRecord: опасная магия]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/970042/</guid>
      <link>https://habr.com/ru/articles/970042/?utm_campaign=970042&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>В&nbsp;Ruby‑разработке ActiveRecord давно стал стандартом: он интуитивно понятен, встроен в&nbsp;Rails и позволяет&nbsp;быстро проводить CRUD‑операции. По&nbsp;мере роста проекта его «удобство» нередко начинает оборачиваться скрытыми проблемами.</p> <a href="https://habr.com/ru/articles/970042/?utm_campaign=970042&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 25 Nov 2025 10:15:39 GMT</pubDate>
      <dc:creator><![CDATA[Laranto]]></dc:creator>
      
      <category><![CDATA[ruby]]></category><category><![CDATA[rubyonrails]]></category><category><![CDATA[sql]]></category><category><![CDATA[activerecord]]></category><category><![CDATA[ошибки и грабли]]></category><category><![CDATA[n+1]]></category><category><![CDATA[orm]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Микросервисная трансформация в Купере — как это было. Часть I: Начинаем распил монолитов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kuper/articles/961630/</guid>
      <link>https://habr.com/ru/companies/kuper/articles/961630/?utm_campaign=961630&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/95a/606/a51/95a606a5171e2b01d6d1088706325ed5.png" /><p>Привет! Меня зовут Фёдор Засечкин. С 2023 года я руковожу группой разработки операционной платформы в Купере. Наша команда отвечает за стабильность и развитие сервисов, которые обеспечивают сборку и доставку заказов, а также найм и выход партнёров в смены.</p><p>Последние два года наша ключевая задача — <strong>микросервисная трансформация</strong>. Мы постепенно распиливаем монолит, перераспределяя нагрузку по сервисам. На сегодня более 1 000 RPS HTTP-трафика уже ушло с монолита; до полного завершения осталось около 30 RPS и часть межсервисных интеграций.</p><p>Я решил написать серию статей о том, как мы проходили этот путь: что сработало, какие ошибки допустили и какие решения реально помогли. Этот текст — первый из серии.</p> <a href="https://habr.com/ru/articles/961630/?utm_campaign=961630&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 21 Nov 2025 10:15:11 GMT</pubDate>
      <dc:creator><![CDATA[CandyFetka (Купер)]]></dc:creator>
      
      <category><![CDATA[микросервисы]]></category><category><![CDATA[монолит]]></category><category><![CDATA[архитектура]]></category><category><![CDATA[kafka]]></category><category><![CDATA[outbox]]></category><category><![CDATA[проектирование систем]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Насколько Java быстрая?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/spring_aio/articles/962604/</guid>
      <link>https://habr.com/ru/companies/spring_aio/articles/962604/?utm_campaign=962604&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/e57/60f/aab/e5760faab6921c0252e589c1ff9f5612.png" /><p>Некоторые считают Java раздутым монстром, а Rust — чемпионом производительности. Но что, если взглянуть на современную Java с Vector API и многопоточностью?&nbsp;</p><p>В новом переводе от команды <a href="https://t.me/+QmrKn0wA8CdkNjAy">Spring АйО</a> посмотрим на запуск масштабной симуляции частиц и сравним результаты. Правда ли, что бывалая Java всё ещё умеет удивлять?&nbsp;</p><p><em>Сравнение performance-а языков всегда было холиварной темой. Рекомендуем расценивать статью как приглашение к конструктивной дискуссиии, а не как призыв к конкретному действию.</em></p> <a href="https://habr.com/ru/articles/962604/?utm_campaign=962604&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 02 Nov 2025 08:49:55 GMT</pubDate>
      <dc:creator><![CDATA[spring_aio (Spring АйО)]]></dc:creator>
      
      <category>java</category><category>kotlin</category><category>performance</category><category>ruby</category><category>simd</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] AWS удалил мой 10‑летний аккаунт и все данные без предупреждения]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/itsumma/articles/937174/</guid>
      <link>https://habr.com/ru/companies/itsumma/articles/937174/?utm_campaign=937174&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/e99/cbb/f73/e99cbbf730e58f53f3e396067cb9ecf1.jpg" /><p><em>Я 10 лет был клиентом AWS и контрибьютором проектов с открытым исходным кодом, а они удалили мой аккаунт и все данные без какого‑либо предупреждения. Ниже — история о том, как «верификация» у AWS превратилась в цифровую казнь и почему нельзя доверять облачным провайдерам, если у вас нет копий данных вне облака.</em></p><p>На <strong>23 июля 2025 года</strong> AWS удалил мой аккаунт, которому было 10 лет, и каждый байт данных, который я там хранил. Без предупреждения. Без льготного периода. Без возможности восстановления. Произошла полная цифровая аннигиляция.</p><p>Ниже я расскажу историю о катастрофической внутренней ошибке в AWS MENA, 20 днях кошмарного общения с поддержкой, в ходе которого я так и не получил прямого ответа на вопрос «Мои данные ещё существуют?», и о том, что всё это показывает в отношении доверия облачным провайдерам.</p> <a href="https://habr.com/ru/articles/937174/?utm_campaign=937174&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 15 Aug 2025 08:35:23 GMT</pubDate>
      <dc:creator><![CDATA[ITSumma (ITSumma)]]></dc:creator>
      
      <category>AWS</category><category>MENA</category><category>данные</category><category>профиль aws</category><category>удаление профиля</category><category>ошибка</category><category>история разработчика</category><category>Общение с поддержкой AWS</category><category>защита данных</category><category>хранение данных</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Зачем я написал очередной велосипед для работы с директориями (спойлер: не совсем велосипед)]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/930076/</guid>
      <link>https://habr.com/ru/articles/930076/?utm_campaign=930076&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Вы когда-нибудь сталкивались с&nbsp;<strong>плагинами, которые лезут в чужие папки</strong>, перезаписывают файлы ядра и превращают&nbsp;<code>git status</code>&nbsp;в ад?</p><p>Я — да. И вместо того чтобы мириться с&nbsp;<strong>ручным копированием, гигантскими .gitignore и вечными конфликтами</strong>, написал&nbsp;<strong>dmp</strong>&nbsp;— инструмент, который:<br>&nbsp;<strong>Отслеживает</strong>, откуда взялся каждый файл,<br>&nbsp;<strong>Автоматически разрешает</strong>&nbsp;конфликты (или даёт контроль),<br>&nbsp;<strong>Не ломает</strong>&nbsp;IDE (никаких симлинков!),<br>&nbsp;<strong>Работает</strong>&nbsp;с любыми языками и фреймворками.</p><p><strong>Для кого:</strong><br>— Разработчики плагинов/модулей,<br>— Те, кто устал от&nbsp;<code>git-submodules</code>&nbsp;и&nbsp;<code>rsync</code>,<br>— Все, кто хочет&nbsp;<strong>чистый workflow</strong>&nbsp;без монрепозитория.</p> <a href="https://habr.com/ru/articles/930076/?utm_campaign=930076&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 22 Jul 2025 15:16:03 GMT</pubDate>
      <dc:creator><![CDATA[SidorkinAlex]]></dc:creator>
      
      <category><![CDATA[git]]></category><category><![CDATA[инструменты разработчика]]></category><category><![CDATA[плагины]]></category><category><![CDATA[файловая система]]></category><category><![CDATA[python]]></category><category><![CDATA[php]]></category><category><![CDATA[ruby]]></category><category><![CDATA[опенсорс]]></category><category><![CDATA[автоматизация]]></category><category><![CDATA[воркфлоу]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[AI-Ready Data: как дообучить LLM без боли и с максимальной отдачей]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/naumen/articles/925520/</guid>
      <link>https://habr.com/ru/companies/naumen/articles/925520/?utm_campaign=925520&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>В последние месяцы я всё чаще сталкиваюсь с одним и тем же выводом: внедрение LLM-систем (особенно с использованием RAG-подхода) тормозится не из-за самой модели, а из-за отсутствия качественных данных. Самое дорогое в процессе — это не запуск пайплайна, не подбор архитектуры, а подготовка структурированных, очищенных и корректных данных, пригодных для обучения или дообучения моделей. Всё чаще этот подход называют AI-Ready Data.</p> <a href="https://habr.com/ru/articles/925520/?utm_campaign=925520&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 07 Jul 2025 09:42:46 GMT</pubDate>
      <dc:creator><![CDATA[Vladbrain (NAUMEN)]]></dc:creator>
      
      <category><![CDATA[#AIReadyData]]></category><category><![CDATA[#LLM]]></category><category><![CDATA[#DataEngineering]]></category><category><![CDATA[#RubyOnRails]]></category><category><![CDATA[#RAG]]></category><category><![CDATA[#LowCode]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Как GitHub использует CodeQL для обеспечения безопасности]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/otus/articles/905630/</guid>
      <link>https://habr.com/ru/companies/otus/articles/905630/?utm_campaign=905630&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/0ee/a07/d99/0eea07d99fac0b4739857747bf7d8023.jpg" /><p>Что происходит, когда GitHub берётся за собственную безопасность? Они пишут код для защиты кода — и активно используют для этого CodeQL. В этой статье команда Product Security Engineering рассказывает, как настроить масштабный автоматический анализ уязвимостей, зачем создавать свои пакеты запросов и как с помощью CodeQL находить ошибки, которые невозможно поймать обычным поиском по коду.</p> <a href="https://habr.com/ru/articles/905630/?utm_campaign=905630&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 30 Apr 2025 08:39:18 GMT</pubDate>
      <dc:creator><![CDATA[kmoseenk (OTUS)]]></dc:creator>
      
      <category>CodeQL</category><category>github</category><category>безопасность кода</category><category>уязвимости</category><category>GitHub Advanced Security</category><category>пакет запросов</category><category>вариантный анализ</category><category>cicd</category><category>анализ уязвимостей</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[MockGUI – помощь в сборке и организации мини репозитория rpm пакетов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/897120/</guid>
      <link>https://habr.com/ru/articles/897120/?utm_campaign=897120&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/770/2de/64a/7702de64a1a0712cc30cd1ad6cc4be76.png" /><p align="left">Есть множество сервисов и программ по сборке программных пакетов: OpenSuse Build Service (OBS), koji. Fedora copr, rpmbuild, mock.</p><p align="left">Все они позволяют организовать сборку программных пакетов, релиз пакетов в репозиторий и пр. Большинство систем обладают обширным функционалом, например тот же OBS позволяет собирать как deb пакеты, так и rpm, так и AppImage и т.&nbsp;д. Koji позволяет разбить сборку по разным машинам и управляя билдерами организовать сборку огромного числа тяжелых пакетов, многие комплексы типа OBS и Copr вообще организованы в виде сервисов в сети и позволяют различным пользователям собирать пакеты и публиковать их в публичных репозиториях.</p><p align="left">Зачем же еще понадобилось дополнительное средство по организации сборки rpm пакетов и репозиториев?</p><p align="left">Объясню - хотелось бы что-то простое в установке и настройке, как например gitea, такое, что можно просто поднять на локальной машине и организовать сборку из проектов, которых не так много и которые не такие монструозные, требующие несколько билдеров. </p><p></p> <a href="https://habr.com/ru/articles/897120/?utm_campaign=897120&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 03 Apr 2025 11:00:56 GMT</pubDate>
      <dc:creator><![CDATA[Skoree]]></dc:creator>
      
      <category><![CDATA[rpmbuild]]></category><category><![CDATA[mock]]></category><category><![CDATA[sinatra]]></category><category><![CDATA[ruby]]></category><category><![CDATA[web-приложение]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[YAGNI — друг, или враг?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/894110/</guid>
      <link>https://habr.com/ru/articles/894110/?utm_campaign=894110&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/5d4/3f1/89d/5d43f189deeceb8eb4f77043745dcf41.jpg" /><p>Один из самых вредоносных принципов в разработке, когда-либо получивших широкую известность&nbsp;— <a href="https://books.google.es/books?id=hWwhAQAAIAAJ&amp;q=%22you+aren%27t+gonna+need+it%22&amp;redir_esc=y" rel="noopener noreferrer nofollow">YAGNI</a>. Его <a href="https://ronjeffries.com/xprog/articles/practices/pracnotneed/" rel="noopener noreferrer nofollow">озвучил</a> Рон Джеффрис в 1998, а спустя более двадцати лет&nbsp;— еще и Кармак <a href="https://x.com/ID_AA_Carmack/status/1405932642005041153" rel="noopener noreferrer nofollow">подлил керосин в огонь</a> со своим: «Неопытным разработчикам трудно оценить, как редко разработка архитектуры с учетом будущих требований приводит к успеху».</p><p>Вообще говоря, в нашем разнообразном мире ни одна максима не может быть без оговорок применима всегда. Насколько могу судить, будучи сформулированным столь безжалостно афористично, принцип YAGNI привел к тому, что у лентяев появилась отговорка на все случаи жизни.</p><p>— Давай предусмотрим передачу конфигурационных параметров в эту функцию?&nbsp;—&nbsp;YAGNI.<br>— Инъекция зависимости здесь уместнее приколоченной гвоздями реализации хранилища.&nbsp;— YAGNI.<br>— Черный кофе без сахара, пожалуйста.&nbsp;—&nbsp;YAGNI!</p><p></p> <a href="https://habr.com/ru/articles/894110/?utm_campaign=894110&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Ты чё, пёс, против великого YAGNI?</a>]]></description>
      
      <pubDate>Tue, 25 Mar 2025 09:01:35 GMT</pubDate>
      <dc:creator><![CDATA[cupraer]]></dc:creator>
      
      <category><![CDATA[рефакторинг]]></category><category><![CDATA[колбэк]]></category><category><![CDATA[yagni]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Календарь IT-конференций на 2025 год]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/speach/articles/892150/</guid>
      <link>https://habr.com/ru/companies/speach/articles/892150/?utm_campaign=892150&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/430/3af/556/4303af5568099dec24413c73c9e01ebd.jpg" /><p>Всем привет! На связи Speach (ex. IT-People). В прошлом году мы сменили имя, но не изменили своей любви к конференциям. И продолжаем организовывать самые душевные и классные мероприятия для айтишников. Приглашаем принять в них участие.</p><p><strong>25 апреля, DUMP EKB, Екатеринбург</strong></p><p>Крупнейшая конференция разработчиков на Урале, куда приезжают более 2000 человек! Конференция, которая традиционно собирает топовых IT-экспертов со всей страны. В 12 секциях прозвучат десятки докладов ТОЛЬКО на актуальные темы. Впервые в этом году — новая секция: TechLead. А также — Backend (2), Frontend, Testing&amp;QA, Team, Product, ML&amp;DS, BA&amp;SA, DevOps, Design, Science, круглые столы, воркшопы, нетворкинг и афтепати.</p> <a href="https://habr.com/ru/articles/892150/?utm_campaign=892150&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 19 Mar 2025 06:41:42 GMT</pubDate>
      <dc:creator><![CDATA[krisnvg (Speach)]]></dc:creator>
      
      <category><![CDATA[dump]]></category><category><![CDATA[pycon]]></category><category><![CDATA[Ruston]]></category><category><![CDATA[rubyrussia]]></category><category><![CDATA[goconf]]></category><category><![CDATA[конференция для разработчиков]]></category><category><![CDATA[ит-конференции]]></category><category><![CDATA[иволга]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Пишем простой планировщик файберов на ruby]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/885434/</guid>
      <link>https://habr.com/ru/articles/885434/?utm_campaign=885434&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/c05/756/a6b/c05756a6b26bf912a4299f7de012236c.png" /><p>С версии 3.0 в руби появились неблокирующие файберы, с помощью которых писать код с асинхронным вводом-выводом стало заметно удобнее. В данной статье мы напишем свой простой планировщик для файберов, чтобы лучше разобраться, как работают более сложные планировщики, типа socketry/async.</p><p></p> <a href="https://habr.com/ru/articles/885434/?utm_campaign=885434&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 03 Mar 2025 02:00:45 GMT</pubDate>
      <dc:creator><![CDATA[includedlibrary]]></dc:creator>
      
      <category><![CDATA[асинхронное программирование]]></category><category><![CDATA[ruby]]></category><category><![CDATA[fiber]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Самый странный лексический синтаксис, который я обнаружила, исследовав 42 языка программирования]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ncloudtech/articles/871692/</guid>
      <link>https://habr.com/ru/companies/ncloudtech/articles/871692/?utm_campaign=871692&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/5ea/b29/97d/5eab2997d6a4b17ede37a6c6ff1ca043.png" /><p>Программирование — это не только алгоритмы и логика, но и удивительное разнообразие синтаксиса языков. Работая над новым средством подсветки синтаксиса для llamafile, разработчик Justine Tunney* исследовала 42 языка программирования — от классического C и экзотического Tcl до мощного Ruby.&nbsp;</p><p>Justine делится своими открытиями о том, насколько причудливым и непредсказуемым может быть лексический синтаксис. Например, триграфы в C — устаревший инструмент для поддержки клавиатур с ограниченными символами, фиксированные длины строк в FORTRAN, вложенные комментарии в Haskell или строки с двойными квадратными скобками в Lua. Ruby вообще оказался чуть ли не самым сложным языком для подсветки из-за его контекстно-зависимого синтаксиса.</p><p>Под катом вы найдете описание разработки инструмента подсветки и исследование того, как языки программирования решают одни и те же задачи по-разному. Если вам интересны синтаксис, языковые особенности и сложности лексического анализа – эта статья для вас.</p><p><em>*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис</em>  </p> <a href="https://habr.com/ru/articles/871692/?utm_campaign=871692&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 22 Jan 2025 14:18:05 GMT</pubDate>
      <dc:creator><![CDATA[myoffice_ru (МойОфис)]]></dc:creator>
      
      <category>синтаксис</category><category>синтаксис языков</category><category>синтаксис javascript</category><category>синтаксис c</category><category>ruby</category><category>перевод</category><category>мойофис</category><category>perl</category><category>basic</category><category>ada</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Язык Crystal на микроконтроллерах]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/871954/</guid>
      <link>https://habr.com/ru/articles/871954/?utm_campaign=871954&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/b9d/f9f/7f5/b9df9f7f5b2eb44b17cbe244fc828c8c.jpeg" /><p> Язык Crystal каждый раз удивляет меня. Я думал что язык с синтаксисом Руби не может быть быстрым как Си. Я думал что учитывая что его авторы сидят на Маке или Линуксе его никогда не портируют на винду. Я думал что не справятся с многопоточностью учитывая насколько это усложняет шедулер. И уж совершенно точно я был уверен что портировать его на микроконтроллеры нереальная задача - большой рантайм, ориентированная на GC стдлиба.</p><p>Сейчас я покажу как можно писать для микроконтроллеров на Crystal.</p><p></p> <a href="https://habr.com/ru/articles/871954/?utm_campaign=871954&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 18 Jan 2025 15:34:23 GMT</pubDate>
      <dc:creator><![CDATA[kipar]]></dc:creator>
      
      <category><![CDATA[crystal]]></category><category><![CDATA[stm32]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Rails сквозь года: Ключевые изменения от версии 1 к версии 8]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/871710/</guid>
      <link>https://habr.com/ru/articles/871710/?utm_campaign=871710&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Ruby On Rails был краеугольным камнем в веб-разработке с момента своего основания, позволяя разработчикам создавать масштабируемые и поддерживаемые веб-приложения. С эволюцией Rails каждая версия вводила новые функции, улучшения производительности и безопасности. Поскольку Rails имеет открытый исходный код, разработчики постоянно решали существующие проблемы и добавляли улучшения, поддерживая фреймворк в соответствии с новыми трендами. Итак, давайте рассмотрим путь Rails как фреймворка от зарождения до последних достижений.</p><p></p> <a href="https://habr.com/ru/articles/871710/?utm_campaign=871710&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 05 Jan 2025 10:15:51 GMT</pubDate>
      <dc:creator><![CDATA[J4sTFly]]></dc:creator>
      
      <category>ruby on rails</category><category>ruby</category><category>ruby on rails 3</category><category>ruby on rails 4</category><category>ruby on rails 2.1</category><category>ruby on rails 7</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Два месяца и релиз языка программирования Ruby 3.4.0 готов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/selectel/articles/870390/</guid>
      <link>https://habr.com/ru/companies/selectel/articles/870390/?utm_campaign=870390&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/webt/ta/dr/c1/tadrc19nltlcjzxrhwxctaj2at8.png" alt="image"><br>
<br>
Привет, Хабр! На связи команда <a href="https://selectel.ru/services/cloud/servers/?utm_source=habr.com&amp;utm_medium=referral&amp;utm_campaign=cloud_article_ruby_010125_content" rel="nofollow noopener noreferrer">Selectel</a>. Разработчики Ruby молодцы: прошло всего два месяца — и уже готов новый выпуск языка, на этот раз 3.4.0. Напомню, что это динамически объектно-ориентированный язык программирования. Его хвалят за возможность быстро разрабатывать приложения. <br>
<br>
Ruby вобрал в себя лучшие черты таких языков, как Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp, чтобы предложить разработчикам простой и гибкий инструмент для решения задач. Код Ruby распространяется под лицензиями BSD («2-clause BSDL») и «Ruby», которая совместима с GPLv3 и ссылается на последнюю версию лицензии GPL. Но хватит о языке, давайте, наконец, поговорим о его новом выпуске. <br> <a href="https://habr.com/ru/articles/870390/?utm_campaign=870390&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Wed, 01 Jan 2025 10:55:32 GMT</pubDate>
      <dc:creator><![CDATA[DimDimDimDimDim (Selectel)]]></dc:creator>
      
      <category><![CDATA[selectel]]></category><category><![CDATA[ruby]]></category><category><![CDATA[программирование]]></category><category><![CDATA[софт]]></category><category><![CDATA[open source]]></category><category><![CDATA[разработка]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Ускоряем Ruby, переписав C… на Ruby]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/864504/</guid>
      <link>https://habr.com/ru/articles/864504/?utm_campaign=864504&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/e53/940/0c4/e539400c410f8a20e240343d5ad902d6.jpg" /><p>В последнее время я часто видел обсуждения <a href="https://github.com/bddicken/languages" rel="noopener noreferrer nofollow">репозитория сравнения языков</a>. В нём CRuby был третьим снизу, обгоняя по скорости только R и Python.</p><p>Автор репозитория <a href="https://x.com/BenjDicken" rel="noopener noreferrer nofollow">@BenjDicken</a>&nbsp;<a href="https://x.com/BenjDicken/status/1861072804239847914" rel="noopener noreferrer nofollow">создал забавную визуализацию</a>&nbsp;производительности каждого из языков. В одной из визуализаций из визуализаций Ruby по бенчмаркам Ruby оказывается третьим с конца.</p><p></p> <a href="https://habr.com/ru/articles/864504/?utm_campaign=864504&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 10 Dec 2024 07:31:56 GMT</pubDate>
      <dc:creator><![CDATA[PatientZero]]></dc:creator>
      
      <category>cruby</category><category>yjit</category><category>виртуальная машина</category><category>vm</category><category>бенчмарки</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Simple Rails. Часть 1 — начало: свой веб сервер]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/859066/</guid>
      <link>https://habr.com/ru/articles/859066/?utm_campaign=859066&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/fba/9e7/46e/fba9e746ebfe2dd9078780964d54a7d9.png" /><p>Всем привет, думаю, читатель, нажавший на данный заголовок, уже догадывается, о чем примерно пойдет речь. Данная статья рассчитана на тех, у кого уже есть какое-либо понимания языков программирования (лучше если именно Ruby), а также хотя бы общие сведения о HTML, работе ОС и сети. </p><p>Для тех, кто не в курсе в мире веб разработки существует фреймворк Ruby on Rails. Фреймворк горячо любим автором и сообществом и используется для создания полнофункционального сайта или по-другому веб приложения. Но все ли знают и понимают, как оно там вообще работает?</p> <a href="https://habr.com/ru/articles/859066/?utm_campaign=859066&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 16 Nov 2024 08:16:02 GMT</pubDate>
      <dc:creator><![CDATA[Martin_mad]]></dc:creator>
      
      <category><![CDATA[ruby]]></category><category><![CDATA[rubyonrails]]></category><category><![CDATA[http]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Лёгкости перехода: четыре разработчика о том, почему они перешли на Go]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kuper/articles/854586/</guid>
      <link>https://habr.com/ru/companies/kuper/articles/854586/?utm_campaign=854586&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/d35/ddd/11a/d35ddd11ac0d01a33c48ab37870f4242.png" /><p>Микросервисная архитектура —&nbsp;это новый черный: кажется, уже все бигтехи пилят монолиты на сервисы и и ищут гошников в штат. Спрос рождает предложение — всё больше ребят переходят с других бэкенд-языков на Golang.&nbsp;</p><p>Мы попросили наших разработчиков поделиться своим опытом перехода на Go и рассказать, почему они решили освоить новый язык программирования, какие плюсы и минусы видят в нём, дал ли переход на Go буст в новых карьерных возможностях и кому и в каких случаях они бы они советовали освоить golang.&nbsp;</p><p>Эта статья может быть полезна тем, кто тоже хочет добавить Go в копилку знаний, но пока не решился. Приступим!</p> <a href="https://habr.com/ru/articles/854586/?utm_campaign=854586&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 01 Nov 2024 07:26:08 GMT</pubDate>
      <dc:creator><![CDATA[kuper_tech (Купер)]]></dc:creator>
      
      <category><![CDATA[golang]]></category><category><![CDATA[переход на go]]></category><category><![CDATA[купер]]></category><category><![CDATA[backend]]></category><category><![CDATA[kotlin]]></category><category><![CDATA[ruby]]></category><category><![CDATA[c++]]></category><category><![CDATA[java]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Mount — ещё один способ уменьшения размера Docker-образа]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/851384/</guid>
      <link>https://habr.com/ru/articles/851384/?utm_campaign=851384&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/cde/69e/c29/cde69ec29aaa3ea24853089c49476d90.png" /><p>Делюсь лайфхаком по уменьшению размеров Docker-образов. Как-то нам попалась на поддержку и развитие CRM-система, написанная на Ruby... </p><p>Обновили Ruby-пакеты и под них код, написали Dockerfile. Первая сборка была удручающей: образ в 2Гб. Это нормальный размер, если ты собираешь образ с Torch и другой ML-штуковиной, но CRM - нет. В результате дальнейших действий, удалось сократить размер образа до 200Мб.</p><p></p> <a href="https://habr.com/ru/articles/851384/?utm_campaign=851384&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Cделали следующее, чтобы сократить размер</a>]]></description>
      
      <pubDate>Thu, 17 Oct 2024 10:40:45 GMT</pubDate>
      <dc:creator><![CDATA[WondeRu]]></dc:creator>
      
      <category><![CDATA[docker]]></category><category><![CDATA[dockerfile]]></category><category><![CDATA[multistage]]></category><category><![CDATA[ci/cd]]></category><category><![CDATA[kubernetes]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Декомпозиция монолитной системы с использованием Strangler-паттерна]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kuper/articles/849730/</guid>
      <link>https://habr.com/ru/companies/kuper/articles/849730/?utm_campaign=849730&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/bf9/687/46e/bf968746e1a4f06e99c7ee5807eadece.png" /><p>Привет! Меня зовут Дима, я архитектор в Купере. Сегодня расскажу о шаблоне проектирования Strangler, который мы использовали для поэтапного выноса бизнес-логики из монолитной системы в отдельный сервис.&nbsp;</p><p>Сначала обратимся к первоисточнику, а затем перейдем к практическим моментам, с которыми столкнулись в процессе работы. Поехали!</p> <a href="https://habr.com/ru/articles/849730/?utm_campaign=849730&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 15 Oct 2024 07:37:36 GMT</pubDate>
      <dc:creator><![CDATA[dsalahutdinov (Купер)]]></dc:creator>
      
      <category><![CDATA[монолиты]]></category><category><![CDATA[монолитное приложение]]></category><category><![CDATA[микросервисы]]></category><category><![CDATA[микросервисная архитектура]]></category><category><![CDATA[распил монолита]]></category><category><![CDATA[паттерны проектирования]]></category><category><![CDATA[ruby]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Сравним ruby, lisp и python]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/847092/</guid>
      <link>https://habr.com/ru/articles/847092/?utm_campaign=847092&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>На примере простых алгоритмов (вычисление расстояния между точками, сумма членов геометрической прогрессии, формирование массива простых чисел по алгоритму Эратосфена, числа Фибоначчи) сравниваются три языка программирования - Lisp, Python и Ruby. Сравнение проходит по следующим параметрам: компактность и читаемость кода, скорость работы.  </p><p></p> <a href="https://habr.com/ru/articles/847092/?utm_campaign=847092&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 30 Sep 2024 11:15:13 GMT</pubDate>
      <dc:creator><![CDATA[Oldchip]]></dc:creator>
      
      <category><![CDATA[Lisp]]></category><category><![CDATA[python]]></category><category><![CDATA[ruby]]></category><category><![CDATA[решето эратосфена]]></category><category><![CDATA[рекурсия]]></category><category><![CDATA[большие целые числа]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Контрактные тесты с Pact: гарантия стабильности микросервисов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kuper/articles/845964/</guid>
      <link>https://habr.com/ru/companies/kuper/articles/845964/?utm_campaign=845964&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/a50/110/50c/a5011050c764f06a7b2d16e9462f5a5e.png" /><p>Привет! Меня зовут Юрий, я старший разработчик в Купере в команде Ruby Platform, занимающейся разработкой внутренних библиотек, инструментов мониторинга и поддержки микросервисов.</p><p>У нас в Купере&nbsp;<a href="https://habr.com/ru/companies/kuper/articles/813029/">более 200 микросервисов</a>&nbsp;на разных стеках, а также монолиты. С точки зрения инфраструктуры интеграционное тестирование такого количества компонентов - довольно затратная задача, но при этом хочется обеспечить стабильность системы, не проводя ручные интеграционные регресс-тесты. В таких условиях оптимальным решением являются контрактные тесты.</p><p><strong>Из данной статьи вы узнаете:</strong></p><p>- общий принцип работы контрактных тестов;</p><p>- о проблемах, с которыми мы столкнулись при внедрении контрактного тестирования и как их решали;</p><p>- как мы разработали свое решение для контрактного тестирования Ruby-приложений;</p><p>- о настройке CI/CD для автоматизации контрактных тестов.</p><p>Материал будет полезен тем, кто задумывается о повышении надежности интеграций между сервисами и внедрении контрактных тестов в свои проекты.</p> <a href="https://habr.com/ru/articles/845964/?utm_campaign=845964&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 27 Sep 2024 06:50:19 GMT</pubDate>
      <dc:creator><![CDATA[qz-19 (Купер)]]></dc:creator>
      
      <category><![CDATA[pact]]></category><category><![CDATA[контрактные тесты]]></category><category><![CDATA[интеграционное тестирование]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Реализация сапёра в 100 строках чистого Ruby]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/830778/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/830778/?utm_campaign=830778&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<a href="https://habr.com/ru/companies/ruvds/articles/830778/"><div style="text-align:center;"><img src="https://habrastorage.org/webt/pu/b7/pl/pub7pl9oc3rsrtdjk8g6rgqsd10.png"></div></a><br>
<a name="anchorid11"></a>Ruby — весьма экспрессивный язык, в котором очень многое зачастую можно реализовать буквально в ста строках кода. Именно поэтому мне так нравится искать способ создать то же самое, но в более сжатом виде.<a href="#anchorid1"><sup>1</sup></a><br>
<br>
Сразу внесу ясность: я не говорю о <a href="https://en.wikipedia.org/wiki/Code_golf" rel="nofollow noopener noreferrer">код-гольфинге</a>, хотя это занятие тоже бывает интересным. Я имею в виду сокращение количества строк кода без потери его читаемости. По факту одним из самых приятных аспектов Ruby является то, что уменьшение количества строк кода зачастую может повысить его читаемость.<br>
<br>
В нашем случае мы проделаем это на примере старого доброго «Сапёра». Помню, как играл в него на Windows XP ещё пацаном. Если и вы разделяете аналогичные воспоминания, то приветствую вас, мои друзья-миллениалы! <a href="https://habr.com/ru/articles/830778/?utm_campaign=830778&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 26 Jul 2024 13:00:19 GMT</pubDate>
      <dc:creator><![CDATA[Bright_Translate (RUVDS.com)]]></dc:creator>
      
      <category>ruvds_перевод</category><category>ruby</category><category>программирование</category><category>сапер</category><category>оптимизация кода</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Кратко про библиотеку Rumale для машинного обучения на Ruby]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/otus/articles/822279/</guid>
      <link>https://habr.com/ru/companies/otus/articles/822279/?utm_campaign=822279&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/96c/a6e/0b6/96ca6e0b670e57f5d0c94f32a42eb5d6.png" /><p><em>Привет, Хабр!</em></p><p>Библиотека <strong>Rumale</strong> создана для того, чтобы сделать машинное обучение доступным и удобным для разрабов на Ruby. Она имеет большой выбор алгоритмов и инструментов, аналогичных тем, что можно найти в Scikit-learn для Python. </p><p>Краткий формат статьи выбран из-за сходств с Sckit learn.</p> <a href="https://habr.com/ru/articles/822279/?utm_campaign=822279&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 18 Jun 2024 05:03:31 GMT</pubDate>
      <dc:creator><![CDATA[badcasedaily1 (OTUS)]]></dc:creator>
      
      <category><![CDATA[ml]]></category><category><![CDATA[машинное обучение]]></category><category><![CDATA[otus]]></category><category><![CDATA[ruby]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Transactional Outbox: от идеи до open-source]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kuper/articles/819803/</guid>
      <link>https://habr.com/ru/companies/kuper/articles/819803/?utm_campaign=819803&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/dc6/25e/567/dc625e567460490618f5f12f04b9f96d.jpg" /><p>Привет! На связи Миша Меркушин. Я тимлид команды Ruby Platform, ответственной за разработку внутренних библиотек и улучшение архитектуры микросервисов на Ruby в СберМаркете. Эта статья про архитектурный паттерн Outbox и инструмент, который мы создали и итерационно развивали внутри команды и лишь недавно «выпустили» его в мир. Он решает проблему обеспечения надежной и согласованной отправки сообщений из приложения, гарантируя, что сообщение будет отправлено после успешного завершения транзакции базы данных.</p> <a href="https://habr.com/ru/articles/819803/?utm_campaign=819803&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 07 Jun 2024 08:58:45 GMT</pubDate>
      <dc:creator><![CDATA[bibendi (Купер)]]></dc:creator>
      
      <category><![CDATA[ruby]]></category><category><![CDATA[outbox]]></category><category><![CDATA[inbox]]></category><category><![CDATA[kafka]]></category><category><![CDATA[sidekiq]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Собственные проекты, углубленная практика алгоритмов и другое: поднимаем навыки программирования на новый уровень]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/productstar/articles/818013/</guid>
      <link>https://habr.com/ru/companies/productstar/articles/818013/?utm_campaign=818013&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/c11/fc0/c91/c11fc0c916e3769408152159c17359c2.png" /><p>Неважно, новичок ли вы, отлаживающий вашу первую программу «Hello World», или опытный инженер, — у каждого из нас всегда есть возможность улучшить свои навыки. Александр Шелютин, Data Architect в KarmaHQ, расскажет о разнице между тем, как просто заставить что-то работать, и написанием действительно хорошего кода.</p> <a href="https://habr.com/ru/articles/818013/?utm_campaign=818013&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 29 May 2024 10:42:12 GMT</pubDate>
      <dc:creator><![CDATA[ProductStarMain (ProductStar)]]></dc:creator>
      
      <category><![CDATA[программирование]]></category><category><![CDATA[код]]></category><category><![CDATA[code]]></category><category><![CDATA[ruby]]></category><category><![CDATA[советы начинающим]]></category><category><![CDATA[лайфхаки]]></category><category><![CDATA[алгоритмы]]></category><category><![CDATA[github]]></category><category><![CDATA[исходный код]]></category><category><![CDATA[oss]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как делать многоуровневые формы в Rails]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/otus/articles/812305/</guid>
      <link>https://habr.com/ru/companies/otus/articles/812305/?utm_campaign=812305&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/2c5/981/407/2c598140748b6d981aec3e5602daa4d8.jpeg" /><p>Работа с&nbsp;многоуровневыми формами в&nbsp;Ruby on Rails&nbsp;— это то, что&nbsp;точно поднимет ваш скилл в&nbsp;Ruby. В&nbsp;этой рассмотрим, как&nbsp;упростить этот процесс с&nbsp;помощью двух гемов: Wicked и Cocoon. </p><p>Многоуровневые формы позволяют собирать информацию от&nbsp;пользователя поэтапно, что&nbsp;делает интерфейс более дружелюбным.</p> <a href="https://habr.com/ru/articles/812305/?utm_campaign=812305&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 15 May 2024 07:07:27 GMT</pubDate>
      <dc:creator><![CDATA[badcasedaily1 (OTUS)]]></dc:creator>
      
      <category><![CDATA[ruby]]></category><category><![CDATA[ruby on rails]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Безработные айосники, мертвый PHP и бесполезные “саперы”: топ-5 мифов о будущем российского IT]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/hitch_outstaff/articles/812955/</guid>
      <link>https://habr.com/ru/companies/hitch_outstaff/articles/812955/?utm_campaign=812955&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/2c4/02c/bdf/2c402cbdfb2897fd5fa6c2d743185169.png" /><p>Мы в hitch занимаемся аутстаффингом – выводим опытных IT-специалистов на бигтех-проекты. Поэтому непрерывно следим за любыми изменениями на рынке, а еще с удовольствием слушаем экспертов — но не во всём с ними соглашаемся. Сегодня разберем прогнозы и обещания, которые всколыхнули рынок, но показались нам нереалистичными.</p> <a href="https://habr.com/ru/articles/812955/?utm_campaign=812955&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 07 May 2024 15:04:17 GMT</pubDate>
      <dc:creator><![CDATA[hitchTeam (hitch)]]></dc:creator>
      
      <category><![CDATA[мифы и реальность]]></category><category><![CDATA[аутстаффинг]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Как дальнобойщик в 38 лет стал разработчиком на Ruby on Rails]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/811671/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/811671/?utm_campaign=811671&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<a href="https://habr.com/ru/companies/ruvds/articles/811671/"><div style="text-align:center;"><img src="https://habrastorage.org/webt/nl/wa/sr/nlwasrim4jjutohovdauu4munju.png"></div></a><br>
Недавно мне представилась возможность взять интервью у <a href="https://www.linkedin.com/in/pedro-david-garcia-lopez/?ref=writesoftwarewell.com" rel="nofollow noopener noreferrer">Педро Давида Гарсии Лопеса</a>, разработчика на Ruby on Rails из Великобритании, который до этого работал дальнобойщиком. Интересно то, что он решил стать программистом в 38 лет. В этой статье я расскажу его историю, которая, надеюсь, покажется вам такой же вдохновляющей, какой она показалась мне. <a href="https://habr.com/ru/articles/811671/?utm_campaign=811671&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 03 May 2024 13:00:43 GMT</pubDate>
      <dc:creator><![CDATA[Bright_Translate (RUVDS.com)]]></dc:creator>
      
      <category>ruvds_перевод</category><category>ruby</category><category>ruby on rails</category><category>разработка</category><category>программирование</category><category>карьера в it</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Уязвимости на GitHub: в библиотеке Ruby, которую скачали 250 000 раз, модулях для электронных замков и популярных играх]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ru_mts/articles/810401/</guid>
      <link>https://habr.com/ru/companies/ru_mts/articles/810401/?utm_campaign=810401&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/158/ce8/c28/158ce8c2864d0f11175492d4a40a50db.jpg" /><p>В конце марта в блоге GitHub вышла статья, <a href="https://github.blog/2024-02-21-how-to-stay-safe-from-repo-jacking/">как защищаться от уязвимостей типа RepoJacking</a>. В первых строчках автор советовал использовать пакетные менеджеры типа NPM и PyPI, чтобы киберугроза этого вида «не угрожала пользователю напрямую». Можно было бы вздохнуть с облегчением, но читатели Хабра уже <a href="https://habr.com/ru/companies/ru_mts/articles/790966/">знают об исследовании команды МТС RED ART</a>, которое позволило найти более 1300 уязвимых для RepoJacking репозиториев.</p><p>Меня зовут Андрей Сомсиков, я — руководитель команды МТС RED ART. В этой статье — вторая часть нашего исследования уязвимых репозиториев на GitHub. Мы нашли уязвимости в популярных библиотеках: для разработки на Ruby, для электронных замков и даже для пользователей Reddit и Minecraft. Но не всё так страшно! В конце дам рекомендации от всей нашей команды по борьбе с уязвимостями в популярных хостингах кода.</p> <a href="https://habr.com/ru/articles/810401/?utm_campaign=810401&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 26 Apr 2024 08:00:22 GMT</pubDate>
      <dc:creator><![CDATA[AndreySomsikov (МТС)]]></dc:creator>
      
      <category><![CDATA[информационная безопасность]]></category><category><![CDATA[github]]></category><category><![CDATA[ruby]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Hosting Ruby. Обзор вариантов и пример деплоя Ruby on Rails приложения]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/amvera/articles/810103/</guid>
      <link>https://habr.com/ru/companies/amvera/articles/810103/?utm_campaign=810103&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/122/628/c9a/122628c9a0415d17366957707d957ba5.png" /><p>В 2012 году, чтобы упростить развертывание приложений, написанных на Ruby on Rails, компания Heroku сделала свой знаменитый продукт. В статье мы рассмотрим несколько вариантов для хостинга и разберем, как задеплоить Ruby on Rails на конкретном примере приложения.</p> <a href="https://habr.com/ru/articles/810103/?utm_campaign=810103&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 24 Apr 2024 10:56:42 GMT</pubDate>
      <dc:creator><![CDATA[ovchinnikovproger (Amvera)]]></dc:creator>
      
      <category><![CDATA[hosting ruby]]></category><category><![CDATA[ruby host]]></category><category><![CDATA[хостинг ruby]]></category><category><![CDATA[рейтинг хостингов ruby]]></category><category><![CDATA[как развернуть ruby]]></category><category><![CDATA[как захостить ruby]]></category><category><![CDATA[ruby deploy]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
