<?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/r3code/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя r3code]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Sun, 03 May 2026 12:19:56 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[SLI/SLO. Что такое Error Budget Burn Rate на самом деле]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1028008/</guid>
      <link>https://habr.com/ru/articles/1028008/?utm_campaign=1028008&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Привет, меня зовут Дмитрий Синявский. Я инженер по&nbsp;надёжности сервиса в&nbsp;Ви.Tech и одна из&nbsp;моих любимых тем SLI/SLO. Сегодня разберемся с «скоростью расхода бюджета ошибок».</p><p>Недавно я провел <a href="https://t.me/allslo_ru/2744" rel="noopener noreferrer nofollow">опрос в&nbsp;канале сообщества ALLSLO</a>, в&nbsp;котором спрашивал вызывает&nbsp;ли понимание термина Error budget burn rate сложности. В&nbsp;опросе верный ответ отсутствовал и&nbsp;был вариант «нет верного ответа», однако более 40% выбрало неверный ответ. Потому давайте разберемся, что&nbsp;же это такое Error budget burn rate. </p> <a href="https://habr.com/ru/articles/1028008/?utm_campaign=1028008&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 27 Apr 2026 04:32:10 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[DevOps]]></category><category><![CDATA[Терминология IT]]></category>
      <category><![CDATA[SLO]]></category><category><![CDATA[sli]]></category><category><![CDATA[error budget]]></category><category><![CDATA[термины]]></category><category><![CDATA[мониторинг]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[DevOps после хайпа: что реально работает, почему автоматизация делает вас слабее и как ИИ вписывается в инженерку]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1014860/</guid>
      <link>https://habr.com/ru/articles/1014860/?utm_campaign=1014860&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p><em>Меня зовут Дмитрий Синявский, я SRE в Ви.Tech, IT дочке «ВсеИнструменты.ру». В какой то момент я поймал себя на мысли, что вокруг DevOps снова спорят как в начале десятых: одни уверяют, что он умер, другие переименовывают все в platform engineering, третьи ждут, что ИИ наконец сделает всю грязную работу за инженеров. Мы с Владимиром Утратенко, который прошел путь от техподдержки до техдиректора и сейчас развивает платформу «Штурвал», спокойно разложили это по полочкам. </em></p><p><em>В этой статье я собрал самое полезное из нашего разговора: что стало с DevOps после хайпа, как автоматизация одновременно помогает и ослабляет, и какое место ИИ реально занимает в инженерке.</em></p> <a href="https://habr.com/ru/articles/1014860/?utm_campaign=1014860&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 25 Mar 2026 12:25:00 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[DevOps]]></category><category><![CDATA[Управление проектами]]></category><category><![CDATA[Разработка под e-commerce]]></category><category><![CDATA[Машинное обучение]]></category><category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[devops]]></category><category><![CDATA[sre]]></category><category><![CDATA[платформа]]></category><category><![CDATA[platform engineering]]></category><category><![CDATA[kubernetes]]></category><category><![CDATA[автоматизация]]></category><category><![CDATA[ci cd]]></category><category><![CDATA[self service]]></category><category><![CDATA[непрерывная интеграция]]></category><category><![CDATA[team topologies]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[От пожарных к продакшену: что IT-команды могут почерпнуть у профессионалов реагирования на инциденты]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/994690/</guid>
      <link>https://habr.com/ru/articles/994690/?utm_campaign=994690&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Меня зовут Дима Синявский, я SRE‑инженер в&nbsp;Ви.Tech. Я решил написать о&nbsp;работе с&nbsp;инцидентами, ведь мы часто говорим, что «тушим пожары». Так вот мне стало интересно, можно&nbsp;ли что‑то полезного взять у&nbsp;реальных пожарных и чрезвычайных служб к&nbsp;нам в&nbsp;IT. </p><p>И знаете, многое похоже, но&nbsp;кое‑что прям явно хочется забрать.</p> <a href="https://habr.com/ru/articles/994690/?utm_campaign=994690&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Как тушить...</a>]]></description>
      
      <pubDate>Wed, 11 Feb 2026 06:42:48 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[DevOps]]></category><category><![CDATA[IT-инфраструктура]]></category>
      <category><![CDATA[инцидент-менеджмент]]></category><category><![CDATA[инциденты]]></category><category><![CDATA[постмортемы]]></category><category><![CDATA[полезные приёмы]]></category><category><![CDATA[тактика]]></category><category><![CDATA[процессы]]></category><category><![CDATA[управление командой]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Вы уже занимаетесь SRE. Просто не знаете об этом]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/979686/</guid>
      <link>https://habr.com/ru/articles/979686/?utm_campaign=979686&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/61b/9c1/05d/61b9c105dfe3dfec0720f83fb7660a85.png" /><p>Меня зовут Дима Синявский, я SRE-инженер в <a href="https://vitech.team" rel="noopener noreferrer nofollow">Ви.Tech</a> — это IT-дочка ВсеИнструменты.ру. В этот раз я решил помочь вам посмотреть на свою работу в отношении надежности. Особенно полезно будет тем, у кого официально нет SR-инженеров в штате.</p><p><strong>"У нас нет SRE" </strong>– не значит "у нас нет надёжности". Даже без SRE-инженера ваша команда уже что-то делает для надёжности. </p><p>Покажу, как увидеть уже существующие у вас практики и понять, куда двигаться дальше.</p> <a href="https://habr.com/ru/articles/979686/?utm_campaign=979686&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Идем смотреть и понимать...</a>]]></description>
      
      <pubDate>Tue, 23 Dec 2025 11:24:16 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[DevOps]]></category><category><![CDATA[Управление разработкой]]></category><category><![CDATA[IT-инфраструктура]]></category>
      <category><![CDATA[sre]]></category><category><![CDATA[практики]]></category><category><![CDATA[надежность]]></category><category><![CDATA[reliability engineering]]></category><category><![CDATA[техлиды]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Vector.dev: отравленные события — как всё сломать тихо и надолго]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/977412/</guid>
      <link>https://habr.com/ru/articles/977412/?utm_campaign=977412&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/cf9/608/eb0/cf9608eb009ab209b62b39cbcae0e38e.jpg" /><p>Меня зовут Дима Синявский, я SRE-инженер в <a href="http://Vi.Tech" rel="noopener noreferrer nofollow">Ви.Tech</a> — это IT-дочка ВсеИнструменты.ру. Мы в своей компании давно используем vector.dev для обработки логов, о чем я рассказывал в предыдущих статьях <a href="https://habr.com/ru/companies/vitech/articles/808313/" rel="noopener noreferrer nofollow">(раз</a>, <a href="https://habr.com/ru/companies/vitech/articles/854424/" rel="noopener noreferrer nofollow">два</a>). Мне попалась<a href="https://wolfman.dev/posts/vector-poison-payloads/" rel="noopener noreferrer nofollow"> интересная статья на английском языке</a> о vector.dev и как можно сломать по-тихому незаметно для себя конвейер "правильными" данными и настройками. Представляю свое виденье этого материала. </p> <a href="https://habr.com/ru/articles/977412/?utm_campaign=977412&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Узнать как сломать ☠ ...</a>]]></description>
      
      <pubDate>Fri, 19 Dec 2025 16:29:34 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[DevOps]]></category><category><![CDATA[IT-инфраструктура]]></category>
      <category><![CDATA[логгирование]]></category><category><![CDATA[vector]]></category><category><![CDATA[vector.dev]]></category><category><![CDATA[грабли]]></category><category><![CDATA[решения]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как я пришел к SLO: От хаоса алертов к осознанности]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/898004/</guid>
      <link>https://habr.com/ru/articles/898004/?utm_campaign=898004&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/5ac/f03/947/5acf03947631151e4bbcc4cbd46bc06d.png" /><p>Меня зовут Дима Синявский, я SRE-инженер в <a href="http://%D0%92%D0%B8.Tech" rel="noopener noreferrer nofollow">Ви.Tech</a> — это IT-дочка ВсеИнструменты.ру. </p><p>Много лет назад я сидел под компьютером во время дождя. В субботу. И меня ударила молния. </p><p>Не буквально — хотя, если бы было буквально, мне бы сейчас не пришлось писать эту статью. Но <em>энергетически</em> — да. С тех пор я заряжен.   </p><p> 20+ лет в IT: сисадмин, бэкенд-разработчик, руководитель разработки, теперь — SRE. </p><p>Ты разработчик или инженер эксплуатации, и тебя дергают на каждую 500-ку. Бизнес требует: «Разберитесь!». А ты не знаешь — это много или мало? И главное — <em>почему именно сейчас? </em></p><p><em>Если тебя уже задергала куча алертов от сервисов и не знаешь, что делать — ты здесь правильно</em>.<em> </em></p><p>Я раскажу про SLO не в общем, а от себя лично. Не через одну книжку. А через боль и бессонные ночи.  </p><p>Но предупреждаю, если ты из компании, где SLO уже как офисная кофеварка — тебе тут нечего делать. Эта статья — для тех, кто только начинает. Для тех, кто хочет спать. Для тех, кто не ждёт идеального решения — и готов начать прямо сейчас. </p> <a href="https://habr.com/ru/articles/898004/?utm_campaign=898004&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 20 Oct 2025 06:34:50 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[slo]]></category><category><![CDATA[datadog]]></category><category><![CDATA[документация]]></category><category><![CDATA[методология]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Vector.dev: как упростить подсчет метрик по логам. Снег сошел — нашли грабли]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/vitech/articles/864614/</guid>
      <link>https://habr.com/ru/companies/vitech/articles/864614/?utm_campaign=864614&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/65b/114/b04/65b114b041c1fff9445aee88b8fb97e2.jpg" /><p><em>Меня зовут Дима Синявский, я SRE-инженер в Ви.Tech — это IT-дочка ВсеИнструменты.ру</em></p><p>За полгода до этой статьи я рассказал вам в материале <a href="https://habr.com/ru/articles/809801/">Vector.dev: как упростить подсчет метрик по логам</a> как мы сделали удобный для нас подсчет метрик по логам. </p><p>И вот недавно мы поняли — что-то не так. Метрик иногда становилось много и появились те, которых быть не должно. Нас это удивило. Оказалось, мы себе оставили грабли в огороде, но удача нам улыбалась и мы их обходили.</p><p>Удивительно, что решение почти 2 года нас устраивало и прекрасно решало наши задачи!</p><p><em>Время рассказать вам о граблях: как и где ОНИ нас нашли, каким образом нам удалось от них избавиться.</em></p> <a href="https://habr.com/ru/articles/864614/?utm_campaign=864614&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Сделать смелый шаг...</a>]]></description>
      
      <pubDate>Fri, 14 Mar 2025 06:09:31 GMT</pubDate>
      <dc:creator><![CDATA[r3code (Ви.Tech)]]></dc:creator>
      <category><![CDATA[Блог компании Ви.Tech]]></category><category><![CDATA[DevOps]]></category><category><![CDATA[IT-инфраструктура]]></category>
      <category><![CDATA[логи]]></category><category><![CDATA[метрики]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Практики SRE: стандартизация логов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/vitech/articles/854424/</guid>
      <link>https://habr.com/ru/companies/vitech/articles/854424/?utm_campaign=854424&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/c9f/2ca/2a4/c9f2ca2a4eafe6616861fffe1f1b0cd1.jpeg" /><p>В предыдущих статьях я рассказывал <a href="https://habr.com/ru/articles/808313/"><u>как мы перешли на vector.dev с Elastic</u></a> для обработки логов и <a href="https://habr.com/ru/articles/809801/"><u>как мы теперь считаем метрики по логам</u></a> с его помощью.</p><p>В этой статье я расскажу вам о нашем опыте стандартизации логов. Какие проблемы были, зачем мы это сделали и что нам это дало, как команде и компании.</p><p>TL;DR:</p><p>Нам помогли наработки по Vector.dev, договоренность с разработчиками и обнаруженная OpenTelemetry Logs Data Model. В итоге это все скомпоновалось в решение которое существенно упростило нам жизнь.</p> <a href="https://habr.com/ru/articles/854424/?utm_campaign=854424&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Пройти лабиринт</a>]]></description>
      
      <pubDate>Tue, 29 Oct 2024 14:16:17 GMT</pubDate>
      <dc:creator><![CDATA[r3code (Ви.Tech)]]></dc:creator>
      <category><![CDATA[Блог компании Ви.Tech]]></category><category><![CDATA[DevOps]]></category><category><![CDATA[Управление разработкой]]></category><category><![CDATA[IT-инфраструктура]]></category>
      <category><![CDATA[sre]]></category><category><![CDATA[стандартизация]]></category><category><![CDATA[логи]]></category><category><![CDATA[логгирование]]></category><category><![CDATA[opentelemetry]]></category><category><![CDATA[ви.tech]]></category><category><![CDATA[vitech]]></category><category><![CDATA[vitech.team]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Vector.dev: как упростить подсчет метрик по логам]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/vitech/articles/809801/</guid>
      <link>https://habr.com/ru/companies/vitech/articles/809801/?utm_campaign=809801&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/77a/ca4/aa6/77aca4aa61c864d69e8543b6b180f2f3.png" /><p>Меня зовут Дима Синявский, я SRE-инженер в Vi.Tech — это IT-дочка ВсеИнструменты.ру. В этой статье я расскажу вам о нашем опыте работы с vector.dev, как мы сначала превращали логи в метрики и как это автоматизировали до такой степени, что теперь с этим справиться один yaml-developer.</p><p>Наш сайт создает более 100 тысяч заказов каждый день, и чтобы все это успешно работало у нас много сервисов, которые пишут много логов по ним часто нужно считать метрики. А SRE часто нужны метрики и порой это надо сделать прямо сейчас, а не ждать доработки приложения. Потому метрики по логам спасают. </p><p>Если у вас в эксплуатации уже есть коммерческие функциональностью подсчета логов по метрикам, то, думаю, ваши потребности им уже закрыты. Однако, тем кто строит свои системы с применением открытого ПО - это может быть полезно.</p><p><strong>TLDR.</strong> Да мы смогли улучшить этот процесс, упростить и автоматизировать при помощи шаблонизации конфигов, да посмотреть код можно, есть в опенсорс есть на github.</p> <a href="https://habr.com/ru/articles/809801/?utm_campaign=809801&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Пойдем-ка посчитаем...</a>]]></description>
      
      <pubDate>Mon, 30 Sep 2024 14:36:24 GMT</pubDate>
      <dc:creator><![CDATA[r3code (Ви.Tech)]]></dc:creator>
      <category><![CDATA[Блог компании Ви.Tech]]></category><category><![CDATA[DevOps]]></category><category><![CDATA[IT-инфраструктура]]></category>
      <category><![CDATA[логирование]]></category><category><![CDATA[vector.dev]]></category><category><![CDATA[метрики]]></category><category><![CDATA[ansible]]></category><category><![CDATA[ви.tech]]></category><category><![CDATA[ViTech]]></category><category><![CDATA[vitech.team]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как ELK довел нас… до Vector.dev и Clickhouse]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/vitech/articles/808313/</guid>
      <link>https://habr.com/ru/companies/vitech/articles/808313/?utm_campaign=808313&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/7cb/6a0/ad3/7cb6a0ad30ddc62abf64534dc317a1fa.png" /><p>Меня зовут Дима Синявский, я SRE-инженер в Vi.Tech — это IT-дочка ВсеИнструменты.ру. В этой статье расскажу я вам о том как мы развивались и с нами развивалась наша система логирования. Почему вам нужен Vector.dev + Clickhouse для хранения и когда это выгодно.</p><p>Когда компания была маленькой нам хватало и блокнота, чего сейчас уже не скажешь. <br>У нас 931 000 пайплайнов в месяц, 4 кластера Kubernetes: от 170 до 190 нод в каждом, и 200 ГБ логов ежедневно.</p> <a href="https://habr.com/ru/articles/808313/?utm_campaign=808313&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">cat elk-vector.md | more // Прочитать...</a>]]></description>
      
      <pubDate>Wed, 24 Apr 2024 12:02:27 GMT</pubDate>
      <dc:creator><![CDATA[r3code (Ви.Tech)]]></dc:creator>
      <category><![CDATA[Блог компании Ви.Tech]]></category><category><![CDATA[DevOps]]></category><category><![CDATA[IT-инфраструктура]]></category>
      <category><![CDATA[логи]]></category><category><![CDATA[логирование]]></category><category><![CDATA[elk]]></category><category><![CDATA[elasticsearch]]></category><category><![CDATA[clickhouse]]></category><category><![CDATA[vector.dev]]></category><category><![CDATA[ViTech]]></category><category><![CDATA[vitech.team]]></category><category><![CDATA[Ви.Tech]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Советы Golang: почему указатели на срезы полезны и как их игнорирование может привести к хитрым ошибкам]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/525940/</guid>
      <link>https://habr.com/ru/articles/525940/?utm_campaign=525940&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/c0b/e46/5fa/c0be465fad7efbf3d42cf5124252cdc2.png" /><p>Сегодня, пока я работал, возник хороший вопрос: </p><p><em>Почему во многих встроенных функциях и библиотеках я часто вижу в качестве аргументов указатели на срезы, ведь срезы всегда передаются по ссылке, не так ли?</em></p> <a href="https://habr.com/ru/articles/525940/?utm_campaign=525940&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 02 Nov 2020 07:55:15 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Go]]></category>
      <category>go</category><category>slices</category><category>pointer</category><category>gotcha</category><category>ошибки</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Параллельные интеграционные тесты базы данных Postgresql в приложении GO]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/466459/</guid>
      <link>https://habr.com/ru/articles/466459/?utm_campaign=466459&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/webt/zj/wu/-i/zjwu-izj7zhrdl1oabereu-kiuy.png"><br>
