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

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

  <channel>
    <title><![CDATA[Комментарии / Профиль vcoder]]></title>
    <link>https://habr.com/ru/users/vcoder/comments/</link>
    <description><![CDATA[Хабр: комментарии пользователя vcoder]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Thu, 23 Apr 2026 05:22:14 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>22.12.2025 02:47:03 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/cdek_blog/articles/975426/#comment_29285288</guid>
      <link>https://habr.com/ru/companies/cdek_blog/articles/975426/#comment_29285288</link>
      <description><![CDATA[<p>Для C# есть <a href="https://github.com/SteveDunn/Vogen" rel="noopener noreferrer nofollow">https://github.com/SteveDunn/Vogen</a> </p><pre><code class="cs">[ValueObject&lt;int&gt;]
public partial struct CustomerId;</code></pre><p>Довольно удобно и есть поддержка сериализации для БД</p>]]></description>
      <pubDate>Mon, 22 Dec 2025 02:47:03 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>04.07.2024 09:24:30 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/825556/#comment_27005148</guid>
      <link>https://habr.com/ru/articles/825556/#comment_27005148</link>
      <description><![CDATA[<p>Интересное исследование - спасибо, что поделились!</p><p>В том коммите есть тесты</p><pre><code>        protected override ModifyOperation ModifyEnumeratorThrows =&gt; PlatformDetection.IsNetFramework ? base.ModifyEnumeratorThrows : (base.ModifyEnumeratorAllowed &amp; ~ModifyOperation.Remove);

        protected override ModifyOperation ModifyEnumeratorAllowed =&gt; PlatformDetection.IsNetFramework ? base.ModifyEnumeratorAllowed : ModifyOperation.Overwrite | ModifyOperation.Remove;</code></pre><p></p><p>Я покопался в исходниках - думаю, что разница в поведении заключается в следующем:</p><ul><li><p><code>List</code> хранит данные в массиве. Итератор держит индекс текущего элемента. При изменении коллекции (<code>Add</code>/<code>Remove</code>) индекс становится не действительным.</p></li><li><p><code>HashSet</code> (как и <code>Dictionary</code>) хранят данные в бакетах (bucket), номер бакета определяется вызовом  <code>GetHashCode</code>. Данные в бакетах хранятся в связном списке (насколько я понимаю <a href="https://github.com/dotnet/runtime/blob/fb762d10e5df52d24b0dd559f97a14ccf2991d60/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/HashSet.cs#L1725-L1735" rel="noopener noreferrer nofollow">linked list</a>). Соответственно при удалении элемента меняются ссылки в списке - при этом связный список остается валидным. Технически, при добавлении элемента связный список тоже остается валидным, но есть нюанс ;) - добавленный элемент может оказаться в бакете который мы уже посетили или в бакете который нам еще предстоит посетить. Это неопределенное поведение (за который часто ругают плюсы) поэтому при добавлении элемента энумератор кидает исключение.</p></li></ul><p></p><p>Я бы поостерегался закладываться на такое поведение - оно может поменяться в новых версиях.</p><p></p><p></p><p> </p>]]></description>
      <pubDate>Thu, 04 Jul 2024 09:24:30 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>23.08.2022 10:19:51 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/674816/#comment_24656204</guid>
      <link>https://habr.com/ru/articles/674816/#comment_24656204</link>
      <description><![CDATA[Совершенно верно, коллизии строк в .Net будут. Но только на время выполнения программы — после перезапуска приложения генерируется новый seed, и строки будут выдавать новый хэш код. Более подробно я написал в комментарии <a href="https://habr.com/ru/post/674816/#comment_24656190">выше</a>.]]></description>
      <pubDate>Tue, 23 Aug 2022 10:19:51 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>23.08.2022 10:15:06 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/674816/#comment_24656190</guid>
      <link>https://habr.com/ru/articles/674816/#comment_24656190</link>
      <description><![CDATA[В современном C#/.Net (не скажу точно с какой версии) действительно «такой фигни нет».<br>
<br>
Вот реализация String.GetHashCode:<br>
<br>
<pre><code class="cs">public override int GetHashCode()
{
	ulong seed = Marvin.DefaultSeed;

	// Multiplication below will not overflow since going from positive Int32 to UInt32.
	return Marvin.ComputeHash32(ref Unsafe.As&lt;char, byte&gt;(ref _firstChar), (uint)_stringLength * 2 /* in bytes, not chars */, (uint)seed, (uint)(seed &gt;&gt; 32));
}
</code></pre><br>
<br>
Используется алгоритм Marvin, который использует случайный seed генерируемый один раз за запуск приложения. Так что даже одна и та же строка будет иметь <a href="https://dotnetfiddle.net/ElMFhn" rel="nofollow noopener noreferrer">разный хэш код при разных запусках</a>.<br>
<br>
<pre><code class="cs">public static ulong DefaultSeed { get; } = GenerateSeed();

private static unsafe ulong GenerateSeed()
{
	ulong seed;
	Interop.GetRandomBytes((byte*)&amp;seed, sizeof(ulong));
	return seed;
}
</code></pre><br>
<br>
Microsoft настолько заморочилась, что разработала алгоритм и даже <a href="https://patents.google.com/patent/US20130262421" rel="nofollow noopener noreferrer">запатентовала</a> его.]]></description>
      <pubDate>Tue, 23 Aug 2022 10:15:06 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>17.10.2020 00:22:20 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/skillfactory/articles/523140/#comment_22191960</guid>
      <link>https://habr.com/ru/companies/skillfactory/articles/523140/#comment_22191960</link>
      <description><![CDATA[Можно. В зависимости от того, какую сущность Вы собираетесь добавить. Вот <a href="https://github.com/mingrammer/diagrams/blob/master/CONTRIBUTING.md">официальная документация</a>.]]></description>
      <pubDate>Sat, 17 Oct 2020 00:22:20 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>30.06.2020 06:09:22 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/508700/#comment_21792844</guid>
      <link>https://habr.com/ru/articles/508700/#comment_21792844</link>
      <description><![CDATA[Есть проект по подобным вопросам <a href="https://github.com/viraptor/reverse-interview">https://github.com/viraptor/reverse-interview</a> и его руская версия <a href="https://github.com/kix/reverse-interview/blob/master/README.md">https://github.com/kix/reverse-interview/blob/master/README.md</a>]]></description>
      <pubDate>Tue, 30 Jun 2020 06:09:22 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>10.05.2020 05:12:33 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/redmadrobot/articles/495108/#comment_21595402</guid>
      <link>https://habr.com/ru/companies/redmadrobot/articles/495108/#comment_21595402</link>
      <description><![CDATA[Не могли бы Вы поделиться ссылкой на Google таблицу?]]></description>
      <pubDate>Sun, 10 May 2020 05:12:33 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>21.11.2018 23:25:42 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/pvs-studio/articles/430604/#comment_19400866</guid>
      <link>https://habr.com/ru/companies/pvs-studio/articles/430604/#comment_19400866</link>
      <description><![CDATA[Спасибо за статью — проясняет как эта «магия» работает под капотом.<br>
<br>
Есть вопрос по поводу «Аннотирование методов (Method Annotations)» — судя по списку это работает для C++. Есть ли что-то подобное для C#?]]></description>
      <pubDate>Wed, 21 Nov 2018 23:25:42 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>21.11.2018 23:06:15 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/microsoft/articles/430166/#comment_19400846</guid>
      <link>https://habr.com/ru/companies/microsoft/articles/430166/#comment_19400846</link>
      <description><![CDATA[<a href="https://lupblazordemos.z13.web.core.windows.net/">lupblazordemos.z13.web.core.windows.net</a><br>
<a href="https://edcharbeneau.com/BlazeDown/">edcharbeneau.com/BlazeDown</a><br>
<br>
Здесь есть ссылки на демо проекты: <a href="https://blazor.net/community.html">blazor.net/community.html</a><br>]]></description>
      <pubDate>Wed, 21 Nov 2018 23:06:15 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>23.10.2018 03:10:43 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/427281/#comment_19268577</guid>
      <link>https://habr.com/ru/articles/427281/#comment_19268577</link>
      <description><![CDATA[Если это не просто праздный интерес, то рекомендую поискать книгу «Essential COM» by Don Box. Книга не новая (~20 лет), но и COM тоже :)<br>
<br>
<a href="https://books.google.com/books/about/Essential_COM.html?id=kfRWvKSePmAC">books.google.com/books/about/Essential_COM.html?id=kfRWvKSePmAC</a>]]></description>
      <pubDate>Tue, 23 Oct 2018 03:10:43 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>29.01.2012 21:35:29 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/137213/#comment_4569958</guid>
      <link>https://habr.com/ru/articles/137213/#comment_4569958</link>
      <description><![CDATA[Последняя (на данный момент) версия LastPass также поддерживает аттрибут autocompletetype:<br/>
<br/>
 — Support for the <a href="http://wiki.whatwg.org/wiki/Autocompletetype">autocompletetype</a> attribute <br/>
]]></description>
      <pubDate>Sun, 29 Jan 2012 21:35:29 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>18.01.2012 21:05:52 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/136529/#comment_4542564</guid>
      <link>https://habr.com/ru/articles/136529/#comment_4542564</link>
      <description><![CDATA[Возможно, стоит упомянуть, что редактор <b>не бесплатный</b>: $59 (или $500 за 10 лицензий)<br/>
]]></description>
      <pubDate>Wed, 18 Jan 2012 21:05:52 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>15.01.2012 21:12:14 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/136244/#comment_4533188</guid>
      <link>https://habr.com/ru/articles/136244/#comment_4533188</link>
      <description><![CDATA[А нет ли планов по реализации/портированию данного расширения в VS 2008?<br/>
]]></description>
      <pubDate>Sun, 15 Jan 2012 21:12:14 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>24.10.2011 03:28:12 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/130982/#comment_4347065</guid>
      <link>https://habr.com/ru/articles/130982/#comment_4347065</link>
      <description><![CDATA[&gt; Интернет-провайдеры зачастую отказываются сотрудничать и выдавать адреса электронной почты своих абонентов<br/>
<br/>
Личный опыт (Австралия).<br/>
Статический IPшник.<br/>
Копирасты тупо написали провайдеру — типа натянем тебя за пиратство.<br/>
Провайдер форварднул «телегу» мне с требованием прератить «нарушать безобразия» в течении 24 часов — иначе он раскрывает всю инфу обо мне копирастам.<br/>
<br/>
Меня это несколько напрягло и пришлось <s>надеть шапочку из фольги</s> включить blocklist в deluge.<br/>
Уже больше года никто по этому поводу не беспокоит…]]></description>
      <pubDate>Mon, 24 Oct 2011 03:28:12 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>05.05.2011 22:00:29 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/118788/#comment_3875713</guid>
      <link>https://habr.com/ru/articles/118788/#comment_3875713</link>
      <description><![CDATA[Вот статья в помощь тому, кто решит что надо менять все пароли, которые хранились в ластпассе <a href="http://www.ghacks.net/2011/05/05/the-lastpass-security-incident-what-i-did/">http://www.ghacks.net/2011/05/05/the-lastpass-security-incident-what-i-did/</a><br/>
<br/>
Статья на английском, но с картинками :)]]></description>
      <pubDate>Thu, 05 May 2011 22:00:29 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>07.02.2011 22:18:19 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/113278/#comment_14859771</guid>
      <link>https://habr.com/ru/articles/113278/#comment_14859771</link>
      <description><![CDATA[Хотя с другой стороны, <a href="http://www.kurzweilai.net/how-watson-works-a-conversation-with-eric-brown-ibm-research-manager">здесь</a> совершенно обратная информация:<br/>
<br/>
Q: Does Watson use speech recognition?<br/>
<br/>
Brown: <strong>No</strong>, what it does use is speech synthesis, text-to-speech, to verbalize its responses and, when playing Jeopardy!, make selections. When we started this project, the core research problem was the question answering technology. When we started looking at applying it to Jeopardy!, I think very early on we decided that we did not want to introduce a potential layer of error by relying on speech recognition to understand the question.<br/>
<br/>
If you look at the way Jeopardy! is played, that’s actually, I think, a fair requirement, because when a clue is revealed, the host reads the clue so that the contestants can hear it. But at the same time, the text of the clue is revealed to the players and they can read it instantaneously. Since in Jeopardy!, humans can read the clues, when a clue is revealed, the full text of the clue is revealed on a large display to the contestants, and that full text is also sent in an ASCII file format to Watson.]]></description>
      <pubDate>Mon, 07 Feb 2011 22:18:19 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>07.02.2011 22:11:18 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/113278/#comment_14859769</guid>
      <link>https://habr.com/ru/articles/113278/#comment_14859769</link>
      <description><![CDATA[без распознавания речи это было-бы не интересно<br/>
по ссылке <a href="http://www-03.ibm.com/innovation/us/watson/what-is-watson/why-jeopardy.html">http://www-03.ibm.com/innovation/us/watson/what-is-watson/why-jeopardy.html</a> читаем<br/>
<br/>
System of Systems<br/>
<br/>
Watson is much more than a computer. From its DeepQA architecture to <strong>speech recognition</strong>, Watson must integrate many systems in order to arrive at a response. See how a smarter planet is also a system of systems.<br/>
<br/>
]]></description>
      <pubDate>Mon, 07 Feb 2011 22:11:18 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>23.12.2010 00:47:40 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/110509/#comment_3518449</guid>
      <link>https://habr.com/ru/articles/110509/#comment_3518449</link>
      <description><![CDATA[Я, наверное, тупой.<br/>
Ну никак не могу понять, как интегрировать с моим сайтом.<br/>
Вроде облазил весь ваш сайт, создал сервер, добавил поля.<br/>
<br/>
Но где взять тот самый php который показан на скриншоте?<br/>
Не подскажете?]]></description>
      <pubDate>Thu, 23 Dec 2010 00:47:40 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>13.12.2010 23:28:01 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/109949/#comment_3494686</guid>
      <link>https://habr.com/ru/articles/109949/#comment_3494686</link>
      <description><![CDATA[Меня действительно удивило это:<br/>
<br/>
The real shocker was the strftime() C function's bad behavior. They were tracking down an intermittent performance problem and discovered that it would sometimes access up to 50 files from disk, shoving a stick in the spokes of any application that relied on fast response times thanks to the unexpected disk seeks this causes. It turns out that the function will load information from locale files to help with its formatting job, and even worse it will periodically recheck the files to see if they've changed. This may not sound like much, but for a programmer it's as unexpected as discovering your grandmother moonlighting as a nightclub bouncer. <br/>
<br/>
В вольном переводе это означает, что Сишная функция strftime() обращается к файлам (до 50 файлов!) для выполнения преобразования.<br/>
Более того, данная функция периодически проверяет не изменились ли эти файлы.]]></description>
      <pubDate>Mon, 13 Dec 2010 23:28:01 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>08.12.2010 02:34:55 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/109517/#comment_14783399</guid>
      <link>https://habr.com/ru/articles/109517/#comment_14783399</link>
      <description><![CDATA[&gt; Направив домен s-a-p.in на свой сервер, он поднял на нем почту и, благодаря моей глупости с альтернативными e-mail, смог получить доступ к my-general-mail@gmail.com<br/>
<br/>
Извините, но я что-то не понимаю, как он получил доступ к my-general-mail@gmail.com?<br/>
Это не праздный вопрос — мне действительно хотелось-бы знать ответ, чтобы обезопасить себя.]]></description>
      <pubDate>Wed, 08 Dec 2010 02:34:55 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

      

      

    
  </channel>
</rss>
