<?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/bsideup/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя bsideup]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Sun, 03 May 2026 05:48:24 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[[Перевод] Строители против синтаксиса Java]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/jugru/articles/438866/</guid>
      <link>https://habr.com/ru/companies/jugru/articles/438866/?utm_campaign=438866&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Шаблон проектирования <a href="https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%BE%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_(%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)">«строитель»</a> — <a href="https://www.quora.com/Which-are-the-important-and-widely-used-design-patterns-in-Java">один из самых популярных</a> в Java. </p><br>
<p>Он простой, он помогает делать объекты неизменяемыми, и его можно генерировать инструментами вроде <a href="https://projectlombok.org/features/Builder">@Builder</a> в Project Lombok или <a href="https://immutables.github.io">Immutables</a>. </p><br>
<p>Но так ли удобен этот паттерн в Java?</p> <a href="https://habr.com/ru/articles/438866/?utm_campaign=438866&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Wed, 06 Feb 2019 10:34:19 GMT</pubDate>
      <dc:creator><![CDATA[bsideup (JUG Ru Group)]]></dc:creator>
      <category><![CDATA[Блог компании JUG Ru Group]]></category><category><![CDATA[Java]]></category>
      <category>java</category><category>builder</category><category>паттерны проектирования</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] RxConnect — когда React встречает RxJS]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/309226/</guid>
      <link>https://habr.com/ru/articles/309226/?utm_campaign=309226&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Данный перевод является русскоязычной интерпретацией документации, которую я сам и написал, поэтому не стесняйтесь задавать вопросы.</p><br/>
<h1>Введение</h1><br/>
<p>Обрабатывать пользовательский ввод может быть не так просто, как кажется. Мы же не хотим отправлять запросы на сервер пока пользователь всё ещё набирает свой запрос? И, конечно же, пользователь должен всегда видеть результат на последний запрос, который он отослал. </p><br/>
<p>Существуют разные способы реагирования на интерактивные события в React приложениях, и, по моему мнению, реактивный подход (благодаря таким библиотекам, как RxJS или Bacon) — один из самых лучших. Вот только для того, чтобы использовать RxJS и React одновременно, Вам придётся иметь дело с жизненным циклом React компонента, вручную управлять подписками на потоки и так далее. Хорошая новость — всё это можно делать автоматически с помощью RxConnect — библиотеки, разработанной в процессе миграции с Angular на React в ZeroTurnaround.</p><br/>
 <a href="https://habr.com/ru/articles/309226/?utm_campaign=309226&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 05 Sep 2016 11:58:25 GMT</pubDate>
      <dc:creator><![CDATA[bsideup]]></dc:creator>
      <category><![CDATA[JavaScript]]></category><category><![CDATA[ReactJS]]></category>
      <category>javascript</category><category>react</category><category>rxjs</category><category>reactive</category><category>redux</category><category>rx</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Pivotal прекращает разработку Groovy & Grails с 31 марта]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/248227/</guid>
      <link>https://habr.com/ru/articles/248227/?utm_campaign=248227&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/files/e2c/50d/84b/e2c50d84bc7c42358c05202299b4c2b0.png"/><br/>
<br/>
Bad news everyone!<br/>
<br/>
Компания Pivotal, спонсировавшая разработку Groovy & Grails последние годы, <a href="http://blog.pivotal.io/pivotal/news-2/groovy-2-4-and-grails-3-0-to-be-last-major-releases-under-pivotal-sponsorship">объявила</a> о прекращении спонсирования проектов начиная с 31 марта. <br/>
<br/>
Релизы Groovy 2.4 и Grails 3.0 будут последними релизами под крылом Pivotal. <br/>
 <a href="https://habr.com/ru/articles/248227/?utm_campaign=248227&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 19 Jan 2015 10:48:13 GMT</pubDate>
      <dc:creator><![CDATA[bsideup]]></dc:creator>
      <category><![CDATA[Open source]]></category><category><![CDATA[Java]]></category><category><![CDATA[Groovy & Grails]]></category>
      <category><![CDATA[groovy]]></category><category><![CDATA[grails]]></category><category><![CDATA[pivotal]]></category><category><![CDATA[java]]></category><category><![CDATA[не чокаясь]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Вы находитесь в стране, на которую распространяется эмбарго. Загрузка Java невозможна]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/232633/</guid>
      <link>https://habr.com/ru/articles/232633/?utm_campaign=232633&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/files/86a/0fc/266/86a0fc266b044949a983fbacbbaaff28.png"/><br/>
