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

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

  <channel>
    <title><![CDATA[Статьи]]></title>
    <link>https://habr.com/ru/users/umpteenthdev/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя umpteenthdev]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Sun, 03 May 2026 22:24:47 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[Kotlin Symbol Processing. От теории до практики]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/cian/articles/705278/</guid>
      <link>https://habr.com/ru/companies/cian/articles/705278/?utm_campaign=705278&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Я расскажу в этой статье о Kotlin Symbol Processing, также известном как KSP.</p><p>Сначала обсудим теоретические основы работы KSP, после, конечно же, перейдём к практике. На примере небольшой задачи, подобной той, что мы решаем с помощью KSP в нашей компании, покажу, как анализировать код с помощью KSP, генерировать файлы, соблюдать контракты, описанные разработчиками KSP.&nbsp;</p> <a href="https://habr.com/ru/articles/705278/?utm_campaign=705278&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 13 Dec 2022 15:30:27 GMT</pubDate>
      <dc:creator><![CDATA[umpteenthdev (Циан)]]></dc:creator>
      <category><![CDATA[Блог компании Циан]]></category><category><![CDATA[Android]]></category><category><![CDATA[Kotlin]]></category>
      <category><![CDATA[ksp]]></category><category><![CDATA[kotlin]]></category><category><![CDATA[android]]></category><category><![CDATA[kotlin symbol processing]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Ktor как HTTP клиент для Android]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/432310/</guid>
      <link>https://habr.com/ru/articles/432310/?utm_campaign=432310&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Retrofit2 мне, как Android разработчику, нравится, но как на счет того, чтобы попробовать к качестве HTTP клиента Ktor? На мой взгляд, для Android разработки он не хуже и не лучше, просто один из вариантов, хотя если всё немного обернуть, то может получиться очень неплохо. Я рассмотрю базовые возможности с которыми можно будет начать пользоваться Ktor как HTTP клиентом — это создание запросов разных видов, получение raw ответов и ответов в виде текста, десериализация json в классы через конвертеры, логирование.<br>
<br>
<img src="https://habrastorage.org/webt/o1/m6/fm/o1m6fmsauhb_r4wzrnyvuuc3rg0.png"><br> <a href="https://habr.com/ru/articles/432310/?utm_campaign=432310&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Thu, 06 Dec 2018 13:51:04 GMT</pubDate>
      <dc:creator><![CDATA[umpteenthdev]]></dc:creator>
      <category><![CDATA[Android]]></category>
      <category><![CDATA[Ktor]]></category><category><![CDATA[Ktor client]]></category><category><![CDATA[Android]]></category><category><![CDATA[Http client]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Kodein. Основы]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/431696/</guid>
      <link>https://habr.com/ru/articles/431696/?utm_campaign=431696&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Не нашел понятных гайдов для тех, кто <code>Kodein</code> видит в первый раз, а документация не во всех местах прозрачная и последовательная, поэтому хочу поделиться основными возможностями библиотеки с вами. Некоторые возможности библиотеки будут выпущены, но это в основном advanced часть. Здесь же вы найдете всё, чтобы по ходу чтения статьи нормально стартовать и начать внедрять зависимости с <code>Kodein</code>. Статья базируется на <code>Kodein 5.3.0</code>, так как <code>Kodein 6.0.0</code> требует <code>Support Library 28</code> или <code>AndroidX</code> и далеко не скоро все перейдут на них, так как многие сторонние библиотеки ещё не предлагают совместимых версий.<br>
<img src="https://habrastorage.org/webt/uj/ve/am/ujveamkhrxko4wle8mcfugfzjvc.png"><br> <a href="https://habr.com/ru/articles/431696/?utm_campaign=431696&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Tue, 04 Dec 2018 10:10:31 GMT</pubDate>
      <dc:creator><![CDATA[umpteenthdev]]></dc:creator>
      <category><![CDATA[Android]]></category>
      <category><![CDATA[Dependency injection]]></category><category><![CDATA[Android]]></category><category><![CDATA[Kotlin]]></category><category><![CDATA[Kodein]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Стандартный Error Handler в RxJava2 или почему RxJava вызывает сбой приложения даже если реализован onError]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/422611/</guid>
      <link>https://habr.com/ru/articles/422611/?utm_campaign=422611&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[В переводе статьи пойдёт речь об <code>UndeliverableException</code> в <code>RxJava2</code> версии <code>2.0.6</code> и новее. Если кто-то столкнулся и не может разобраться, или совсем не слышал об этой проблеме — прошу под кат. Побудили к переводу проблемы в <code>production</code> после перехода с <code>RxJava1</code> на <code>RxJava2</code>. Оригинал был написан 28 декабря 2017, но лучше узнать поздно, чем никогда.<br>
