<?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/firsto/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя firsto]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Fri, 01 May 2026 05:16:48 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[[Перевод] Торжественное переоткрытие Store: загрузка данных в Android с помощью корутин]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/489042/</guid>
      <link>https://habr.com/ru/articles/489042/?utm_campaign=489042&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p><sup><em>Предлагаю вашему вниманию перевод <a href="https://blogs.dropbox.com/tech/2020/01/store-grand-re-opening-loading-android-data-with-coroutines/">оригинальной статьи</a> от Mike Nakhimovich</em></sup><br/>
<img src="https://habrastorage.org/webt/6t/au/jn/6taujnsajuag-id6inmec79hzyk.jpeg"/></p><br/>
<p>Давным-давно я работал в «Нью-Йорк Таймс» и создал библиотеку под названием <a href="https://github.com/nytimes/Store"><code>Store</code></a>, которая была «библиотекой Java для легкой, реактивной загрузки данных». Мы создали Store, используя <a href="https://github.com/ReactiveX/RxJava"><code>RxJava</code></a> и шаблоны, взятые из реализации <a href="https://github.com/google/guava/wiki/CachesExplained">Guava’s Cache</a>. Сегодняшние пользователи приложений ожидают, что обновления данных будут происходить в UI без необходимости делать такие вещи, как <em>pull-to-refresh</em>, чтобы обновить данные или переходить между экранами туда-сюда. Реактивный фронтенд заставил меня задуматься о том, как мы можем иметь декларативные хранилища данных с простыми API, которые абстрагируют сложные функции, такие как многозадачный троттлинг и дисковое кэширование, которые необходимы в современных мобильных приложениях. За три года работы у Store 45 контрибьютеров и более 3500 звёзд на GitHub. Отныне я рад объявить, что <strong>Dropbox</strong> возьмет на себя активное развитие Store и выпустит его полностью на Kotlin с поддержкой <code>Coroutines</code> и <code>Flow</code>. И теперь <code>Store 4</code> — это возможность воспользоваться тем, что мы узнали, переосмысливая API и текущие потребности экосистемы Android.</p><br/>
<hr/><br/>
 <a href="https://habr.com/ru/articles/489042/?utm_campaign=489042&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Загрузить данные</a>]]></description>
      
      <pubDate>Wed, 19 Feb 2020 13:02:21 GMT</pubDate>
      <dc:creator><![CDATA[Firsto]]></dc:creator>
      <category><![CDATA[Kotlin]]></category><category><![CDATA[Проектирование и рефакторинг]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category><category><![CDATA[Хранение данных]]></category>
      <category>Android</category><category>android development</category><category>caching</category><category>corouties</category><category>data storage</category><category>database</category><category>dropbox</category><category>kotlin</category><category>kotlin coroutines</category><category>persistence</category><category>Store</category><category>андроид</category><category>архитектура</category><category>корутины</category><category>котлин</category><category>мобильные приложения</category><category>кэширование</category><category>никто не читает теги</category><category>перевод с английского</category><category>программирование</category><category>разработка</category><category>рефакторинг</category><category>хранение данных</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Будущее внедрения зависимостей в Android]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/444530/</guid>
      <link>https://habr.com/ru/articles/444530/?utm_campaign=444530&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p><sup><em>Предлагаю вашему вниманию перевод <a href="https://medium.com/default-to-open/android-pie-and-the-future-of-dependency-injection-2fdbc65cb79b">оригинальной статьи</a> от <a href="https://medium.com/@jamiesanson">Jamie Sanson</a></em></sup><br>