<br/>
Привет, Хабр!<br/>
<br/>
Чуть-чуть пост не дотянул до пятничного, а ведь тема достойная.<br/>
<br/>
<blockquote>Невозможно загрузить Java(TM) на данный компьютер. Вы находитесь в стране, на которую распространяется эмбарго.</blockquote><br/>
Именно такую надпись вы получите при попытке скачать JVM с java.com, находясь на территории России. <br/>
<br/>
Не верите? Убедитесь сами: <a href="http://www.java.com/ru/download">www.java.com/ru/download</a><br/>
<br/>
На случай, если вам не повезло и вы не находитесь в России, то не стоит расстраиваться. Смотрите <b>EDIT5</b>.<br/>
<br/>
P.S. Хабр — не для политики, поэтому прошу избежать её обсуждения в комментариях. Спасибо.<br/>
 <a href="https://habr.com/ru/articles/232633/?utm_campaign=232633&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Thu, 07 Aug 2014 19:01:10 GMT</pubDate>
      <dc:creator><![CDATA[bsideup]]></dc:creator>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[java]]></category><category><![CDATA[jvm]]></category><category><![CDATA[oracle]]></category><category><![CDATA[санкции]]></category><category><![CDATA[эмбарго]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[MacroGroovy — работа с AST на Groovy ещё никогда не была такой простой]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/205084/</guid>
      <link>https://habr.com/ru/articles/205084/?utm_campaign=205084&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="http://groovy.codehaus.org/download/attachments/1866/groovydukemed.jpg?version=1&amp;modificationDate=1176732937408&amp;api=v2" alt="image"/><br/>
Последнее время часто приходится работать с такой мощной возможностью Groovy как <a href="http://groovy.codehaus.org/Compile-time+Metaprogramming+-+AST+Transformations">Compile-time AST Transformations</a>. <br/>
<br/>
Так как я не люблю излишнюю динамику, то бОльшая часть проверок DSL на валидность у нас происходит на этапе компиляции, а так же мы используем очень много генерации кода. Поэтому каждый день приходится сталкиваться с составлением ASTNode-ов вручную. <br/>
<br/>
<pre><code class="ruby">def someVariable = new ConstantExpression(&quot;someValue&quot;);
def returnStatement = new ReturnStatement(
    new ConstructorCallExpression(
        ClassHelper.make(SomeCoolClass),
        new ArgumentListExpression(someVariable)
    )
);
</code></pre><br/>
<br/>
До боли знакомые конструкции, не правда ли? Хотите, чтобы было вот так?<br/>
<pre><code class="ruby">def someVariable = macro { &quot;someValue&quot; }
def returnStatement = macro { return new SomeCoolClass($v{ someVariable }) }
</code></pre><br/>
<br/>
Или даже так?<br/>
<pre><code class="ruby">def constructorCall = macro { new SomeCoolClass($v{ macro { &quot;someValue&quot; } }) }
</code></pre><br/>
<br/>
В данной статье речь пойдёт о моём решении этой проблемы, максимально близком к родному решению Groovy — <a href="https://github.com/bsideup/MacroGroovy">github.com/bsideup/MacroGroovy</a><br/>
<br/>
 <a href="https://habr.com/ru/articles/205084/?utm_campaign=205084&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 06 Dec 2013 10:58:19 GMT</pubDate>
      <dc:creator><![CDATA[bsideup]]></dc:creator>
      <category><![CDATA[Java]]></category><category><![CDATA[Groovy & Grails]]></category>
      <category><![CDATA[groovy]]></category><category><![CDATA[ast]]></category><category><![CDATA[asttransformation]]></category><category><![CDATA[dsl]]></category><category><![CDATA[java]]></category><category><![CDATA[macro]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Haxe + OpenFL: даже моя бабушка сможет сделать игру под iOS]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/186520/</guid>
      <link>https://habr.com/ru/articles/186520/?utm_campaign=186520&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/storage2/eac/54e/f81/eac54ef81716654109913e59f420db9d.png"><br>
<br>
Привет, %USERNAME%! решил рассказать тебе, как, приложив минимальные усилия, начать разрабатывать на Haxe игры под iOS (на самом деле и не только, но я решил ограничить данную статью именно этой платформой). <br>
<br>
Для этого нам понадобятся:<br>
<ol>
<li><s>бабушка</s> Руки. Желательно прямые. Ещё желательней из плеч;</li>
<li>Mac OS X;</li>
<li>XCode;</li>
<li>Идея для игры.</li>
</ol><br>
<br>
Приглашаю всех под кат, даже если чего-либо из списка у Вас нет в наличии. <br> <a href="https://habr.com/ru/articles/186520/?utm_campaign=186520&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Mon, 15 Jul 2013 08:49:12 GMT</pubDate>
      <dc:creator><![CDATA[bsideup]]></dc:creator>
      <category><![CDATA[Adobe Flash]]></category><category><![CDATA[Haxe]]></category><category><![CDATA[Разработка игр]]></category><category><![CDATA[iOS]]></category>
      <category><![CDATA[haxe]]></category><category><![CDATA[openfl]]></category><category><![CDATA[ios]]></category><category><![CDATA[game development]]></category><category><![CDATA[match3]]></category><category><![CDATA[flash]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Отчёт по онлайн конференции RuHaxe #1]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/183904/</guid>
      <link>https://habr.com/ru/articles/183904/?utm_campaign=183904&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/storage2/179/6ea/b11/1796eab11b4977ebc4c06200315f2c7a.png" align="right">8 июня 2013 года прошла онлайн-конференция RuHaxe — первое событие в рунете, посвященное Haxe-платформе. <br>
<br>
В рунете пока мало Haxe-разработчиков, но среди них есть уже достаточно заметные в мировом Haxe-комьюнити, и есть потребность в общении на родном языке, которая и стала мотивацией для организации RuHaxe. Несмотря на фактическое отсутствие рекламы, первую конференцию посмотрели 50 человек. С этого момента можно считать, что в рунете появилось пока небольшое, но активное сообщество Haxe-разработчиков.<br>
<br>
Под катом Вы найдёте видеозаписи каждого из четырёх выступлений, а также информацию о дальнейших планах развития конференции.<br> <a href="https://habr.com/ru/articles/183904/?utm_campaign=183904&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Wed, 19 Jun 2013 14:05:16 GMT</pubDate>
      <dc:creator><![CDATA[bsideup]]></dc:creator>
      <category><![CDATA[Action Script]]></category><category><![CDATA[Adobe Flash]]></category><category><![CDATA[Haxe]]></category><category><![CDATA[Open source]]></category>
      <category><![CDATA[haxe]]></category><category><![CDATA[ruhaxe]]></category><category><![CDATA[flash]]></category><category><![CDATA[cross-platform]]></category><category><![CDATA[neko]]></category><category><![CDATA[nekovm]]></category><category><![CDATA[html5]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] MXML компилятор. Часть 3. Разбираемся в работе Flex-компилятора]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/180139/</guid>
      <link>https://habr.com/ru/articles/180139/?utm_campaign=180139&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/storage2/48a/a6a/a5d/48aa6aa5da7ceda7f9b87579ef60b793.jpg"/><br/>
Привет, %habra_user%! <br/>
<br/>
Решил в продолжение цикла статей о Flex-компиляторе перевести хорошую статью автора сего творения о том, какие же процессы происходят внутри компилятора при сборке приложения. Датируется она 2008м годом, но при этом в русскоязычном сообществе (да и в других особо тоже) замечена не была. А так как ближайшее время именно этот компилятор остаётся актуальным для сборки подавляющего большинства Flash-проектов, то я решил продолжить цикл статей о его расширении. <br/>
<br/>
Как обычно всех, кто не устал дочитав до этой строчки — прошу под кат!<br/>
 <a href="https://habr.com/ru/articles/180139/?utm_campaign=180139&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Sat, 18 May 2013 12:08:14 GMT</pubDate>
      <dc:creator><![CDATA[bsideup]]></dc:creator>
      <category><![CDATA[Adobe Flash]]></category><category><![CDATA[Компиляторы]]></category>
      <category>flash</category><category>flex</category><category>adobe flex</category><category>apache flex</category><category>clement wong</category><category>compiler</category><category>mxmlc</category><category>некрофилия</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Настраиваем SSH ключи на Node-ах Jenkins без ssh-доступа к ним]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/173625/</guid>
      <link>https://habr.com/ru/articles/173625/?utm_campaign=173625&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/storage2/172/03b/63a/17203b63aed2b3284b76cb3bf51952d0.png"/><br/>
