<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Михаил Овчинников</title>
    <link>http://ovchinnikov.cc/</link>
    <description>Recent content on Михаил Овчинников</description>
    <generator>Hugo -- gohugo.io</generator>
    <lastBuildDate>Sat, 01 Jan 2022 00:00:00 +0000</lastBuildDate><atom:link href="http://ovchinnikov.cc/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Night Storm - Lazy Weekend (2022)</title>
      <link>http://ovchinnikov.cc/music/lazy-weekend/</link>
      <pubDate>Sat, 01 Jan 2022 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/music/lazy-weekend/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Переустановка старой версии macOS на Mac Mini 2011 года</title>
      <link>http://ovchinnikov.cc/writing/mac-mini-2011-os-install/</link>
      <pubDate>Sat, 04 Dec 2021 18:08:52 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/mac-mini-2011-os-install/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2021-12-04-mac-mini-2011-os-install/post_title_image.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Мой &lt;a href=&#34;https://ovchinnikov.cc/writing/mac-mini-mid-2011/&#34;&gt;Mac Mini 2011 года&lt;/a&gt;, хотя уже давно не обновляется, последние года 4 исправно служил мне в качестве домашнего сервера. Однажды, без всяких на то причин, он внезапно перестал включаться, уходя в бесконечную перезагрузку. Короткая диагностика показала, что с железом всё в порядке, просто слетела операционная система (которая не переустанавливалась года с 2016). Кажется всё просто — переустанови и живи дальше, но я бы не стал писать этот пост если бы так оказалось на самом деле.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Архитектура Redux в Swift: Введение</title>
      <link>http://ovchinnikov.cc/writing/redux-intro/</link>
      <pubDate>Sun, 16 May 2021 20:37:55 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/redux-intro/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2021-05-16-redux-intro/title-image.jpg&#34; alt=&#34;Картинка для привлечения внимания&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Окружение: Swift 5, iOS 14, Xcode 12&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Несколько лет назад, ребята из Фейсбука столкнулись с неприятным багом: количество непрочитанных сообщений в мессенджере иногда расходилось с таковым в других частях страницы. К проблеме было решено подойти системно, а именно придумать способ гарантировать консистентность данных, используемых в компонентах веб-приложений. В результате чего появился шаблон проектирования &lt;a href=&#34;https://facebook.github.io/flux/&#34;&gt;Flux&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2021-05-16-redux-intro/flux-simple-diagram.png&#34; alt=&#34;Диаграмма паттерна Flux&#34;&gt;&lt;/p&gt;
&lt;p&gt;Чуть позже Дэн Абрамов и Эндрю Кларк представили миру архитектуру &lt;a href=&#34;https://redux.js.org&#34;&gt;Redux&lt;/a&gt; (читается как &lt;em&gt;ридакс&lt;/em&gt;), которая стремительно набрала популярность в мире Javascript-разработки. Её подходы являются логическим развитием Flux и применимы не только в рамках экосистемы Javascript и веб-приложений.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Хостинг статического контента в Firebase</title>
      <link>http://ovchinnikov.cc/writing/firebase-hosting/</link>
      <pubDate>Sun, 08 Mar 2020 13:03:50 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/firebase-hosting/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2020-03-08-firebase-hosting/firebase-hosting.png&#34; alt=&#34;Логотип Firebase Hosting&#34;&gt;&lt;/p&gt;
&lt;p&gt;Для мобильных приложений очень часто требуется разместить всякую вспомогательную информацию: лендинги, правила использования, политику конфиденциальности и прочее. Для этих целей, особенно на начальном этапе, удобно использовать хостинг файлов в  Firebase, так как это очень удобно, быстро и практически бесплатно (пока на ваши страницы не начнет идти существенный трафик).&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Внешний SSD Transcend ESD240C</title>
      <link>http://ovchinnikov.cc/writing/transcend-esd240c/</link>
      <pubDate>Fri, 04 Oct 2019 12:49:04 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/transcend-esd240c/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2019-10-04-transcend-esd240c/IMG_1303.JPG&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Самая большая ошибка, которую можно совершить приобретая девайсы Apple — предположить, что минимального объема хранилища будет достаточно. Мне тоже не удалось избежать этого заблуждения, когда приобретал &lt;a href=&#34;http://ovchinnikov.cc/writing/macbook-pro-2017/&#34;&gt;свой Макбук&lt;/a&gt;. Я использую ноутбук только для разработки и там нет ничего кроме Xcode и исходного кода проектов, но даже при таких скромных запросах, 128 ГБ встроенной памяти заканчиваются с пугающей быстротой. Постоянно приходится что-то удалять и чистить. Так как я не планирую в ближайшее время обновлять своё железо, то проблему нехватки места можно решить только покупкой внешнего накопителя.&lt;/p&gt;
&lt;p&gt;Мне нужен компактный и лёгкий накопитель, чтобы брать его с собой в поездки. У него должна быть достаточно высокая скорость записи, так как я планировал перенести на него некоторый софт, часть исходников и другие файлы по проектам. После недолгих поисков, я остановил свой выбор на &lt;a href=&#34;https://www.transcend-info.com/Products/No-990&#34;&gt;внешнем SSD Transcend ESD240C&lt;/a&gt;, объёмом в 240 ГБ.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>FSEvents: Разбираемся с мониторингом событий файловой системы в macOS</title>
      <link>http://ovchinnikov.cc/writing/fsevents/</link>
      <pubDate>Wed, 10 Jul 2019 17:45:57 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/fsevents/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2019-07-10-fsevents/logo.png&#34; alt=&#34;FSEvents&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;File System Events&lt;/strong&gt; (далее FSEvents) - механизм, доступный в macOS начиная с версии 10.5, который позволяет подписываться на уведомления об изменениях в структуре папок, а также их содержимого. Он используется многими системными утилитами, например Time Machine. Стоит отметить, что мониторинг происходит на уровне директории: иными словами придет уведомление, что в директории изменился некий файл, но конкретной информации об изменениях в нём содержаться не будет. Для более детального мониторинга придётся спускаться на уровень ниже и использовать kqueues, либо писать собственный kext. Поэтому для написания собственного антивируса такой механизм не подойдет, а вот для своего аналога Dropbox, или чего-то подобного - вполне.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Введение в RxSwift. Часть 4. Операторы</title>
      <link>http://ovchinnikov.cc/writing/rxswift-operators/</link>
      <pubDate>Fri, 05 Jul 2019 12:13:19 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/rxswift-operators/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2019-03-22-rxswift-intro/logo.png&#34; alt=&#34;Логотип проекта ReactiveX&#34;&gt;&lt;/p&gt;
