<?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/developerxyz/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя developerxyz]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Tue, 05 May 2026 23:25:03 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[[Перевод] WebP — формат сжатия веб-страниц]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/841754/</guid>
      <link>https://habr.com/ru/articles/841754/?utm_campaign=841754&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Я хочу, чтобы посетители моего сайта наслаждались им, так что я забочусь об accessibility и проверяю, что даже без JavaScript тут есть, на что смотреть. Я забочусь о том, насколько быстро грузятся страницы, ведь на некоторых из них есть большие иллюстрации, поэтому я минифицирую HTML.</p><p>Вот только есть один <em>нюанс</em>, который ставит мне палки в колёса и не даёт сделать блог лёгким как пёрышко.</p> <a href="https://habr.com/ru/articles/841754/?utm_campaign=841754&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 08 Sep 2024 20:06:55 GMT</pubDate>
      <dc:creator><![CDATA[developerxyz]]></dc:creator>
      <category><![CDATA[Ненормальное программирование]]></category><category><![CDATA[WebGL]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Rust]]></category>
      <category>никто не читает теги</category><category>webp</category><category>извращения</category><category>сжатие</category><category>сжатие без потерь</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Как я ускорила парсинг строк в serde_json на 20%]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/838404/</guid>
      <link>https://habr.com/ru/articles/838404/?utm_campaign=838404&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Недавно я писала код, завязанный на производительность, и поняла, что рассказы про мой опыт могут быть захватывающим чтивом. Учить как <em>думать</em> так же важно, как и учить <em>писать код</em>, но делают так редко, и мне кажется, что то, на что я угрохала последний месяц — отличная возможность заглянуть за кулисы.</p><p><code>serde</code> — основной фреймворк для сериализации и десериализации в Rust. Его используют как крейт по умолчанию во всей экосистеме. <code>serde_json</code> — это официальный <code>serde</code>-миксин для JSON, так что каждый раз, когда нужно что-то парсить, люди обращаются именно к нему. Конечно, есть и другие библиотеки, специализующиеся на парсинге JSON, например <a href="https://lib.rs/crates/simd-json" rel="noopener noreferrer nofollow">simd-json</a>, но популярность у них, мягко говоря, удручающая. <code>serde_json</code> значительно популярнее: на момент написания от него зависят аж целых <a href="https://crates.io/crates/serde_json/reverse_dependencies" rel="noopener noreferrer nofollow">26916</a> крейта, а от <code>simd-json</code> — всего <a href="https://crates.io/crates/simd-json/reverse_dependencies" rel="noopener noreferrer nofollow">66</a>.</p><p>Это делает <code>serde_json</code> хорошей мишенью <s>(не как у Jia Tan)</s> для оптимизаций. Велик шанс того, что многим из тысяч пользователей переход на <code>simd-json</code> позволил бы добиться ускорения, но, пока они этого не делают, более мелкие оптимизации — лучше, чем совсем ничего, и такие улучшения — глобальный выигрыш для экосистемы.</p> <a href="https://habr.com/ru/articles/838404/?utm_campaign=838404&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 25 Aug 2024 13:49:30 GMT</pubDate>
      <dc:creator><![CDATA[developerxyz]]></dc:creator>
      <category><![CDATA[Open source]]></category><category><![CDATA[Алгоритмы]]></category><category><![CDATA[Серверная оптимизация]]></category><category><![CDATA[Rust]]></category>
      <category>json</category><category>теги всё равно никто не читает</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Learn OpenGL. Урок 7.2 – Отрисовка текста]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/473990/</guid>
      <link>https://habr.com/ru/articles/473990/?utm_campaign=473990&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p><img src="https://habrastorage.org/web/c9e/9b2/a3b/c9e9b2a3baf749ab8e2b385c6d93d966.png" alt="image" align="left" width="300">В некоторый момент ваших графических приключений вам захочется вывести текст через OpenGL. Вопреки тому, что вы могли ожидать, получить простую строку на экране довольно сложно с низкоуровневой библиотекой, такой как OpenGL. Если вам не нужно больше 128 различных символов для отрисовки текста, тогда это не будет сложно. Сложности появляются, когда у символов не совпадают высота, ширина и смещение. В зависимости от того, где вы живете, вам может потребоваться больше 128 символов. А что, если вам захочется спецсимволов, математических или музыкальных символов? Как только вы поймете, что отрисовка текста — не самое простое занятие, то к вам придет осознание того, что это, скорее всего, не должно принадлежать такому низкоуровневому API, как OpenGL.</p><br>