<br/>
Всем привет! Думаю у каждого, кто когда-либо настраивал Jenkins для работы с Git-ом возникала проблема генерации ключей на Node-ах.<br/>
<br/>
В очередной раз когда мне этим пришлось заняться я оказался в нелёгкой ситуации — ssh доступа к серверу с Jenkins-ом и к его слейвам у меня не было и, соответственно, ключи я сгенерировать не мог. Но всё оказалось не так плохо.<br/>
<br/>
 <a href="https://habr.com/ru/articles/173625/?utm_campaign=173625&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Wed, 20 Mar 2013 15:26:33 GMT</pubDate>
      <dc:creator><![CDATA[bsideup]]></dc:creator>
      <category><![CDATA[Git]]></category>
      <category><![CDATA[Jenkins]]></category><category><![CDATA[groovy]]></category><category><![CDATA[ssh]]></category><category><![CDATA[git]]></category><category><![CDATA[github]]></category><category><![CDATA[whyamidoingthis]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Cascade File System или размышления о файловой системы моей мечты]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/168631/</guid>
      <link>https://habr.com/ru/articles/168631/?utm_campaign=168631&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/storage2/be1/fab/ef8/be1fabef847bf07e1f460975b656dd0f.gif"/><br/>
<br/>
Все мы привыкли к уже давно ставшему стандартному видению файловых систем: есть точка монтирования, и дерево node-ов ростёт от неё. Это удобно, привычно всем и проверенно десятилетиями. Но что если этих точек станет несколько? <br/>
<br/>
Я хотел бы предложить Вам мой концепт того, как я это вижу. Пока, к сожалению, в теории, так как я не обладаю достаточным знанием проектирования файловых систем, но я более чем уверен, что на Хабре таких людей предостаточно, и моя цель — призвать их к конструктивной критике и обсуждению предложенной мною идеи. <br/>
 <a href="https://habr.com/ru/articles/168631/?utm_campaign=168631&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Thu, 07 Feb 2013 11:26:22 GMT</pubDate>
      <dc:creator><![CDATA[bsideup]]></dc:creator>
      <category><![CDATA[Системное программирование]]></category>
      <category><![CDATA[хочется странного]]></category><category><![CDATA[filesystem]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Потоковое онлайн 4K-видео или обратно к видеоплееру на Flash]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/165483/</guid>
      <link>https://habr.com/ru/articles/165483/?utm_campaign=165483&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<a href="http://onlinelib.de/tl_files/demos/4kplayer/index.html"><img src="https://habrastorage.org/storage2/678/750/041/678750041176ca039fbb9f6be58c0b1d.jpg"/></a> <br/>
 <br/>