<div style="text-align:center;"><img src="https://habrastorage.org/webt/sh/49/yi/sh49yi0mhl6-tmfir_fdvlkmcny.png"></div> <a href="https://habr.com/ru/articles/422611/?utm_campaign=422611&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Fri, 07 Sep 2018 11:40:17 GMT</pubDate>
      <dc:creator><![CDATA[umpteenthdev]]></dc:creator>
      <category><![CDATA[Java]]></category><category><![CDATA[Android]]></category>
      <category>RxJava2</category><category>Android Development</category><category>Java</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Повторное использование приватных Android библиотек с помощью Sonatype Nexus Repository OSS]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/416665/</guid>
      <link>https://habr.com/ru/articles/416665/?utm_campaign=416665&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<i>Думаю, что у многих возникала необходимость повторно использовать отдельные модули своего Android приложения в другом проекте. Для решения этой задачи есть простые пути, например, публично разместить Android библиотеку с помощью <a href="https://jitpack.io/">JitPack</a>. Решение отличное, но если нужно разместить библиотеку приватно, то придется заплатить, а тариф чаще всего будет зависеть от количества размещаемых артефактов. Данное решение подойдет далеко не всем. <br>
<br>
Ниже я предложу простой вариант решения данной проблемы с использованием Sonatype Nexus Repository OSS.</i><br>
<br>
<div style="text-align:center;"><img src="https://habrastorage.org/webt/sx/ob/tl/sxobtlhtftpweuwfp36sn0xqtou.png"></div> <a href="https://habr.com/ru/articles/416665/?utm_campaign=416665&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Wed, 11 Jul 2018 09:20:42 GMT</pubDate>
      <dc:creator><![CDATA[umpteenthdev]]></dc:creator>
      <category><![CDATA[Android]]></category>
      <category><![CDATA[Android development]]></category><category><![CDATA[Android]]></category><category><![CDATA[Sonatype Nexus Repository OSS]]></category><category><![CDATA[Maven-Plugin]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Dagger 2 для начинающих Android разработчиков. Dagger 2. Продвинутый уровень. Часть 2]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/345898/</guid>
      <link>https://habr.com/ru/articles/345898/?utm_campaign=345898&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<i>Данная статья является <b>седьмой</b> частью серии статей, предназначенных, по словам автора, для тех, кто не может разобраться с <a href="https://en.wikipedia.org/wiki/Dependency_injection">внедрением зависимостей</a> и фреймворком <a href="https://google.github.io/dagger/users-guide.html">Dagger 2</a>, либо только собирается это сделать. Оригинал написан 30 декабря 2017 года. Перевод вольный. </i><br>
<br>
<img src="https://habrastorage.org/getpro/habr/post_images/41f/0bb/6ec/41f0bb6ec2f2e0798cdf1a7347f7eb1a.jpg" alt="Dagger 2 advanced part 2 image"><br> <a href="https://habr.com/ru/articles/345898/?utm_campaign=345898&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Sat, 30 Dec 2017 09:36:05 GMT</pubDate>
      <dc:creator><![CDATA[umpteenthdev]]></dc:creator>
      <category><![CDATA[Java]]></category><category><![CDATA[Android]]></category>
      <category>Перевод</category><category>Dagger 2</category><category>Dependency Injection</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Dagger 2 для начинающих Android разработчиков. Dagger 2. Продвинутый уровень. Часть 1]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/345372/</guid>
      <link>https://habr.com/ru/articles/345372/?utm_campaign=345372&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<i>Данная статья является <b>шестой</b> частью серии статей, предназначенных, по словам автора, для тех, кто не может разобраться с <a href="https://en.wikipedia.org/wiki/Dependency_injection">внедрением зависимостей</a> и фреймворком <a href="https://google.github.io/dagger/users-guide.html">Dagger 2</a>, либо только собирается это сделать. Оригинал написан 23 декабря 2017 года. Перевод вольный. </i><br>
<br>
<img src="https://habrastorage.org/getpro/habr/post_images/c44/553/241/c44553241dc10ea53a0f232724eeb3e0.jpg" alt="Dagger 2 advanced part 1 image"><br> <a href="https://habr.com/ru/articles/345372/?utm_campaign=345372&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Sat, 23 Dec 2017 09:49:30 GMT</pubDate>
      <dc:creator><![CDATA[umpteenthdev]]></dc:creator>
      <category><![CDATA[Java]]></category><category><![CDATA[Android]]></category>
      <category>Перевод</category><category>Dagger 2</category><category>Dependency Injection</category><category>Android Development</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Реализация поиска с использованием RxJava]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/345278/</guid>
      <link>https://habr.com/ru/articles/345278/?utm_campaign=345278&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[В данной статье будет рассмотрена оптимальная и компактная реализация поиска с использованием RxJava для Android, отсеивающая ненужные результаты и уменьшающая количество бесполезных сетевых вызовов.<br>