&lt;p&gt;Операторы позволяют удобно преобразовывать последовательность приходящих событий в RxSwift. Их можно разделить на несколько основных групп (назначение каждой из групп, думаю, говорит само за себя):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Фильтрующие&lt;/li&gt;
&lt;li&gt;Трансформирующие&lt;/li&gt;
&lt;li&gt;Комбинирующие&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Сегодня мы рассмотрим самые показательные примеры из каждой группы, полный список операторов и их возможности всегда можно найти &lt;a href=&#34;http://reactivex.io/documentation/operators.html&#34;&gt;в документации&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Введение в RxSwift. Часть 3. Subjects</title>
      <link>http://ovchinnikov.cc/writing/rxswift-subjects/</link>
      <pubDate>Mon, 13 May 2019 17:09:45 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/rxswift-subjects/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2019-03-22-rxswift-intro/logo.png&#34; alt=&#34;Логотип проекта ReactiveX&#34;&gt;&lt;/p&gt;
&lt;p&gt;Subjects (субъекты) расширяют поведение обозреваемых последовательностей, наделяя их свойствами обозревателя. Так как это обозреватель, то он может подписываться на обозреваемые последовательности, а благодаря, тому что он сам является таковым, он может ретранслировать полученные значения, а также транслировать новые. Так справедливо будет сказать, что субъекты выступают своеобразным прокси.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Введение в RxSwift. Часть 2. Observables</title>
      <link>http://ovchinnikov.cc/writing/rxswift-observables/</link>
      <pubDate>Thu, 04 Apr 2019 14:36:53 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/rxswift-observables/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2019-03-22-rxswift-intro/logo.png&#34; alt=&#34;Логотип проекта ReactiveX&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://ovchinnikov.cc/writing/rxswift-intro/&#34;&gt;В прошлой статье&lt;/a&gt; мы разобрались с основными понятиями в мире Rx. Сегодня мы обсудим подробнее различные способы создания наблюдаемых последовательностей (Observables) и рассмотрим особенности подписки на транслируемые события.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Использование CocoaPods в Swift Playgrounds</title>
      <link>http://ovchinnikov.cc/writing/cocoapods-with-playgrounds/</link>
      <pubDate>Fri, 29 Mar 2019 15:00:29 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/cocoapods-with-playgrounds/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2019-03-29-cocoapods-with-playgrounds/cocoapods-playgrounds.png&#34; alt=&#34;Картинка для привлечения внимания&#34;&gt;&lt;/p&gt;
&lt;p&gt;Для своей серии постов про &lt;a href=&#34;http://ovchinnikov.cc/tags/rxswift/&#34;&gt;RxSwift&lt;/a&gt; я задумал использовать для наглядности Playgrounds, но тут встал вопрос, а каким образом подключить туда внешнюю библиотеку из &lt;a href=&#34;http://ovchinnikov.cc/tags/cocoapods/&#34;&gt;CocoaPods&lt;/a&gt;? Напрямую это сделать не получится, но можно создать пустой проект, сгенерировать workspace, а затем уже в него добавить playground. Подробная полследовательность шагов ниже.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Введение в RxSwift. Часть 1. Базовые принципы</title>
      <link>http://ovchinnikov.cc/writing/rxswift-intro/</link>
      <pubDate>Fri, 22 Mar 2019 11:53:06 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/rxswift-intro/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2019-03-22-rxswift-intro/logo.png&#34; alt=&#34;Логотип проекта ReactiveX&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RxSwift&lt;/strong&gt; — это библиотека для работы с асинхронным кодом, которая представляет события в виде потоков событий с возможностью подписаться на них, а также позволяет применять к ним подходы функционального программирования, что сильно упрощает работу со сложными последовательностями асинхронных событий.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Broadlink RM mini 3</title>
      <link>http://ovchinnikov.cc/writing/rm-mini-3/</link>
      <pubDate>Wed, 19 Dec 2018 22:18:32 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/rm-mini-3/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2018-12-19-rm-mini-3/IMG_0819.jpeg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Когда начинаешь увлекаться темой умного дома, быстро приходишь к пониманию, что многие устройства, которые используются на ежедневной основе, оказываются неожиданно глупы. Кондиционеры, увлажнители воздуха, акустические системы и многое другое управляются только при помощи штатного пульта. Даже при наличии на борту Wi-Fi, многие операции (и как правило самое нужное, например, включение/выключение) остаются подвластны только ИК-пультам (которые, к тому же, имеют свойство теряться).&lt;/p&gt;
