<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Комментарии / Профиль devsane]]></title>
    <link>https://habr.com/ru/users/devsane/comments/</link>
    <description><![CDATA[Хабр: комментарии пользователя devsane]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Tue, 05 May 2026 16:51:20 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>05.06.2019 23:59:35 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/454522/#comment_20249450</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/454522/#comment_20249450</link>
      <description><![CDATA[Столкнулся с описанной проблемой на практике в AWS ECS. В моем случае приложение тоже упиралось в порог памяти контейнера, но оставалось работать. При этом, видимо из-за манипуляций с файлом подкачки, генерелись терабайты IO трафика. <br>
<br>
Судя по всему, я не один такой — народ <a href="https://github.com/aws/amazon-ecs-agent/issues/794#issuecomment-303937236">скрипты пишет</a>, убивающие контейнеры, застрявшие в подобной ситуации.<br>
<br>]]></description>
      <pubDate>Wed, 05 Jun 2019 23:59:35 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>08.05.2019 12:40:01 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/450990/#comment_20129316</guid>
      <link>https://habr.com/ru/articles/450990/#comment_20129316</link>
      <description><![CDATA[Верно, асинхронные вызовы часто используются для подобных задач. Правда, эта идея не столь показательна, если говорить про снижение нагрузки на сервер, однако, в некоторых задачах без нее никуда (та же проверка занятости логина). Для тех, кому интересно как подобное может быть реализовано с помощью Bridge.NET — в <a href="https://deck.net/webservice">этом примере</a> продемонстрировано выполнение Ajax запроса.<br>
<br>
По поводу Blazor — безусловно, это интересный фреймворк, и как только Microsoft выведет его из Preview, я думаю, он найдет много последователей. В то же время, и Bridge.NET может занять свою нишу, например, в частности применения binding'ов для существующих JS библиотек, здесь можно посмотреть несколько демок: <a href="https://demos.retyped.com/">demos.retyped.com</a><br>
<br>
Проекту Retyped явно есть куда развиваться. Однако уже сейчас для некоторых библиотек предоставлен достаточно годный API. Например, интересно, насколько похожими получились <a href="https://github.com/Retyped/Demos/blob/master/PhaserDemo/PhaserDemo/Games/GameState2.cs">реализация на C#</a> и <a href="https://github.com/photonstorm/phaser-examples/blob/master/examples/p2%20physics/accelerate%20to%20object.js">оригинальный код на JS</a> в данном <a href="https://demos.retyped.com/dist/phaser/">демо</a>.<br>]]></description>
      <pubDate>Wed, 08 May 2019 12:40:01 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>08.05.2019 11:01:22 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/450990/#comment_20128762</guid>
      <link>https://habr.com/ru/articles/450990/#comment_20128762</link>
      <description><![CDATA[Согласен, это один из основных недостатков Bridge.NET. При этом, трудно представить как можно реализовать функции .NET в JS по-другому. Возможно единственное решение проблемы — это разбивка <b>bridge.js</b> на модули. Это позволило бы подключать только те системные классы/библиотеки, которые по факту используются в проекте. Данная функциональность уже давно <a href="https://github.com/bridgedotnet/Bridge/issues/868">обсуждается</a> на GitHub.]]></description>
      <pubDate>Wed, 08 May 2019 11:01:22 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>29.09.2017 09:30:04 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/htmlacademy/articles/338914/#comment_10443916</guid>
      <link>https://habr.com/ru/companies/htmlacademy/articles/338914/#comment_10443916</link>
      <description><![CDATA[Имелось в виду, что строгая типизация в больше степени спасает от случайных неточностей, превращая ошибки во время исполнения в ошибки на стадии компиляции. Проверку значения при этом никто не отменяет, и перед приведением типов необходимо самостоятельно убедиться, что данные корректны.<br>
<br>
Получается, если компилятор указывает на какое-то проблемное место — это можно считать как указание, что следует проанализировать поток данных и добавить необходимую валидацию. Если же проблемное место «закрывается» небезопасным приведением типа (в TypeScript такое тоже есть), или небезопасной инициализацией, как в случае с <code>Number(val)</code>, то разработчик сам переносит проблему обратно на стадию исполнения и лишает себя преимуществ строгой типизации.]]></description>
      <pubDate>Fri, 29 Sep 2017 09:30:04 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>12.04.2017 19:02:23 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/326168/#comment_10169378</guid>
      <link>https://habr.com/ru/articles/326168/#comment_10169378</link>
      <description><![CDATA[Согласен, <b>nameof</b> сильно облегчил жизнь. Для еще большего упрощения можно было бы воспользоваться Expression и избавиться от аргумента с именем… хотя, наверное, на любителя.<br/>
<br/>
<pre><code>public void Test(object o)
{
    Guard.ArgumentNotNull(() =&gt; o);
}

public static class Guard
{
    public static void ArgumentNotNull&lt;T&gt;(Expression&lt;Func&lt;T&gt;&gt; argExpr)
        where T: class
    {
        if (argExpr == null)
        {
            throw new ArgumentNullException(nameof(argExpr));
        }
        
        var arg = argExpr.Compile()();
        if (arg == null)
        {
            var argName = (argExpr.Body as MemberExpression)?.Member.Name;
            throw new ArgumentNullException(argName);
        }
    }
}
</code></pre>]]></description>
      <pubDate>Wed, 12 Apr 2017 19:02:23 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>12.04.2017 08:46:52 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/326168/#comment_10167796</guid>
      <link>https://habr.com/ru/articles/326168/#comment_10167796</link>
      <description><![CDATA[Думаю, было бы удобно использовать стандартный диалог замены текста с включенной галкой «Use Regular Expressions». <br/>
<br/>
Пример поискового запроса:<br/>
<pre><code>^([\t ]*?)Guard.ArgumentNotNull\((\w+), &quot;eventProvider&quot;\);
</code></pre><br/>
<br/>
Пример замены (с сохранением смещения):<br/>
<pre><code>$1if ($2 == null)\r\n$1\tthrow new ArgumentNullException(&quot;$2&quot;);
</code></pre>]]></description>
      <pubDate>Wed, 12 Apr 2017 08:46:52 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

      

      

    
  </channel>
</rss>