Буквально вчера Gerd Hilgemann опубликовал результат своей работы над потоковым вещанием 4K-видео. Как говорится в его оригинальной заметке (это топик-перевод, ссылка на demo внутри):<br/>
<blockquote>Завершил работу над живой демострацией потокового вещания видео в формате 4K (3840x2160), которая стала возможна благодаря технологии Flash, а точнее многопоточности, Stage3D и StageVideo. Повторить такое на HTML5 не удалось. <br/>
Я использовал HTTP Live Streaming (так же известный как HLS) как контейнер для потокового вещания и mpegTS для декодирования видео, который так же был реализован на Flash. <br/>
<br/>
Для вещания Вам не потребуется специальный сервер, а загрузка процессора на 40% ниже, чем на YouTube!<br/>
<br/>
Для обратной совместимости на мобильных устройствах видео передаётся в формате 720p и потребляет всего 1.5Мбит/c. Верьте или нет, но видео в формате 4K использует <b>всего 3.5Мбит\с</b>.<br/>
<br/>
Пока удалось протестировать на видеокартах фирм ATI и Nvidia, а так же жду недождусь, когда мне в руки попадётся Red 4K Player (я так понимаю речь идёт об <a href="http://www.red.com/products/redray">этом</a> — прим. переводчика) и его SDK:)</blockquote><br/>
 <a href="https://habr.com/ru/articles/165483/?utm_campaign=165483&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 11 Jan 2013 13:45:25 GMT</pubDate>
      <dc:creator><![CDATA[bsideup]]></dc:creator>
      <category><![CDATA[Adobe Flash]]></category>
      <category>4k</category><category>stage3d</category><category>flash</category><category>stageVideo</category><category>mpegTS</category><category>hls</category><category>video streaming</category><category>streaming</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Как мы iOS приложение тестировали из-под Ubuntu]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/163023/</guid>
      <link>https://habr.com/ru/articles/163023/?utm_campaign=163023&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/storage2/e71/383/20d/e7138320db0d8e69bac82d3949d668fb.png"/><br/>