Интеграционные тесты это один из уровней <a href="https://testing.googleblog.com/2015/04/just-say-no-to-more-end-to-end-tests.html">пирамиды тестирования</a>. Обычно они требуют больше времени, т.к. в них мы ничего не подменяем на имитации реальных компонентов. Чтобы уменьшить время на такие тесты мы можем запускать их параллельно. Здесь я специально расскажу о таких тестах для Postgresql.<br>
<br>
В идеале, каждый тест должен быть независим, так они не затронут друг друга. Другими словами, каждая тестовая функция имеет свое состояние. Это хороший признак для использования параллельных тестов. Для получения своего персонального набора данных для каждой тестовой функции я создал функцию, которая при запуске теста создает временную схему, загружает в нее данные и уничтожает схему после завершения теста. Каждая созданная <a href="https://www.postgresql.org/docs/9.1/static/ddl-schemas.html">схема</a> содержит хеш в имени для предотвращения конфликтов имен.<br> <a href="https://habr.com/ru/articles/466459/?utm_campaign=466459&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Fri, 06 Sep 2019 09:41:24 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Go]]></category>
      <category>тестирование по</category><category>базы данных</category><category>интеграционное тестирование</category><category>golang</category><category>testing</category><category>testing strategy</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Проводим ревизию ошибок]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/440818/</guid>
      <link>https://habr.com/ru/articles/440818/?utm_campaign=440818&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Часто используемый контракт для функций, которые возвращают значение ошибки интерфейсного типа, заключается в том, что вызывающая сторона не должна ничего знать заранее о состоянии других значений, возвращаемых этим вызовом, без предварительной проверки ошибки.</p><br>