<img src="https://habrastorage.org/getpro/habr/post_images/392/ae0/ac2/392ae0ac22d5b2d9b82a01e41d975278.jpg" alt="image"></p><br>
<h3 id="sozdanie-activity-do-android-9-pie">Создание Activity до Android 9 Pie</h3><br>
<p><em>Внедрение зависимостей (DI)</em> — это общая модель, по ряду причин используемая во всех формах разработки. Благодаря проекту Dagger, он взят в качестве шаблона, используемого в разработке для Android. Недавние изменения в Android 9 Pie привели к тому, что теперь у нас есть больше возможностей, когда речь идет о DI, особенно с новым классом <a href="https://developer.android.com/reference/android/app/AppComponentFactory"><code>AppComponentFactory</code></a>.</p><br>
<hr><br>
<p>DI очень важно, когда речь заходит о современной разработке Android. Это позволяет сократить общее количество кода при получении ссылок на сервисы, используемые между классами, и в целом хорошо разделяет приложение на компоненты. В этой статье мы сосредоточимся на Dagger 2, самой распространенной библиотеке DI, используемой в разработке Android. Предполагается, что вы уже обладаете базовыми знаниями о том, как это работает, но не обязательно понимать все тонкости. Стоит отметить, что эта статья — нечто вроде авантюры. Это интересно и всё, но на момент её написания Android 9 Pie даже не появлялся на <a href="https://developer.android.com/about/dashboards/">панели версий платформы</a>, поэтому, вероятно, данная тема не будет иметь отношения к повседневной разработке в течение как минимум нескольких лет.</p> <a href="https://habr.com/ru/articles/444530/?utm_campaign=444530&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Внедрить зависимость</a>]]></description>
      
      <pubDate>Wed, 20 Mar 2019 11:39:45 GMT</pubDate>
      <dc:creator><![CDATA[Firsto]]></dc:creator>
      <category><![CDATA[Kotlin]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[Проектирование и рефакторинг]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category>
      <category>Android</category><category>android development</category><category>dagger</category><category>dagger 2</category><category>dependency injection</category><category>DI</category><category>kotlin</category><category>андроид</category><category>архитектура</category><category>архитектурные компоненты</category><category>внедрение зависимостей</category><category>котлин</category><category>мобильные приложения</category><category>никто не читает теги</category><category>перевод с английского</category><category>программирование</category><category>разработка</category><category>рефакторинг</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Тёмный путь]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/324122/</guid>
      <link>https://habr.com/ru/articles/324122/?utm_campaign=324122&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p><img src="https://habrastorage.org/files/c03/c9f/f4e/c03c9ff4e3a44b23a2ed021881faa39b.jpg" alt="image"/></p><br/>
<p><em>Предлагаю вашему вниманию перевод <a href="http://blog.cleancoder.com/uncle-bob/2017/01/11/TheDarkPath.html">оригинальной статьи</a> Роберта С. Мартина.</em></p><br/>
<p>За последние несколько месяцев я попробовал два новых языка. <a href="https://swift.org/">Swift</a> и <a href="https://kotlinlang.org/">Kotlin</a>. У этих двух языков есть ряд общих особенностей. Действительно, сходство настолько сильное, что мне стало интересно, не является ли это новой тенденцией в нашей <a href="http://blog.cleancoder.com/uncle-bob/2016/07/27/TheChurn.html">языкомешалке</a>. Если это действительно так, то <em>это тёмный путь</em>.</p><br/>
<p>Оба языка включают в себя некоторые функциональные характеристики. Например, в них обоих есть лямбды. В целом, это хорошая штука. Чем больше мы узнаем о функциональном программировании, тем лучше. Эти языки далеки от по-настоящему функционального языка программирования; но каждый шаг в этом направлении — хороший шаг.</p><br/>
<p>Проблема в том, что оба языка сделали ставку на сильную статическую типизацию. Кажется, оба намерены заткнуть <em>каждую дыру</em> в своём родном языке. В случае со <code>Swift</code> – это странный гибрид <code>C</code> и <code>Smalltalk</code>, который называется <em>Objective-C</em>; поэтому, возможно, упор на типизацию понятен. Что касается Kotlin – его предком является уже довольно строго типизированная Java.</p><br/>
<p>Я не хочу, чтобы вы думали, что я против статически типизированных языков. Я не против. Есть определенные преимущества как для динамических, так и для статических языков; и я с удовольствием пользуюсь обоими видами. Я предпочитаю динамическую типизацию, и поэтому я иногда использую <code>Clojure</code>. С другой стороны, я, вероятно, пишу больше <code>Java</code>, чем <code>Clojure</code>. Поэтому вы можете считать меня би-типичным. Я иду по обеим сторонам улицы — если так можно выразиться.</p><br/>
<p>Дело не в том, что меня беспокоит статическая типизация <code>Swift</code> и <code>Kotlin</code>. Скорее меня беспокоит <em>глубина</em> статической типизации.</p> <a href="https://habr.com/ru/articles/324122/?utm_campaign=324122&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Погрузиться в пучину тьмы</a>]]></description>
      
      <pubDate>Thu, 16 Mar 2017 13:06:17 GMT</pubDate>
      <dc:creator><![CDATA[Firsto]]></dc:creator>
      <category><![CDATA[Java]]></category><category><![CDATA[Kotlin]]></category><category><![CDATA[Swift]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[Качество кода]]></category>
      <category>exception</category><category>exception handling</category><category>java</category><category>kotlin</category><category>npe</category><category>objective-c</category><category>swift</category><category>архитектура</category><category>программирование</category><category>языки программирования</category><category>чистый код</category><category>совершенный код</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Осторожно, радиация!]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/190882/</guid>
      <link>https://habr.com/ru/articles/190882/?utm_campaign=190882&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Обожаете старую фототехнику? Цените старые редкие стёкла, дающие красивый рисунок? Предпочитаете проверенные временем объективы из стекла и железа? Загляните в список в конце статьи. Если у вас один из перечисленных — вы обречены.<br/>