&lt;p&gt;Остаётся единственный вариант: иметь некий универсальный пульт, а точнее ИК-хаб, который бы управлялся через приложение со смартфона. Ожидаемо, на AliExpress нашлось множество таких устройств, и я остановился на самом распространенном (и дёшевом) варианте: &lt;a href=&#34;http://ali.pub/2z61o3&#34;&gt;RM Mini 3 от компании Broadlink&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Перепрошивка Nexus 7 3G (2012) на Android 7.1</title>
      <link>http://ovchinnikov.cc/writing/nexus7-aosp71/</link>
      <pubDate>Sat, 08 Dec 2018 16:43:46 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/nexus7-aosp71/</guid>
      <description>&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;
  &lt;h4 class=&#34;alert-heading&#34;&gt;Не говори, что не предупреждал&lt;/h4&gt;
  &lt;p&gt;Не рекомендую повторять всё, что описывается в статье, если вы не чувствуете уверенности в своих силах. Под уверенностью я подразумеваю, что вы сможете самостоятельно разобраться с проблемой, если столкнетесь с ошибками в случае выполнения какой-либо из команд. Всё это лишает вас гарантии, есть риск превратить устройство в кирпич и т.п. Я не несу отвественности за любой вред, который вы можете себе причинить, я лишь описал свой опыт и руководствовался исключительно образовательными целями.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2018-12-08-nexus7-aosp71/IMG_0847.jpeg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Недавно мне попался в руки полумертвый планшет Nexus 7 2012 года выпуска. У него были проблемы с зарядкой, расходом батареи, а тормозил он так, что пользоваться им было решительно невозможно. На нем стояла стоковая прошивка, с которой он был на момент покупки, а именно Android 4.4. Сброс до заводских настроек и последующий апдейт до последней официальной сборки (5.1) только усугубили проблему: тормозить и разряжаться он стал только сильнее.&lt;/p&gt;
&lt;p&gt;С горем пополам зарядив устройство, я решил разобраться сначала с софтом, а дальше думать что делать с батареей. После беглого изучения форумов было принято решение поставить обычный AOSP 7.1. Ниже приведу шаги, которые я прошёл, для настройки устройства. Если вы занимались прошивкой устройств на Android ранее, то скорее всего не найдёте для себя ничего нового, я же последний раз делал это в студенческие годы и чувствовал себя не очень уверенно, поэтому задокументировал основные шаги.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Деплой по SSH при помощи Bitbucket Pipelines</title>
      <link>http://ovchinnikov.cc/writing/bitbucket-pipelines/</link>
      <pubDate>Wed, 14 Nov 2018 22:28:35 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/bitbucket-pipelines/</guid>
      <description>&lt;p&gt;Я долго игнорировал функционал Pipelines в Bitbucket: останавливали отсутствие вменяемой документации и некоторая видимая ограниченность. Однажды понадобилось реализовать для одного побочного проекта очень простой кейс: по каждому комиту пересобирать Docker-контейнер на удаленном хосте. Можно было бы конечно это сделать на скриптах, но я всегда был сторонником идеи, что такие простые проекты — это идеальная возможность пробовать что-то новое, поэтому дал шанс этому функционалу. Хотя это и оказалось очень просто, не все шаги были очевидны с самого начала, поэтому зафиксирую основные моменты.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2018-11-14-bitbucket-pipelines/2018-10-19_10-42-54.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Wi-Fi реле Sonoff для умного дома и интернета вещей</title>
      <link>http://ovchinnikov.cc/writing/sonoff-wifi-switch/</link>
      <pubDate>Sun, 11 Nov 2018 21:50:03 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/sonoff-wifi-switch/</guid>
      <description>&lt;p&gt;Модули Sonoff разрабатываются компанией iTead, у них есть стандартный набор «умных» лампочек, выключателей и прочего, но особый интерес представляют недорогие WiFi-реле, выполненные на популярном чипе ESP8266. Управление осуществляется через закрытый протокол и приложение eWeLink, сервис облачный, управление можно осуществлять из любой точки мира, а не только из домашней сети. Отсюда и минус: при отключении интернета реле работать не будут.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2018-11-11-sonoff-wifi-switch/IMG_0768.jpeg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Однако, я не зря упомянул название контроллера: под него существует множество альтернативных прошивок, и, при наличии минимальных навыков пайки (припаять гребёнку), можно довольно легко избежать вендор-лока. Если паять совсем лениво, то можно воспользоваться одной из библиотек от умельцев, которые разреверсили оригинальный протокол, например &lt;a href=&#34;https://github.com/mdopp/simple-sonoff-server&#34;&gt;simple-sonoff-server&lt;/a&gt;, перенаправить через него устройство и контролировать своими методами. Сегодня я не буду останавливаться на таких хаках, а сделаю краткий обзор пары устройств со своим примером применения.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Интеграция устройств Xiaomi с Domoticz и Apple Home</title>
      <link>http://ovchinnikov.cc/writing/xiaomi-domoticz-homebridge/</link>
      <pubDate>Thu, 08 Nov 2018 22:01:39 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/xiaomi-domoticz-homebridge/</guid>
      <description>&lt;p&gt;Работать с &lt;a href=&#34;http://ovchinnikov.cc/writing/mi-home-intro/&#34;&gt;устройствами для умного дома от Xiaomi&lt;/a&gt; через официальное приложение Mi Home может быть не слишком удобно — не хватает гибкости настройки, расстраивает отсутствие интеграции с Apple Home, а ещё дополнительно напрягает необходимость в соединении с китайскими серверами для этих устройств. Помимо разумной паранойи (непонятно какие данные обо мне собираются и куда они уходят), есть ещё и более реальная проблема: когда РКН играл в кошки-мышки с Telegram, на несколько дней в диапазон блокировок IP попали и сервера Xiaomi, из-за чего устройства работали с перебоями, либо же не работали вовсе. В моем случае не получалось даже залогиниться в Mi Home.&lt;/p&gt;