<p>В большинстве случаев значения ошибок, возвращаемые функциями, должны быть непрозрачными для вызывающей стороны. То есть тест, в котором ошибка равна nil, показывает, был ли вызов успешным или неудачным, и это все, что нужно сделать.</p><br>
<p><img src="https://habrastorage.org/webt/jb/xv/la/jbxvlaijfvce8_omekhvomevlci.jpeg"><br>
<em>картинка <a href="https://images.theconversation.com/files/90652/original/image-20150803-6019-1mzq3qv.jpg?ixlib=rb-1.1.0&amp;q=45&amp;auto=format&amp;w=496&amp;fit=clip">отсюда</a></em></p> <a href="https://habr.com/ru/articles/440818/?utm_campaign=440818&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Tue, 19 Feb 2019 07:37:54 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Go]]></category>
      <category>go</category><category>golang</category><category>error handling</category><category>обработка ошибок</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Освобождаемся от обработки ошибок, устраняя ошибки]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/440386/</guid>
      <link>https://habr.com/ru/articles/440386/?utm_campaign=440386&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/webt/-t/wg/qf/-twgqf5sqhxuyrhnilflk-luxtc.jpeg"><br>
<br>
<i>Go2 имеет целью уменьшить накладные расходы на обработку ошибок, но знаете ли вы, что лучше, чем улучшенный синтаксис для обработки ошибок? <br>
</i><br>
Не нужно обрабатывать ошибки вообще. Я не говорю «удалите ваш код обработки ошибок», вместо этого я предлагаю изменить ваш код так, чтобы у вас не было много ошибок для обработки.<br>
<br>
Эта статья черпает вдохновение из главы «Define Errors Out of Existence”» книги «<a href="https://www.amazon.com/Philosophy-Software-Design-John-Ousterhout/dp/1732102201"> A philosophy of Software Design</a>» Джона Оустерхаута. Я постараюсь применить его совет к Go.<br> <a href="https://habr.com/ru/articles/440386/?utm_campaign=440386&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Mon, 18 Feb 2019 07:05:24 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Go]]></category>
      <category>go</category><category>errors</category><category>рефакторинг</category><category>обработка ошибок</category><category>golang</category><category>error handling</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Давайте поговорим о ведении логов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/440200/</guid>
      <link>https://habr.com/ru/articles/440200/?utm_campaign=440200&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Этот пост вдохновлен темой в форуме <a href="https://forum.golangbridge.org/t/whats-so-bad-about-the-stdlibs-log-package/1435/">Go Forum</a>, начатой Nate Finch. Этот пост сконцентрирован на языке Go, но если пройти мимо этого, я думаю, идеи представленные тут широко применимы.<br>