<br>
<img src="https://habrastorage.org/getpro/habr/post_images/674/a2f/486/674a2f486dd8a4b265e7b8e3bf68d0cf.png" alt="Пример поиска"><br>
Оригинал написан 16 октября 2017. Перевод вольный.<br> <a href="https://habr.com/ru/articles/345278/?utm_campaign=345278&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Fri, 22 Dec 2017 00:17:31 GMT</pubDate>
      <dc:creator><![CDATA[umpteenthdev]]></dc:creator>
      <category><![CDATA[Java]]></category><category><![CDATA[Android]]></category>
      <category>Перевод</category><category>RxJava</category><category>Search</category><category>Android</category><category>Java</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Dagger 2 для начинающих Android разработчиков. Dagger 2. Часть 2]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/344886/</guid>
      <link>https://habr.com/ru/articles/344886/?utm_campaign=344886&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<i>Данная статья является <b>пятой</b> частью серии статей, предназначенных, по словам автора, для тех, кто не может разобраться с <a href="https://en.wikipedia.org/wiki/Dependency_injection">внедрением зависимостей</a> и фреймворком <a href="https://google.github.io/dagger/users-guide.html">Dagger 2</a>, либо только собирается это сделать. Оригинал написан 17 декабря 2017 года. Перевод вольный. </i><br>
<br>
<img src="https://habrastorage.org/getpro/habr/post_images/b5c/44a/98a/b5c44a98a7452faf9bb98dfef3165903.jpg" alt="image"><br> <a href="https://habr.com/ru/articles/344886/?utm_campaign=344886&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Sun, 17 Dec 2017 01:52:04 GMT</pubDate>
      <dc:creator><![CDATA[umpteenthdev]]></dc:creator>
      <category><![CDATA[Java]]></category><category><![CDATA[Android]]></category>
      <category>Перевод</category><category>Dagger 2</category><category>Dependency Injection</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Dagger 2 для начинающих Android разработчиков. Dagger 2. Часть 1]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/344314/</guid>
      <link>https://habr.com/ru/articles/344314/?utm_campaign=344314&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<i>Данная статья является <b>четвертой</b> частью серии статей, предназначенных, по словам автора, для тех, кто не может разобраться с <a href="https://en.wikipedia.org/wiki/Dependency_injection">внедрением зависимостей</a> и фреймворком <a href="https://google.github.io/dagger/users-guide.html">Dagger 2</a>, либо только собирается это сделать. Оригинал написан 10 декабря 2017 года. Перевод вольный. </i><br>
<br>
<img src="https://habrastorage.org/getpro/habr/post_images/b9f/c21/449/b9fc21449f6b48f4e9518486148121c4.jpg" alt="image"><br> <a href="https://habr.com/ru/articles/344314/?utm_campaign=344314&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Sun, 10 Dec 2017 04:44:54 GMT</pubDate>
      <dc:creator><![CDATA[umpteenthdev]]></dc:creator>
      <category><![CDATA[Java]]></category><category><![CDATA[Android]]></category>
      <category>Перевод</category><category>Dagger 2</category><category>Dependency Injection</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Многопоточное программирование в Android с использованием RxJava 2]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/344016/</guid>
      <link>https://habr.com/ru/articles/344016/?utm_campaign=344016&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Если вы новичок в общении с RxJava или пытались разобраться в этом, но не довели дело до конца, то ниже вы найдете для себя кое-что новое. <br>
<br>
<img src="https://habrastorage.org/getpro/habr/post_images/0c4/44d/2ac/0c444d2ac478bfde7f57a8ca91eda1cf.png" alt="image"><br>
<i>Оригинал статьи написан 29 ноября 2017. Перевод вольный.</i><br> <a href="https://habr.com/ru/articles/344016/?utm_campaign=344016&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Thu, 07 Dec 2017 00:34:29 GMT</pubDate>
      <dc:creator><![CDATA[umpteenthdev]]></dc:creator>
      <category><![CDATA[Java]]></category><category><![CDATA[Android]]></category>
      <category>Перевод</category><category>RxJava 2</category><category>Android</category><category>Reactive Programming</category><category>Multithreading</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Dagger 2 для начинающих Android разработчиков. Внедрение зависимостей. Часть 2]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/343658/</guid>
      <link>https://habr.com/ru/articles/343658/?utm_campaign=343658&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<i>Данная статья является <b>третьей</b> частью серии статей, предназначенных, по словам автора, для тех, кто не может разобраться с <a href="https://en.wikipedia.org/wiki/Dependency_injection">внедрением зависимостей</a> и фреймворком <a href="https://google.github.io/dagger/users-guide.html">Dagger 2</a>, либо только собирается это сделать. Оригинал написан 1 декабря 2017 года. Перевод вольный. </i><br>