&lt;p&gt;Немного покопавшись в теме, в голове выстроилась следующая схема: берем &lt;a href=&#34;http://ovchinnikov.cc/tags/raspberry-pi/&#34;&gt;Raspberry Pi&lt;/a&gt; (который несколько лет пылился без дела в ящике), ставим на него &lt;a href=&#34;https://github.com/nfarina/homebridge&#34;&gt;Homebridge&lt;/a&gt;, чтобы прокинуть устройства в HomeKit (и наконец-то властно воззвать к Siri), &lt;a href=&#34;https://www.domoticz.com&#34;&gt;Domoticz&lt;/a&gt; в качестве центрального узла управления всеми умными устройствами. Наконец, соединяем Homebridge и Domoticz плагином &lt;a href=&#34;https://www.npmjs.com/package/homebridge-edomoticz&#34;&gt;homebridge-edomoticz&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2018-11-08-xiaomi-domoticz-homebridge/smart_home_scheme.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Это довольно распространенная практика, и в сети можно найти большое количество руководств, посвященных этой связке. Если вам всё стало понятно после предыдущего абзаца, то дальше можно и не читать, а брать и делать, ничего сложного нет: всё сводится к установке нескольких пакетов, если нужны объяснения, ниже я постарался восстановить свои действия.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Умный дом с Xiaomi Mi Home</title>
      <link>http://ovchinnikov.cc/writing/mi-home-intro/</link>
      <pubDate>Thu, 01 Nov 2018 21:38:18 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/mi-home-intro/</guid>
      <description>&lt;p&gt;Термин «умный дом» всегда вызывал у меня кривую ухмылку: включить светодиодную лампочку по Wi-Fi не кажется в 2018 году чем-то интеллектуальным. Давайте будем откровенны: чтобы включить лампочку по движению, хлопку, или даже команде сервера не потребуется даже Arduino: достаточно реле и копеечного датчика, а стоимость конструкции не превысит пары сотен рублей. Но оверинженеринг — не главная проблема производителей, никто из них не отвечает на главный вопрос: зачем? Все они предоставляют нам огромный набор инструментов: кнопки, выключатели, розетки, лампочки, светодиодные ленты, но ничего не говорят о сценариях использования. Практика показывает, что придумать что-то интереснее включения лампочек по какому-то триггеру большинству пользователей так и не удаётся.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2018-11-01-mi-home-intro/DSC_0242.JPG&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;В попытке отыскать собственный ответ на этот вопрос, я заказал несколько девайсов от Xiaomi (спойлер: ничего интересного я тоже не придумал). Главным критерием в выборе для меня была цена, так как изначально я не особенно верил в затею с умным домом, то и спускать много денег на неё не хотелось. Я не был знаком с экосистемой Mi Home и заказывал девайсы в хаотичном порядке, у разных продавцов, но в итоге это оказалось дольше и дороже, поэтому если вам тоже захочется познакомиться с этим миром, берите сразу &lt;a href=&#34;http://ali.pub/2urhm8&#34;&gt;готовый набор&lt;/a&gt;. Так или иначе, у меня на столе скопилась куча коробочек разной степени помятости, и настала пора думать, что можно сделать интересного со всем этим добром.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Генерация скриншотов для AppStore при помощи Fastlane</title>
      <link>http://ovchinnikov.cc/writing/fastlane-snapshot/</link>
      <pubDate>Fri, 07 Sep 2018 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/fastlane-snapshot/</guid>
      <description>&lt;p&gt;Создавать руками скриншоты для AppStore может быть очень долгим и нудным занятием, особенно если у вас проекте присутствует локализация, поэтому имеет смысл автоматизировать это действие, тем более что Fastlane предоставляет очень удобный и гибкий способ сделать это.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Macbook Pro 2017</title>
      <link>http://ovchinnikov.cc/writing/macbook-pro-2017/</link>
      <pubDate>Tue, 10 Jul 2018 15:47:07 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/macbook-pro-2017/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://ovchinnikov.cc/writing/mac-mini-mid-2011/&#34;&gt;Мой Mac mini&lt;/a&gt; служит верой и правдой уже 6 лет, за это время у меня не возникало особых претензий к его производительности, я лишь увеличил размер оперативной памяти до 8 Гб и поменял винчестер на SSD. Несмотря на маленькие размеры, мобильным его не назовешь: нужно таскать с собой монитор, мышку и клавиатуру, поэтому периодически я задумывался о покупке макбука. Окончательным решением в пользу замены компьютера стал &lt;a href=&#34;https://www.apple.com/newsroom/2018/06/apple-introduces-macos-mojave/&#34;&gt;анонс macOS Mojave&lt;/a&gt;, где было сказано, что отныне поддерживаются только модели начиная с mid-2012 (из-за необходимости наличия видеокарты, совместимой с технологией Metal).&lt;/p&gt;
&lt;p&gt;Изначально я рассматривал к покупке модели 2015 года: привычные разъемы и отсутствие проблем с клавиатурой при сопоставимом по качеству железе (и яблочко светится!). На момент написания поста, было реально достать только 15-дюймовую модель, но и это оказалось не так просто: в нескольких магазинах столкнулся с одной и той же ситуацией: заказываешь на сайте (где он якобы в наличии), тебе перезванивает менеджер и говорит: «Мы такую модель больше не возим, хотите подберем аналогичную 2017 года?». Так как я всё равно хотел 13-дюймовую модель, то решил не заниматься ретроградством и приобрел конфигурацию без тачбара с i7 2,5 ГГц, 16 ГБ RAM и 128 ГБ SSD.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Как найти путь к домашней директории симулятора iOS</title>
      <link>http://ovchinnikov.cc/writing/po-nshomedirectory/</link>
      <pubDate>Tue, 26 Jun 2018 22:33:31 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/po-nshomedirectory/</guid>
      <description>&lt;p&gt;При разработке приложений часто требуется получить доступ к файлам, которые находятся в директории &lt;em&gt;Documents&lt;/em&gt; приложения. Например, посмотреть загруженные файлы или положить туда необходимые для тестов, разработки и т.п. В симуляторе это сделать особенно просто, так как все его директории физически находятся на диске вашего компьютера, достаточно лишь знать путь к ним.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Скрываем и показываем иконку приложения в Dock на macOS</title>
      <link>http://ovchinnikov.cc/writing/hide-dock-icon/</link>
      <pubDate>Thu, 17 May 2018 19:42:12 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/hide-dock-icon/</guid>
      <description>&lt;p&gt;Думаю всем очевиден факт, что когда приложение в macOS запущено, оно отображает иконку в доке. Иногда нам это не требуется, к примеру, если подразумевается, что приложение будет работать в фоне, и нет нужды лишний раз напоминать пользователю о его существовании.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Показываем индикатор загрузки файла в Finder</title>
      <link>http://ovchinnikov.cc/writing/finder-fraction-indicator/</link>
      <pubDate>Thu, 10 May 2018 22:04:02 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/finder-fraction-indicator/</guid>
      <description>&lt;p&gt;Ты наверное замечал, что при загрузке файлов, например в Chrome, в Finder рядом с файлом показывается некий круговой индикатор загрузки.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2018-05-10-finder-fraction-indicator/1.png&#34; alt=&#34;Отображение индикактора загрузки файла в Finder&#34;&gt;&lt;/p&gt;