<br>
<h2>Почему нет любви?</h2><br>
Пакет log в Go не имеет уровней для логов, вы можете сами вручную добавить приставки DEBUG, INFO, WARN, и ERROR. Также logger тип в Go не имеет возможности включить или выключить эти уровни отдельно для выбранных пакетов. Для сравнения давайте глянем на несколько его замен от сторонних разработчиков.<br>
<br>
<img src="https://habrastorage.org/getpro/habr/post_images/df2/fc3/3ed/df2fc33ed7ebb1457c25060bbb1f98a7.png" alt="image"><br>
<br>
<a href="https://godoc.org/github.com/golang/glog">glog</a> от Google имеет уровни:<br>
<br>
<ul>
<li>Info</li>
<li>Warning</li>
<li>Error</li>
<li>Fatal (завершает программу)</li>
</ul><br>
Посмотрим на другую библиотеку, <a href="https://godoc.org/github.com/juju/loggo">loggo</a>, разработанную для Juju, в ней доступны уровни:<br>
<br>
<ul>
<li>Trace</li>
<li>Debug</li>
<li>Info</li>
<li>Warning</li>
<li>Error</li>
<li>Critical</li>
</ul><br>
Loggo также имеет возможность задать уровень детализации лога для нужных пакетов по отдельности.<br>
<br>
Перед вами два примера, явно созданных под влиянием других библиотек для логирования на других языках.<br>
<br>
Фактически их происхождение можно проследить до syslog(3), возможно, даже раньше. И я думаю, что они не правы.<br>
<br>
Я хочу занять противоречивую позицию. Я думаю, что все библиотеки журналов плохи, потому что предлагают слишком много функций; ошеломляющий набор возможностей, который ошеломляет программиста прямо в тот момент, когда он должен ясно думать о том, как общаться с читателем из будущего, с тем, кто будет просматривать эти журналы.<br>
<br>
Я утверждаю, что для успешных пакетов логов требуется гораздо меньше возможностей и, конечно, меньше уровней.<br> <a href="https://habr.com/ru/articles/440200/?utm_campaign=440200&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Thu, 14 Feb 2019 06:13:18 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Go]]></category>
      <category>golang</category><category>logging</category><category>логгирование</category><category>логгинг</category><category>связанность</category><category>интерфейс</category><category>разработка по</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Облачное хранилище Yunpan 360 будет закрыто в 2017 году]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/357816/</guid>
      <link>https://habr.com/ru/articles/357816/?utm_campaign=357816&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/geektimes/post_images/f8b/aa1/cb3/f8baa1cb3c6b6eab1c4d488559e0e639.png" align="left"/><b><a href="http://yunpan.360.cn/">Yunpan 360</a></b> — облачное хранилище предоставлявшее пользователям 100Тб места на облачном диске в самом начале своей работы. Постепенно новым пользователям стали давать только 36Тб. На сегодня это 3,6Тб. Это было очень привлекательно иметь такое хранилище.<br/>
<i>Но все когда то заканчивается...</i><br/>
 <a href="https://habr.com/ru/articles/357816/?utm_campaign=357816&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 24 Oct 2016 18:31:03 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Облачные сервисы]]></category>
      <category><![CDATA[360]]></category><category><![CDATA[yanpan]]></category><category><![CDATA[wangpan]]></category><category><![CDATA[cloud storage]]></category><category><![CDATA[china]]></category><category><![CDATA[qihoo]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Обновление VirtualTreeView 5.01]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/151144/</guid>
      <link>https://habr.com/ru/articles/151144/?utm_campaign=151144&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="http://www.delphi-gems.com/images/stories/screen-shots/GenericXP.png" alt="VirtualTreeView" align="left"/><b>VirtualTreeView</b> — это замечательный бесплатный компонент для вывода деревьев, списков и таблиц.<br/>
Компонент позволяет настраивать вывод данных практически как угодно — вы ограничены только задачей и фантазией.<br/>
<br/>
Разработчики <i> MySQL Query Browser for Windows</i>,<i>The Bat!</i>, <i>Smart Inspect</i> и <a href="http://www.delphi-gems.com/index.php/controls/virtual-treeview-gallery">многих других продуктов</a> используют его.<br/>
Компонент отличается высокой скоростью работы с узлами и широкими возможностями по настройке оформления, поддерживает Unicode. <br/>
<br/>
Обновление 5.01 вышло 3 дня назад, <b>теперь VirtualTreeView поддерживает:</b><br/>
<ul>
<li> Delphi XE3 </li>
<li>C++ Builder XE2!</li>
</ul><br/>
Полный список изменений смотрите под катом.<br/>
 <a href="https://habr.com/ru/articles/151144/?utm_campaign=151144&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 10 Sep 2012 06:08:15 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Delphi]]></category>
      <category><![CDATA[virtualtreeview]]></category><category><![CDATA[delphi]]></category><category><![CDATA[delphi xe3]]></category><category><![CDATA[soft-gems]]></category><category><![CDATA[update]]></category><category><![CDATA[обновление]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Правильный стул для ежедневной работы за компьютером]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/150875/</guid>
      <link>https://habr.com/ru/articles/150875/?utm_campaign=150875&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/storage2/ed1/551/18e/ed155118ee2ae800ea3338b171df0a34.jpg" alt="Золотой Остап и его стул" align="left">Вопрос о столах поднимался несколько раз (<a href="http://habrahabr.ru/blogs/gadgets/123308/">раз</a>, <a href="http://habrahabr.ru/post/131561/">два</a>).<br>
<br>
<b>Однако, на чем же мы сидим перед столом?</b><br>
<br>
<b>Стул</b> — не менее важная часть рабочего места любого человека, много времени работающего за компьютером в течение дня.<br>
<br>
Все мы работаем с компьютером и порой не замечаем, на чем же мы сидим.<br>
<br>
Оказывается наши санитарные правила и нормы <nobr>(СанПиН 2.2.2/2.4.1340-03)</nobr> достаточно хорошо описывают удобный эргономичный стул для работы взрослых за компьютером!<br>
<br>
<b>А какой стул правильный?</b><br> <a href="https://habr.com/ru/articles/150875/?utm_campaign=150875&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Wed, 05 Sep 2012 07:34:18 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Здоровье]]></category>
      <category><![CDATA[стул]]></category><category><![CDATA[эргономика]]></category><category><![CDATA[санпин]]></category><category><![CDATA[труд]]></category><category><![CDATA[условия труда]]></category><category><![CDATA[рабочее место]]></category><category><![CDATA[мебель]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Долгожданное обновление компонента Virtual Treeview V5.0.0 RC1]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/145519/</guid>
      <link>https://habr.com/ru/articles/145519/?utm_campaign=145519&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/post_images/70b/313/669/70b313669787cb3c64c20ef055abc2c5.gif" alt="Разные вариант отображения содержимого в Virtual Treeview" align="left"/>Многие Delphi разработчики знают и используют этот замечательный бесплатный компонент для вывода <a href="http://www.soft-gems.net/images/stories/screen-shots/VT1.gif">деревьев</a>, <a href="http://www.delphi-gems.com/images/stories/screen-shots/Prettyflow.jpg">списков</a> и <a href="http://www.delphi-gems.com/images/stories/screen-shots/KosyEnterprise.png">таблиц</a>. <br/>