<br/>
<img src="https://habrastorage.org/storage2/256/6a5/719/2566a57199a33d92c26f927778a9e9c8.jpg" alt="radioactive" title="Будьте осторожны, РАДИАЦИЯ!"/><br/>
<br/>
Всё началось с комментария к обзору фотообъектива, в линзах которого содержится оксид тория:<br/>
<i>— Этот объектив имеет радиационный фон! Я как-то собирался приобрести данную вещь, но весьма компетентный и вменяемый (покупал у него не один объектив) продавец мне его не советовал именно из-за фона.</i><br/>
<br/>
<font color="#DFDFDF">Только не спешите глотать тарен, не дочитав до конца.</font><br/>
 <a href="https://habr.com/ru/articles/190882/?utm_campaign=190882&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Узнать правду и умереть</a>]]></description>
      
      <pubDate>Wed, 21 Aug 2013 10:40:10 GMT</pubDate>
      <dc:creator><![CDATA[Firsto]]></dc:creator>
      <category><![CDATA[Научно-популярное]]></category><category><![CDATA[Старое железо]]></category><category><![CDATA[Фототехника]]></category>
      <category><![CDATA[half-life]]></category><category><![CDATA[никто не читает теги]]></category><category><![CDATA[радиация]]></category><category><![CDATA[физика]]></category><category><![CDATA[химия]]></category><category><![CDATA[безумие]]></category><category><![CDATA[бред]]></category><category><![CDATA[бюрократия]]></category><category><![CDATA[вещи]]></category><category><![CDATA[власти скрывают]]></category><category><![CDATA[вред]]></category><category><![CDATA[выбор]]></category><category><![CDATA[добро и зло]]></category><category><![CDATA[дураки]]></category><category><![CDATA[жизнь]]></category><category><![CDATA[загрязнение]]></category><category><![CDATA[здоровье]]></category><category><![CDATA[инструкция]]></category><category><![CDATA[ирония]]></category><category><![CDATA[лень]]></category><category><![CDATA[логика]]></category><category><![CDATA[люди]]></category><category><![CDATA[мануалы]]></category><category><![CDATA[мысли]]></category><category><![CDATA[накипело]]></category><category><![CDATA[наука]]></category><category><![CDATA[непонимание]]></category><category><![CDATA[новости]]></category><category><![CDATA[объектив]]></category><category><![CDATA[опасность]]></category><category><![CDATA[определения]]></category><category><![CDATA[парадокс]]></category><category><![CDATA[принцип]]></category><category><![CDATA[развитие]]></category><category><![CDATA[свобода]]></category><category><![CDATA[совет]]></category><category><![CDATA[стандарты]]></category><category><![CDATA[стереотипы]]></category><category><![CDATA[страх]]></category><category><![CDATA[фото]]></category><category><![CDATA[шаблоны]]></category><category><![CDATA[экология]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
