πŸ’™ Help Ukraine, click for information πŸ’›

About

Π’ΡƒΡ‚ Π±ΡƒΠ΄Π΅ Ρ‚Ρ€Ρ–ΡˆΠΊΠΈ всякого ΠΏΡ€ΠΎ програмування. На Таль Π½Π΅ маю натхнСння пСрСкласти всС ΠΎΠ΄Ρ€Π°Π·Ρƒ мовою Ρ‚ΠΎΠΆ просто побаТаю Π½Π΅Ρ…Π°ΠΉ Ρ‰Π°ΡΡ‚ΠΈΡ‚ΡŒ. Всім людям ласкаво ΠΏΡ€ΠΎΡˆΡƒ


Latest posts

Sep. 18, 2018

Авто-ΠΌΠΎΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΎΡ‚ Mark Seemann

Как ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡŽΠ½ΠΈΡ‚ тСсты ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Dependency Injection? Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ описываСтся ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ ΡŽΠ½ΠΈΡ‚ тСстов (unit test), Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠΊ (Auto-mocking Container). Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для устранСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ…Ρ€ΡƒΠΏΠΊΠΈΡ… тСстов (Fragile Test), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊ часто происходят ΠΏΡ€ΠΈ создании тСстируСмой систСмы (system under tests - SUT) ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° ΠœΠ°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. На этот вопрос ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Mark Seemann.

ΠŸΡ€Π΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°: ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π½Π° этот Ρ€Π°Π· ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎΡ‚ Mark Seemann ΠΎ Π°Π²Ρ‚ΠΎ-ΠΌΠΎΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…. НСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ приходится Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΡŽΠ½ΠΈΡ‚ тСстами ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь ΠΎ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Auto mock-ΠΎΠ² я ΡƒΠ·Π½Π°Π» Π½Π΅ Ρ‚Π°ΠΊ ΠΈ Π΄Π²Π°Π½ΠΎ. Π§Ρ‚ΠΎ-Π±Ρ‹ Π·Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ доступной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ этом ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΊ созданию тСстовых Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΎΠ² Π±Π΅Π· лишнСй Π±ΠΎΠ»ΠΈ. И ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ссылка Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»

Jul. 15, 2018

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ молчания ΠΈ ΡƒΡ€ΠΎΠ²Π½ΠΈ логирования

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ молчания, Ρ‚Π°ΠΊΠΆΠ΅ упоминаСтся ΠΊΠ°ΠΊ ΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΠ΅ Π·ΠΎΠ»ΠΎΡ‚ΠΎ - ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΡΠ²Π»ΡΡŽΡ‰Π΅Π΅ΡΡ Π²Π°ΠΆΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ философии Unix, которая гласит, Ссли Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ-интСрСсного ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ-Π±Ρ‹ ΠΎΠ½Π° ΠΌΠΎΠ³Π»Π° ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Π΅ΠΉ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ ΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΈ вниманию своих ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΊΠ°ΠΊ Ρ†Π΅Π½Π½Ρ‹ΠΌ рСсурсам ΠΈ соотвСтствСнно Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ свои Π·Π°Π΄Π°Ρ‡ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½Π΅Π΅. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΠ΅ само ΠΏΠΎ сСбС являСтся Π΄ΠΎΠ±Ρ€ΠΎΠ΄Π΅Ρ‚Π΅Π»ΡŒΡŽ.

НСт Π΅Π΄ΠΈΠ½ΠΎΠΉ, стандартизированной Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ философии Unix, Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, самоС простоС описаниС Π±Ρ‹Π»ΠΎ Π±Ρ‹: β€œΠŸΠΈΡˆΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ нСбольшими, простыми ΠΈ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌΠΈ. ΠŸΠΈΡˆΠΈΡ‚Π΅ ΠΈΡ… Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π΄Π΅Π»Π°Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ, Π½ΠΎ Π΄Π΅Π»Π°Π»ΠΈ это Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈ ΠΌΠΎΠ³Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ совмСстно с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ программами”. Π’ΠΎ Π΅ΡΡ‚ΡŒ, философия сосрСдотачиваСтся Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚Π° понятий малости, простоты, ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ, мастСрства, прозрачности, экономии, разнообразия, пСрСносимости, гибкости ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΠΈ.

Apr. 17, 2018

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ sync over async deadlock

Как Π²Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΈΠ· поста ΠΎ контСкстС синхронизации Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ рСсурсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ доступны ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² контСкстС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°ΠΊΠΈΠΌΠΈ рСсурсами Π² асинхронном ΠΊΠΎΠ΄Π΅, Π½ΡƒΠΆΠ½ΠΎ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ выполнятся Π½Π° Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Ρ‚ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π»Π°Π΄Π΅Π΅Ρ‚ этим рСсурсом. НСпонимая этого ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ программирования ΠΊΠ°ΠΊ Π½ΠΈΠΆΠ΅ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅.

Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ программирования

Вспомним ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΏΡ€Π΅Π΄ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ поста. По Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ. Π’Π°ΠΊ ΠΊΠ°ΠΊ наш ΠΊΠΎΠ΄ асинхронный, ΠΊΠΎΠ΄ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² синхронном ΠΊΠΎΠ΄Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ, для этого Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΎΠΉ sync over async. Π’.Π΅. просто доТдёмся Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ асинхронной Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° taskName.Wait().