<i>Пользователи The Bat! видят его ежедневно, просматривая списки писем.</i><br/>
Компонент отличается высокой скоростью работы с узлами и широкими возможностями по настройке оформления, поддерживает Unicode. <br/>
<br/>
Последняя версия компонента 4.8.7 вышла в октябре 2010 года, и надежды на обновления были слабыми.<br/>
<b>Но, все таки, обновление вышло! </b><br/>
Пользователи Delphi XE2 теперь будут рады, теперь можно радовать и пользователей 64-битных систем. <br/>
 <a href="https://habr.com/ru/articles/145519/?utm_campaign=145519&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Sat, 09 Jun 2012 05:03:19 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Delphi]]></category>
      <category><![CDATA[delphi]]></category><category><![CDATA[component]]></category><category><![CDATA[virtualtreeview]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Тысячи телевизоров Samsung серии D6x00 содержат дефект — не могут отображать 3D в Full HD]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/145249/</guid>
      <link>https://habr.com/ru/articles/145249/?utm_campaign=145249&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<h4>3D S.O.S.: 3D позор Samsung</h4><br/>
<a title="2D версия" href="http://wiki.samygo.tv/index.php5/File:Text2D.JPG"><img src="https://habrastorage.org/getpro/geektimes/post_images/e84/404/3cd/e844043cd4e022f8506d561e3f0b0743.jpg" alt="2D версия" align="left"/><br/>
</a>Как видно из названия — это <b>очень большая ошибка</b> в модельном ряду LED-телевизоров Samsung D6xxx.<br/>
<br/>
Мы проверили все возможные источники сигнала: Playstation 3, Samsung BDP D6500, USB SBS MKV, USB MPO-файл, — и каждый раз результат был тот же! <b>Телевизор не хочет показывать FULL HD 3D-изображения!</b><br/>
<a href="https://habrastorage.org/getpro/geektimes/post_images/62b/301/64e/62b30164ed680cb0d5ad04ffe5f569a9.jpg"><img title="3D версия" src="https://habrastorage.org/getpro/geektimes/post_images/62b/301/64e/62b30164ed680cb0d5ad04ffe5f569a9.jpg" alt="3D версия" align="right"/></a><br/>
Владельцы Samsung D6xxx могут сами проверить свой телевизор на наличие этого дефекта. Здесь мы разместили для вас несколько фотографий для тестов.<br/>
<br/>
Скачайте 2D и 3D тестовые изображения Full HD (1080) и Half HD (720) px, и посмотрите сами…<br/>
<i>Ссылки под катом.</i><br/>
В конце перевода я добавил свою переписку с Samsung по этой проблеме.<br/>
<br/>
<b>Данная проблема выявлена и в России</b><br/>
<a href="http://myhdplayer.ru/samsung-snimaet-logotip-full-hd-3d.html">myhdplayer.ru/samsung-snimaet-logotip-full-hd-3d.html</a><br/>
<a href="http://market.yandex.ru/forums/?modelid=7155057&hid=90639&p_n=5">market.yandex.ru/forums/?modelid=7155057&hid=90639&p_n=5</a><br/>
 <a href="https://habr.com/ru/articles/145249/?utm_campaign=145249&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Tue, 05 Jun 2012 13:24:32 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Компьютерное железо]]></category>
      <category>телевизор</category><category>дефект</category><category>изъян</category><category>3d</category><category>fullhd</category><category>1080p</category><category>samsung</category><category>led</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Подробнее об атрибутах в Delphi 2010. Пример — проверка данных]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/105776/</guid>
      <link>https://habr.com/ru/articles/105776/?utm_campaign=105776&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/post_images/6c5/919/87b/6c591987b6715f2a0d27f87cc4fbe02a.jpg" alt="Мыша" align="left"/>В моей предыдущей статье <a href="http://habrahabr.ru/blogs/delphi/85509/">Кратко об атрибутах в Delphi 2010</a>, я показал основы связанные с созданием, применением и опросом атрибутов. Однако, я не привел пример, для чего вы могли бы их использовать.<br/>
<br/>
Вероятно, наиболее распространенным является пример для персистентности, и, действительно, кто-то опубликовал подобный пример на сайте <i>Wings of Wind</i>. Я хотел бы показать другое их применение — для проверки данных (Validation).<br/>
 <a href="https://habr.com/ru/articles/105776/?utm_campaign=105776&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 08 Oct 2010 09:37:16 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Delphi]]></category>
      <category>атрибуты</category><category>delphi 2010</category><category>validation</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Постоянно открывающееся окно CPU с остановкой на ntdll.dbgbreakpoint]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/100569/</guid>
      <link>https://habr.com/ru/articles/100569/?utm_campaign=100569&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/post_images/a11/f09/608/a11f0960809e762c5402f60447cf7fb1.png" alt="Delphi ntdll.dbgbreakpoint" align="left"/>С недавнего времени почему-то при запуске приложения стало постоянно открываться <b>окно CPU</b> и первая точка остановки <b>ntdll.dbgbreakpoint</b>. Непредвиденные точки останова повторяются часто и необходимо вручную продолжать выполнение. Это говорит о каких-то неполадках или отсутствии информации для отладки в приложении. <br/>
<br/>
Однако, в приложении ровным счетом ничего не изменилось, настройки Delphi не менялись. Откуда же тогда неизвестная информация? Как вернуться к нормальной работе?<br/>
 <a href="https://habr.com/ru/articles/100569/?utm_campaign=100569&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 30 Jul 2010 07:43:52 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Delphi]]></category>
      <category><![CDATA[delphi]]></category><category><![CDATA[cpu]]></category><category><![CDATA[debug]]></category><category><![CDATA[ntdll]]></category><category><![CDATA[точка останова]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Поддержка рефакторинга атрибутов в Delphi 2010]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/85503/</guid>
      <link>https://habr.com/ru/articles/85503/?utm_campaign=85503&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/post_images/752/567/d6c/752567d6c762c1d7520fddf8944f5942.jpg" alt="Рефакторинг" align="left"/>Я упоминал <a href="http://habrahabr.ru/blogs/delphi/85504/">ранее</a>, что в этом выпуске большая часть работы была отведена для дополнительных функциональных возможностей и их улучшения. В результате, IDE продолжает меня приятно удивлять. Я пробую делать что-то, даже не задумываясь о том, а будет ли это работать вообще, и нахожу что оно не просто работает, а работает даже лучше, чем я мог себе представить.<br/>