<p>Поскольку OpenGL не предоставляет никаких средств для отрисовки текста, все трудности этого дела оказываются на нас. Поскольку не существует графического примитива "Символ", нам придется придумывать его самим. Уже есть готовые примеры: рисовать символ через <code>GL_LINES</code>, создать 3D-модели символов или отрисовывать символы на плоские четырехугольники в трехмерном пространстве.</p><br>
<p>Чаще всего разработчики <s>ленятся</s> <s>пьют кофе</s> выбирают последний вариант. Отрисовать эти текстурированные четырехугольники не так сложно, как выбрать правильную текстуру. В этом уроке мы познакомимся с несколькими способами и напишем свой продвинутый, но гибкий отрисовщик текста с помощью FreeType.</p> <a href="https://habr.com/ru/articles/473990/?utm_campaign=473990&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Thu, 31 Oct 2019 11:25:09 GMT</pubDate>
      <dc:creator><![CDATA[developerxyz]]></dc:creator>
      <category><![CDATA[C++]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[Разработка игр]]></category>
      <category>learnopengl</category><category>opengl</category><category>opengl 3</category><category>freetype</category><category>truetype</category><category>rendering</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Learn OpenGL. Урок 7.1 – Отладка]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/462897/</guid>
      <link>https://habr.com/ru/articles/462897/?utm_campaign=462897&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p><img src="https://habrastorage.org/web/c9e/9b2/a3b/c9e9b2a3baf749ab8e2b385c6d93d966.png" alt="image" align="left" width="300"> Графическое программирование — не только источник веселья, но еще и фрустрации, когда что-либо не отображается так, как задумывалось, или вообще на экране ничего нет. Видя, что большая часть того, что мы делаем, связана с манипулированием пикселями, может быть трудно выяснить причину ошибки, когда что-то работает не так, как полагается. Отладка такого вида ошибок сложнее, чем отладка ошибок на CPU. У нас нет консоли, в которую мы могли бы вывести текст, мы не можем поставить точку останова в шейдере и мы не можем просто взять и проверить состояние программы на GPU.</p><br>
<p>В этом уроке мы познакомимся с некоторыми методами и приемами отладки вашей OpenGL-программы. Отладка в OpenGL не так сложна, и изучение некоторых приемов обязательно окупится.</p> <a href="https://habr.com/ru/articles/462897/?utm_campaign=462897&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Thu, 08 Aug 2019 12:25:40 GMT</pubDate>
      <dc:creator><![CDATA[developerxyz]]></dc:creator>
      <category><![CDATA[C++]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[Разработка игр]]></category>
      <category>learnopengl</category><category>opengl</category><category>opengl 3</category><category>отладка</category><category>отладочный вывод</category><category>ошибки</category><category>renderdoc</category><category>codexl</category><category>nsignt</category><category>glsl</category><category>glslangvalidator</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Трюк с тригонометрией]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/462725/</guid>
      <link>https://habr.com/ru/articles/462725/?utm_campaign=462725&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Скорее всего, вам известны следующие соотношения еще со школы:</p><br>
<p></p><p><math><img src="https://habrastorage.org/getpro/habr/formulas/74a/bc7/64a/74abc764a952ef9c76e9a91311f0e16f.svg" alt="$\sin(\alpha + \beta) = \sin\alpha \times \cos\beta + \cos\alpha \times \sin\beta \\ \cos(\alpha + \beta) = \cos\alpha \times \cos\beta - \sin\alpha \times \sin\beta$" data-tex="display"></math></p><br>
<p>Когда вы в детстве впервые познакомились с этой формулой, скорее всего, вашим первым чувством была боль из-за того, что эту формулу надо запомнить. Это очень плохо, потому что на самом деле вам не нужно запоминать эту формулу — она сама выводится, когда вы поворачиваете треугольник на бумаге. На самом деле, я делаю то же самое, когда записываю эту формулу. Это толкование будет очевидным к середине этой статьи. Но сейчас, чтобы оставить все веселье на потом и отодвинуть момент, когда вы скажете "Эврика!", давайте подумаем, а зачем нам вообще задумываться об этой формуле.</p><br>
<p><img src="https://habrastorage.org/webt/p2/sk/oc/p2skocu3scp-y3d9dqv7etb3z4s.jpeg"></p> <a href="https://habr.com/ru/articles/462725/?utm_campaign=462725&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Tue, 06 Aug 2019 11:51:09 GMT</pubDate>
      <dc:creator><![CDATA[developerxyz]]></dc:creator>
      <category><![CDATA[Алгоритмы]]></category><category><![CDATA[Математика]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[Качество кода]]></category>
      <category>математика</category><category>программирование</category><category>2d графика</category><category>3d графика</category><category>алгоритмы</category><category>упрощение кода</category><category>упрощение формул</category><category>FFT</category><category>преобразование Фурье</category><category>тригонометрия</category>
    </item>
  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Избегаем тригонометрии]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/462539/</guid>
      <link>https://habr.com/ru/articles/462539/?utm_campaign=462539&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<h1>Вступление</h1><br>
Мне кажется, что нам надо использовать меньше тригонометрии в компьютерной графике. Хорошее понимание проекций, отражений и векторных операций (как в истинном значении скалярного (dot) и векторного (cross) произведений векторов) обычно приходит с растущим чувством беспокойства при использовании тригонометрии. Точнее, я считаю, что тригонометрия хороша для ввода данных в алгоритм (для понятия углов это интуитивно понятный способ измерения ориентации), я чувствую, что что-то не так, когда вижу тригонометрию, находящуюся в глубинах какого-нибудь алгоритма 3D-рендеринга. На самом деле, я думаю, что где-то умирает котенок, когда туда закрадывается тригонометрия. И я не так беспокоюсь о скорости или точности, но с концептуальной элегантностью я считаю… Сейчас объясню.<br> <a href="https://habr.com/ru/articles/462539/?utm_campaign=462539&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Mon, 05 Aug 2019 10:30:09 GMT</pubDate>
      <dc:creator><![CDATA[developerxyz]]></dc:creator>
      <category><![CDATA[Алгоритмы]]></category><category><![CDATA[Математика]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[3D-графика]]></category><category><![CDATA[Качество кода]]></category>
      <category>графика</category><category>математика</category><category>упрощение кода</category><category>упрощение формул</category><category>тригонометрия</category>
    </item>
  

  

      

      

      

    
  </channel>
</rss>