&lt;p&gt;Для этого используется специальный атрибут файла &lt;code&gt;com.apple.progress.fractionCompleted&lt;/code&gt;, а также есть небольшая (но неочевидная) хитрость: нужно выставить дату создания файла равной &lt;code&gt;1984-01-24 08:00:00 +0000&lt;/code&gt; а соотвественно, чтобы скрыть индикатор вернуть файлу актуальную дату и убрать атрибут.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Архив</title>
      <link>http://ovchinnikov.cc/archive/</link>
      <pubDate>Fri, 09 Feb 2018 22:50:12 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/archive/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Программное добавление папки в «Избранное» в Finder</title>
      <link>http://ovchinnikov.cc/writing/finder-favourites/</link>
      <pubDate>Thu, 08 Feb 2018 21:51:44 +0300</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/finder-favourites/</guid>
      <description>&lt;p&gt;Возникла специфическая задача: добавить программно папку в раздел «Избранное» на боковой панели Finder в macOS. Эта и другая подобная информация хранится в *.sfl файлах, в &lt;code&gt;~/Library/Application Support/com.apple.sharedfilelist/&lt;/code&gt;. Работать с ними напрямую не получится, для этого существует системная утилита sfltool.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Установка и использование языка Swift на Ubuntu 16.04</title>
      <link>http://ovchinnikov.cc/writing/swift-on-ubuntu/</link>
      <pubDate>Sat, 24 Jun 2017 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/swift-on-ubuntu/</guid>
      <description>&lt;p&gt;Некоторое время язык Swift был доступен только для операционной системы OS X, в составе среды разработки Xcode, но недавно на официальном сайте стали доступны сборки и для последних версий Ubuntu. Практической пользы от такого шага не очень много: большинство библиотек так и не были портированы, и разрабатывать для iOS на альтернативных платформах всё еще невозможно. Хотя существует призрачная возможность писать серверный код на том же языке, что и код приложения, но пока инструментарий развит слабо, использование языка от Apple на Ubuntu будет представлять скорее академический интерес. С другой стороны, доступного функционала хватит, чтобы изучить основы языка и писать несложные консольные утилиты, не приобретая дорогостоящие устройства, что может оказаться для многих плюсом.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Принудительное обновление provisioning profile в Xcode 8.3</title>
      <link>http://ovchinnikov.cc/writing/xcode83-refresh-prvisioning-profile/</link>
      <pubDate>Tue, 30 May 2017 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/xcode83-refresh-prvisioning-profile/</guid>
      <description>&lt;p&gt;После обновления в Xсode 8.3 исчезло окно управления provisioning profile проекта. Им было удобно пользоваться для принудительного удаления и скачивания профайлов. Например, когда добавляешь на Developer Portal новые устройства для ad-hoc установки, профайл в Xcode обновляется далеко не сразу и не всегда. Чтобы решить эту проблему, можно было зайти в настройки аккаунта, открыть окно управления профайлами и сертификатами, нажать правой кнопкой мыши на профайле, выбрать «Move to trash», после чего заново скачивался новый.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Статический анализ кода при помощи SwiftLint</title>
      <link>http://ovchinnikov.cc/writing/swiftlint/</link>
      <pubDate>Sun, 14 Aug 2016 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/swiftlint/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/realm/SwiftLint&#34;&gt;SwiftLint&lt;/a&gt; — это статический анализатор Swift-кода, разработанный компанией Realm, который проверяет его на соответствие стилю и соглашениям принятым в сообществе разработчиков. Главным образом он базируется на &lt;a href=&#34;https://github.com/github/swift-style-guide&#34;&gt;Swift style guide&lt;/a&gt; от Github. Почему это важно? Наличие соглашений и стандартов всегда лучше их отсутствия: код написанный в едином стиле, проще читать при командной разработке, а также косвенно анализаторы кода способны улучшить и стабильность приложения, так как распознают заведомо плохие практики. Начинающим изучать Swift разбор ошибок и предупреждений анализатора поможет разобраться в особенностях языка, а также избежать использования устаревших конструкций, которые могли быть скопированы с сайтов вроде Stack Overflow.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Управляем сторонними библиотеками с CocoaPods</title>
      <link>http://ovchinnikov.cc/writing/cocoapods/</link>
      <pubDate>Tue, 21 Jun 2016 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/cocoapods/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://cocoapods.org/&#34;&gt;CocoaPods&lt;/a&gt; — менеджер пакетов, сделанный по образу и подобию RubyGems, позволяющий легко скачивать и подключать сторонние библиотеки к Swift и Objective-C проектам.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Исправляем неработающий под Linux тачпад на Asus X550LN</title>
      <link>http://ovchinnikov.cc/writing/x550ln-fix-touchpad/</link>
      <pubDate>Mon, 30 Nov 2015 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/x550ln-fix-touchpad/</guid>
      <description>&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
	&lt;b&gt;Примечание от 28.05.2017&lt;/b&gt;: Начиная с версии Ubuntu 16.04 проблему с тачпадом наконец-то починили, но тем не менее этот пост всё ещё остаётся актуальным для многих дистрибутивов.