<br/>
Один из примеров касается поддержки рефакторинга атрибутов.  <a href="https://habr.com/ru/articles/85503/?utm_campaign=85503&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Tue, 02 Mar 2010 06:10:02 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Delphi]]></category>
      <category>delphi 2010</category><category>рефакторинг</category><category>атрибуты</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Преобразование ссылки на интерфейс для реализации класса в Delphi 2010]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/85504/</guid>
      <link>https://habr.com/ru/articles/85504/?utm_campaign=85504&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Не все нововведения в Delphi 2010 большие и заметные. Команда потратила массу времени реализуя множество дополнительных функциональных возможностей, исправлений и улучшений. Некоторые из них могут показаться незначительными по отдельности, но они не только в целом окзывают существенное влияние, но и значительно добавляют гармоничности продукту.<br/>
<img src="https://habrastorage.org/getpro/habr/post_images/4d1/f3a/2ff/4d1f3a2ffc0ea39edac1cae929dda30c.jpg" align="left"/><br/>
Одна из возможностей Delphi 2010, которая, как мне кажется, породит массу споров — это возможность привести интерфейсную ссылку назад к типу класса, реализующего этот интерфейс.<br/>
 <a href="https://habr.com/ru/articles/85504/?utm_campaign=85504&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Sat, 27 Feb 2010 06:51:49 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Delphi]]></category>
      <category>delphi 2010</category><category>интерфейс</category><category>класс</category><category>ссылки</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Кратко о RTTI и атрибутах в Delphi 2010]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/85509/</guid>
      <link>https://habr.com/ru/articles/85509/?utm_campaign=85509&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/post_images/7fb/17b/3d0/7fb17b3d04db9c9b7a11aac64d5b8103.jpg" align="left"/><b>RTTI (Runtime Type Information) было тщательно переработано в Delphi 2010</b>. <br/>
RTTI является центральным элементом, на котором написано <i>Delphi IDE</i>, он существует со времен первого выпуска, однако я слышал от некоторых людей на протяжении многих лет, что они попытались использовать RTTI и нашли это слишком сложным и замысловатым, особенно по сравнению с <i>Reflection API</i> в <i>Java</i> и .<i>NET</i>. Вот это настоящий позор, поскольку возможность писать код для запроса подробной информации о других объектах, не зная заранее их типа, это действительно мощная возможность.<br/>
 <a href="https://habr.com/ru/articles/85509/?utm_campaign=85509&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Thu, 25 Feb 2010 07:51:31 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Delphi]]></category>
      <category>delphi 2010</category><category>атрибуты</category><category>rtti</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Обобщенные интерфейсы в Delphi]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/82709/</guid>
      <link>https://habr.com/ru/articles/82709/?utm_campaign=82709&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<i>Первод стаьи от Malcolm Groves, «Generic Interfaces in Delphi».</i><br/>
<br/>
<img src="https://habrastorage.org/getpro/habr/post_images/822/0f6/287/8220f62870b037924218fc1134bb70a1.jpg" alt="image" align="left"/>Большинство примеров использования дженериков в Delphi используют класс с дженерик-типом. Однако, работая над своим проектом, я решил, что мне нужен интерфейс с дженерик-типом.<br/>
<br/>
В проекте используется встроенный механизм <a href="http://en.wikipedia.org/wiki/Publish/subscribe">издатель-подписчик</a>. Я захотел чтобы подписчик имел для каждого типа события отдельный метод <i>Receive</i>, а не отдельный метод с огромным <i>case</i>-выражением, выбирающим действие для каждого типа события. Также я не хотел определять интерфейс для каждого типа события. Мне был нужен дженерик интерфейс подписчика, который получает тип события, как параметр.<br/>
<br/>
Однако, я понятия не имел, могу ли я определить дженерик интерфейс, не говоря уже о реализации. Даже если предположить, что я могу сделать это, сможет ли Delphi выбрать правильный метод <i>Receive </i>для вызова? Есть только один способ узнать…<br/>
 <a href="https://habr.com/ru/articles/82709/?utm_campaign=82709&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Wed, 03 Feb 2010 06:27:30 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Delphi]]></category>
      <category>дженерики</category><category>delphi</category><category>интерфейсы</category><category>интерфейс</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Многоуровневое дерево с маркерами, сохраняющее состояние (HTML, CSS, jQuery, Cookies)]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/59823/</guid>
      <link>https://habr.com/ru/articles/59823/?utm_campaign=59823&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Продолжается развитие темы о <a href="http://habrahabr.ru/blogs/css/56870/">многоуровневом дереве с маркерами</a>. <img src="http://s57.radikal.ru/i158/0905/84/2e451d2c83af.jpg" alt="Многоуровневое дерево с сохранением состояния узлов" align="right"/><br/>
Теперь дерево выросло и окрепло, стало взрослее и помнит выбранный узел и состояние кажого узла в отдельности.<br/>
Страницу можно перезагружать, а дерево все равно будет помнить все что вы открыли и выбрали!<br/>
<br/>
 <a href="https://habr.com/ru/articles/59823/?utm_campaign=59823&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Tue, 19 May 2009 05:49:52 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[многоуровневое дерево]]></category><category><![CDATA[верстка]]></category><category><![CDATA[css]]></category><category><![CDATA[html]]></category><category><![CDATA[дерево]]></category><category><![CDATA[маркеры]]></category><category><![CDATA[jquery]]></category><category><![CDATA[tree]]></category><category><![CDATA[javascript]]></category><category><![CDATA[cookies]]></category><category><![CDATA[persistent]]></category><category><![CDATA[память]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Многоуровневое дерево с маркерами (HTML, CSS, jQuery). Запоминаем выбранный узел]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/56870/</guid>
      <link>https://habr.com/ru/articles/56870/?utm_campaign=56870&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="http://s47.radikal.ru/i115/0904/56/bca837f45f4f.jpg" align="right" alt="Дерево помнит выбранный узел по url"/>Это продолжение темы про <a href="http://habrahabr.ru/blogs/css/56278/">дерево</a>. Хочу его довести до ранга «готов к внедрению». Потому повозился с JavaScript и сделал запоминание выбранного узла на основе адреса ссылки.<br/>
Если ссылка вложена в поддерево, дерево развернется до её уровня и, если у неё самой есть поддерево — оно тоже будет развернуто.<br/>
<br/>
JavaScript сделал как смог, т.к. давно не использовал. Прошу помощи в доработке и оптимизации.<br/>
 <a href="https://habr.com/ru/articles/56870/?utm_campaign=56870&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Thu, 09 Apr 2009 19:16:25 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[многоуровневое дерево]]></category><category><![CDATA[верстка]]></category><category><![CDATA[css]]></category><category><![CDATA[html]]></category><category><![CDATA[дерево]]></category><category><![CDATA[маркеры]]></category><category><![CDATA[jquery]]></category><category><![CDATA[tree]]></category><category><![CDATA[javascript]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Многоуровневое дерево с маркерами (HTML, CSS). Продолжение с jQuery]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/56278/</guid>
      <link>https://habr.com/ru/articles/56278/?utm_campaign=56278&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<a href="http://r3code.ru/projects/multi-derevo/multi-derevo-jquery-v1.1-utf8.html"><img src="http://img5.imageshost.ru/imgs/090402/e7bd9a4755edcc8f42d3e7babb37bb65/6465f8ddb16a6fe73f16c8b7c81453f6.png" alt="Посмотреть в работе многоуровневое дерево с маркерами." align="right"/></a>В продолжение темы <a href="http://r3code.habrahabr.ru/blog/55753/">про дерево</a> немного переделал код и подключил jQuery. Теперь дерево живое, узлы разворачиваются, как этого многие ожидают видя подобное дерево.<br/>