<br/>
В компании где я работаю наступила пора <s>корпоративов</s> тестирования нашего iOS приложения, и т.к. мако тут только у меня, а все остальные разработчики и, что самое главное, QA работают под Ubuntu, &lt;irony&gt;а значит айфонов у них нет&lt;/irony&gt;, то пришлось придумать решение проблемы и избавить себя от мук передачи личного айфона в руки тестеров. <br/>
<br/>
Если Вы сталкивались с подобной проблемой или просто интересуетесь темой шаринга одного мака с возможностью одновременной работы на нём, то прошу под кат.<br/>
 <a href="https://habr.com/ru/articles/163023/?utm_campaign=163023&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Tue, 18 Dec 2012 11:09:58 GMT</pubDate>
      <dc:creator><![CDATA[bsideup]]></dc:creator>
      <category><![CDATA[iOS]]></category>
      <category><![CDATA[ios]]></category><category><![CDATA[ios simulator]]></category><category><![CDATA[mac os x]]></category><category><![CDATA[apple remote desktop]]></category><category><![CDATA[ard]]></category><category><![CDATA[vnc]]></category><category><![CDATA[ubuntu]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Observer Pattern со строгой типизацией или зачем нам нужен Objective-C++]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/162235/</guid>
      <link>https://habr.com/ru/articles/162235/?utm_campaign=162235&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/storage2/2ce/6cd/ef0/2ce6cdef0317305a3723bfc34949d53b.png"/><br/>
<br/>
Уже много копий было сломанно о тему «обработка событий в Objective-C», о делегировании событий (к примеру, <b>viewWillAppear:(BOOL)animated</b> ), о том как это не удобно, когда надо слушать их одновременно в разных местах программы. <br/>
<br/>
Я хочу предложить Вам свою реализацию шаблона Observer, который использует мощь C++0x и позволяет объявлять сигналы с жёстко типизированным списком параметров, например, вот так:<br/>
<pre><code>	new TLSignal&lt;NSString *, BOOL&gt;(self);
</code></pre><br/>
Т.к. мои знания С++ довольно таки скудны, то буду признателен любым советам по улучшению данного кода.<br/>
<br/>
Заинтересовавшихся прошу под кат.<br/>
 <a href="https://habr.com/ru/articles/162235/?utm_campaign=162235&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Tue, 11 Dec 2012 18:49:45 GMT</pubDate>
      <dc:creator><![CDATA[bsideup]]></dc:creator>
      <category><![CDATA[iOS]]></category>
      <category><![CDATA[objective-c]]></category><category><![CDATA[objective-c++]]></category><category><![CDATA[C++0x]]></category><category><![CDATA[observer]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Хитрости разработчика под iOS. Splash Screen]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/161455/</guid>
      <link>https://habr.com/ru/articles/161455/?utm_campaign=161455&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<h4>Вступление</h4><br/>