&lt;/div&gt;
&lt;p&gt;Уже почти год моим основным компьютером является ноутбук Asus X550LN. За это время я неоднократно менял на нем операционные системы, даже пытался жить на Windows, но все время возвращался к излюбленным мной Debian-based дистрибутивам Linux. К сожалению, в 2015 году проблемы с поддержкой аппаратного обеспечения под альтернативными ОС никак не заканчиваются. Так, практически на всех испробованных мной дистрибутивах, не работает тачпад. Проблема проявляется следующим образом: при касании тачпада, в зависимости от дистрибутива, либо не происходит ничего, либо курсор двигается, но невозможно совершить клик, либо же система намертво зависает.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Восстанавливаем файлы, удаленные в прошлых коммитах в Git</title>
      <link>http://ovchinnikov.cc/writing/git-restore-deleted/</link>
      <pubDate>Sun, 16 Aug 2015 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/git-restore-deleted/</guid>
      <description>&lt;p&gt;Сегодня передо мной встала довольно простая, но интересная задача: восстановить несколько файлов в репозитории Git, которые были удалены некоторое время назад в разных коммитах. Задача простая, потому что решение легко найти в соотвествующих &lt;a href=&#34;http://stackoverflow.com/questions/953481/find-and-restore-a-deleted-file-in-a-git-repo&#34;&gt;ответах на Stack Overflow&lt;/a&gt;. Мне лишь осталось слегка адаптировать приведенные примеры команд для своих нужд.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Модули Metasploit</title>
      <link>http://ovchinnikov.cc/writing/metasploit-modules/</link>
      <pubDate>Mon, 20 Jul 2015 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/metasploit-modules/</guid>
      <description>&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;
  Эта статья была впервые опубликована в журнале &#34;Хакер&#34;, здесь публикуется исходная версия, до отправки в редакцию. Вся информация предоставлена исключительно в образовательных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
&lt;/div&gt;
&lt;p&gt;Счет встроенных модулей в Metasploit перешел на тысячи, но, рано или поздно, любой, кто плотно работает с фреймворком, сталкивается с необходимостью расширить его функционал собственными эксплойтами и вспомогательными модулями. Сегодня мы рассмотрим все необходимые аспекты создания модуля с нуля, а также особенности языка Ruby, которые нужно учитывать при написании.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Музей Эрарта, 2014 год</title>
      <link>http://ovchinnikov.cc/writing/erarta/</link>
      <pubDate>Tue, 14 Jul 2015 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/erarta/</guid>
      <description>&lt;p&gt;Пройдя в очередной зал, невольно вздрагиваю. Посреди помещения лежит манекен, придавленный огромной, больше моего роста, чёрной фигурой в виде буквы L. Со входа композиция выглядит настолько реалистично, что кажется будто придавило очередного посетителя, вошедшего в зал минутой раньше. В лакированном покрытии фигуры видно отражения ярких картин на стенах и моё озадаченное лицо.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2015-07-14-erarta/DSC_0400.JPG&#34; alt=&#34;Арт-объект Придавленный&#34;&gt;&lt;/p&gt;
&lt;p&gt;Жизнь действительно во многом похожа на тетрис. Каждый день в нас летят десятки обстоятельств и сотни событий, которые непременно должны быть состыкованы и скомпенсированы. Стоит на секунду замешкаться, как тут же оказываешься один на один с огромной блестящей буквой L, которая, нарушая привычный уклад, сменяет спокойную размеренность будней огромным нагромождением плохо состыкованных фигур. Какое-то время ты ещё пытаешься судорожно раскидывать фигуры по игровому полю. Иногда это даже получается, но чаще просто видишь, как тебя заваливает, и расписавшись в собственном бессилии, начинаешь новую партию. Этот придавленный манекен чётко фиксирует душевное состояние между падением последней фигуры с непременным «game over» и следующей игрой. Мастерство игрока определяется тем, сколько раз он смог начать заново, но всех ждёт один конец.&lt;/p&gt;
&lt;p&gt;В галерею современных искусств «Эрарта» мы с женой зашли в один из последних дней поездки в Санкт-Петербург. За плечами были дни восторженных впечатлений от Петергофа, Зимнего дворца и других обязательных к посещению мест культурной столицы.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Погружение в Metasploit</title>
      <link>http://ovchinnikov.cc/writing/metasploit/</link>
      <pubDate>Sun, 12 Jul 2015 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/metasploit/</guid>
      <description>&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;
    Эта статья была впервые опубликована в журнале &#34;Хакер&#34;, здесь публикуется исходная версия, до отправки в редакцию. Вся информация предоставлена исключительно в образовательных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
&lt;/div&gt;
&lt;p&gt;Говоря об анализе информационной безопасности сложно не упомянуть Metasploit. Мощный, открытый инструмент с продуманной архитектурой, сотнями контрибьюторов, включающий в себя тысячи модулей, обеспечивающих автоматизацию эксплуатации огромного количества уязвимостей. При этом оставаясь простым в использвании, он позволяет проводить аудиты не только профессиональным пентестерам, но и любому разработчику или администратору, обеспокоенным уровнем безопасности своего проекта.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Homebrew</title>
      <link>http://ovchinnikov.cc/writing/homebrew/</link>
      <pubDate>Sun, 21 Dec 2014 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/homebrew/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Homebrew&lt;/strong&gt; — менеджер пакетов для Mac OS X, который упрощает установку открытого программного обеспечения. Этот проект имеет открытый исходный код, написан на языке Ruby, а его автором является Max Howell.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Основы автоматизации сборки при помощи Rake</title>
      <link>http://ovchinnikov.cc/writing/rake/</link>
      <pubDate>Wed, 12 Nov 2014 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/rake/</guid>
      <description>&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
    Эта статья впервые опубликована &lt;a href=&#34;https://xakep.ru/2014/12/01/c-sharp-cradle/&#34;&gt;в журнале &#34;Хакер&#34;&lt;/a&gt;, здесь публикуется исходная версия, до отправки в редакцию.