Теперь оформление дерева делает скрипт — сам расставляет маркеры для элементов с вложенными узлами.<br/>
Благодаря использованию скрипта HTML стал проще.<br/>
<br/>
UPD 05.04.2009: <i>обновлены скрипты, есть несколько вариантов скриптов.</i><br/>
UPD 09.04.2009: <i><a href="http://r3code.habrahabr.ru/blog/56870/">продолжение</a></i><br/>
 <a href="https://habr.com/ru/articles/56278/?utm_campaign=56278&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 03 Apr 2009 20:17:21 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[многоуровневое дерево]]></category><category><![CDATA[верстка]]></category><category><![CDATA[css]]></category><category><![CDATA[html]]></category><category><![CDATA[дерево]]></category><category><![CDATA[маркеры]]></category><category><![CDATA[jquery]]></category><category><![CDATA[tree]]></category><category><![CDATA[javascript]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Многоуровневое дерево с маркерами (только HTML, CSS, без Javascript)]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/55753/</guid>
      <link>https://habr.com/ru/articles/55753/?utm_campaign=55753&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="http://i069.radikal.ru/0903/00/32bb6649358c.jpg" alt="Многоуровневое дерево с маркерами (только HTML, CSS)" align="right"/>До того как заняться верской гитарных аккордов (статьи <a href="http://r3code.habrahabr.ru/blog/53792/">1</a>,<a href="http://r3code.habrahabr.ru/blog/55141/">2</a>,<a href="http://r3code.habrahabr.ru/blog/55248/">3</a>) я столкнулся с необходимостью сделать человеку на сайте меню-дерево. Рисовать не хотелось вообще, поэтому я взял старый добрый HTML с CSS и начал делать это дерево, начал с простого одноуровневого, а позже сделал многоуровневое с маркерами, которое и представлю.<br/>
<br/>
Позже это дерево дало мне плоды в виде <a href="http://habrahabr.ru/blogs/css/53792/">habrahabr.ru/blogs/css/53792</a><br/>
 <a href="https://habr.com/ru/articles/55753/?utm_campaign=55753&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Sat, 28 Mar 2009 11:18:52 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[CSS]]></category>
      <category><![CDATA[многоуровневое дерево]]></category><category><![CDATA[верстка]]></category><category><![CDATA[css]]></category><category><![CDATA[html]]></category><category><![CDATA[дерево]]></category><category><![CDATA[маркеры]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Продолжение идеи записи гитарных аккордов в HTML. Версия 3, оптимизированные варианты]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/55248/</guid>
      <link>https://habr.com/ru/articles/55248/?utm_campaign=55248&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<a href="http://r3code.ru/projects/accord-v3/accord-v3.html"><img src="https://habrastorage.org/getpro/habr/post_images/276/60f/34f/27660f34fed63e20ce5fb5ce7f42b96f.jpg" align="right"/></a><br/>
Продолжаем разработку записи аккордов в HTML. В камментах <a href="http://r3code.habrahabr.ru/blog/55141/">предыдущего топика</a> <a href="https://habrahabr.ru/users/selenit/" class="user_link">selenit</a> предложил оптимизированный вариант(<a href="http://silverflame.at.tut.by/chords1.html">1</a>,<a href="http://silverflame.at.tut.by/chords3.html">2</a>), где кода еще меньше. <br/>
<br/>
<i>Для ознакомления с темой подробно, почитайте предыдущий <a href="http://r3code.habrahabr.ru/blog/55141/">топик</a>.</i><br/>
 <a href="https://habr.com/ru/articles/55248/?utm_campaign=55248&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 27 Mar 2009 23:01:10 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[CSS]]></category>
      <category><![CDATA[css]]></category><category><![CDATA[html]]></category><category><![CDATA[xhtml]]></category><category><![CDATA[верстка]]></category><category><![CDATA[веб-дизайн]]></category><category><![CDATA[гитара]]></category><category><![CDATA[аккорды]]></category><category><![CDATA[баррэ]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Запись гитарных аккордов HTML+CSS (теперь с баррэ)]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/55141/</guid>
      <link>https://habr.com/ru/articles/55141/?utm_campaign=55141&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="http://s53.radikal.ru/i139/0903/6f/5de57305079d.jpg" alt="Большое и малое баррэ (CSS,HTML only)" align="right"/><br/>
Увлекло меня это дело — описание гитарных аккордов, по научному — аппликатура. Начало было положено в предыдущим <a href="http://r3code.habrahabr.ru/blog/53792/">топике</a> про запись аккордов и теперь получило своё развитие.<br/>
Я учел пожелания и сделал новую версию. <br/>
Теперь метка прижимаемой струны — это точка • (& bull;) вместо &copy; (& copy;). <br/>
<b>В прошлой версии не было поддержки отображения баррэ — теперь есть и большое, и малое баррэ.</b><br/>
<i>Добавлена поддержка Google Chrome.</i><br/>
 <a href="https://habr.com/ru/articles/55141/?utm_campaign=55141&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Sat, 21 Mar 2009 19:36:00 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[CSS]]></category>
      <category><![CDATA[css]]></category><category><![CDATA[html]]></category><category><![CDATA[xhtml]]></category><category><![CDATA[верстка]]></category><category><![CDATA[веб-дизайн]]></category><category><![CDATA[гитара]]></category><category><![CDATA[аккорды]]></category><category><![CDATA[баррэ]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Глюки плагина Tags для Trac — ошибка UnicodeEncodeError]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/54801/</guid>
      <link>https://habr.com/ru/articles/54801/?utm_campaign=54801&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<h4>Trac — управление проектом и документацией</h4><br/>
Trac — это такая удобная штука, которая позвляет создавать wiki-пдобную документацию и управлять проектом. В нем есть система тикетов для создания планов задач, отчетов об ошибке или запроса на улучшение. Trac может быть привязан к SVN, а SVN к нему, то получается отличная связка для правления кодом. В Svn при фиксировании изменений указываем номер тикета с подробным описанием проблемы, а в Trac пишем как эта проблема решилась.<br/>
<br/>
<h4>Проблема</h4><img src="https://habrastorage.org/getpro/megamozg/post_images/0cf/5aa/194/0cf5aa19495007607c6a528814cb62e5.png" alt="Trac" align="right"/><br/>
Два дня танцевал с бубном, переустанавливая много раз <a href="http://trac.edgewall.org/">Trac 0.11.3</a>, никак не мог понять, почему в одном проекте плагин <a href="http://trac-hacks.org/wiki/TagsPlugin">Tags</a> прекрасно работает, а в другом я получаю ошибку <br/>
<blockquote><code>UnicodeEncodeError: 'ascii' codec can't encode character<br/>
</code></blockquote><br/>
 <a href="https://habr.com/ru/articles/54801/?utm_campaign=54801&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Wed, 18 Mar 2009 08:48:57 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Управление проектами]]></category>
      <category><![CDATA[UnicodeEncodeError]]></category><category><![CDATA[trac]]></category><category><![CDATA[tags]]></category><category><![CDATA[plugin]]></category><category><![CDATA[bug]]></category><category><![CDATA[решение]]></category><category><![CDATA[ошибки]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Запись гитарных аккордов HTML+CSS (пока без барре)]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/53792/</guid>
      <link>https://habr.com/ru/articles/53792/?utm_campaign=53792&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/post_images/f9d/582/79c/f9d58279ce1300197babead227499888.jpg" alt="Запись гитарных аккордов при помощи HTML,CSS" align="right"/>Как обычно представляют гитарные аккорды на веб-страничках? <br/>
 <b>Картинками! </b><br/>