Приветствую, хабравчане!<br/>
<br/>
В ходе разработки приложений под iOS у меня накопились некоторые хитрости, которыми я хотел бы поделиться с Вами.<br/>
<br/>
Сразу предупрежу, что я стараюсь шагать в ногу со временем, поэтому примеры будут под iOS &gt;=5.0 и использовать Storyboard и ARC, но ничего не мешает их портировать на 4.*. <br/>
<br/>
Если вы давно разрабатываете под iOS — для вас бОльшая часть сказанного мною будет очевидной, но при этом я хотел бы, чтобы вы присоединились к обсуждению и рассказали, как вы реализуете подобное.<br/>
<br/>
Заинтересовавшимся — прошу под кат (Пост содержит скриншоты областей Interface Builder-а, поэтому предупреждаю о траффике).<br/>
<br/>
 <a href="https://habr.com/ru/articles/161455/?utm_campaign=161455&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Wed, 05 Dec 2012 10:45:01 GMT</pubDate>
      <dc:creator><![CDATA[bsideup]]></dc:creator>
      <category><![CDATA[iOS]]></category>
      <category><![CDATA[ios]]></category><category><![CDATA[storyboard]]></category><category><![CDATA[ios 5]]></category><category><![CDATA[arc]]></category><category><![CDATA[iphone]]></category><category><![CDATA[apple]]></category><category><![CDATA[objective-c]]></category><category><![CDATA[cocoa]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Apache Flex выложили исходники Falcon]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/151244/</guid>
      <link>https://habr.com/ru/articles/151244/?utm_campaign=151244&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/storage2/6b9/37e/492/6b937e492017546b232a3be7d590d81c.png" align="right"/><br/>
Настал день, которого лично я ждал очень долго — в репозиториях Apache появились исходники Falcon — новым этапом эволюции flex-компилятора, разработку которого активно вели в Adobe до передачи Flex в руки краснокожих.<br/>
<br/>
Что нам известно относительно Falcon:<br/>
<ul>
<li><b>Меньшее потребление памяти</b></li>
<li><b>Constant propagation</b> — подстановка констант, избавление от dead code</li>
<li>Новый <b>концепт проверки кода «на лету» в IDE</b> с помощью предоставляемых (надеюсь, легковесных) механизмов, являющихся частью Falcon</li>
<li><b>Ускорение компиляции кода</b>, как в инкрементальном, так и в обычном режимах</li>
<li><b>Мультимодульные проекты должны компилироваться заметно быстрее</b> (если не врут, то модули теперь компилируются многопоточно, используя java.util.concurrent.IFuture&lt;V&gt;, что даст прирост при росте количества ядер процессора)</li>
<li>И, наконец, генерируемый Falcon <b>код является более оптимизированным</b>, что даёт выигрыш не только от процесса разработки, но и в финальном продукте!</li>
</ul><br/>
 <a href="https://habr.com/ru/articles/151244/?utm_campaign=151244&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Tue, 11 Sep 2012 09:11:03 GMT</pubDate>
      <dc:creator><![CDATA[bsideup]]></dc:creator>
      <category><![CDATA[Adobe Flash]]></category>
      <category><![CDATA[flash]]></category><category><![CDATA[adobe]]></category><category><![CDATA[falcon]]></category><category><![CDATA[apache flex]]></category><category><![CDATA[flex]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Поднимаем собственный Maven репозиторий Nexus на OpenShift]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/145936/</guid>
      <link>https://habr.com/ru/articles/145936/?utm_campaign=145936&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<div style="text-align:center;"><img src="http://www.habrastorage.com/images/ostomcatne.jpg" alt="image"></div><br>
