<?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/colwin/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя colwin]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Mon, 04 May 2026 13:41:25 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[JavaScript: как правильно курить IE10, или проблемы миграции]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/189782/</guid>
      <link>https://habr.com/ru/articles/189782/?utm_campaign=189782&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Авторское отступление: Не закидывайте камнями те, кому выпало писать под разные браузеры!<br/>
В моей работе из-за использования ActiveX-компонентов сейчас поддерживается только IE. Поэтому дальнейшее изложение касается только различных версий IE.<br/>
<br/>
IE10 — это особый браузер. Многое из того, что было верно для предыдущий версий IE, перестало работать.<br/>
Рассматриваются только ошибки JavaScript, возникшие при миграции legacy-кода. Различие в CSS выходит за рамки данной статьи.<br/>
 <a href="https://habr.com/ru/articles/189782/?utm_campaign=189782&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 12 Aug 2013 07:10:54 GMT</pubDate>
      <dc:creator><![CDATA[Colwin]]></dc:creator>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[ie10]]></category><category><![CDATA[JavaScript]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[web и MVC: разбор полетов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/151150/</guid>
      <link>https://habr.com/ru/articles/151150/?utm_campaign=151150&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Навеяно топиком <a href="http://habrahabr.ru/post/147038/">о смерти MVC</a>.<br/>
<br/>
Чтобы разобраться в том, что происходит, давайте пойдем от принципов ООП.<br/>
Класс объектов в ООП инкапсулирует данные объекта с его поведением.<br/>
Вся сложность в разделении предметной области на объекты.<br/>
Здесь под «предметной областью» я понимаю также техническое окружение (БД, сеть и т.д.)<br/>
<br/>
Распространенной практикой в наши дни стало создание легковесных POJO-объектов и их proxy, нам которыми работает некоторая логика, разнесенная по всем частям MVC (по M, V и C соответственно).<br/>
Это удобно с точки зрения реализации различных технологий для M, V и C частей приложения соответственно. На выходе имеем M-framefork'и, V-framefork'и и C-framefork'и (иногда наблюдается смешение). В этой парадигме переносить логику в POJO-классы модели, которые отражаются (mapping) на БД, было бы самоубийством.<br/>
<br/>
Какие у нас есть альтернативы?<br/>
<br/>
 <a href="https://habr.com/ru/articles/151150/?utm_campaign=151150&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Расследование здесь</a>]]></description>
      
      <pubDate>Mon, 10 Sep 2012 07:48:37 GMT</pubDate>
      <dc:creator><![CDATA[Colwin]]></dc:creator>
      <category><![CDATA[Программирование]]></category>
      <category><![CDATA[mvc]]></category><category><![CDATA[web-разработка]]></category><category><![CDATA[программирование]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[В каком возрасте Вы написали свой первый проект?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/119594/</guid>
      <link>https://habr.com/ru/articles/119594/?utm_campaign=119594&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[&nbsp; <a href="https://habr.com/ru/articles/119594/?utm_campaign=119594&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut"></a>]]></description>
      
      <pubDate>Thu, 19 May 2011 10:51:18 GMT</pubDate>
      <dc:creator><![CDATA[Colwin]]></dc:creator>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[программирование]]></category><category><![CDATA[разработка]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как проектировать ПО, чтобы избежать проблем: обработка данных web-формы]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/116781/</guid>
      <link>https://habr.com/ru/articles/116781/?utm_campaign=116781&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[При ответе на данный вопрос всегда необходимо задаться вопросом эволюции ПО. Какая часть системы с наибольшей вероятностью будет меняться, а какая скорее всего останется постоянной? <br/>
<br/>
Будем рассматривать данный вопрос на примерах. Рассмотрим несколько задач, регулярно возникающих в более-менее крупных системах. Причины возникновения данного вида задач выносятся за рамки данного поста, здесь же останавливаемся на реализации.<br/>
<br/>
<h4>Обработка данных web-формы</h4><br/>
Формы бывают похожие: добавил одно поле, убрал другое, урезали возможные значения до чисел, сделал множественный выбор вместо единственного и т.д. С точки зрения представления — мелкое изменение. Насколько при этом меняется внутренняя логика?<br/>
 <a href="https://habr.com/ru/articles/116781/?utm_campaign=116781&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Интересно?</a>]]></description>
      
      <pubDate>Mon, 04 Apr 2011 07:51:10 GMT</pubDate>
      <dc:creator><![CDATA[Colwin]]></dc:creator>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[архитектура]]></category><category><![CDATA[разработка]]></category><category><![CDATA[программирование]]></category><category><![CDATA[ООП]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Писали ли вы плагины для своей IDE?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/115757/</guid>
      <link>https://habr.com/ru/articles/115757/?utm_campaign=115757&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[&nbsp; <a href="https://habr.com/ru/articles/115757/?utm_campaign=115757&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut"></a>]]></description>
      
      <pubDate>Fri, 18 Mar 2011 12:00:53 GMT</pubDate>
      <dc:creator><![CDATA[Colwin]]></dc:creator>
      <category><![CDATA[Программирование]]></category>
      <category><![CDATA[плагины]]></category><category><![CDATA[IDE]]></category><category><![CDATA[разработка]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Несколько слов об использовании перечислений в изменяющейся среде]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/101280/</guid>
      <link>https://habr.com/ru/articles/101280/?utm_campaign=101280&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<i>Данный пост предлагает решение проблем с использованием перечислений при изменении состава констант или наличия дублирования кода при их использовании. В остальных случаях применение озвученного ниже подхода, как правило, нецелесообразно.</i><br/>
<br/>
 <a href="https://habr.com/ru/articles/101280/?utm_campaign=101280&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 09 Aug 2010 07:13:44 GMT</pubDate>
      <dc:creator><![CDATA[Colwin]]></dc:creator>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[Java]]></category><category><![CDATA[enum]]></category><category><![CDATA[полиморфизм]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Расширение Java: алиасы]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/93324/</guid>
      <link>https://habr.com/ru/articles/93324/?utm_campaign=93324&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Выкладываю данный пост с целью получения обратной связи от хабра-сообщества Java-программистов. При наличии достаточного количества голосов «за» эту фичу можно будет отправить для рассмотрения в Sun.<br/>
<br/>
<h4>Проблема</h4><br/>
<br/>
После длительной работы с Java 5 и Java 6 и небольшой аналитики я пришел к тому, что generic'и в Java имеют ряд ограничений, которые не дают реализовать решение красивым способом, и обходить их порой приходится очень нетривиально. Данное высказывание относится к разработке подсистем, которые активно используют generic'и (доходит до 3-4 generic-типов со сложной иерархией в описании класса).<br/>
<br/>
Приведу примеры кода, которые явно указывают на данные ограничения, а также неудобство использования (рассматривать только синтаксис):<br/>
<pre>
public class A {
    public &lt;X&gt; void method(List&lt;? extends X&gt; list) {
        // processElement(list, list.get(0)); - compilation error
        processElement((List) list, (Object) list.get(0)); // compilation warning
    }

    public &lt;T&gt; void processElement(List&lt;T&gt; list, T object) {
    }

    public static class B&lt;T extends I1 & I2&gt; {
    }

    // Приходится повторять объявления generic-типов
    public static class С&lt;T extends I1 & I2&gt; extends A.B&lt;T&gt; {
    }
}
</pre><br/>
<br/>
 <a href="https://habr.com/ru/articles/93324/?utm_campaign=93324&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Wed, 12 May 2010 03:01:24 GMT</pubDate>
      <dc:creator><![CDATA[Colwin]]></dc:creator>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[Java]]></category><category><![CDATA[расширение языка]]></category><category><![CDATA[generics]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Java для профессионалов: задачи на знание спецификации]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/89580/</guid>
      <link>https://habr.com/ru/articles/89580/?utm_campaign=89580&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[По ходу подготовки к сертификационному экзамену SCJP, а также при чтении в различных источниках нюансов использования языка Java, возникают множество различных вопросов. Также некоторые особенности языка кажутся совершенно нелогичными, однако так указано в спецификации языка, и каждый уважающий себя профессионал стремится к тому, чтобы знать эти мелочи.<br/>
<br/>
Данный топик посвящен коротким примерам программ (или участков кода). Для каждой программы требуется ответить на простые вопросы: как она будет выполняться и что будет выведено на консоль после ее выполнения. Предполагается использование Java 1.6, если в задаче не указано иное.<br/>
<br/>
 <a href="https://habr.com/ru/articles/89580/?utm_campaign=89580&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Thu, 01 Apr 2010 04:18:19 GMT</pubDate>
      <dc:creator><![CDATA[Colwin]]></dc:creator>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[программирование]]></category><category><![CDATA[Java]]></category><category><![CDATA[спецификация]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Задачка со спичками]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/86472/</guid>
      <link>https://habr.com/ru/articles/86472/?utm_campaign=86472&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Предлагаю вашему вниманию задачку со спичками.<br/>
Конечно, тема не нова, так что просьба тем, кто знает решение, не кричать «баян!», т.к. знают, безусловно, не все.<br/>
<br/>
Итак, условие.<br/>
<br/>
Имеются шесть спичек. Требуется составить из них:<br/>
<ul>
<li>6 равных правильных треугольников (задача 1).</li>
<li>4 равных правильных треугольника, сторона каждого из них равна одной спичке (задача 2).</li>
</ul><br/>
<br/>
Остальные условия аналогичны похожим задачам со спичками (нельзя ломать или поджигать спички, нельзя использовать края стола и т.д.) <a href="https://habr.com/ru/articles/86472/?utm_campaign=86472&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut"></a>]]></description>
      
      <pubDate>Fri, 05 Mar 2010 07:57:41 GMT</pubDate>
      <dc:creator><![CDATA[Colwin]]></dc:creator>
      <category><![CDATA[Чулан]]></category>
      <category><![CDATA[спички]]></category><category><![CDATA[занимательные задачки]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
