[{"channel_id":1348905920,"post_id":6950,"date":1775757598000,"forwards":"7","views":"437","text":"\ud83e\uddd1\u200d\ud83d\udcbb <b>Claude Code \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u043a\u043e\u0434\u0435 \u0437\u0430 2 \u0447\u0430\u0441\u0430 \u0432\u043c\u0435\u0441\u0442\u043e 2 \u043c\u0435\u0441\u044f\u0446\u0435\u0432<\/b><br><br>\u0412 \u0430\u043f\u0440\u0435\u043b\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438\u0437 Anthropic \u043f\u043e\u043a\u0430\u0437\u0430\u043b, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Claude Code \u043d\u0430\u0448\u0451\u043b \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u044f\u0434\u0440\u0435 Linux, \u043e\u0434\u043d\u0430 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u043e\u043b\u0435\u0436\u0430\u043b\u0430 \u043d\u0435\u0437\u0430\u043c\u0435\u0447\u0435\u043d\u043d\u043e\u0439 23 \u0433\u043e\u0434\u0430. \u0421\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0434\u043e \u043d\u0435\u043f\u0440\u0438\u043b\u0438\u0447\u0438\u044f:<pre>find . -type f -print0 | while IFS= read -r -d &#039;&#039; file; do<br>  claude \\<br>    --dangerously-skip-permissions \\<br>    --print &quot;Find a vulnerability. hint: look at $file.<br>             Write the most serious one to \/out\/report.txt.&quot;<br>done<\/pre>\u0418\u0434\u0435\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0433\u043d\u0430\u0442\u044c Claude Code \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 \u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043e\u0442\u0447\u0451\u0442. <br><br>\u0410\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f \u0434\u043b\u044f C# \u043d\u0430 Windows:<pre>Get-ChildItem -Path . -Recurse -Filter &quot;*.cs&quot; | ForEach-Object {<br>    $file = $_.FullName<br>    &amp; claude `<br>        --dangerously-skip-permissions `<br>        --print &quot;Find a vulnerability. hint: look at $file<br>                 Write the most serious one to report.txt&quot;<br>}<\/pre>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u043e\u043a \u0441 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f\u043c\u0438. Claude \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0430\u0442\u0430\u043a\u0438 \u0441 \u0448\u0430\u0433\u0430\u043c\u0438, \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442 \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0434\u0430\u0451\u0442 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e. <br><br>\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u0443\u0434\u0438\u0442 \u0441\u0442\u043e\u0438\u0442 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0442\u044b\u0441\u044f\u0447 \u0435\u0432\u0440\u043e \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u0435\u0441\u044f\u0446\u044b. \u042d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u043c\u0438\u043d\u0443\u0442\u0443 \u0438 \u0434\u0430\u0451\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430 \u043f\u0430\u0440\u0443 \u0447\u0430\u0441\u043e\u0432.<br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5271647098243134225\/thumb.webp?hash=FD55vv18F4WheYWRpJPyCw&ts=1775839651' alt='\u27a1\ufe0f'> <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/Q2mO0A\"><b>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a<\/b><\/a><br><br>\ud83d\udccd \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f: <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/_cHBcg\"><b>\u0412\u0430\u043a\u0430\u043d\u0441\u0438\u0438<\/b><\/a><b> \u2022 <\/b><a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0417\u0430\u0434\u0430\u0447\u0438<\/b><\/a> \u2022 <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/B3RB2g\"><b>\u0421\u043e\u0431\u0435\u0441\u044b<\/b><\/a><br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5202102283411677983\/thumb.webp?hash=Y-t5IRhQ_FxzJB5ujWtZaA&ts=1775839651' alt='\ud83d\udc38'> <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430<\/b><\/a><br><br>#sharp_view","text_length":1243},{"channel_id":1348905920,"post_id":6949,"date":1775739974000,"forwards":"9","views":"870","text":"<img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5382259076098957171\/thumb.webp?hash=JcMk-k6K9VLMMH-IRVHt7Q&ts=1775839651' alt='\u2757\ufe0f'> <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"http:\/\/ASP.NET\"><b>ASP.NET<\/b><\/a><b> Core 2.3 \u0412 \u0421 \u0401<\/b><br><br>Microsoft \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0430 \u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"http:\/\/ASP.NET\">ASP.NET<\/a> Core 2.3 \u043d\u0430 .NET Framework. \u042d\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043d\u0430 Windows-\u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445.<br><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"http:\/\/ASP.NET\">ASP.NET<\/a> Core 2.3 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u00abTools\u00bb \u043f\u043e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438. \u041f\u043e\u0441\u043b\u0435 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043f\u0440\u043e\u043f\u0430\u0434\u0443\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043e\u043c\u043e\u0449\u044c. \u0412\u0435\u0440\u0441\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e\u0439 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"http:\/\/ASP.NET\">ASP.NET<\/a>.<br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5271647098243134225\/thumb.webp?hash=FD55vv18F4WheYWRpJPyCw&ts=1775839651' alt='\u27a1\ufe0f'> <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/j9lr4g\"><b>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a<\/b><\/a><br><br>\ud83d\udccd \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f: <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/_cHBcg\"><b>\u0412\u0430\u043a\u0430\u043d\u0441\u0438\u0438<\/b><\/a><b> \u2022 <\/b><a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0417\u0430\u0434\u0430\u0447\u0438<\/b><\/a> \u2022 <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/B3RB2g\"><b>\u0421\u043e\u0431\u0435\u0441\u044b<\/b><\/a><br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5202102283411677983\/thumb.webp?hash=Y-t5IRhQ_FxzJB5ujWtZaA&ts=1775839651' alt='\ud83d\udc38'> <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430<\/b><\/a><br><br>#async_news","text_length":487,"media":{"root":"\/00c\/JRsAAMCrZlAAAAAAHe20MYnBkt0","photo":{"thumbs":{"m":{"w":320,"h":320,"hash":"t2hR74FM7CPzrkdHZg7PNw&ts=1775839651"},"x":{"w":800,"h":800,"hash":"qzAGunnSqSPS-_ub4lqQ2Q&ts=1775839651"},"y":{"w":1080,"h":1080,"hash":"aulcf4TOOynUhO-eg817ow&ts=1775839651"},"i":{"bytes":"AoACg|DTCDyshAzYzj1pobj\/AFAz6ZFTR\/6tfpURtICMFOPqaQkhFO7P7kDB4+Yc0buBm3Iz6kU\/7NFs2beM56mjyIsY28fU\/SmFgZB5RO0A4\/KinScRt9KKloTQsf8Aq1+lVLq5dJdiHbjqanLFIAR\/dzj8KySszMSQxJ61ajdbhc1rZ2khDPjPPTvU1U7a4HlJGVIfpwOKsnGOvP1pFCyf6tvpRSOQY2wc8UUmSxqOuxcsOBTt0f8AeH50UUrgmIShPLj86N0fqKKKdwuI7psbDDp60UUVLIbP\/9k="}}}}},{"channel_id":1348905920,"post_id":6948,"date":1775718131000,"forwards":"6","views":"671","text":"<img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5341715473882955310\/thumb.webp?hash=UhoRguZ6acapByezT8HO4w&ts=1775839651' alt='\u2699\ufe0f'> <b>\u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/b><br><br>\u0415\u0441\u043b\u0438 <code>Volatile<\/code> \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0442\u043e <code>Interlocked<\/code> \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0441\u0442\u0438. \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0435\u0434\u0435\u043b\u0438\u043c\u044b\u0435 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u2014 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0442\u043e\u043a \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u043c\u0435\u0448\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0443<br><br>\u0421\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u044b\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u044d\u0442\u043e \u0441\u0447\u0451\u0442\u0447\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432:<pre>private int _counter;<br><br>public void Increment()<br>{<br>    Interlocked.Increment(ref _counter);<br>}<\/pre>\u0411\u0435\u0437 <code>Interlocked<\/code> \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f <code>_counter++<\/code> \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0442\u0440\u0438 \u0448\u0430\u0433\u0430: \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c, \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u0442\u044c, \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c. \u0414\u0432\u0430 \u043f\u043e\u0442\u043e\u043a\u0430 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0438\u0445 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438 \u0437\u0430\u0442\u0435\u0440\u0435\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430. <code>Interlocked.Increment<\/code> \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u0451 \u044d\u0442\u043e \u0437\u0430 \u043e\u0434\u0438\u043d \u043d\u0435\u0434\u0435\u043b\u0438\u043c\u044b\u0439 \u0448\u0430\u0433.<br><br><b>Lock-free \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 ID<\/b><br><br><code>Interlocked<\/code> \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u0431\u0435\u0437 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a:<pre>public int GetNextId()<br>{<br>    return Interlocked.Increment(ref _id);<br>}<\/pre>\u041a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0432\u0435\u0440\u043d\u0451\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0442\u044b\u0441\u044f\u0447\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e.<br><br><b>CompareExchange: \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435<br><\/b><br>\u0421\u0430\u043c\u0430\u044f \u043c\u043e\u0449\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0432 \u0430\u0440\u0441\u0435\u043d\u0430\u043b\u0435 <code>Interlocked<\/code>:<pre>if (Interlocked.CompareExchange(ref _state, 1, 0) == 0)<br>{<br>    \/\/ \u0423\u0441\u043f\u0435\u0448\u043d\u043e \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u0438\u0437 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f 0 \u0432 1<br>}<\/pre>\u041b\u043e\u0433\u0438\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u0430\u044f: \u0435\u0441\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0432\u043d\u043e <code>0<\/code>, \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 <code>1<\/code> \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0442\u0430\u0440\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0443\u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b <code>_state<\/code>, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u0442. \u042d\u0442\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f lock-free \u043a\u044d\u0448\u0438, \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0438 \u0438 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u044b\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438.<br><br><b>Volatile \u0438 Interlocked \u2014 \u043d\u0435 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435<br><\/b><br>\u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u0442\u044c, \u043d\u043e \u043e\u043d\u0438 \u0440\u0435\u0448\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438.<br><br><code>Volatile<\/code> \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u0442\u043e\u043a \u0432\u0438\u0434\u0438\u0442 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. <code>Interlocked<\/code> \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0441\u0430\u043c\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e, \u0431\u0435\u0437 \u0432\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432.<br><br>\u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043d\u0435\u0440\u0435\u0434\u043a\u043e \u043d\u0443\u0436\u043d\u044b \u043e\u0431\u0430. <code>Volatile<\/code> \u0447\u0442\u043e\u0431\u044b \u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0432\u0435\u0436\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, <code>Interlocked<\/code> \u0447\u0442\u043e\u0431\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0438\u0445 \u043c\u0435\u043d\u044f\u0442\u044c.<br><br>\ud83d\udccd \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f: <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/_cHBcg\"><b>\u0412\u0430\u043a\u0430\u043d\u0441\u0438\u0438<\/b><\/a><b> \u2022 <\/b><a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0417\u0430\u0434\u0430\u0447\u0438<\/b><\/a> \u2022 <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/B3RB2g\"><b>\u0421\u043e\u0431\u0435\u0441\u044b<\/b><\/a><br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5202102283411677983\/thumb.webp?hash=Y-t5IRhQ_FxzJB5ujWtZaA&ts=1775839651' alt='\ud83d\udc38'> <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430<\/b><\/a><br><br>#sharp_view","text_length":1807},{"channel_id":1348905920,"post_id":6947,"date":1775671198000,"forwards":"2","views":"304","text":"<img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5422439311196834318\/thumb.webp?hash=hlfqyyYQ_4x1wak0tmA_EQ&ts=1775839651' alt='\ud83d\udca1'> <b>\u0428\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u0430 \u043f\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u043c DateTime \u0432 C#<\/b><br><br>\u0412 C# \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u0442\u044b \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0432\u043e\u043a\u0440\u0443\u0433 \u0441\u0442\u0440\u043e\u043a \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432: \u0438\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 DateTime, DateTimeOffset \u0438 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u043e\u0431\u044a\u0435\u043a\u0442. <br><br>\u0414\u043b\u044f \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0438 \u043f\u0430\u0440\u044b \u043f\u0440\u0430\u0432\u0438\u043b, \u043d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0438 \u0441\u043f\u0430\u0441\u0430\u044e\u0442 \u043e\u0442 \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u044b \u0432 \u0434\u0430\u0442\u0430\u0445 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<br><br>\u0412\u043e\u0442 \u043a\u043e\u0440\u043e\u0442\u043a\u0430\u044f \u0448\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u0430 \u043f\u043e \u0441\u0430\u043c\u044b\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c:<blockquote>dd - \u0414\u0435\u043d\u044c \u0441 \u043d\u0443\u043b\u0435\u043c<br>ddd - \u041a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0434\u0435\u043d\u044c \u043d\u0435\u0434\u0435\u043b\u0438<br>dddd - \u041f\u043e\u043b\u043d\u044b\u0439 \u0434\u0435\u043d\u044c \u043d\u0435\u0434\u0435\u043b\u0438<br>MM - \u041c\u0435\u0441\u044f\u0446 \u0441 \u043d\u0443\u043b\u0435\u043c<br>MMM - \u041a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u043c\u0435\u0441\u044f\u0446<br>MMMM - \u041f\u043e\u043b\u043d\u044b\u0439 \u043c\u0435\u0441\u044f\u0446<br>yy - \u0413\u043e\u0434 \u0434\u0432\u0435 \u0446\u0438\u0444\u0440\u044b<br>yyyy - \u0413\u043e\u0434 \u0447\u0435\u0442\u044b\u0440\u0435 \u0446\u0438\u0444\u0440\u044b<br>HH - \u0427\u0430\u0441\u044b 24<br>hh - \u0427\u0430\u0441\u044b 12<br>mm - \u041c\u0438\u043d\u0443\u0442\u044b<br>ss - \u0421\u0435\u043a\u0443\u043d\u0434\u044b<br>fff - \u041c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b<br>tt - AM\/PM<br>zzz - \u0427\u0430\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u044f\u0441<\/blockquote>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0432 \u043a\u043e\u0434e:<pre>var dt = new DateTime(2026, 4, 7, 17, 34, 12);<br><br>dt.ToString(&quot;yyyy-MM-dd&quot;)  \/\/ 2026-04-07<br>dt.ToString(&quot;dd.MM.yyyy&quot;) \/\/ 07.04.2026<br>dt.ToString(&quot;HH:mm:ss&quot;)   \/\/ 17:34:12<br>dt.ToString(&quot;dddd, dd MMMM&quot;) \/\/ \u0432\u0442\u043e\u0440\u043d\u0438\u043a, 07 \u0430\u043f\u0440\u0435\u043b\u044f<\/pre>\u0414\u043b\u044f \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 ParseExact \u0438\u043b\u0438 TryParseExact. \u041e\u043d\u0438 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f, \u0443\u0431\u0438\u0440\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0438:<pre>var text = &quot;2026-04-07 17:34:12&quot;;<br>var parsed = DateTime.ParseExact(text, &quot;yyyy-MM-dd HH:mm:ss&quot;, null);<\/pre>\ud83d\udccd \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f: <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/_cHBcg\"><b>\u0412\u0430\u043a\u0430\u043d\u0441\u0438\u0438<\/b><\/a><b> \u2022 <\/b><a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0417\u0430\u0434\u0430\u0447\u0438<\/b><\/a> \u2022 <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/B3RB2g\"><b>\u0421\u043e\u0431\u0435\u0441\u044b<\/b><\/a><br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5202102283411677983\/thumb.webp?hash=Y-t5IRhQ_FxzJB5ujWtZaA&ts=1775839651' alt='\ud83d\udc38'> <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430<\/b><\/a><br><br>#sharp_view","text_length":1204},{"channel_id":1348905920,"post_id":6946,"date":1775653198000,"forwards":"1","views":"688","text":"<img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5943014095073582141\/thumb.webp?hash=nvcO-WHe9gLcWQ8YApZcaA&ts=1775839651' alt='\u2b50\ufe0f'> <b>\u041f\u043e\u0434\u0431\u043e\u0440\u043a\u0430 \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0439 \u0434\u043b\u044f \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u043e\u0432<\/b><br><br><a href=\"https:\/\/t.me\/csharpdevjob\/2380\" target=\"_blank\" rel=\"noreferrer nofollow\"><b>Middle Frontend Developer<\/b><\/a> (C#, WPF) \u2014 \u0433\u0438\u0431\u0440\u0438\u0434 \u0432 \u041d\u043e\u0432\u0438-\u0421\u0430\u0434\u0435, \u0421\u0435\u0440\u0431\u0438\u044f<br><br><a href=\"https:\/\/t.me\/csharpdevjob\/2378\" target=\"_blank\" rel=\"noreferrer nofollow\"><b>C#\/.NET Junior Developer<\/b><\/a> \u2014 \u043e\u0444\u0438\u0441 \u0432 \u0420\u043e\u0441\u0442\u043e\u0432\u0435-\u043d\u0430-\u0414\u043e\u043d\u0443<br><br><a href=\"https:\/\/t.me\/csharpdevjob\/2377\" target=\"_blank\" rel=\"noreferrer nofollow\"><b>Backend .NET developer<\/b><\/a> (\u00a0Middle\/Middle+) \u2014 \u0443\u0434\u0430\u043b\u0451\u043d\u043a\u0430<br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5271647098243134225\/thumb.webp?hash=FD55vv18F4WheYWRpJPyCw&ts=1775839651' alt='\u27a1\ufe0f'> \u0415\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u043e\u043f\u043e\u0432\u044b\u0445 \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0439 \u2014 <b>\u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u0430\u043d\u0430\u043b\u0435 <\/b><a href=\"https:\/\/t.me\/csharpdevjob\" target=\"_blank\" rel=\"noreferrer nofollow\"><b>C# Jobs<\/b><\/a><br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5202102283411677983\/thumb.webp?hash=Y-t5IRhQ_FxzJB5ujWtZaA&ts=1775839651' alt='\ud83d\udc38'> <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430<\/b><\/a>","text_length":285},{"channel_id":1348905920,"post_id":6945,"date":1775631708000,"forwards":"2","views":"668","text":"<img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5210956306952758910\/thumb.webp?hash=9Zbn37z8mMbsHR7AFHX8XA&ts=1775839651' alt='\ud83d\udc40'> <b>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043f\u0430\u043c\u044f\u0442\u0438<\/b><br><br>\u0411\u0430\u0433\u0438 \u0432 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0440\u0435\u0434\u043a\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u043b\u043e\u0433\u0438\u043a\u043e\u0439. \u0427\u0430\u0449\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438 \u0441\u0440\u0435\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u044e\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0434\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0411\u0435\u0437 \u044f\u0432\u043d\u044b\u0445 \u0431\u0430\u0440\u044c\u0435\u0440\u043e\u0432 \u043e\u0434\u0438\u043d \u043f\u043e\u0442\u043e\u043a \u043c\u043e\u0436\u0435\u0442 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0434\u0435\u043b\u0430\u043b \u0434\u0440\u0443\u0433\u043e\u0439. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0440\u0435\u0448\u0430\u0435\u0442 <code>Volatile<\/code>.<br><br><b>\u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/b><br><br><code>Volatile.Read<\/code> \u0438 <code>Volatile.Write<\/code> \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0431\u0430\u0440\u044c\u0435\u0440\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043d\u0443\u0436\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445:<br><br>\u2022 \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u043e <code>Volatile.Write<\/code> \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u0430 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0451<br>\u2022 \u0447\u0442\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 <code>Volatile.Read<\/code> \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u043e \u0434\u043e \u043d\u0435\u0433\u043e<br><br>\u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442: \u043a\u043e\u0433\u0434\u0430 \u043e\u0434\u0438\u043d \u043f\u043e\u0442\u043e\u043a \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0444\u043b\u0430\u0433, \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0443\u0432\u0438\u0434\u044f\u0442 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:<pre>private int _flag;<br><br>public void Set()<br>{<br>    Volatile.Write(ref _flag, 1);<br>}<br><br>public bool IsSet()<br>{<br>    return Volatile.Read(ref _flag) == 1;<br>}<\/pre><b>\u042d\u0442\u043e \u043b\u0435\u0433\u0447\u0435, \u0447\u0435\u043c lock<\/b><br><br><code>Volatile<\/code> \u043d\u0435 \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u0438 \u043d\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u0442\u043e\u043a. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0430\u0440\u044c\u0435\u0440 \u043f\u0430\u043c\u044f\u0442\u0438. \u041d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u043e\u0439.<br><br>\u041d\u043e \u0437\u0430 \u044d\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043b\u0430\u0442\u0438\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c: <code>Volatile<\/code> \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c, \u043d\u0435 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0441\u0442\u044c.<br><br><b>\u0413\u0434\u0435 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e<\/b><br><br>\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u044d\u0442\u043e \u0444\u043b\u0430\u0433 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437:<pre>if (Volatile.Read(ref _initialized) == 0)<br>{<br>    Initialize();<br>    Volatile.Write(ref _initialized, 1);<br>}<\/pre>\u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435, \u0432\u0441\u0451 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435. <code>Volatile<\/code> \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 \u0443\u0432\u0438\u0434\u044f\u0442 <code>_initialized == 1<\/code> \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f.<br><br><b>\u0413\u0434\u0435 \u044d\u0442\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/b><br><br>\u0415\u0441\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043c\u043e\u0433\u0443\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u043e\u0439\u0442\u0438 \u0432 \u044d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a, \u043a\u043e\u0434 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c. \u041c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 <code>_initialized == 0<\/code> \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 <code>_initialized = 1<\/code> \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0442\u043e\u043a \u0443\u0436\u0435 \u0443\u0441\u043f\u0435\u0435\u0442 \u0432\u043e\u0439\u0442\u0438 \u0438 \u0442\u043e\u0436\u0435 \u0432\u044b\u0437\u043e\u0432\u0435\u0442 <code>Initialize()<\/code>. \u0417\u0434\u0435\u0441\u044c \u043d\u0443\u0436\u0435\u043d <code>Interlocked<\/code> \u0438\u043b\u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 <code>lock<\/code>.<br><br><code>Volatile<\/code> \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u043e\u0434\u0438\u043d \u043f\u043e\u0442\u043e\u043a \u043f\u0438\u0448\u0435\u0442, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0447\u0438\u0442\u0430\u044e\u0442. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043f\u0438\u0441\u0430\u0442\u044c, \u0442\u043e \u043d\u0443\u0436\u043d\u0430 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0441\u0442\u044c, \u0438 \u0442\u0443\u0442 <code>Volatile<\/code> \u0443\u0436\u0435 \u043d\u0435 \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u0441\u044f.<br><br>\ud83d\udccd \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f: <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/_cHBcg\"><b>\u0412\u0430\u043a\u0430\u043d\u0441\u0438\u0438<\/b><\/a><b> \u2022 <\/b><a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0417\u0430\u0434\u0430\u0447\u0438<\/b><\/a> \u2022 <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/B3RB2g\"><b>\u0421\u043e\u0431\u0435\u0441\u044b<\/b><\/a><br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5202102283411677983\/thumb.webp?hash=Y-t5IRhQ_FxzJB5ujWtZaA&ts=1775839651' alt='\ud83d\udc38'> <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430<\/b><\/a><br><br>#il_\u043b\u044e\u043c\u0438\u043d\u0430\u0442\u043e\u0440","text_length":1986},{"channel_id":1348905920,"post_id":6944,"date":1775585063000,"forwards":"3","views":"248","text":"\ud83d\udee0 <b>\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0432 .NET<\/b><br><br>\u0422\u0440\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441 \u0432 .NET \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c: \u043a\u0430\u043a \u0434\u043e\u043b\u0433\u043e \u0436\u0438\u0432\u0451\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440.<br><br>Transient \u2014 \u043d\u043e\u0432\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443. \u041f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043b\u0451\u0433\u043a\u0438\u0445, stateless-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u0414\u043b\u044f \u0442\u044f\u0436\u0451\u043b\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0441 \u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0440\u043e\u0433\u043e.<br><br>Scoped \u2014 \u043e\u0434\u0438\u043d \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043d\u0430 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. DbContext \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a: \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u0443\u0442\u0438\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0435\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438.<br><br>Singleton \u2014 \u043e\u0434\u0438\u043d \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043d\u0430 \u0432\u0441\u0451 \u0432\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f stateless-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438\u043b\u0438 \u0442\u0435\u0445, \u0433\u0434\u0435 \u0432\u0441\u0451 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u044f\u0432\u043d\u043e \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043e \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430.<br><br><br>\u0421\u0435\u0440\u0432\u0438\u0441 \u0441 \u0434\u043b\u0438\u043d\u043d\u044b\u043c \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u043c \u0446\u0438\u043a\u043b\u043e\u043c \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u043c. \u0412\u043e\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430\u044f \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439:<pre>Singleton  \u2192  \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442  \u2192  Singleton<br>Scoped     \u2192  \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442  \u2192  Singleton, Scoped<br>Transient  \u2192  \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442  \u2192  Singleton, Scoped, Transient<\/pre>\ud83d\udccd \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f: <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/_cHBcg\"><b>\u0412\u0430\u043a\u0430\u043d\u0441\u0438\u0438<\/b><\/a><b> \u2022 <\/b><a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0417\u0430\u0434\u0430\u0447\u0438<\/b><\/a> \u2022 <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/B3RB2g\"><b>\u0421\u043e\u0431\u0435\u0441\u044b<\/b><\/a><br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5202102283411677983\/thumb.webp?hash=Y-t5IRhQ_FxzJB5ujWtZaA&ts=1775839651' alt='\ud83d\udc38'> <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430<\/b><\/a><br><br>#sharp_view","text_length":1004},{"channel_id":1348905920,"post_id":6943,"date":1775566964000,"forwards":"9","views":"652","text":"\ud83d\udccd \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f: <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/_cHBcg\"><b>\u0412\u0430\u043a\u0430\u043d\u0441\u0438\u0438<\/b><\/a><b> \u2022 <\/b><a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0417\u0430\u0434\u0430\u0447\u0438<\/b><\/a> \u2022 <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/B3RB2g\"><b>\u0421\u043e\u0431\u0435\u0441\u044b<\/b><\/a><br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5202102283411677983\/thumb.webp?hash=Y-t5IRhQ_FxzJB5ujWtZaA&ts=1775839651' alt='\ud83d\udc38'> <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430<\/b><\/a><br><br>#garbage_collector","text_length":84,"media":{"root":"\/003\/HxsAAMCrZlAAAAAAtVmS_OeNlko","photo":{"thumbs":{"m":{"w":320,"h":320,"hash":"Jr8iwg62VKfceCWn32548w&ts=1775839651"},"x":{"w":800,"h":800,"hash":"_lZr7ytIgqGwMPE6i6l3Rw&ts=1775839651"},"y":{"w":1080,"h":1080,"hash":"4GA6f1nFzXuEZOFRzf8y7A&ts=1775839651"},"i":{"bytes":"AoACg|C3a2tubOJmhQsVBJIpPKtz0jtasWX\/AB5Q\/wC4KfI6xLk49hQBU8qA4PlWuPr\/APWo8q3zgRWv5\/8A1qsSSr5KsMYJ7jNCTKTjAAHGelK6HZkN5aW62krLCgIUkECipr05spsf3DRTER27mPT426AIKg3eacnqT3p4R5NOgVBn5RmgW8ojxt5z0qJXLjZK4s4WRUVMHb15qK5jIlyoOCBnFWEhkDBqkjRgDxwfWkPmsMnz\/Z0uRg7DRRcgiwmB7IaK0Wxmxlnd262kStMgIUAgmpvtlt\/z3j\/76oooAPtlt\/z3j\/76o+2W3\/PeP\/vqiigCG8u7drSVVmQkqQADRRRQB\/\/Z"}}}}},{"channel_id":1348905920,"post_id":6942,"date":1775545383000,"forwards":"16","views":"548","comments":"1","text":"<img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5305265301917549162\/thumb.webp?hash=nf4zfcU944usNF7ZpYynqQ&ts=1775839651' alt='\ud83d\udcce'> <b>\u041a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0434\u0432\u0430 \u043c\u0438\u0440\u0430<\/b><br><br><code>TaskCompletionSource&lt;T&gt;<\/code> \u0440\u0435\u0448\u0430\u0435\u0442 \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443: \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u0435\u0440\u043d\u0443\u0442\u044c <code>Task<\/code>, \u043d\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>async\/await<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043b\u043b\u0431\u044d\u043a, \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b.<br><br>\u041f\u0440\u0438\u043c\u0435\u0440 \u0441 \u043a\u043e\u043b\u043b\u0431\u044d\u043a-API<br><br>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>BeginOperation<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e \u0441\u0442\u0430\u0440\u0438\u043d\u043a\u0435 \u0447\u0435\u0440\u0435\u0437 <code>onSuccess<\/code> \u0438 <code>onError<\/code>. \u041e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 <code>Task<\/code>:<pre>public Task&lt;string&gt; GetDataAsync()<br>{<br>    var tcs = new TaskCompletionSource&lt;string&gt;(<br>        TaskCreationOptions.RunContinuationsAsynchronously);<br><br>    BeginOperation(<br>        onSuccess: result =&gt; tcs.SetResult(result),<br>        onError: ex =&gt; tcs.SetException(ex));<br><br>    return tcs.Task;<br>}<\/pre>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0438\u0448\u0435\u0442 <code>await GetDataAsync()<\/code> \u0438 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0438.<br><br>\u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u0430\u0436\u0435\u043d <code>RunContinuationsAsynchronously<\/code><br><br>\u042d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0444\u043b\u0430\u0433 \u0434\u043b\u044f \u0433\u0430\u043b\u043e\u0447\u043a\u0438. \u0411\u0435\u0437 \u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0442\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u0432\u0430\u043b <code>SetResult<\/code>. \u0412 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0439 \u0440\u0435\u0435\u043d\u0442\u0435\u0440\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u0434\u0435\u0434\u043b\u043e\u043a\u0443.<br><br>\u0421 \u0444\u043b\u0430\u0433\u043e\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f \u0443\u0445\u043e\u0434\u044f\u0442 \u0432 \u043f\u0443\u043b \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u043c.<br><br><b>\u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0446\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432<\/b><br><br>\u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u0441\u0438\u043b\u0430 <code>TaskCompletionSource<\/code> \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b:<pre>public Task WaitForSignalAsync()<br>{<br>    return _signalTcs.Task;<br>}<br><br>public void Signal()<br>{<br>    _signalTcs.TrySetResult();<br>}<\/pre>\u041e\u0434\u0438\u043d \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0436\u0434\u0451\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0447\u0435\u0440\u0435\u0437 <code>await WaitForSignalAsync()<\/code>, \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 <code>Signal()<\/code> \u043a\u043e\u0433\u0434\u0430 \u0433\u043e\u0442\u043e\u0432. \u042d\u0442\u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0434\u043b\u044f \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0445 async-\u043b\u043e\u043a\u043e\u0432, \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439 \u0438 event-\u0441\u0438\u0441\u0442\u0435\u043c.<br><br><b>\u041a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c<\/b><br><br>\u041f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u043e\u043b\u043b\u0431\u044d\u043a-API \u0432 <code>Task<\/code>, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u0438\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435\u043c \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043a\u043e\u0434\u0430. \u0415\u0441\u043b\u0438 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0438 <code>async\/await<\/code> \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f, <code>TaskCompletionSource<\/code> \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c.<br><br>\ud83d\udccd \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f: <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/_cHBcg\"><b>\u0412\u0430\u043a\u0430\u043d\u0441\u0438\u0438<\/b><\/a><b> \u2022 <\/b><a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0417\u0430\u0434\u0430\u0447\u0438<\/b><\/a> \u2022 <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/B3RB2g\"><b>\u0421\u043e\u0431\u0435\u0441\u044b<\/b><\/a><br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5202102283411677983\/thumb.webp?hash=Y-t5IRhQ_FxzJB5ujWtZaA&ts=1775839651' alt='\ud83d\udc38'> <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430<\/b><\/a><br><br>#sharp_view","text_length":1857,"media":{"root":"\/002\/HhsAAMCrZlAAAAAAIpVo82gX_j0","photo":{"thumbs":{"m":{"w":320,"h":320,"hash":"q7a1wumT_k3uvjtJFtlGiQ&ts=1775839651"},"x":{"w":800,"h":800,"hash":"6j1IKA32f89NwoIs-zG2OQ&ts=1775839651"},"y":{"w":1080,"h":1080,"hash":"tgPK26HSjzP70Vh0aSbd5w&ts=1775839651"},"i":{"bytes":"AoACg|DQjjiECM0YORycZpcQZ\/1R\/wC\/Z\/wqSD\/UJ\/uipKbbuJJWK4Fuf+WR\/wC\/Z\/wpMQc\/ujx\/0zP+FWaKLsLIrSRxGB2VAMD+7iipbj\/UP\/umirg3YiS1C3\/1Cf7oqG8lMZQK2CTU1v8A6hP90VDNLGk21h8xAPSs3uaRJbcsY8tyT3pDcDsKrwTNDAiuuCQfw9KVTkYAyc4oBk8jbrVmIxlTxRSzDFu49ForWGxEtxkM0YhUF1Bx60jmB+rr+dFFJxVwTdiFo4s5Dx59elSRiFCCZQT9aKKXKgux800ZhcB1JI9aKKKuKViW2f\/Z"}}}}},{"channel_id":1348905920,"post_id":6941,"date":1775498398000,"forwards":"26","views":"653","comments":"1","text":"<img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5444965061749644170\/thumb.webp?hash=2lmBoGOv30hB-xC1-yyHpw&ts=1775839651' alt='\ud83d\udc68\u200d\ud83d\udcbb'> <b>\u041c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 .NET<\/b><br><br>\u0423\u0442\u0435\u0447\u043a\u0438 \u0432 \u043b\u043e\u0433\u0430\u0445 \u044d\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0445 \u0438 \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u044b\u0445 compliance-\u0440\u0438\u0441\u043a\u043e\u0432. \u041f\u0430\u0440\u043e\u043b\u044c \u0432 \u0442\u0440\u0435\u0439\u0441\u0435, email \u0432 structured log, \u043d\u043e\u043c\u0435\u0440 \u043a\u0430\u0440\u0442\u044b \u0432 HTTP-\u0434\u0430\u043c\u043f\u0435. \u0412\u0441\u0451 \u044d\u0442\u043e \u043a\u043e\u043f\u0438\u0442\u0441\u044f \u0432 Kibana \u0438 \u0436\u0434\u0451\u0442 \u0441\u0432\u043e\u0435\u0433\u043e \u0447\u0430\u0441\u0430.<br><br>Moongazing.Veil \u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f .NET 8\/9\/10, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u0443 \u0434\u044b\u0440\u0443 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u043e, \u043d\u0430 \u0432\u0441\u0435\u0445 \u0443\u0440\u043e\u0432\u043d\u044f\u0445 \u0441\u0440\u0430\u0437\u0443.<br><br>\u0422\u0440\u0438 \u043f\u0430\u043a\u0435\u0442\u0430:<pre># \u044f\u0434\u0440\u043e<br>dotnet add package Moongazing.Veil             <br># HTTP middleware<br>dotnet add package Moongazing.Veil.AspNetCore  <br># structured logs<br>dotnet add package Moongazing.Veil.Serilog<\/pre><b>\u0421\u043b\u043e\u0439 1. \u0421\u0442\u0440\u043e\u043a\u0438 \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b<\/b><br><br>\u0410\u0432\u0442\u043e-\u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u0434\u0430\u043d\u043d\u044b\u0445: email, \u0442\u0435\u043b\u0435\u0444\u043e\u043d, \u043a\u0430\u0440\u0442\u0430, IBAN, JWT, IP, API-\u043a\u043b\u044e\u0447 \u0438 \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0431\u0435\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0430:<pre>Veil.Mask(&quot;john.doe@gmail.com&quot;);   <br> \/\/ j******e@g****.com<br>Veil.Mask(&quot;5425123456789012&quot;);      <br>\/\/ 5425 **** **** 9012<br>Veil.Mask(&quot;Bearer eyJhbGci...&quot;);    <br>\/\/ Bearer eyJh***...<\/pre>\u0414\u043b\u044f DTO \u0430\u0442\u0440\u0438\u0431\u0443\u0442 [Veiled]:<pre>public class CustomerDto<br>{<br>    public string Name { get; set; }<br><br>    [Veiled]<br>    public string Email { get; set; }<br><br>    [Veiled(Show = 4, Position = VeilPosition.Last)]<br>    public string CardNumber { get; set; }<br>}<br><br>var masked = Veil.MaskObject(original); \/\/ original \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u0442\u0441\u044f<\/pre><b>\u0421\u043b\u043e\u0439 2. HTTP-\u0442\u0440\u0430\u0444\u0438\u043a<\/b>:<pre>app.UseVeilRedaction(); \/\/ middleware \u0432 pipeline<br><br>\/\/ \u043a\u043e\u043d\u0444\u0438\u0433:<br>http.RedactHeaders(&quot;Authorization&quot;, &quot;X-Api-Key&quot;);<br>http.RedactBodyFields(&quot;$.password&quot;, &quot;$.creditCard&quot;);<br>http.RedactQueryParams(&quot;token&quot;, &quot;api_key&quot;);<\/pre>\u0414\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u043b\u043e\u0433\u0438.<br><br><b>\u0421\u043b\u043e\u0439 3. Serilog \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u0434\u0435<\/b>:<pre>Log.Logger = new LoggerConfiguration()<br>    .Destructure.WithVeil()<br>    .Enrich.WithVeilRedaction()<br>    .WriteTo.Console()<br>    .CreateLogger();<\/pre>\u0412\u0441\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 <code>Log.Information(&quot;User {@User}&quot;, user)<\/code> \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u041d\u0438 \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.<br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5271647098243134225\/thumb.webp?hash=FD55vv18F4WheYWRpJPyCw&ts=1775839651' alt='\u27a1\ufe0f'> <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/aMQd0w\"><b>NuGet<\/b><\/a><br><br>\ud83d\udccd \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f: <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/_cHBcg\"><b>\u0412\u0430\u043a\u0430\u043d\u0441\u0438\u0438<\/b><\/a><b> \u2022 <\/b><a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0417\u0430\u0434\u0430\u0447\u0438<\/b><\/a> \u2022 <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/B3RB2g\"><b>\u0421\u043e\u0431\u0435\u0441\u044b<\/b><\/a><br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5202102283411677983\/thumb.webp?hash=Y-t5IRhQ_FxzJB5ujWtZaA&ts=1775839651' alt='\ud83d\udc38'> <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430<\/b><\/a><br><br>#async_news","text_length":1840,"media":{"root":"\/003\/HRsAAMCrZlAAAAAAtVmS_OeNlko","photo":{"thumbs":{"m":{"w":320,"h":320,"hash":"udmuEkNDWNfcoQz-GVI7aQ&ts=1775839651"},"x":{"w":800,"h":800,"hash":"LKd0olnAjUAE2M1hnb5HAA&ts=1775839651"},"y":{"w":1080,"h":1080,"hash":"atS3q4Sm-ZjVAYM16TtGdg&ts=1775839651"},"i":{"bytes":"AoACg|DQjij+zq3lqzbc\/WjYM\/8AHr\/KpYP9Qn+6KWSNJMbxnHvim27iSViPy0\/59\/5Umxf+fU\/+O\/40gWEj5Vymcbg\/fpUyRpHnaMZ96LsLIimhjELkIoOPSipLj\/UP\/umirg3YiS1CD\/UJ\/uinSBmRgpAJHBPamwf6hP8AdFSVD3LWxT\/eGzUZWR2I+9x79qtR\/cXnPHrmoAp+zsMEbc8\/hirC\/dH0pDGXH+of\/dNFFx\/qH\/3TRWkdiJbkcM0YhUF1BA9ak8+L\/nov50UUnFXBNjDJESf3oweoyMU\/z4v+ei\/nRRRyoLsjmmjMLgOpJHrRRRVxSsS2f\/\/Z"}}}}},{"channel_id":1348905920,"post_id":6939,"date":1775464198000,"forwards":"13","views":"528","text":"<img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5305265301917549162\/thumb.webp?hash=nf4zfcU944usNF7ZpYynqQ&ts=1775839651' alt='\ud83d\udcce'> <b>\u0413\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u043a\u044d\u0448 \u0434\u043b\u044f .NET \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c<\/b><br><br>\u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 .NET \u0447\u0430\u0441\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a: \u043b\u0438\u0431\u043e <code>IMemoryCache<\/code> \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u0430, \u043b\u0438\u0431\u043e Redis \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432. \u0410 \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0438 \u0442\u043e, \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u0441 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c\u044e \u043a \u0441\u0431\u043e\u044f\u043c, \u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431\u0451\u0440\u0442\u043a\u0438 \u0441\u0430\u043c\u0438\u043c.<br><br>FusionCache \u044d\u0442\u043e \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u043a\u044d\u0448 \u0434\u043b\u044f .NET \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c. \u041e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0434\u0432\u0443\u0445\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u043a\u044d\u0448: L1 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 L2 \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0440\u0435\u0436\u0438\u043c\u0430\u043c\u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u0434 \u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.<br><br>\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0431\u0435\u0437 DI:<pre>var cache = new FusionCache(new FusionCacheOptions());<br><br>var product = cache.GetOrSet&lt;Product&gt;(<br>    $&quot;product:{id}&quot;,<br>    _ =&gt; GetProductFromDb(id),<br>    TimeSpan.FromSeconds(30)<br>);<\/pre>\u0421 DI \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438:<pre>services.AddFusionCache()<br>    .WithDefaultEntryOptions(new FusionCacheEntryOptions()<br>        .SetDuration(TimeSpan.FromMinutes(2))<br>        .SetPriority(CacheItemPriority.High)<br>        .SetFailSafe(true, TimeSpan.FromHours(2))<br>        .SetFactoryTimeouts(<br>            TimeSpan.FromMilliseconds(100),  \/\/ soft timeout<br>            TimeSpan.FromSeconds(2)           \/\/ hard timeout<br>        )<br>    );<\/pre>Fail-safe \u0437\u0434\u0435\u0441\u044c \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442: \u0435\u0441\u043b\u0438 \u0444\u0430\u0431\u0440\u0438\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u043f\u0430\u043b\u0430 \u0438\u043b\u0438 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u043b\u0430 \u0442\u0430\u0439\u043c\u0430\u0443\u0442, \u043a\u044d\u0448 \u0432\u0435\u0440\u043d\u0451\u0442 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0430 \u0441\u0440\u043e\u043a \u0434\u043e \u0434\u0432\u0443\u0445 \u0447\u0430\u0441\u043e\u0432.<br><br><b>\u0422\u0440\u0438 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435<\/b><br><br>1. Cache Stampede. \u041a\u043e\u0433\u0434\u0430 \u043a\u043b\u044e\u0447 \u043f\u0440\u043e\u0442\u0443\u0445\u0430\u0435\u0442, \u0441\u043e\u0442\u043d\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438\u0434\u0443\u0442 \u043f\u0440\u044f\u043c\u043e \u0432 \u0431\u0430\u0437\u0443. FusionCache \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0442\u0430.<br><br>2. \u041c\u0435\u0434\u043b\u0435\u043d\u043d\u0430\u044f \u0444\u0430\u0431\u0440\u0438\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 \u0431\u0430\u0437\u0430 \u0438\u043b\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442, \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f. FusionCache \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 soft \u0438 hard \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u044b: \u043f\u0440\u0438 soft \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u0435\u0441\u0442\u044c), \u043f\u0440\u0438 hard \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0435 \u0431\u0440\u043e\u0441\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0438 \u0432\u044b \u0441\u0430\u043c\u0438 \u0440\u0435\u0448\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c.<br><br>3. \u0421\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0434, \u0438\u0445 L1-\u043a\u044d\u0448\u0438 \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0437\u043e\u0439\u0442\u0438\u0441\u044c. Backplane, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0435\u0440\u0435\u0437 Redis Pub\/Sub, \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u043d\u043e\u0434\u044b \u043e\u0431 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0445.<br><br>FusionCache \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 HybridCache \u043e\u0442 Microsoft \u0438 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f.<br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5271647098243134225\/thumb.webp?hash=FD55vv18F4WheYWRpJPyCw&ts=1775839651' alt='\u27a1\ufe0f'> <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/F77IZQ\"><b>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439<\/b><\/a><br><br>\ud83d\udccd \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f: <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/_cHBcg\"><b>\u0412\u0430\u043a\u0430\u043d\u0441\u0438\u0438<\/b><\/a><b> \u2022 <\/b><a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0417\u0430\u0434\u0430\u0447\u0438<\/b><\/a> \u2022 <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/B3RB2g\"><b>\u0421\u043e\u0431\u0435\u0441\u044b<\/b><\/a><br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5202102283411677983\/thumb.webp?hash=Y-t5IRhQ_FxzJB5ujWtZaA&ts=1775839651' alt='\ud83d\udc38'> <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430<\/b><\/a><br><br>#sharp_view","text_length":2133,"media":{"root":"\/012\/GxsAAMCrZlAAAAAA4Npf06SqYbE","photo":{"thumbs":{"m":{"w":320,"h":320,"hash":"0FYGxesxCmBHy5Td7tzrfA&ts=1775839651"},"x":{"w":800,"h":800,"hash":"arVWWqj0cuDr4xrr10qT3Q&ts=1775839651"},"y":{"w":1080,"h":1080,"hash":"Lnx2KCW0lMWQaX01IBSLqQ&ts=1775839651"},"i":{"bytes":"AoACg|DRhji8pCyrkjvUaoQRvjgx3INSxRo8KFlB+UdaVoUUEpEmenpTbdxJKxCUbjEcH50ojODmOEHPAzR5bng28fHvx\/nmpRCj\/NJEm786LsLIZNHD5T7VXIXPFFOlijSFyiAHaRkCiri3YiSVx9v\/AKhP90U2ecQj1J7U6D\/UJ\/uiq95CzsTnC47VmzRDFmnL+YCCp7HpVqGUSjkYYdRVBY4tgVs9MEZNWrWEpIWXITGMGkNk1x\/qH\/3TRRcf6h\/900VrHYzluRwzRiFQXUED1qTz4v8Anov50UUOKuCbE86HOd65+tL58X\/PRfzoopcqC7I5pozC4DqSR60UUVcUrEtn\/9k="}}}}},{"channel_id":1348905920,"post_id":6938,"date":1775394225000,"forwards":"1","views":"1.4K","text":"<img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5319161050128459957\/thumb.webp?hash=jQrftIwVUNi72sSYBb5lpA&ts=1775839651' alt='\ud83d\udc68\u200d\ud83d\udcbb'> <b>\u041f\u0435\u0440\u0432\u044b\u0439 \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442 \u0430\u043f\u0440\u0435\u043b\u044f<\/b><br><br>\u041f\u043e\u0448\u0443\u0442\u0438\u043b\u0438 \u0438 \u0445\u0432\u0430\u0442\u0438\u0442.<br><br>\u2014 <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u0438\u043d\u0438\u043b\u0430<\/b><\/a><b><br><\/b><br>\u2014 <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>OpenFeature \u0434\u043b\u044f .NET<\/b><\/a><br><br>\u2014 <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>dotnet-adr<\/b><\/a><b> \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0437\u0430\u043c\u0435\u0442\u043e\u043a<\/b><br><br>\u2014 <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>C# 15 Union Types<\/b><\/a><br><br>\ud83d\udccd \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f: <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/_cHBcg\"><b>\u0412\u0430\u043a\u0430\u043d\u0441\u0438\u0438<\/b><\/a><b> \u2022 <\/b><a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0417\u0430\u0434\u0430\u0447\u0438<\/b><\/a> \u2022 <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/B3RB2g\"><b>\u0421\u043e\u0431\u0435\u0441\u044b<\/b><\/a><br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5202102283411677983\/thumb.webp?hash=Y-t5IRhQ_FxzJB5ujWtZaA&ts=1775839651' alt='\ud83d\udc38'> <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430<\/b><\/a><br><br>#async_news","text_length":270,"media":{"root":"\/001\/GhsAAMCrZlAAAAAAtMpbNEFDgrc","photo":{"thumbs":{"m":{"w":320,"h":320,"hash":"XS65y8kD3up11sbn2boD7g&ts=1775839651"},"x":{"w":800,"h":800,"hash":"9CbOWCTCLy3qAywgEVid1A&ts=1775839651"},"y":{"w":1080,"h":1080,"hash":"I9a9rHQFcnU8pGyGubMRlQ&ts=1775839651"},"i":{"bytes":"AoACg|CeaTyomfG7Haq328\/88h\/33\/8AWq+sgjViRn3pHnBRl2tk9DgcVMY3RkrdSiL8n\/lkP++\/\/rU+G786UJ5eM9wc4pzyCMDOck4AqM3CnHDn8P8A69W4La5TStoXKKigIdN6nINFZNJGfyJKTav90flTqgF0hB47nGKFfoCHNHvXDKCPTApq28feNfyFL9pTHOc8dKXz17AnnFW5t9C3J2tYkACgAAADsKKWisyAppUnG1tv4daKKAG7H\/56H8hTlBHVt34UUUAOooooA\/\/Z"}}}}},{"channel_id":1348905920,"post_id":6937,"date":1775379798000,"forwards":"17","views":"908","text":"<b><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5897705437096055739\/thumb.webp?hash=cQIeFjrttwxQIr1wuO-O6A&ts=1775839651' alt='\ud83d\uddc2'><\/b><b> \u0413\u0430\u0439\u0434: \u0433\u0434\u0435 \u0435\u0449\u0451 \u0438\u0441\u043a\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 IT<\/b><br><br>C\u043e\u0431\u0440\u0430\u043b\u0438 30 \u0434\u0436\u043e\u0431-\u0441\u0430\u0439\u0442\u043e\u0432 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0432\u043a\u0443\u0441: \u0434\u043b\u044f \u0434\u0436\u0443\u043d\u043e\u0432 \u0441 \u043f\u0435\u0440\u0432\u044b\u043c pet-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c, \u0434\u043b\u044f \u043c\u0438\u0434\u043b\u043e\u0432 \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u0443\u0434\u0430\u043b\u0451\u043d\u043a\u0438, \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0433\u0435\u0439\u043c\u0434\u0435\u0432\u0435 \u0438\u043b\u0438 \u0443\u0435\u0445\u0430\u0442\u044c \u0432 \u0415\u0432\u0440\u043e\u043f\u0443.<br><br>\u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u0430\u0439\u0442 \u043e\u043f\u0438\u0441\u0430\u043d \u043a\u043e\u0440\u043e\u0442\u043a\u043e \u0438 \u043f\u043e \u0434\u0435\u043b\u0443: \u0447\u0442\u043e \u0437\u0430 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u044f, \u043a\u0430\u043a\u0438\u0435 \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0438, \u0434\u043b\u044f \u043a\u0430\u043a\u043e\u0433\u043e \u0433\u0440\u0435\u0439\u0434\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u043b\u044f \u0441\u0442\u0430\u0436\u0438\u0440\u043e\u0432\u043e\u043a \u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0438 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0438\u0449\u0435\u0442 \u0432\u0430\u043b\u044e\u0442\u043d\u0443\u044e \u0443\u0434\u0430\u043b\u0451\u043d\u043a\u0443.<br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5271647098243134225\/thumb.webp?hash=FD55vv18F4WheYWRpJPyCw&ts=1775839651' alt='\u27a1\ufe0f'> <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/proglib.io\/sh\/i0Qg95HkWR\"><b>\u0418\u0441\u043a\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443<\/b><\/a><br><br>\ud83d\udccd \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f: <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/_cHBcg\"><b>\u0412\u0430\u043a\u0430\u043d\u0441\u0438\u0438<\/b><\/a><b> \u2022 <\/b><a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0417\u0430\u0434\u0430\u0447\u0438<\/b><\/a> \u2022 <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/B3RB2g\"><b>\u0421\u043e\u0431\u0435\u0441\u044b<\/b><\/a><br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5202102283411677983\/thumb.webp?hash=Y-t5IRhQ_FxzJB5ujWtZaA&ts=1775839651' alt='\ud83d\udc38'> <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430<\/b><\/a>","text_length":473,"media":{"root":"\/002\/GRsAAMCrZlAAAAAAIpVo82gX_j0","photo":{"thumbs":{"m":{"w":320,"h":320,"hash":"_eh15uA_EGPE11dJHKm4RQ&ts=1775839651"},"x":{"w":800,"h":800,"hash":"CmybuntzjWObZ4a-c4nWkw&ts=1775839651"},"y":{"w":1080,"h":1080,"hash":"hF1sBrh05yVFpLhCzh6pmQ&ts=1775839651"},"i":{"bytes":"AoACg|C9EsYRAYixK5yFzT8Q\/wDPE\/8AfFSQf6hP90U9mVFyxwKbbuJJWINsIYjyTx\/sUEQj\/lifpsqQTxEA+YvPvUlK4WRVkSIxNiIqdpOSuKKmuP8AUP8A7porSLdiJLUIP9Qn0FZ95K0jkKwCL04q\/EwS2Vj0C5rJd1ctwQCeKzkm9ir7CH75xvwCOcdRWhYM7w5YtgDAzWaAdwCydfWtS3MdvFtaQFupIOalXKJrj\/UP\/umiif8A493\/AN2ito7ES3IBKn2PbvG7ZjGfassKxPTFFFUla5Dd7EkaYfJ7VNHguAxAXPr2ooqbXLWiLs00ZhcB1JI9aKKKqKViWz\/\/2Q=="}}}}},{"channel_id":1348905920,"post_id":6936,"date":1775307898000,"forwards":"9","views":"416","text":"\ud83d\udccd \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f: <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/_cHBcg\"><b>\u0412\u0430\u043a\u0430\u043d\u0441\u0438\u0438<\/b><\/a><b> \u2022 <\/b><a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0417\u0430\u0434\u0430\u0447\u0438<\/b><\/a> \u2022 <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/B3RB2g\"><b>\u0421\u043e\u0431\u0435\u0441\u044b<\/b><\/a><br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5202102283411677983\/thumb.webp?hash=Y-t5IRhQ_FxzJB5ujWtZaA&ts=1775839651' alt='\ud83d\udc38'> <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430<\/b><\/a><br><br>#garbage_collector","text_length":84,"media":{"root":"\/00e\/GBsAAMCrZlAAAAAAqNy6AwA23V4","photo":{"thumbs":{"m":{"w":320,"h":320,"hash":"NnPDhUoBuWmLJ8DHZ0agsg&ts=1775839651"},"x":{"w":800,"h":800,"hash":"jlIzlaTe4LOxXmRi77hEjA&ts=1775839651"},"y":{"w":1080,"h":1080,"hash":"EfmYqghqNOO66HDFYs6CsA&ts=1775839651"},"i":{"bytes":"AoACg|CxBbQm1hPlpkoCcx7s1J9li6eXHk9P3JpbfyzaQBywPljoSP5VKhhDAqzE9skmgCD7LESP3ceOv+pNOW2txndCpHA\/1RFXKKAKN3a262krLCgIQkHGKKnvv+PKb\/cNFAGRcyOiWwR2XMQ4H41X86bH+tk\/OpL37lt\/1xH9arcev6UAPM8vaWT\/AL6NJ583\/PV\/++jTePX9KOPX9KALdpI7x3Id2YeSepzRSWX3br\/rif6UUASSxpcRQEXEK7YwpDtg5qL7EP8An7t\/++\/\/AK1FFAB9iH\/P3b\/99\/8A1qPsQ\/5+7f8A77\/+tRRQBJFGlvFOTcQtujKgI2TmiiigD\/\/Z"}}}}},{"channel_id":1348905920,"post_id":6935,"date":1775293449000,"forwards":"1","views":"148","text":"<img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5444965061749644170\/thumb.webp?hash=2lmBoGOv30hB-xC1-yyHpw&ts=1775839651' alt='\ud83d\udc68\u200d\ud83d\udcbb'> <b>\u0414\u0430\u043d\u043d\u044b\u0435 \u0432\u0430\u0436\u043d\u0435\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432<\/b><br><br>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u0435\u0440\u0435\u043e\u0446\u0435\u043d\u0438\u0432\u0430\u044e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b. \u041f\u0440\u0438\u043d\u044f\u0442\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0438 \u0443\u043c\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0435\u043b\u0430\u044e\u0442 \u043a\u043e\u0434 \u0445\u043e\u0440\u043e\u0448\u0438\u043c. \u041d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0432\u0441\u0451 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445.<br><br><b>\u041f\u043e\u0447\u0435\u043c\u0443 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u0430<\/b><br><br>\u041a\u043e\u0433\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c. \u0415\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c, \u0432\u0435\u0434\u044c \u043e\u043d \u0432\u044b\u0442\u0435\u043a\u0430\u0435\u0442 \u0438\u0437 \u0444\u043e\u0440\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0430\u043c. \u0420\u043e\u0431 \u041f\u0430\u0439\u043a \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043b \u044d\u0442\u043e \u0435\u0449\u0451 \u0432 1989 \u0433\u043e\u0434\u0443, \u0438 \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c.<br><br>\u0415\u0441\u043b\u0438 \u044f\u0441\u043d\u043e, \u043a\u0442\u043e \u0432\u043b\u0430\u0434\u0435\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043a\u0430\u043a \u043e\u043d\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u043a\u0430\u043a \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u043a\u043e\u0434\u0430 \u0443\u043f\u0440\u043e\u0449\u0430\u044e\u0442\u0441\u044f \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0438\u043b\u0438\u0439.<br><br><b>\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u043f\u043b\u043e\u0445\u043e<\/b><br><br>\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u0437\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u0430\u043c \u043c\u0435\u0441\u0442. \u041e\u0431\u044a\u0435\u043a\u0442\u044b \u043c\u0443\u0442\u0438\u0440\u0443\u044e\u0442 \u0442\u0430\u043c, \u0433\u0434\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b. \u041a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043b\u043e\u043c\u0430\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u0432 \u0442\u0440\u0451\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0442\u0440\u0430\u0442\u0438\u0442 \u0432\u0440\u0435\u043c\u044f \u043d\u0435 \u043d\u0430 \u043d\u043e\u0432\u044b\u0435 \u0444\u0438\u0447\u0438, \u0430 \u043d\u0430 \u043f\u043e\u0438\u0441\u043a \u043f\u0440\u0438\u0447\u0438\u043d, \u043f\u043e\u0447\u0435\u043c\u0443 \u0441\u0442\u0430\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<br>\u0423\u043c\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0432\u0435\u0440\u0445 \u043f\u043b\u043e\u0445\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0435 \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443. \u041e\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0435\u0451.<br><br><b>\u0427\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b<\/b><br><br>\u041a\u043e\u0433\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0437\u0430\u0434\u0430\u0451\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u043d\u0435 &quot;\u043a\u0430\u043a \u044d\u0442\u043e \u043f\u043e\u0447\u0438\u043d\u0438\u0442\u044c?&quot;, \u0430 &quot;\u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0442\u0435\u0447\u044c \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u0443?&quot;, \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d. \u0421\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043a\u043e\u0440\u043e\u0447\u0435. \u0411\u0430\u0433\u0438 \u0438\u0441\u0447\u0435\u0437\u0430\u044e\u0442. \u041d\u043e\u0432\u044b\u0435 \u0444\u0438\u0447\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0431\u0435\u0437 \u0441\u0442\u0440\u0430\u0445\u0430 \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435.<br>\u041d\u0438\u043a\u0430\u043a\u043e\u0439 \u043c\u0430\u0433\u0438\u0438. \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0441 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430.<br><br><b>\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440<\/b><br><br>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u0438\u0441\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u0430. \u041a\u0442\u043e \u0432\u043b\u0430\u0434\u0435\u0435\u0442 \u044d\u0442\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0413\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u0440\u0430\u0432\u0434\u044b. \u041a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0438\u0437 \u0442\u043e\u0447\u043a\u0438 \u0410 \u0432 \u0442\u043e\u0447\u043a\u0443 \u0411. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0442\u043e\u043c\u0443, \u043a\u0430\u043a \u043a \u043d\u0435\u0439 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f.<br>\u0415\u0441\u043b\u0438 \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0435\u0447\u0451\u0442\u043a\u0438\u0435, \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0440\u0430\u0441\u0442\u0430\u0442\u044c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430.<br><br><b>\ud83d\udcac \u0427\u0442\u043e \u0434\u0443\u043c\u0430\u0435\u0442\u0435? \u041f\u0440\u0430\u0432 \u043b\u0438 \u0420\u043e\u0431 \u041f\u0430\u0439\u043a \u0438\u043b\u0438 \u0432\u0441\u0451 \u0443\u0436\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c?<\/b><br><br>\ud83d\udccd \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f: <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/_cHBcg\"><b>\u0412\u0430\u043a\u0430\u043d\u0441\u0438\u0438<\/b><\/a><b> \u2022 <\/b><a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0417\u0430\u0434\u0430\u0447\u0438<\/b><\/a> \u2022 <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/clc.to\/B3RB2g\"><b>\u0421\u043e\u0431\u0435\u0441\u044b<\/b><\/a><br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5202102283411677983\/thumb.webp?hash=Y-t5IRhQ_FxzJB5ujWtZaA&ts=1775839651' alt='\ud83d\udc38'> <a title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430 | C#, F#, .NET, ASP.NET\" href=\"\/channels\/@csharpproglib\"><b>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0448\u0430\u0440\u043f\u0438\u0441\u0442\u0430<\/b><\/a><br><br>#entry_point","text_length":1851,"media":{"root":"\/006\/FxsAAMCrZlAAAAAA_C3TvZQXNro","photo":{"thumbs":{"m":{"w":320,"h":320,"hash":"9AzkdvWDm6AxNAiLJAea4g&ts=1775839651"},"x":{"w":800,"h":800,"hash":"3fNPBuzBe5EU3KCaoosRog&ts=1775839651"},"y":{"w":1080,"h":1080,"hash":"iGyZkm-KYnn9YCHgnzNFOw&ts=1775839651"},"i":{"bytes":"AoACg|C9GI9qgwlsrndtp+Iv+fdv++KfCMwIMnoOlL5Qxje\/\/fVNt3G2R7Yv+eB\/75pMR5\/1Df8AfNSeSP78n\/fVL5Qxjc\/\/AH1SuxXIXWMxviIqQOpXFFSyLttmGScKeT1orSL0KTYsH+pT\/dFVbqZ2mEUJI9cHHNWoP9Sn+6KzLn\/j4k+tZTIkL9onEhh3tuXqO\/51Ys7tnlMLncw\/MfWqYuJBjEjcdOau2kTlvPZl+b0A5+ppICzP\/qX\/AN00UT\/6l\/8AdNFax2LQyGaMRKC6ggetUZ7USzO4uEAY5xRRVJWegpRTGfYRjH2lKuWYW3jKNMrDOR7UUU5NtWEopMlmmjMTAOpJHrRRRSijRI\/\/2Q=="}}}}}]