&lt;/div&gt;
&lt;p&gt;С Rake знакомы многие кто писал веб-приложения на Ruby on Rails. Но этот инструмент для автоматизации сборки может оказаться весьма полезен и вне контекста популярного веб-фреймворка. Предлагаю разобраться подробнее с его базовыми принципами и подумать где еще он может пригодиться.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Vagrant: наполнение виртуальной машины при помощи shell-скрипта</title>
      <link>http://ovchinnikov.cc/writing/vagrant-shell/</link>
      <pubDate>Mon, 21 Apr 2014 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/vagrant-shell/</guid>
      <description>&lt;p&gt;Создавать виртуалку при помощи Vagrant легко и весело, но пустая виртуалка врядли будет кому-то полезна и интересна. Раз уж мы автоматизировали создание виртуальной машины, то почему бы не автоматизировать установку необходимого программного обеспечения? В терминологии Vagrant такой процесс называется наполнением (provisioning).&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Vagrant: работа с несколькими машинами</title>
      <link>http://ovchinnikov.cc/writing/vagrant-multi-vm/</link>
      <pubDate>Mon, 31 Mar 2014 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/vagrant-multi-vm/</guid>
      <description>&lt;p&gt;Описание конфигурации в Vagrantfile не ограничивается только одной машиной. Если для вашего окружения нужно поднять несколько машин (эмуляция распределенной работы, к примеру), их конфигурации можно описать в едином файле, выделив для каждой из машин отдельный блок.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Vagrant: автоматизация создания виртуальных машин</title>
      <link>http://ovchinnikov.cc/writing/vagrant/</link>
      <pubDate>Sat, 29 Mar 2014 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/vagrant/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Vagrant&lt;/strong&gt;  — это набор скриптов на Ruby, который предназначен для того, чтобы автоматизировать работу с виртуальными машинами на вашем компьютере. Чаще всего он используется для быстрого развертывания окружения для разработки ПО.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Night Storm - Meditation EP (2014)</title>
      <link>http://ovchinnikov.cc/music/meditation-ep/</link>
      <pubDate>Wed, 01 Jan 2014 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/music/meditation-ep/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Использование Raspberry Pi c LabView</title>
      <link>http://ovchinnikov.cc/writing/labview-pi/</link>
      <pubDate>Mon, 12 Aug 2013 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/labview-pi/</guid>
      <description>&lt;p&gt;Использование LabView в кругах радиолюбителей редко заметно, в среде профи же прога давно пользуется уважением: кто моделирует различные процессы, проверяя свои идеи, а некоторые просто делают программные интерфейсы для своих устройств, подключая их через COM-порт.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2013-08-12-labview-pi/Screen_Shot_2013-08-11_at_11.44.38_PM.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;При чтении ресурсов посвященных Raspberry Pi, иногда встречаются вопросы, посвященные тому, как заставить работать Raspberry Pi с LabView. Чаще всего эти вопросы остаются без ответа, так как имеется ввиду взаимодействие через COM-порт, которое действительно может вызвать определенные затруднения.&lt;/p&gt;
&lt;p&gt;Я же решил пойти другим путем: просто подключиться по SSH и считать/передать необходимую информацию и команды.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Рабочее место Мэтью Фиккета</title>
      <link>http://ovchinnikov.cc/writing/matthew-place/</link>
      <pubDate>Thu, 01 Aug 2013 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/matthew-place/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2013-08-01-matthew-place/deskmeters01-800.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Рабочее место было спроектировано таким образом, чтобы устройства и кабели не валялись на полу, а были скрыты за дверцами шкафов, оставляя рабочую поверхность максимально чистой. Одной из главных деталей этого проекта была установка аналоговых измерителей для мониторинга состояния загрузки процессора и прочих характеристик.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Мой рабочий стол для Android</title>
      <link>http://ovchinnikov.cc/writing/android-desktop/</link>
      <pubDate>Wed, 17 Jul 2013 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/android-desktop/</guid>
      <description>&lt;p&gt;Сегодня в голову пришел один концепт, который вдруг захотелось реализовать на своем телефоне. Не могу сказать, что на 100% придумал его самостоятельно, подобные штуки делает куча народу и скорее всего я просто где-то видел что-то подобное.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Система продуктивности автора сайта mnmal.org</title>
      <link>http://ovchinnikov.cc/writing/mnmalorg/</link>
      <pubDate>Thu, 04 Jul 2013 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/mnmalorg/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2013-07-04-mnmalorg/754261192efdd70ad545673c93f0d76f.jpeg&#34; alt=&#34;Компьютер автора mnmal.org&#34;&gt;&lt;/p&gt;