<br>
<img src="https://habrastorage.org/getpro/habr/post_images/a85/770/ea6/a85770ea6f5d25bcca5af7f0dbff6471.jpg" alt="image"><br> <a href="https://habr.com/ru/articles/343658/?utm_campaign=343658&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Fri, 01 Dec 2017 12:37:04 GMT</pubDate>
      <dc:creator><![CDATA[umpteenthdev]]></dc:creator>
      <category><![CDATA[Java]]></category><category><![CDATA[Android]]></category>
      <category>Перевод</category><category>Dagger 2</category><category>Dependency Injection</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Dagger 2 для начинающих Android разработчиков. Внедрение зависимостей. Часть 1]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/343250/</guid>
      <link>https://habr.com/ru/articles/343250/?utm_campaign=343250&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<i>Данная статья является <b>второй</b> частью серии статей, предназначенных, по словам автора, для тех, кто не может разобраться с <a href="https://en.wikipedia.org/wiki/Dependency_injection">внедрением зависимостей</a> и фреймворком <a href="https://google.github.io/dagger/users-guide.html">Dagger 2</a>, либо только собирается это сделать. Оригинал написан 25 ноября 2017 года. Изображения и GIF — из оригинала. Перевод вольный. </i><br/>
<br/>
<img src="https://cdn-images-1.medium.com/max/800/1*Kx4hCgB1vAMiD9xK-qLDag.jpeg" alt="image"/><br/>
 <a href="https://habr.com/ru/articles/343250/?utm_campaign=343250&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut"></a>]]></description>
      
      <pubDate>Mon, 27 Nov 2017 07:10:09 GMT</pubDate>
      <dc:creator><![CDATA[umpteenthdev]]></dc:creator>
      <category><![CDATA[Java]]></category><category><![CDATA[Android]]></category>
      <category>Перевод</category><category>Dagger 2</category><category>Dependency Injection</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Dagger 2 для начинающих Android разработчиков — Введение]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/343248/</guid>
      <link>https://habr.com/ru/articles/343248/?utm_campaign=343248&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<i>Данная статья является <b>первой</b> частью серии статей, предназначенных, по словам автора, для тех, кто не может разобраться с <a href="https://en.wikipedia.org/wiki/Dependency_injection">внедрением зависимостей</a> и фреймворком <a href="https://google.github.io/dagger/users-guide.html">Dagger 2</a>, либо только собирается это сделать. Оригинал написан 18 ноября 2017 года. Изображения и GIF — из оригинала. Перевод вольный. </i><br/>
<br/>
<img src="https://cdn-images-1.medium.com/max/800/1*bLvgBCTO-jBCuZLvJQ4mzg.jpeg" alt="image"/><br/>
 <a href="https://habr.com/ru/articles/343248/?utm_campaign=343248&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut"></a>]]></description>
      
      <pubDate>Mon, 27 Nov 2017 02:51:34 GMT</pubDate>
      <dc:creator><![CDATA[umpteenthdev]]></dc:creator>
      <category><![CDATA[Java]]></category><category><![CDATA[Android]]></category>
      <category>Перевод</category><category>Dagger 2</category><category>Dependency Injection</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Понимание Dagger 2]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/343212/</guid>
      <link>https://habr.com/ru/articles/343212/?utm_campaign=343212&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Ниже вы увидите вольный перевод статьи <i><a href="https://medium.com/@Miqubel">Miquel Beltran</a></i>, опубликованной на <br>
<i><a href="https://medium.com/@Miqubel/understanding-dagger-2-367ff1bd184f">Medium</a></i> 12 февраля 2016 года. Целью статьи является формирование понимания базового механизма работы <i>Dagger 2</i>.<br> <a href="https://habr.com/ru/articles/343212/?utm_campaign=343212&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Sun, 26 Nov 2017 11:03:57 GMT</pubDate>
      <dc:creator><![CDATA[umpteenthdev]]></dc:creator>
      <category><![CDATA[Java]]></category><category><![CDATA[Android]]></category>
      <category><![CDATA[Перевод]]></category><category><![CDATA[Dagger 2]]></category><category><![CDATA[Dependency Injection]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