<br>
Последнее время на Хабре стали появляться статьи про OpenShift, что привлекло моё внимание, ведь платформа действительно интересна и грех в ней не поковыряться, да и так совпало, что я начал задумываться найти альтернативу моему уютному Dropbox-репозиторию Maven в связи с отменой возможности иметь прямые ссылки и папки Public в целом ( пруф: <a href="http://habrahabr.ru/post/145864/">habrahabr.ru/post/145864</a> ).<br>
<br>
Итак, сегодня мы с Вами будем устанавливать Maven-репозиторий под управлением Nexus под собственные нужды, а Ваш покорный слуга поделится <s>костылями</s> знаниями, приобретёнными будучи первопроходцем в этом деле. <br>
<br> <a href="https://habr.com/ru/articles/145936/?utm_campaign=145936&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Sat, 16 Jun 2012 11:27:50 GMT</pubDate>
      <dc:creator><![CDATA[bsideup]]></dc:creator>
      <category><![CDATA[Java]]></category><category><![CDATA[Openshift]]></category>
      <category><![CDATA[tomcat]]></category><category><![CDATA[openshift]]></category><category><![CDATA[maven]]></category><category><![CDATA[nexus]]></category><category><![CDATA[sonatype]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[MXML компилятор. Часть 2. Не строковые инициализаторы параметров]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/131434/</guid>
      <link>https://habr.com/ru/articles/131434/?utm_campaign=131434&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Привет, Хабр!<br/>
<br/>
В <a href="http://habrahabr.ru/blogs/Flash_Platform/128703/">предыдущей статье</a> я провёл некий ликбез по внутренностям Flex-компилятора (по части MXML) и рассказывал, как избавить себя от проблем работы с классами в MXML, требующими параметры конструктора. Сейчас мы разберём другую сторону вопроса — установка параметров в custom-значения (к примеру, константы) без использования механизма Binding (хотя, очень похоже на него).<br/>
<br/>
 <a href="https://habr.com/ru/articles/131434/?utm_campaign=131434&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 28 Oct 2011 13:16:18 GMT</pubDate>
      <dc:creator><![CDATA[bsideup]]></dc:creator>
      <category><![CDATA[Adobe Flash]]></category>
      <category><![CDATA[flex]]></category><category><![CDATA[flash]]></category><category><![CDATA[actionscript]]></category><category><![CDATA[java]]></category><category><![CDATA[compiler]]></category><category><![CDATA[feature]]></category><category><![CDATA[bicycle]]></category><category><![CDATA[binding]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Добавляем в Flex-компилятор MXML параметры конструктора]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/128703/</guid>
      <link>https://habr.com/ru/articles/128703/?utm_campaign=128703&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/olpictures/ac8/a4f/154/ac8a4f1548e1393f7f22e8c9f97f98a3.jpg" align="left"/> 26 Апреля 2007 года. Adobe делает заявление, что Flex Framework переводят на open source. Данная новость вызвала бурю оваций среди флешеров всего мира, что появятся <s>принципиально</s> новые фреймворки на его основе, но дальше пары-тройки проектов это не пошло.<br/>
<br/>
В то время я делал проекты с использованием Flex-а, и чем больше проекты становились, тем сильнее мне не нравилось некоторые нюансы его внутреннего устройства.<br/>
 Думаю, каждому, кто работал с Flex-ом, известны его проблемы, а так же низкое качество кода как уже написанного, так и генерируемого из MXML, поэтому я решил вмешаться в этот процесс с целью навести порядок и разобраться в устройстве Flex компилятора, и начал с добавления «сахара» в MXML, стараясь сделать это как можно сильнее в духе остальных фич детища Adobe-а. Спустя два года, я принял решение поделиться своими знаниями с Вами.<br/>
  <a href="https://habr.com/ru/articles/128703/?utm_campaign=128703&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 19 Sep 2011 09:31:38 GMT</pubDate>
      <dc:creator><![CDATA[bsideup]]></dc:creator>
      <category><![CDATA[Adobe Flash]]></category>
      <category><![CDATA[flex]]></category><category><![CDATA[flash]]></category><category><![CDATA[actionscript]]></category><category><![CDATA[java]]></category><category><![CDATA[compiler]]></category><category><![CDATA[feature]]></category><category><![CDATA[bicycle]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