&lt;p&gt;Блог &lt;code&gt;mnmal.org&lt;/code&gt; когда-то являлся довольно популярным блогом на Tumblr, посвященным минимализму. Иногда, автор этого блога (к сожалению, не знаю его имени) писал небольшие заметки о своем рабочем месте и организации своей работы. Его основной вид деятельности — информационная безопасность и программирование. Поэтому данный пост должен быть интересен в первую очередь представителям ИТ-профессий, хотя и все остальные должны найти для себя что-то интересное. Повествование будет идти от первого лица — так удобнее переводить, и не нарушается целостность. Ссылки на оригинальные заметки не даю, потому что оригинальный блог давно исчез, а на его месте располагается сайт какой-то клиники.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Радиаторы для Raspberry Pi</title>
      <link>http://ovchinnikov.cc/writing/pi-temp/</link>
      <pubDate>Tue, 02 Jul 2013 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/pi-temp/</guid>
      <description>&lt;p&gt;Решил сделать радиаторы для своего Raspberry Pi. Нагревался процессор, если его хорошенько нагрузить, прилично, да и насмотревшись «ужасных» фотографий, наподобие той что ниже, было решено попробовать хоть немного предохранить чипы от перегрева.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Applescript: язык автоматизации для macOS</title>
      <link>http://ovchinnikov.cc/writing/as/</link>
      <pubDate>Sun, 30 Jun 2013 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/as/</guid>
      <description>&lt;p&gt;&lt;strong&gt;AppleScript&lt;/strong&gt; — скриптовый язык, который используется для управления системой, приложениями и файлами в Mac OS X. Наиболее общий принцип применения следующий: открыть приложение и передать ему набор инструкций для выполнения. Причем это не обязательно приложения из стандартного комплекта поставки операционки, многие сторонние приложения также предоставляют API для обращения к ним через AppleScript.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Начальная настройка Raspberry Pi</title>
      <link>http://ovchinnikov.cc/writing/raspberry-pi/</link>
      <pubDate>Sun, 02 Jun 2013 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/raspberry-pi/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Raspberry Pi&lt;/strong&gt; — компьютер на плате, размером с кредитную карточку, изначально создававшийся для того, чтобы приобщить школьников к программированию, на практике стал настоящим хитом среди гиков и народных умельцев. Неудивительно: плата за 35$, несущая на своем борту 700МГц ARM-процессор и 512 МБ оперативной памяти, плюс все необходимые разъемы, позволяющая установить полноценный Linux, обязана занять почетное место в хозяйстве любого гика.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>«60 Mountain Lion tips» — David Sparks, Brett Terpstra</title>
      <link>http://ovchinnikov.cc/writing/60-tips/</link>
      <pubDate>Sat, 02 Feb 2013 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/60-tips/</guid>
      <description>&lt;p&gt;«&lt;strong&gt;60 Mountain Lion tips&lt;/strong&gt;» — совместная книга Дэвида Спаркса, автора популярного блога «&lt;a href=&#34;http://macsparky.com/&#34;&gt;Macsparky&lt;/a&gt;», и Бретта Терпстра, создателя «Marked» и автора многих статей в журнале «Macworld». Нетрудно понять из названия, что перед нами книга в стиле Tips&amp;amp;Tricks, рассчитанная большей частью на начинающих пользователей. Уверен, что и опытные пользователи смогут найти для себя что-то интересное, но платить 7$ за пару советов в этом случае через чур расточительно на мой взгляд.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Аарон Шварц</title>
      <link>http://ovchinnikov.cc/writing/aaron-swartz/</link>
      <pubDate>Mon, 14 Jan 2013 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/aaron-swartz/</guid>
      <description>&lt;p&gt;Я не особенно слежу за новостями, поэтому вчера когда наткнулся в ленте на новость о смерти Аарона Шварца, был весьма неприятно огорчен, если не шокирован. Не могу сказать, что был каким-то его поклонником, даже на его блог не был подписан. Тем не менее не раз слышал о нем, иногда натыкался на его посты в разных местах. Что-то из того, что он делал и писал,  вызывало у меня некоторые сомнения, но все равно этот человек вызывал исключительно симпатию и уважение.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ovchinnikov.cc/files/2013-01-14-aaron-swartz/40377370222.jpeg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Как я использую Evernote</title>
      <link>http://ovchinnikov.cc/writing/evernote/</link>
      <pubDate>Sun, 16 Sep 2012 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/evernote/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;http://evernote.com/&#34;&gt;Evernote&lt;/a&gt;&lt;/strong&gt; — функциональный инструмент для хранения и упорядочения всевозможной информации. По всему интернету люди регулярно делятся своими способами использования этой программы: кто-то использует один блокнот и множество тегов, кто-то наоборот, а кто-то вообще выстраивает целую сложную систему управления проектами. Я использую Evernote уже порядка 2-х лет, поэтому решил, что будет интересно рассказать про систему, которая выстроилась у меня.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Mac Mini (mid 2011)</title>
      <link>http://ovchinnikov.cc/writing/mac-mini-mid-2011/</link>
      <pubDate>Wed, 06 Jun 2012 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/writing/mac-mini-mid-2011/</guid>
      <description>&lt;p&gt;Благодаря небольшой цене, Mac Mini по-праву называют «входным билетом в мир Apple». Не скажу, что я сильно стремился в этот мир попасть, но ознакомиться было и желание, и возможность, поэтому я приобрел себе этого «малыша» для подробного изучения платформы и дальнейшей работы.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>ADB Assistant</title>
      <link>http://ovchinnikov.cc/projects/adb-assistant/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/projects/adb-assistant/</guid>
      <description>Графическая обёртка для adb, которая упрощает работу с Android-устройствами на macOS. Приложение показывает список подключённых девайсов, позволяет перезагружать их в режим System, Recovery или Bootloader, быстро делать скриншоты и устанавливать APK простым перетаскиванием. Достаточно указать путь к Android Platform Tools, и утилита берёт на себя типичные рутины, сохраняя возможности оригинального инструмента командной строки. Проект распространяется под лицензией MIT и доступен в виде готовых бинарников и исходного кода на GitHub.
Ключевые возможности Выбор нужного устройства из списка всех подключенных по ADB.</description>
    </item>
    
    <item>
      <title>figma-assets-fetch</title>
      <link>http://ovchinnikov.cc/projects/figma-assets-fetch/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/projects/figma-assets-fetch/</guid>
      <description>Консольная утилита для macOS, которая автоматически генерирует код и каталоги *.xcassets на основе палитр и изображений из Figma. Процесс настроен по принципу «conventions over configuration»: достаточно подготовить кадр в Figma и указать его URL, после чего инструмент соберёт цвета или иконки и построит шаблонный Swift-код или ассеты. Поддерживаются отдельные команды для генерации перечислений цветов из шаблона Stencil, а также формирования ассетов с цветами и изображениями для Xcode-проектов. Проект активно развивается и распространяется под MIT-лицензией.</description>
    </item>
    
    <item>
      <title>О себе</title>
      <link>http://ovchinnikov.cc/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>http://ovchinnikov.cc/about/</guid>
      <description>Разрабатываю приложения для iOS и macOS на Swift и Objective-C. На этом сайте собираю личную базу знаний про языки программирования, технологии, платформы и устройства с которыми сталкиваюсь в своей деятельности.
На текущий момент в фокусе моих интересов:
swift (11 постов) разработка-под-ios (9 постов) разработка-под-macos (9 постов) девайсы (8 постов) internet-of-things (7 постов) linux (6 постов) xcode (6 постов) devops (5 постов) ruby (5 постов) Подписка Лучший способ следить за обновлениями блога — подписаться по RSS.</description>
    </item>
    
  </channel>
</rss>