<br/>
Вот только не всегда это удобно, потому что их приходиться рисовать.<br/>
<br/>
Вот у меня родилась идея: <br/>
<i>отображать гитарные аккорды используя только HTML и CSS. </i><br/>
 <a href="https://habr.com/ru/articles/53792/?utm_campaign=53792&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Wed, 11 Mar 2009 17:01:35 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[CSS]]></category>
      <category><![CDATA[css]]></category><category><![CDATA[html]]></category><category><![CDATA[xhtml]]></category><category><![CDATA[верстка]]></category><category><![CDATA[веб-дизайн]]></category><category><![CDATA[гитара]]></category><category><![CDATA[аккорды]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Поломка флеш-карты OCZ ATV 4GB или кто такой USB MEMORY BAR?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/54084/</guid>
      <link>https://habr.com/ru/articles/54084/?utm_campaign=54084&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Подарили мне месяц назад этот чудесный пылевлагозащищенный накопитель на 4Гб. Однако радость моя была не долгой. <br/>
Нет я не сломал флешку и не проверял молотком ударопрочность, я просто в очередной раз придя домой воткнул ее в компьютер. Каково же было мое удивление, когда Windows собщил <i>«Устройство не опознано!»</i>.<br/>
 <a href="https://habr.com/ru/articles/54084/?utm_campaign=54084&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Tue, 10 Mar 2009 21:30:51 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Чулан]]></category>
      <category><![CDATA[usb-накопитель]]></category><category><![CDATA[usb flash drive]]></category><category><![CDATA[ocz]]></category><category><![CDATA[atv]]></category><category><![CDATA[поломка]]></category><category><![CDATA[глюк]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Установка и настройка SVN, Apache, Trac для Windows. Часть 4 —Последняя. Apache и Trac]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/53757/</guid>
      <link>https://habr.com/ru/articles/53757/?utm_campaign=53757&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<h6>Назад к: <a href="http://r3code.habrahabr.ru/blog/53754/">Часть 3 — Trac ...</a></h6><br/>
<br/>
В этой части:<ul>
<li>Настройка Apache для работы с Trac</li>
<li>Завершение установки</li>
</ul> <a href="https://habr.com/ru/articles/53757/?utm_campaign=53757&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 06 Mar 2009 15:43:44 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[svn]]></category><category><![CDATA[apache]]></category><category><![CDATA[windows]]></category><category><![CDATA[trac]]></category><category><![CDATA[python]]></category><category><![CDATA[установка]]></category><category><![CDATA[install]]></category><category><![CDATA[setup]]></category><category><![CDATA[настройка]]></category><category><![CDATA[настройка серверов]]></category><category><![CDATA[subversion]]></category><category><![CDATA[tortoisesvn]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Установка и настройка SVN, Apache, Trac для Windows. Часть 3 — Trac]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/53754/</guid>
      <link>https://habr.com/ru/articles/53754/?utm_campaign=53754&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<h6>Назад к: <a href="http://r3code.habrahabr.ru/blog/53753/">Часть 2 — Apache и SVN ...</a></h6><br/>
<br/>
В этой части:<ul>
<li>Устанавливаем Python</li>
<li>Устанавливаем Trac</li>
<li>Создаем экземпляр Trac для проекта</li>
</ul> <a href="https://habr.com/ru/articles/53754/?utm_campaign=53754&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 06 Mar 2009 15:43:31 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[svn]]></category><category><![CDATA[apache]]></category><category><![CDATA[windows]]></category><category><![CDATA[trac]]></category><category><![CDATA[python]]></category><category><![CDATA[установка]]></category><category><![CDATA[install]]></category><category><![CDATA[setup]]></category><category><![CDATA[настройка]]></category><category><![CDATA[настройка серверов]]></category><category><![CDATA[subversion]]></category><category><![CDATA[tortoisesvn]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Установка и настройка SVN, Apache, Trac для Windows. Часть 2 — Apache и SVN]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/53753/</guid>
      <link>https://habr.com/ru/articles/53753/?utm_campaign=53753&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<h6>Назад к: <a href="http://r3code.habrahabr.ru/blog/53547/">Часть 1 — SVN ...</a></h6>В этой части:<ul>
<li>Устанавливаем Apache</li>
<li>Подключаем SVN к Apache</li>
<li>Настройка Apache для работы с SVN</li>
<li>Настройка SVN Авторизации по пути (Path-Based Authorization)</li>
</ul> <a href="https://habr.com/ru/articles/53753/?utm_campaign=53753&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 06 Mar 2009 15:03:26 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[svn]]></category><category><![CDATA[apache]]></category><category><![CDATA[windows]]></category><category><![CDATA[trac]]></category><category><![CDATA[python]]></category><category><![CDATA[установка]]></category><category><![CDATA[install]]></category><category><![CDATA[setup]]></category><category><![CDATA[настройка]]></category><category><![CDATA[настройка серверов]]></category><category><![CDATA[subversion]]></category><category><![CDATA[tortoisesvn]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Установка и настройка SVN, Apache, Trac для Windows. Часть 1 — SVN]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/53547/</guid>
      <link>https://habr.com/ru/articles/53547/?utm_campaign=53547&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<h4>Содержание</h4><br/>
 — Подготовка к установке (см. ниже)<br/>
 — Установка:<br/>
<ul>
<li>Устанавливаем Subversion (см. ниже)</li>
<li>Устанавливаем TortoiseSVN (см. ниже)</li>
<li><a href="http://r3code.habrahabr.ru/blog/53753/">Устанавливаем Apache</a></li>
<li><a href="http://r3code.habrahabr.ru/blog/53753/">Подключаем SVN к Apache</a></li>
<li><a href="http://r3code.habrahabr.ru/blog/53753/">Настройка SVN Авторизации по пути</a></li>
<li><a href="http://r3code.habrahabr.ru/blog/53754/">Устанавливаем Python</a></li>
<li><a href="http://r3code.habrahabr.ru/blog/53754/">Устанавливаем Trac</a></li>
<li><a href="http://r3code.habrahabr.ru/blog/53757/">Настройка Apache для работы с Trac</a></li>
</ul> — <a href="http://r3code.habrahabr.ru/blog/53757/">Завершение установки</a><br/>
<br/>
  <a href="https://habr.com/ru/articles/53547/?utm_campaign=53547&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Wed, 04 Mar 2009 14:52:02 GMT</pubDate>
      <dc:creator><![CDATA[r3code]]></dc:creator>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[svn]]></category><category><![CDATA[apache]]></category><category><![CDATA[windows]]></category><category><![CDATA[trac]]></category><category><![CDATA[python]]></category><category><![CDATA[установка]]></category><category><![CDATA[install]]></category><category><![CDATA[setup]]></category><category><![CDATA[настройка]]></category><category><![CDATA[настройка серверов]]></category><category><![CDATA[subversion]]></category><category><![CDATA[tortoisesvn]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
