αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž‘αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž‡αžΆαž‡αžΆαž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ†αž αž»αžŸαž‡αžΆαž˜αž½αž™αžœαžΆαŸ”

αžαŸ’αž‰αž»αŸ†β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž‡αŸ†αžšαž»αž‰β€‹αž±αŸ’αž™β€‹αžŸαžšαžŸαŸαžšβ€‹αž’αžαŸ’αžαž”αž‘β€‹αž“αŸαŸ‡β€‹αžŠαŸ„αž™β€‹αž…αŸ†αž“αž½αž“β€‹αžŠαŸβ€‹αž…αŸ’αžšαžΎαž“β€‹αž“αŸƒβ€‹αžŸαž˜αŸ’αž—αžΆαžšαŸˆβ€‹αž“αŸ…β€‹αž›αžΎβ€‹αž€αžΆαžšβ€‹αžœαž·αž—αžΆαž‚β€‹αž‹αž·αžαž·αžœαž“αŸ’αžβ€‹αžŠαŸ‚αž›β€‹αž€αŸ†αž–αž»αž„β€‹αžαŸ‚β€‹αž˜αž€β€‹αžŠαž›αŸ‹β€‹αž€αžΆαžšβ€‹αž…αžΆαž”αŸ‹β€‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸβ€‹αžšαž”αžŸαŸ‹β€‹αžαŸ’αž‰αž»αŸ†β€‹αž€αžΆαž“αŸ‹β€‹αžαŸ‚β€‹αžαŸ’αž›αžΆαŸ†αž„β€‹αž‘αžΎαž„β€‹αŸ” αž‡αžΆαžŠαŸ†αž”αžΌαž„, αž“αŸαŸ‡αŸ” αž”αŸ’αž›αž»αž€ PVS-studioαžŠαŸ‚αž›αž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™αžαŸ’αž›αž½αž“αžœαžΆαž™αŸ‰αžΆαž„αžŸαž€αž˜αŸ’αž˜αž“αŸ…αž›αžΎ Habre αžŠαŸ„αž™αž˜αžΆαž“αž‡αŸ†αž“αž½αž™αž–αžΈαž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž‘αžΎαž„αžœαž·αž‰αž“αžΌαžœαž€αŸ†αž αž»αžŸαžŠαŸ‚αž›αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžŠαŸ„αž™αž§αž”αž€αžšαžŽαŸαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž“αŸ…αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž αŸ” αžαŸ’αž˜αžΈαŸ—αž“αŸαŸ‡ PVS-studio αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αž αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš Javaαž αžΎαž™αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ IntelliJ IDEA αžŠαŸ‚αž›αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™αž‚αžΊαž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž‘αŸ†αž“αžΎαž”αž”αŸ†αž•αž»αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Java αžŸαž–αŸ’αžœαžαŸ’αž„αŸƒαž“αŸαŸ‡αŸ” αž˜αž·αž“αž’αžΆαž…αž“αŸ…αž†αŸ’αž„αžΆαž™αž”αžΆαž“αž‘αŸαŸ”.

αž“αŸ…αž–αŸαž›αž’αžΆαž“αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž”αŸ‚αž”αž“αŸαŸ‡ αž’αŸ’αž“αž€αž‘αž‘αž½αž›αž”αžΆαž“αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαžαžΆαž™αžΎαž„αž€αŸ†αž–αž»αž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαžœαŸαž‘αž˜αž“αŸ’αž elixir: αž…αž»αž…αž”αŸŠαžΌαžαž»αž„ αž αžΎαž™αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžœαžΆαž‚αžΊαž‡αžΆ - αž”αž‰αŸ’αž‡αžΈαž“αŸƒαž–αž·αž€αžΆαžšαž—αžΆαž–αž˜αž»αž“αž–αŸαž›αž—αŸ’αž“αŸ‚αž€αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” αžœαžΆαž αžΆαž€αŸ‹αž”αžΈαžŠαžΌαž…αž‡αžΆαž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚αž˜αžΆαž“αž—αžΆαž–αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„ αž€αŸ†αž αž»αžŸαž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αž αžΎαž™αž•αž›αž·αžαž•αž›αžŠαŸ‚αž›αžŸαŸ’αž€αŸ‚αž“αžŠαŸ„αž™αž˜αž“αž»αžŸαŸ’αžŸαž™αž“αŸ’αžαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž“αžΉαž„αž€αžΆαž“αŸ‹αžαŸ‚αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„ αž“αž·αž„αž€αžΆαž“αŸ‹αžαŸ‚αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αžŠαŸ„αž™αž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαž”αŸ’αžšαžΉαž„αž”αŸ’αžšαŸ‚αž„αžŽαžΆαž˜αž½αž™αž–αžΈαž•αŸ’αž“αŸ‚αž€αžšαž”αžŸαŸ‹αž™αžΎαž„αž‘αžΎαž™αŸ”

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž˜αžΆαž“ elixir αžœαŸαž‘αž˜αž“αŸ’αžαž‘αŸαŸ” αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαž€αžΆαžŸαžŠαžΌαž…αž‡αžΆ "αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž˜αž“αž»αžŸαŸ’αžŸαž™αž“αŸ’αžαžšαž”αžŸαŸ‹αž™αžΎαž„αž’αžΆαž…αžšαž€αžƒαžΎαž‰"αŸ– αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚αž˜αž·αž“αž’αžΆαž…αž’αŸ’αžœαžΎ αžαž½αž“αžΆαž‘αžΈ αž“αž·αž„αž‘αžΈαž€αž“αŸ’αž›αŸ‚αž„αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αžšαž”αŸ€αž”αž’αž“αž»αžœαžαŸ’αžαž–αž½αž€αžœαžΆαž±αŸ’αž™αž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ” .

αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž‘αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž‡αžΆαž‡αžΆαž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ†αž αž»αžŸαž‡αžΆαž˜αž½αž™αžœαžΆαŸ”
Ratchet (αž”αŸ’αžšαž—αž–αŸ– αžœαž·αž‚αžΈαž—αžΈαžŒαžΆ).

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž˜αž·αž“αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“

αžαžΎαž€αžΆαžšαžœαž·αž—αžΆαž‚αž€αžΌαžŠαž”αŸ’αžšαž—αž–αž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈ αžαžΆαž˜αž‘αžŸαŸ’αžŸαž“αŸˆαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„? αž™αžΎαž„αž•αŸ’αžαž›αŸ‹αž€αžΌαžŠαž”αŸ’αžšαž—αž–αž˜αž½αž™αž…αŸ†αž“αž½αž“αž‡αžΆαž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž› αž“αž·αž„αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž›αžŠαŸαžαŸ’αž›αžΈ (αžαŸ’αž›αžΈαž‡αžΆαž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš) αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αž–αžΈαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž“αž·αž„αž˜αž·αž“αž’αžΆαž…αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αžΆαž“αžαžΆαž˜αž‚αžŽαž·αžαžœαž·αž‘αŸ’αž™αžΆαž‚αžΊαžαžΆ αž™αžΎαž„αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αžαžΌαž…αž…αž„αŸ’αž’αŸ€αžαž‚αž½αžšαžŸαž˜αžαžΆαž˜αžœαž·αž’αžΈαž“αŸαŸ‡αŸ”

αž§αž‘αžΆαž αžšαžŽαŸαžŠαŸαž›αŸ’αž”αžΈαž›αŸ’αž”αžΆαž‰αž”αŸ†αž•αž»αžαž“αŸƒαž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αž˜αž·αž“αž’αžΆαž…αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αžΆαž“αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž‚αžΊ αž”αž‰αŸ’αž αžΆαž”αž·αž‘αŸ– αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž‘αŸ’αžšαžΉαžŸαŸ’αžαžΈαž”αž‘αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αžαžΆαžœαžΆαž˜αž·αž“αž’αžΆαž…αž‘αŸ…αžšαž½αž…αž‘αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‘αžΌαž‘αŸ…αžŠαŸ‚αž›αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αž–αžΈαž€αžΌαžŠαž”αŸ’αžšαž—αž–αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαžΆαžαžΎαžœαžΆαž“αžΉαž„αžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ† αž¬αž”αž‰αŸ’αž…αž”αŸ‹αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž›αž€αŸ†αžŽαžαŸ‹αŸ” αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž“αŸƒαž‘αŸ’αžšαžΉαžŸαŸ’αžαžΈαž”αž‘αž“αŸαŸ‡αž‚αžΊ αž‘αŸ’αžšαžΉαžŸαŸ’αžαžΈαž”αž‘αžšαž”αžŸαŸ‹αž’αž„αŸ’αž€αžšαžŠαŸ‚αž›αž…αŸ‚αž„αžαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž·αž˜αž·αž“αžŸαŸ†αžαžΆαž“αŸ‹αžŽαžΆαž˜αž½αž™αž“αŸƒαž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž‚αžŽαž“αžΆαž”αžΆαž“ αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžαžΆαžαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ†αž–αžΆαž“αžœαžΆαž™αžαŸ†αž›αŸƒαž˜αž»αžαž„αžΆαžšαž‡αžΆαž˜αž½αž™αž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž·αž”αŸ‚αž”αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αž˜αž·αž“αž’αžΆαž…αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αžΆαž“αžαžΆαž˜αžœαž·αž’αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αŸ” αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αžœαžΆαž˜αž·αž“αž’αžΆαž…αž‘αŸ…αžšαž½αž…αž‘αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžœαž·αž—αžΆαž‚αžŠαŸ‚αž›αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αž–αžΈαž€αžΌαžŠαž”αŸ’αžšαž—αž–αžŽαžΆαž˜αž½αž™αžαžΆαžαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžœαž·αž—αžΆαž‚αž‚αžΊαž‡αžΆαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸƒαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ‚αž›αž‚αžŽαž“αžΆ squaring αž“αŸƒαž…αŸ†αž“αž½αž“αž‚αžαŸ‹αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž˜αž»αžαž„αžΆαžšαžšαž”αžŸαŸ‹αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž˜αžΆαž“αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αžŠαŸ‚αž›αž˜αž·αž“αž’αžΆαž…αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αžΆαž“αŸ” αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž“αžΉαž„αž˜αž·αž“αž’αžΆαž…αžšαž€αžƒαžΎαž‰αž€αŸ’αž“αž»αž„αž‚αŸ’αžšαž”αŸ‹αž€αžšαžŽαžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αžŠαžΌαž…αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž€αžΆαžšαž€αžΎαžαž‘αžΎαž„αž“αŸƒ "αž€αžΆαžšαž›αžΎαž€αž›αŸ‚αž„αž‘αŸ’αžšαž“αž·αž…αž‘αž‘αŸ" αž‡αžΆαž—αžΆαžŸαžΆαžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αžαž˜αŸ’αž›αŸƒαž“αŸƒαž˜αŸ„αžƒαŸˆ αž¬αž€αŸ’αž“αž»αž„αž‚αŸ’αžšαž”αŸ‹αž€αžšαžŽαžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αž€αžΆαžšαž€αžΎαžαž‘αžΎαž„αž“αŸƒ " αžšαž€αž˜αž·αž“αžƒαžΎαž‰αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ" αž‡αžΆαž—αžΆαžŸαžΆαžŠαŸ‚αž›αž”αžΆαž“αžœαžΆαž™αž”αž‰αŸ’αž…αžΌαž›αžαžΆαž˜αžœαž“αŸ’αžαŸ” αž’αŸ’αžœαžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹αž”αŸ†αž•αž»αžαž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“αž‚αžΊαž‚αžΌαžŸαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž–αžΈαž€αžšαžŽαžΈαž–αž·αžŸαŸαžŸ αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αž’αžΆαž…αž€αžΎαžαž˜αžΆαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‡αžΆαž˜αž½αž™αž€αžΌαžŠαž”αŸ’αžšαž—αž–αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‚αžΊ αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž”αŸ†αž•αŸ’αž›αžΎαžŸ αž€αžΆαžšαž’αŸ’αž›αžΆαž€αŸ‹αž…αž»αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž’αž»αž„αŸ”

αž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž˜αž·αž“αž˜αŸ‚αž“αž’αŸ†αž–αžΈαž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ†αž αž»αžŸαž‘αŸαŸ”

αž–αžΈαžαžΆαž„αž›αžΎ αž€αžΆαžšαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸˆ αž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αž“αŸƒαž€αžΆαžšαž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž…αŸ†αž“αž½αž“αž“αŸƒαž–αž·αž€αžΆαžšαž—αžΆαž–αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸ„αŸ‡αž‘αŸαŸ” αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž“αž·αž™αžΆαž™αžαžΆαŸ– αž“αŸ…αž–αŸαž›αž’αž“αž»αžœαžαŸ’αžαž‚αž˜αŸ’αžšαŸ„αž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‡αžΆαž›αžΎαž€αžŠαŸ†αž”αžΌαž„ αžœαžΆαž“αžΉαž„αžšαž€αžƒαžΎαž‰αž€αž“αŸ’αž›αŸ‚αž„ "αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸ" αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‘αŸ†αž“αž„αž‡αžΆαžœαžΆαž“αžΉαž„αž˜αž·αž“αžšαž€αžƒαžΎαž‰αž–αž·αž€αžΆαžšαž—αžΆαž–αžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž‚αž»αžŽαž—αžΆαž–αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‘αŸαŸ”

αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž–αž·αž€αžΆαžšαž—αžΆαž–αžŠαŸ‚αž›αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžŠαŸ„αž™αž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚αž‚αžΊαž‚αž½αžšαž’αŸ„αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž˜αž·αž“αž‚αž½αžšαž—αŸ’αž›αŸαž…αžαžΆαž§αž‘αžΆαž αžšαžŽαŸαž‘αžΆαŸ†αž„αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰αžŠαŸ„αž™αž€αžΆαžšαžŸαŸ’αž€αŸ‚αž“αžŸαŸ†αžŽαž»αŸ†αž€αžΌαžŠαžŠαŸαž’αŸ†αž“αŸƒαž€αžΌαžŠαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ” αžαžΆαž˜αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαžŠαžΌαž…αž‚αŸ’αž“αžΆ αž–αž½αž€ Hacker αžŠαŸ‚αž›αž˜αžΆαž“αž±αž€αžΆαžŸαžŸαžΆαž€αž›αŸ’αž”αž„αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŸαžΆαž˜αž‰αŸ’αž‰αž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž›αžΎαž‚αžŽαž“αžΈαž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αž“αŸ…αž‘αžΈαž”αŸ†αž•αž»αžαžšαž€αžƒαžΎαž‰αž‚αžŽαž“αžΈαž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αžŠαŸ‚αž›αž˜αžΆαž“αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŸαžΆαž˜αž‰αŸ’αž‰αŸ”

αžαžΎαž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆαž˜αž·αž“αž‚αž½αžšαž”αŸ’αžšαžΎαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž‘αŸ? αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹αž˜αž·αž“αž˜αŸ‚αž“αž‘αŸ! αž αžΎαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž αŸαžαž»αž•αž›αžŠαžΌαž…αž‚αŸ’αž“αžΆαžŠαŸ‚αž›αžœαžΆαž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžαŸ’αž˜αžΈαž“αžΈαž˜αž½αž™αŸ— αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΆαž€αžŠαžαžΆαžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αžΌαž›αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαž”αž‰αŸ’αžˆαž”αŸ‹αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹ "αžŸαžΆαž˜αž‰αŸ’αž‰"αŸ”

αž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž‚αžΊαž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ†αž αž»αžŸ

αžαžΆαž˜αž–αž·αžαž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ„αž™αž€αžΆαžšαžœαž·αž—αžΆαž‚αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž‚αžΊαž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™αž‡αžΆαž„αŸ” αž™αŸ‰αžΆαž„αžŽαžΆαž˜αž·αž‰ αž‡αžΆαž‘αžΌαž‘αŸ… αž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž‚αžΊαž‡αžΆαž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αžŽαžΆαž˜αž½αž™αž“αŸƒαž€αžΌαžŠαž”αŸ’αžšαž—αž–αžŠαŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αž˜αž»αž“αž–αŸαž›αž–αž½αž€αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž±αŸ’αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αž“αŸαŸ‡αž‡αžΆαžšαžΏαž„αž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“αŸ–

  • αž–αž·αž“αž·αžαŸ’αž™αžšαž…αž“αžΆαž”αŸαž‘αŸ’αž˜αžŸαžšαžŸαŸαžšαž€αžΌαžŠαž€αŸ’αž“αž»αž„αž“αŸαž™αž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™αž“αŸƒαž–αžΆαž€αŸ’αž™αŸ” αž“αŸαŸ‡αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‘αžΆαŸ†αž„αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž‘αž˜αŸ’αžšαž„αŸ‹ αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžœαž„αŸ‹αž€αŸ’αžšαž…αž€αž‘αž‘αŸ/αž”αž“αŸ’αžαŸ‚αž˜ αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž€αž˜αŸ’αžšαž·αžαž›αžΎαž˜αŸ‰αŸ‚αžαŸ’αžš αžŠαžΌαž…αž‡αžΆαž…αŸ†αž“αž½αž“αž”αž“αŸ’αž‘αžΆαžαŸ‹/αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αŸƒαžœαžŠαŸ’αžαž“αŸƒαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž‡αžΆαžŠαžΎαž˜αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„ Java αž§αž”αž€αžšαžŽαŸαž”αŸ‚αž”αž“αŸαŸ‡αž‚αžΊ Checkstyle αž“αŸ…αž€αŸ’αž“αž»αž„ Python - flake8 αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž“αŸƒβ€‹αžαŸ’αž“αžΆαž€αŸ‹β€‹αž“αŸαŸ‡β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž‚αŸβ€‹αž αŸ…β€‹αžαžΆβ€‹αž‡αžΆβ€‹αž’αž˜αŸ’αž˜αžαžΆβ€‹αžαžΆβ€‹αž‡αžΆ "αžŸαŸ’αžšαž‘αžΆαž”αŸ‹β€‹"αŸ”
  • αž˜αž·αž“β€‹αžαŸ’αžšαžΉαž˜β€‹αžαŸ‚β€‹αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡β€‹αž€αžΌαžŠβ€‹αžŠαŸ‚αž›β€‹αž’αžΆαž…β€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·β€‹αž”αžΆαž“β€‹αž’αžΆαž…β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžœαž·αž—αžΆαž‚αŸ” αž―αž€αžŸαžΆαžšαž’αž“αž’αžΆαž“αžŠαžΌαž…αž‡αžΆ JSON, YAML, XML, .properties αž’αžΆαž… (αž“αž·αž„αž‚αž½αžš!) αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž“αž·αžαŸ’αž™αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαž»αž–αž›αž—αžΆαž–αŸ” αž™αŸ‰αžΆαž„αžŽαžΆαž˜αž·αž‰ αžœαžΆαž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αžαžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ JSON αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαžΌαž…αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αžŸαž˜αŸ’αžšαž„αŸ‹αžŠαŸ‚αž›αž˜αž·αž“αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŠαŸ†αž”αžΌαž„αž“αŸƒαž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž€αžΆαžšαžŸαŸ’αž“αžΎαžŸαž»αŸ†αž‘αžΆαž‰αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž‡αžΆαž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ αž¬αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš? αž§αž”αž€αžšαžŽαŸαžŸαž˜αžŸαŸ’αžšαž”αž’αžΆαž…αžšαž€αž”αžΆαž“αŸ– ឧ. αž™αŸ‰αžΆαž˜αž›αž›αžΈαž“, JSONLint.
  • αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„ (αž¬αž‰αŸ‚αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαžΆαž˜αžœαž“αŸ’αž) αž€αŸαž‡αžΆαž”αŸ’αžšαž—αŸαž‘αž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž•αž„αžŠαŸ‚αžšαŸ” αž‡αžΆαž‘αžΌαž‘αŸ… αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αž˜αžΆαž“αžŸαž˜αžαŸ’αžαž—αžΆαž–αž•αž›αž·αžαž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž”αž‰αŸ’αž αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‚αž»αžŽαž—αžΆαž–αž€αžΌαžŠαž”αŸ’αžšαž—αž– αž αžΎαž™αž˜αž·αž“αž‚αž½αžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αžΎαž–αžΎαž‘αžΎαž™αŸ”
  • αž–αŸαž›αžαŸ’αž›αŸ‡αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž‚αžΊαž›αžΎαžŸαž–αžΈαž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž€αžΌαžŠαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αžΆαž“αž―αž€αžŸαžΆαžšαž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹ αžœαŸαž‡αŸ’αž‡αž”αžŽαŸ’αžŒαž·αž Asciiαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž“αŸ…αž–αŸαž›αž”αž„αŸ’αžœαŸ‚αžšαžœαžΆαž‘αŸ…αž‡αžΆ HTML/PDF αž’αŸ’αž“αž€αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ AsciiDoctor (αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ Maven) αž’αžΆαž…αž…αŸαž‰αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“ αž§αž‘αžΆαž αžšαžŽαŸαž’αŸ†αž–αžΈαžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αžαžΆαž„αž€αŸ’αž“αž»αž„αžŠαŸ‚αž›αžαžΌαž…αŸ” αž αžΎαž™αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž αŸαžαž»αž•αž›αžŠαŸαž›αŸ’αž’αž˜αž½αž™αžŠαŸ‚αž›αž˜αž·αž“αž‘αž‘αž½αž›αž™αž€αžŸαŸ†αžŽαžΎαžšαž‘αžΆαž‰αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž―αž€αžŸαžΆαžšαŸ”
  • αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž’αž€αŸ’αžαžšαžΆαžœαž·αžšαž»αž‘αŸ’αž’αž€αŸαž‡αžΆαž”αŸ’αžšαž—αŸαž‘αž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž•αž„αžŠαŸ‚αžšαŸ” αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αž’αž€αŸ’αžαžšαžΆαžœαž·αžšαž»αž‘αŸ’αž’ αž’αžΆαž…αž–αž·αž“αž·αžαŸ’αž™αž’αž€αŸ’αžαžšαžΆαžœαž·αžšαž»αž‘αŸ’αž’αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ‚αž˜αž‘αžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαž”αŸ’αžšαž—αž–αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ (αž˜αžαž·αž™αŸ„αž”αž›αŸ‹ αž“αž·αž„αž–αŸ’αž™αž‰αŸ’αž‡αž“αŸˆ) αž‡αžΆαž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αžŸαŸαž„αŸ— αžšαž½αž˜αž‘αžΆαŸ†αž„ C/C++, Java αž“αž·αž„ Python αž•αž„αžŠαŸ‚αžšαŸ” αž€αŸ†αž αž»αžŸαž’αž€αŸ’αžαžšαžΆαžœαž·αžšαž»αž‘αŸ’αž’αž“αŸ…αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎ αž¬αž―αž€αžŸαžΆαžšαž€αŸαž‡αžΆαž€αŸ†αž αž»αžŸαž˜αž½αž™αžŠαŸ‚αžš!
  • αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ (αž’αŸ†αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž˜αžΆαž“ - αžŸαžΌαž˜αž˜αžΎαž›αŸ” αž“αŸαŸ‡ ΠΈ αž“αŸαŸ‡ αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸ) αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„αž―αž€αžαžΆαžŠαžΌαž…αž‡αžΆ pytest αž€αŸαžŠαŸ„αž™ αžαžΆαž˜αž–αž·αžαž€αŸαž‡αžΆαž”αŸ’αžšαž—αŸαž‘αž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαžŠαŸ‚αžš αžŠαŸ„αž™αžŸαžΆαžšαž–αž½αž€αž‚αŸαž˜αž·αž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΌαžŠαž”αŸ’αžšαž—αž–αž€αŸ†αž‘αž»αž„αž–αŸαž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαŸ”

αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αžƒαžΎαž‰ αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ†αž αž»αžŸαž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαž“αŸαŸ‡αžŠαžΎαžšαžαž½αž“αžΆαž‘αžΈαž™αŸ‰αžΆαž„αžαž·αž…αž”αŸ†αž•αž»αž αž αžΎαž™αž’αŸ’αžœαžΈαŸ—αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž’αžΆαž…αžšαž€αž”αžΆαž“αžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž αž₯αžαž‚αž·αžαžαŸ’αž›αŸƒαŸ”

αžαžΎαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž”αŸ’αžšαž—αŸαž‘αžŽαžΆαžαŸ’αž›αŸ‡αžŠαŸ‚αž›αž’αŸ’αž“αž€αž‚αž½αžšαž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€? αž–αž·αžαžŽαžΆαžŸαŸ‹αž€αžΆαž“αŸ‹αžαŸ‚αž›αŸ’αž’! αžšαžΏαž„αžŸαŸ†αžαžΆαž“αŸ‹αž‚αžΊαžαŸ’αžšαžΌαžœαž’αž“αž»αžœαžαŸ’αžαžœαžΆαž±αŸ’αž™αž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαžŠαŸ‚αž›αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž—αžΆαž€αŸ’αžŸαžΆαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαŸ”

αž”αŸ†αž–αž„αŸ‹αž…αŸ‚αž€αž…αžΆαž™αž‡αžΆαžαž˜αŸ’αžšαž„αž–αž αž»αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž› αž“αž·αž„αž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž‡αžΆαžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŠαŸ†αž”αžΌαž„αžšαž”αžŸαŸ‹αžœαžΆαŸ”

αž–αžΆαž€αŸ’αž™αž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž”αž»αžšαžΆαžŽαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž‚αžΊαž‡αžΆαž”αŸ†αž–αž„αŸ‹αž”αž„αŸ’αž αžΌαžšαž”αŸ’αžšαŸαž„αžŠαŸ‚αž›αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž›αŸ†αž αžΌαžš αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΌαžŠαž”αŸ’αžšαž—αž–αžšαž αžΌαžαžŠαž›αŸ‹αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αžšαž αžΌαžαžŠαž›αŸ‹αž€αžΆαžšαž•αž›αž·αžαŸ” αž›αŸ†αžŠαžΆαž”αŸ‹αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž“αŸƒαžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ†αž–αž„αŸ‹αž“αŸαŸ‡αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡αŸ–

  1. αž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αž
  2. ធូហូ
  3. αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž―αž€αžαžΆ
  4. αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›
  5. αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž UI
  6. αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžŠαŸ„αž™αžŠαŸƒ

αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžŠαž·αžŸαŸαž’αž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž‘αžΈ N αž“αŸƒαž”αŸ†αž–αž„αŸ‹αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‘αŸαžšαž‘αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž› N + 1 αž‘αŸαŸ”

αž αŸαžαž»β€‹αž’αŸ’αžœαžΈβ€‹αž”αžΆαž“β€‹αž‡αžΆβ€‹αžαžΆαž˜β€‹αžœαž·αž’αžΈβ€‹αž“αŸαŸ‡ αž αžΎαž™β€‹αž˜αž·αž“β€‹αžŠαžΌαž…αŸ’αž“αŸαŸ‡? αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αžŸαžΆαž€αž›αŸ’αž”αž„αž“αŸƒαž”αŸ†αž–αž„αŸ‹αž”αž„αŸ’αž αžΌαžšαž”αŸ’αžšαŸαž„ αž’αŸ’αž“αž€αžŸαžΆαž€αž›αŸ’αž”αž„αž“αžΉαž„αž‘αž‘αž½αž›αžŸαŸ’αž‚αžΆαž›αŸ‹αž–αžΈαžšαŸ‰αžΆαž˜αžΈαžαžŸαžΆαž€αž›αŸ’αž”αž„αžŠαŸαž›αŸ’αž”αžΈαŸ”

αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž‘αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž‡αžΆαž‡αžΆαž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ†αž αž»αžŸαž‡αžΆαž˜αž½αž™αžœαžΆαŸ”
αžŸαžΆαž€αž›αŸ’αž”αž„αž–αžΈαžšαŸ‰αžΆαž˜αžΈαžαŸ” αž”αŸ’αžšαž—αž–αŸ– αž’αžαŸ’αžαž”αž‘ Martin Fowler αŸ”

αž“αŸ…αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸƒαž–αžΈαžšαŸ‰αžΆαž˜αžΈαžαž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŠαŸ‚αž›αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŸαžšαžŸαŸαžš αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΏαž“αž‡αžΆαž„αž˜αž»αž“ αž“αž·αž„αž˜αž·αž“αž˜αžΆαž“αž‘αŸ†αž“αŸ„αžšαž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αžšαžΆαž‡αŸαž™αž“αŸ„αŸ‡αž‘αŸαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‚αž½αžšαžαŸ‚αž˜αžΆαž“αž…αŸ’αžšαžΎαž“ αž–αž½αž€αž‚αŸαž‚αž½αžšαžαŸ‚αž‚αŸ’αžšαž”αžŠαžŽαŸ’αžαž”αŸ‹αž€αžΌαžŠαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž‡αžΆαž˜αž»αž“αžŸαž·αž“αŸ” αž“αŸ…αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž›αžΎαž“αŸƒαžŸαžΆαž‡αžΈαž‡αŸ’αžšαž»αž„ αž—αžΆαž–αž•αŸ’αž‘αž»αž™αž‚αŸ’αž“αžΆαž‚αžΊαž‡αžΆαž€αžΆαžšαž–αž·αž αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž› αž“αž·αž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž UI αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž‘αŸ…αž’αž”αŸ’αž”αž”αžšαž˜αžΆαž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ” αž˜αž“αž»αžŸαŸ’αžŸαž“αŸ…αž€αŸ’αž“αž»αž„αžαŸ’αžŸαŸ‚αžŸαž„αŸ’αžœαžΆαž€αŸ‹αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž’αž“αž’αžΆαž“αžŠαŸ‚αž›αžαŸ’αž›αŸƒαž”αŸ†αž•αž»αž αž™αžΊαž αž“αž·αž„αž˜αž·αž“αž’αžΆαž…αž‘αž»αž€αž…αž·αžαŸ’αžαž”αžΆαž“ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‚αžΆαžαŸ‹αž‚αžΊαž“αŸ…αž‘αžΈαž”αž‰αŸ’αž…αž”αŸ‹αž αžΎαž™αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž„αžΆαžšαž”αŸ’αžšαžŸαž·αž“αž”αžΎαžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž˜αž»αž“αž˜αž·αž“αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž–αž·αž€αžΆαžšαž—αžΆαž–αžŽαžΆαž˜αž½αž™αž‘αžΎαž™αŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαžŠαžΌαž…αž‚αŸ’αž“αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαžŸαžΆαž„αžŸαž„αŸ‹αž”αŸ†αž–αž„αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αžŠαŸ‚αž›αž˜αž·αž“αž‘αžΆαž€αŸ‹αž‘αž„αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž‘αŸ…αž“αžΉαž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž!

αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αž“αžΌαžœαž—αžΆαž–αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž…αž˜αŸ’αžšαŸ„αŸ‡αž‘αžΉαž€αž–αž αž»αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αŸ” αž‘αžΉαž€αž€αžαŸ’αžœαž€αŸ‹ (αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž–αž·αž€αžΆαžšαž—αžΆαž–) αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‚αžαŸ‹αž•αŸ’αž‚αž„αŸ‹αž‘αŸ…αž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›;

αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž‘αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž‡αžΆαž‡αžΆαž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ†αž αž»αžŸαž‡αžΆαž˜αž½αž™αžœαžΆαŸ”
αžαž˜αŸ’αžšαž„αž–αž αž»αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αŸ” αž”αŸ’αžšαž—αž–αŸ– αžœαž·αž‚αžΈαž˜αŸαžŒαžΆαž‘αžΌαž‘αŸ…

αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αžŠαžΉαž„αž αžΎαž™αžαžΆ αžαž˜αŸ’αžšαž„αžŸαž˜αŸ’αž’αžΆαžαžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αž›αŸ’αž”αžΆαž€αŸ‹αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž“αžΈαž˜αž½αž™αŸ—αž’αžΆαž…αž…αŸ’αžšαŸ„αŸ‡αž…αŸαž‰αž“αžΌαžœαž”αŸ’αžšαž—αžΆαž‚αž›αŸ’αž’αž·αžαž›αŸ’αž’αž“αŸ‹αž“αŸƒαžŸαžΆαžšαž’αžΆαžαž»αž€αžαŸ’αžœαž€αŸ‹αŸ” αž€αŸ’αž“αž»αž„αž–αŸαž›αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαž“αŸαŸ‡ αž€αžΆαžšαž”αž“αŸ’αžŸαž»αž coarser cascades αž˜αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αž–αžŸαŸ‹αž‡αžΆαž„ αž“αž·αž„αžαž˜αŸ’αž›αŸƒαž‘αžΆαž”αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαž–αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαžšαž”αžŸαŸ‹αž™αžΎαž„ αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆαž…αŸ’αžšαž€αž‚αž»αžŽαž—αžΆαž–αž”αž‰αŸ’αž…αžΌαž›αž‚αžΊαž›αžΏαž“αž‡αžΆαž„αž˜αž»αž“ αž‘αžΆαž˜αž‘αžΆαžšαž€αžΆαžšαž”αŸ’αžšαžΉαž„αž”αŸ’αžšαŸ‚αž„αžαž·αž…αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αž αžΎαž™αžαŸ’αž›αž½αž“αž‚αŸαž€αžΆαž“αŸ‹αžαŸ‚αž˜αž·αž“αž‚αž½αžšαž±αŸ’αž™αž‡αžΏαž€αŸ’αž“αž»αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš - αž αžΎαž™αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž›αŸ†αžŠαžΆαž”αŸ‹αžŠαŸ‚αž›αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžΆαž„αžŸαž„αŸ‹αŸ” αžαž½αž“αžΆαž‘αžΈαž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αž αžŠαŸ‚αž›αžŠαžΌαž…αžŠαŸ‚αž›αž™αžΎαž„αž™αž›αŸ‹αž“αŸ…αž–αŸαž›αž“αŸαŸ‡ αž‚αžΊαž˜αžΆαž“αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ†αž…αžΆαžαŸ‹αž…αŸ„αž›αžαŸ‚αž–αž·αž€αžΆαžšαž—αžΆαž–αž”αŸ†αž•αž»αž αž‚αžΊαž‡αžΆαžαž½αž“αžΆαž‘αžΈαž“αŸƒαž€αŸ’αžšαž‘αžΆαž…αžαŸ’αžšαž„αŸ’αž‚ "αž—αž€αŸ‹" αž“αŸ…αžŠαžΎαž˜αžŠαŸ†αž”αžΌαž„αž“αŸƒαžŸαŸ’αžšαž‘αžΆαž”αŸ‹αž…αž˜αŸ’αžšαŸ„αŸ‡αŸ”

αž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαžŠαŸ„αž™αžαŸ’αž›αž½αž“αžœαžΆαž•αŸ’αž‘αžΆαž›αŸ‹αž˜αž·αž“αž’αŸ’αžœαžΎαž’αŸ„αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž“αžΌαžœαž‚αž»αžŽαž—αžΆαž–αž“αŸƒαž•αž›αž·αžαž•αž›αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸ„αŸ‡αž‘αŸ αžŠαžΌαž…αž‡αžΆ "αžαž˜αŸ’αžšαž„αž—αž€αŸ‹" αž˜αž·αž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž‘αžΉαž€αž’αžΆαž…αž•αžΉαž€αž”αžΆαž“αž‘αŸαŸ” αž“αž·αž„αž“αŸ…αž‘αžΎαž™αž‘αŸ, αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™αž’αžΆαžαž»αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αŸƒαž”αŸ†αž–αž„αŸ‹, αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αžšαž”αžŸαŸ‹αžœαžΆαž‚αžΊαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αŸ” αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžαž˜αŸ’αžšαž„αž–αž αž»αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž› αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž›αž‘αŸ’αž’αž•αž›αž˜αžΆαž“αžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αžΆαž”αŸ‹αž™αž€αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž”αž‰αŸ’αž…αžΌαž›αž’αŸ’αžœαžΎαž€αŸαžŠαŸ„αž™ αžœαžΆαž…αŸ’αž”αžΆαžŸαŸ‹αžŽαžΆαžŸαŸ‹αžαžΆαžαžΎαž•αž›αžœαž·αž”αžΆαž€αž’αŸ’αžœαžΈαžαŸ’αž›αŸ‡αž“αžΉαž„αž€αžΎαžαž‘αžΎαž„αž–αžΈαž€αžΆαžšαž”αŸ‰αž»αž“αž”αŸ‰αž„αž’αŸ’αžœαžΎαž‡αžΆαž˜αž½αž™αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž“αŸƒαž€αžΆαžšαž”αž“αŸ’αžŸαž»αžαž›αŸ’αž’αžαŸ‚αž˜αŸ’αž“αžΆαž€αŸ‹αž―αž„αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž”αž‰αŸ’αž…αžΌαž›αŸ”

αž‚αŸ„αž›αž”αŸ†αžŽαž„αž“αŸƒ "αž’αž“αŸ’αž‘αžΆαž€αŸ‹αž—αž€αŸ‹" αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ†αž”αžΆαžαŸ‹αž€αžΆαžšαž’αŸ’αž›αžΆαž€αŸ‹αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž…αžΆαž”αŸ‹αž™αž€αž–αž·αž€αžΆαžšαž—αžΆαž–αž’αŸ’αž„αž“αŸ‹αž’αŸ’αž„αžšαŸ” αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹ αž’αŸ’αž“αž€αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž€αžΌαžŠαž˜αž·αž“αž‚αž½αžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ†αžαžΆαž“αžŠαŸ„αž™αž€αžΌαžŠαžŠαŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎαž‘αŸ’αžšαž„αŸ‹αž‘αŸ’αžšαžΆαž™αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž“αž·αž„αž€αžΆαžšαž”αŸ†αž–αžΆαž“αž›αžΎαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αžΌαžŠαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„ (αžŠαžΌαž…αž‡αžΆαžœαž„αŸ‹αž€αŸ’αžšαž…αž€αž”αž“αŸ’αžαŸ‚αž˜ αž¬αžŸαžΆαžαžΆαžŠαŸ‚αž›αžŠαžΆαž€αŸ‹αž”αž‰αŸ’αž…αžΌαž›αž™αŸ‰αžΆαž„αž‡αŸ’αžšαŸ…αž–αŸαž€)αŸ” αž€αŸ†αž αž»αžŸαžŠαžΌαž…αž‡αžΆ NPEs αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαž”αŸ‹αž”αžΆαž“αžŠαŸ„αž™αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž―αž€αžαžΆ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž˜αž»αž“αž–αŸαž›αž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž αž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚αž”αž„αŸ’αž αžΆαž‰αž™αžΎαž„αžαžΆαž€αŸ†αž αž»αžŸαž“αžΉαž„αž€αžΎαžαž‘αžΎαž„ αžœαžΆαž“αžΉαž„αž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž€αžΆαžšαž‡αž½αžŸαž‡αž»αž›αžšαž”αžŸαŸ‹αžœαžΆαž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž‡αžΏαžαžΆαžœαžΆαž…αŸ’αž”αžΆαžŸαŸ‹αž αžΎαž™αžαžΆαž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž˜αž·αž“αž’αŸ’αžœαžΎαž’αŸ„αž™αž‚αž»αžŽαž—αžΆαž–αž“αŸƒαž•αž›αž·αžαž•αž›αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž”αŸ’αžšαžΎαž˜αŸ’αžαž„αž˜αŸ’αž€αžΆαž› αž αžΎαž™αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž‡αžΆαž“αž·αž…αŸ’αž…αžŠαžΎαž˜αŸ’αž”αžΈαžαŸ’αžšαž„αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαŸ‚αž›αž˜αžΆαž“αž–αž·αž€αžΆαžšαž—αžΆαž–αžŸαžšαž»αž”αŸ” αžŸαŸ†αžŽαž½αžšαžαžΆαžαžΎαž€αžΆαžšαž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž“αžΉαž„αž€αŸ‚αž›αž˜αŸ’αž’αž‚αž»αžŽαž—αžΆαž–αž“αŸƒαž•αž›αž·αžαž•αž›αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‚αžΊαžŸαŸ’αž˜αžΎαž“αžΉαž„αž€αžΆαžšαžŸαž½αžšαžαžΆ "αžαžΎαž‘αžΉαž€αžŠαŸ‚αž›αž™αž€αž…αŸαž‰αž–αžΈαžŸαŸ’αžšαŸ‡αž€αžαŸ’αžœαž€αŸ‹αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αž›αž˜αŸ’αž’αž‚αž»αžŽαž—αžΆαž–αž“αŸƒαž€αžΆαžšαž•αžΉαž€αžŠαŸ‚αžšαž¬αž‘αŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹ colander αžŠαŸ‚αžšαž¬αž‘αŸ?"

αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž‘αŸ…αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„αž€αŸαžšαŸ’αžαž·αŸαžŠαŸ†αžŽαŸ‚αž›

αžŸαŸ†αžŽαž½αžšαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αžŸαŸ†αžαžΆαž“αŸ‹αž˜αž½αž™αŸ– αžšαž”αŸ€αž”αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž‘αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαž˜αžΆαž αžšαžŽαž€αž˜αŸ’αž˜αž”αž“αŸ’αžαž‡αžΆ β€œαž…αŸ’αžšαž€αž‘αŸ’αžœαžΆαžšαž‚αž»αžŽαž—αžΆαž–β€? αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αžΊαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„: αž˜αžΆαž“αžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž€αžΆαžšαž”αžšαžΆαž‡αŸαž™αž“αŸƒαž–αž½αž€αž‚αŸαžŽαžΆαž˜αž½αž™αž‚αžΊαž‡αžΆαž αŸαžαž»αž•αž›αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž‡αžΏαžαžΆαž€αžΆαžšαž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆαž˜αž·αž“αž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž…αŸ’αžšαž€αž‘αŸ’αžœαžΆαžšαž‚αž»αžŽαž—αžΆαž–αŸ” αž€αžΆαžšαž”αŸ‰αž»αž“αž”αŸ‰αž„αžŠαŸ†αž‘αžΎαž„αž…αŸ’αžšαž€αžαžΆαž˜αžœαž·αž’αžΈαžŠαžΌαž…αž‚αŸ’αž“αžΆαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž”αžΆαž“αž”αžšαžΆαž‡αŸαž™αŸ– αž˜αžΆαž“αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž’αŸ†αž–αžΈαž€αžΆαžšαžœαž·αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž–αŸαž€αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαž€αŸαžšαŸ’αžαž·αŸαžŠαŸ†αžŽαŸ‚αž› αž’αŸ’αž“αž€αž˜αž·αž“αž…αž„αŸ‹αž–αŸ’αžšαž„αžΎαž™αž€αž“αŸ’αžαžΎαž™αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž€αŸαž˜αž·αž“αž’αžΆαž…αž‘αŸ…αžšαž½αž…αž‘αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž‰αŸ’αžˆαž”αŸ‹αž€αžΆαžšαžŠαžΉαž€αž‡αž‰αŸ’αž‡αžΌαž“αž•αž›αž·αžαž•αž›αž•αž„αžŠαŸ‚αžšαŸ” αžŠαŸ„αž™β€‹αžŸαžΆαžšβ€‹αžαŸ‚β€‹αžœαžΆβ€‹αž˜αžΆαž“β€‹αž€αžΆαžšβ€‹αž–αŸ’αžšαž˜αžΆαž“β€‹αžšαž”αžŸαŸ‹β€‹αž’αŸ’αž“αž€β€‹αžœαž·αž—αžΆαž‚αŸ”

αž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎαž‡αžΆαž›αžΎαž€αžŠαŸ†αž”αžΌαž„ αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž‡αžΆαž…αŸ’αžšαžΎαž“αž›αžΎαž‚αž˜αŸ’αžšαŸ„αž„αžŽαžΆαž˜αž½αž™ αžŠαŸ‚αž›αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž˜αž·αž“αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸƒαž•αž›αž·αžαž•αž›αž“αŸ„αŸ‡αž‘αŸαŸ” αžœαžΆαž˜αž·αž“αž’αžΆαž…αž‘αŸ…αžšαž½αž…αž‘αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ‚αžαž˜αŸ’αžšαžΌαžœαž˜αžαž·αž™αŸ„αž”αž›αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™ αž αžΎαž™αž˜αž“αž»αžŸαŸ’αžŸαž‡αžΆαž…αŸ’αžšαžΎαž“αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‘αŸαŸ” αž™αŸ‰αžΆαž„αžŽαžΆαž˜αž·αž‰ αž™αžΎαž„αžŠαžΉαž„αžαžΆαž•αž›αž·αžαž•αž›αžšαž”αžŸαŸ‹αž™αžΎαž„αž‘αžΆαŸ†αž„αž˜αžΌαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž˜αž»αž“αž–αŸαž›αžŽαŸ‚αž“αžΆαŸ†αž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž€αŸαžŠαŸ„αž™!

αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž˜αž“αž»αžŸαŸ’αžŸαž‡αžΆαž…αŸ’αžšαžΎαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αŸ’αžαž„αž˜αŸ’αž€αžΆαž›αž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αž αž¬αž”αŸ’αžšαžΎαžœαžΆαžαŸ‚αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αž–αŸαžαŸŒαž˜αžΆαž“ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸαž‰αž™αŸ‰αžΆαž„αžŸαžΆαž˜αž‰αŸ’αž‰αž€αŸ†αž‘αž»αž„αž–αŸαž›αž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆαŸ” αž“αŸαŸ‡αž‚αžΊαžŸαŸ’αž˜αžΎαž“αžΉαž„αž’αžœαžαŸ’αžαž˜αžΆαž“αž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚αžŽαžΆαž˜αž½αž™ αž–αžΈαž–αŸ’αžšαŸ„αŸ‡αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž˜αžΆαž“αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž‡αžΆαž…αŸ’αžšαžΎαž“αžšαž½αž…αž αžΎαž™ αž“αŸ„αŸ‡αž€αžΆαžšαž€αžΎαžαž‘αžΎαž„αž˜αž½αž™αž‘αŸ€αž (αž˜αž·αž“αžαžΆαž’αŸ’αž„αž“αŸ‹αž’αŸ’αž„αžšαž”αŸ‰αž»αžŽαŸ’αžŽαžΆαž‘αŸ) αž“αŸ…αž–αŸαž›αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΌαžŠαž“αžΉαž„αž˜αž·αž“αž˜αžΆαž“αž“αžšαžŽαžΆαž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αŸ”

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸƒαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž…αŸ’αžšαž€αž‘αŸ’αžœαžΆαžšαž‚αž»αžŽαž—αžΆαž–αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŸαŸ’αž‚αžΆαž›αŸ‹:

  • αž€αŸ†αžŽαžαŸ‹αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αž›αžΎαž…αŸ†αž“αž½αž“αžŸαžšαž»αž”αž“αŸƒαž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“ αž¬αž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αžŠαŸ‚αž›αž”αŸ‚αž„αž…αŸ‚αž€αžŠαŸ„αž™αž…αŸ†αž“αž½αž“αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαŸ” αž“αŸαŸ‡αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αž·αž“αž›αŸ’αž’αž‘αŸ αž–αžΈαž–αŸ’αžšαŸ„αŸ‡αž…αŸ’αžšαž€αž‘αŸ’αžœαžΆαžšαž”αŸ‚αž”αž“αŸαŸ‡αž’αž“αž»αž‰αŸ’αž‰αžΆαžαžŠαŸ„αž™αžŸαŸαžšαžΈαž“αžΌαžœαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαŸ‚αž›αž˜αžΆαž“αž–αž·αž€αžΆαžšαž—αžΆαž–αžαŸ’αž˜αžΈαž†αŸ’αž›αž„αž€αžΆαžαŸ‹ αžŠαžšαžΆαž”αžŽαžΆαžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αžšαž”αžŸαŸ‹αžœαžΆαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž›αžΎαžŸαŸ”
  • αž‡αž½αžŸαž‡αž»αž›αž“αŸ…αž–αŸαž›αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™ αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž…αžΆαžŸαŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαžŠαŸ‚αž›αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αžΎαž–αžΎ αž“αž·αž„αž”αžŠαž·αžŸαŸαž’αž˜αž·αž“αž”αž„αŸ’αž€αžΎαžαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αžαŸ’αž˜αžΈαž€αžΎαžαž‘αžΎαž„αŸ” αž˜αž»αžαž„αžΆαžšαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αžŠαŸ„αž™ PVS-studio αž“αž·αž„αž’αž“αž’αžΆαž“αž’αž“αž‘αžΆαž‰αž˜αž½αž™αž…αŸ†αž“αž½αž“ αž§αž‘αžΆαž αžšαžŽαŸ Codacy αŸ” αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž˜αžΆαž“αž±αž€αžΆαžŸαž’αŸ’αžœαžΎαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ PVS-studio αž‘αŸ αžŠαžΌαž…αž‡αžΆαž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž‡αžΆαž˜αž½αž™ Codacy αž”αž‰αŸ’αž αžΆαž…αž˜αŸ’αž”αž„αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž‚αžΊαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžαžΆαž’αŸ’αžœαžΈαž‡αžΆ "αž…αžΆαžŸαŸ‹" αž αžΎαž™αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž‡αžΆ "αžαŸ’αž˜αžΈ" error αž‚αžΊαž‡αžΆαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αžŠαŸ‚αž›αž˜αž·αž“αžαŸ‚αž„αžαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž‡αžΆαž–αž·αžŸαŸαžŸαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž―αž€αžŸαžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αž”αŸ’αžšαŸ‚ αž¬αž”αŸ’αžαžΌαžšαžˆαŸ’αž˜αŸ„αŸ‡αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αŸ” αžαžΆαž˜αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† Codacy αž’αžΆαž…αž“αžΉαž„αž–αŸ’αžšαž„αžΎαž™αž€αž“αŸ’αžαžΎαž™αž“αžΉαž„αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αžαŸ’αž˜αžΈαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ†αžŽαžΎαžšαž‘αžΆαž‰αž˜αž½αž™ αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™αž˜αž·αž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžŸαŸ†αžŽαžΎαž‘αžΆαž‰αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αžŠαŸ‚αž›αž˜αž·αž“αž‘αžΆαž€αŸ‹αž‘αž„αž‘αŸ…αž“αžΉαž„αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΌαžŠαž“αŸƒ PR αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αŸ”
  • αžαžΆαž˜αž‚αŸ†αž“αž·αžαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸαž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž”αŸ†αž•αž»αžαž‚αžΊαž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ€αžœαž—αŸ… αž€αžΆαžšαžŠαžΉαž€αž‡αž‰αŸ’αž‡αžΌαž“αž”αž“αŸ’αž "αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸƒαž€αžΆαžšαžαŸ„αž„" αŸ” αž‚αŸ†αž“αž·αžαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‚αžΊαžαžΆαž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž’αŸ†αž–αžΈαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž‚αžΊαž‡αžΆαž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž·αž“αŸƒαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž“αžΈαž˜αž½αž™αŸ— αž αžΎαž™αž˜αžΆαž“αžαŸ‚αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαžŠαŸ‚αž›αž˜αž·αž“αž”αž„αŸ’αž€αžΎαž“αž…αŸ†αž“αž½αž“αžŸαžšαž»αž”αž“αŸƒαž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αŸ”

Ratchet

αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαžΆαž˜αžœαž·αž’αžΈαž“αŸαŸ‡αŸ–

  1. αž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŠαŸ†αž”αžΌαž„ αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαž’αŸ†αž–αžΈαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαžŠαŸ‚αž›αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžŠαŸ„αž™αž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαž…αžšαž“αŸ’αž αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžƒαŸ’αž›αžΆαŸ†αž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚ "αž…αŸαž‰αž•αŸ’αžŸαžΆαž™ 7.0.2" αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚ "αž…αŸαž‰αž•αŸ’αžŸαžΆαž™ 7.0.2 αžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“ 100500 checkstyle αŸ”" αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžƒαŸ’αž›αžΆαŸ†αž„αž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹ (αžŠαžΌαž…αž‡αžΆ Artifactory) αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαž”αŸ‚αž”αž“αŸαŸ‡αž’αŸ†αž–αžΈαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‚αžΊαž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ”
  2. αž₯αž‘αžΌαžœαž“αŸαŸ‡ αžŸαŸ†αžŽαžΎαž‘αžΆαž‰αž“αžΈαž˜αž½αž™αŸ— αž“αŸ…αž–αŸαž›αžŸαžΆαž„αžŸαž„αŸ‹ αž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž›αž‘αŸ’αž’αž•αž›αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎ PR αž“αžΆαŸ†αž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž€αžΎαž“αž‘αžΎαž„αž“αŸƒαž…αŸ†αž“αž½αž“αž“αŸαŸ‡ αž“αŸ„αŸ‡αž›αŸαžαž€αžΌαžŠαž˜αž·αž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž…αŸ’αžšαž€αž‚αž»αžŽαž—αžΆαž–αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž‘αŸαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αžαž™αž…αž»αŸ‡ αž¬αž˜αž·αž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš αž“αŸ„αŸ‡αžœαžΆαž†αŸ’αž›αž„αž€αžΆαžαŸ‹αŸ”
  3. αž“αŸ…αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹ αž…αŸ†αž“αž½αž“αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αžŠαŸ‚αž›αž”αžΆαž“αž‚αžŽαž“αžΆαž‘αžΎαž„αžœαž·αž‰αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžαŸ‹αžαŸ’αžšαžΆαž˜αŸ’αžαž„αž‘αŸ€αžαž“αŸ…αž€αŸ’αž“αž»αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαž“αŸƒαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αŸ”

αž”αž“αŸ’αžαž·αž…αž˜αŸ’αžŠαž„αŸ— αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž›αŸ†αžŠαžΆαž”αŸ‹ (αžŠαžΌαž…αž‡αžΆαž“αŸ…αž–αŸαž›αžŠαŸ‚αž› ratchet αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš) αž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž“αžΉαž„αž˜αžΆαž“αž‘αŸ†αž“αŸ„αžšαž‘αŸ…αžŸαžΌαž“αŸ’αž™αŸ” αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž†αŸ„αžαžŠαŸ„αž™αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αžαŸ’αž˜αžΈαž˜αž½αž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžΆαžšαž€αŸ‚αžαž˜αŸ’αžšαžΌαžœαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž•αŸ’αžŸαŸαž„αŸ” αž“αŸαŸ‡αž‡αžΆαžšαžΏαž„αž’αž˜αŸ’αž˜αžαžΆαž‘αŸ αž–αžΈαž–αŸ’αžšαŸ„αŸ‡αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž…αž˜αŸ’αž„αžΆαž™αž†αŸ’αž„αžΆαž™ αžœαžΆαž•αŸ’αžαž›αŸ‹αž›αž‘αŸ’αž’αž•αž›αŸ– αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αžαž˜αŸ’αžšαžΌαžœ αž‡αžΆαž€αŸ’αž”αž½αž“ αž˜αž·αž“αž˜αŸ‚αž“αž”αž»αž‚αŸ’αž‚αž›αž˜αŸ’αž“αžΆαž€αŸ‹αŸ—αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž€αŸ’αžšαž»αž˜αž“αŸƒαž”αŸ’αžšαž—αŸαž‘αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™ αž αžΎαž™αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αžŠαŸ‚αž›αž’αžΆαž…αžŠαž€αž…αŸαž‰αž”αžΆαž“αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž›αž»αž”αž…αŸ„αž›αž™αŸ‰αžΆαž„αž†αžΆαž”αŸ‹αžšαž αŸαžŸαŸ”

αž€αŸ’αžšαžΆαž αŸ’αžœαž“αŸαŸ‡αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž…αŸ†αž“αž½αž“αžŸαžšαž»αž”αž“αŸƒαž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“ Checkstyle αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž™αŸˆαž–αŸαž›αž”αŸ’αžšαžΆαŸ†αž˜αž½αž™αžαŸ‚αž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸƒ "ratchet" αž”αŸ‚αž”αž“αŸαŸ‡αž“αŸ…αž›αžΎ αž‚αž˜αŸ’αžšαŸ„αž„αž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž‚αž˜αŸ’αžšαŸ„αž„ OpenSource αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”. αž…αŸ†αž“αž½αž“β€‹αž“αŸƒβ€‹αž€αžΆαžšβ€‹αž–αŸ’αžšαž˜αžΆαž“β€‹αž”αžΆαž“β€‹αžαž™β€‹αž…αž»αŸ‡β€‹αžαžΆαž˜β€‹αž›αŸ†αžŠαžΆαž”αŸ‹β€‹αž“αŸƒβ€‹αžšαŸ‰αž·αž…αž‘αŸαžš αž αžΎαž™β€‹αžœαžΆβ€‹αž”αžΆαž“β€‹αž€αžΎαžβ€‹αž‘αžΎαž„β€‹αžŠαŸ„αž™β€‹αž’αž˜αŸ’αž˜αž‡αžΆαžαž· αžŸαŸ’αžšαž”β€‹αž“αžΉαž„β€‹αž€αžΆαžšβ€‹αž’αž—αž·αžœαžŒαŸ’αžβ€‹αž•αž›αž·αžαž•αž›!

αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž‘αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž‡αžΆαž‡αžΆαž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ†αž αž»αžŸαž‡αžΆαž˜αž½αž™αžœαžΆαŸ”

αžαŸ’αž‰αž»αŸ†αž”αŸ’αžšαžΎαž€αŸ†αžŽαŸ‚αžŠαŸ‚αž›αž”αžΆαž“αž€αŸ‚αž”αŸ’αžšαŸ‚αž“αŸƒαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž“αŸαŸ‡ αžŠαŸ„αž™αžšαžΆαž”αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž–αžΈαž‚αŸ’αž“αžΆαž“αžΌαžœαž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αžŠαŸ„αž™αž˜αŸ‰αžΌαžŒαž»αž›αž‚αž˜αŸ’αžšαŸ„αž„ αž“αž·αž„αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚ αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš YAML αžŠαŸ‚αž›αž˜αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαžŠαŸ‚αž›αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡αŸ–

celesta-sql:
  checkstyle: 434
  spotbugs: 45
celesta-core:
  checkstyle: 206
  spotbugs: 13
celesta-maven-plugin:
  checkstyle: 19
  spotbugs: 0
celesta-unit:
  checkstyle: 0
  spotbugs: 0

αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’ CI αž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹αžŽαžΆαž˜αž½αž™ ratchet αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαžŽαžΆαž˜αž½αž™αžŠαŸ„αž™αž˜αž·αž“αž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ αž“αž·αž„αž§αž”αž€αžšαžŽαŸαž—αžΆαž‚αžΈαž‘αžΈαž”αžΈαŸ” αž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚αž“αžΈαž˜αž½αž™αŸ—αž”αž„αŸ’αž€αžΎαžαžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αž‡αžΆαž’αžαŸ’αžαž”αž‘αžŸαžΆαž˜αž‰αŸ’αž‰ αž¬αž‘αž˜αŸ’αžšαž„αŸ‹ XML αžŠαŸ‚αž›αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžœαž·αž—αžΆαž‚αŸ” αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αž‚αžΊαžαŸ’αžšαžΌαžœαžŸαžšαžŸαŸαžšαžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž…αžΆαŸ†αž”αžΆαž…αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αž‚αŸ’αžšαžΈαž” CI αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž αžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎ Jenkins αž“αž·αž„ Artifactory αž“αŸ…αž‘αžΈαž“αŸαŸ‡ ឬ αž“αŸ…αž‘αžΈαž“αŸαŸ‡. αž§αž‘αžΆαž αžšαžŽαŸαž‘αžΆαŸ†αž„αž–αžΈαžšαž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž”αžŽαŸ’αžŽαžΆαž›αŸαž™ ratchetlibαŸ– αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž countWarnings() αžšαžΆαž”αŸ‹αžŸαŸ’αž›αžΆαž€ xml αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™ Checkstyle αž“αž·αž„ Spotbugs αžαžΆαž˜αžœαž·αž’αžΈαž’αž˜αŸ’αž˜αžαžΆ αž“αž·αž„ compareWarningMaps() αž’αž“αž»αžœαžαŸ’αž ratchet αžŠαžΌαž…αž‚αŸ’αž“αžΆαžŠαŸ„αž™αž”αŸ„αŸ‡αž€αŸ†αž αž»αžŸαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž—αŸαž‘αžŽαžΆαž˜αž½αž™αž€αžΎαž“αž‘αžΎαž„αŸ”

αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž“αŸƒ "ratchet" αž‚αžΊαž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžœαž·αž—αžΆαž‚αž’αž€αŸ’αžαžšαžΆαžœαž·αžšαž»αž‘αŸ’αž’αž“αŸƒαž˜αžαž·αž™αŸ„αž”αž›αŸ‹, αž’αž€αŸ’αžŸαžšαž’αž€αŸ’αžŸαžšαž“αž·αž„αž―αž€αžŸαžΆαžšαžŠαŸ„αž™αž”αŸ’αžšαžΎαž’αž€αŸ’αžŸαžšαŸ” αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αžŠαžΉαž„αž αžΎαž™αžαžΆ αž“αŸ…αž–αŸαž›αž–αž·αž“αž·αžαŸ’αž™αž’αž€αŸ’αžαžšαžΆαžœαž·αžšαž»αž‘αŸ’αž’ αž˜αž·αž“αž˜αŸ‚αž“αž‚αŸ’αžšαž”αŸ‹αž–αžΆαž€αŸ’αž™αžŠαŸ‚αž›αž˜αž·αž“αžŸαŸ’αž‚αžΆαž›αŸ‹αž…αŸ†αž–αŸ„αŸ‡αžœαž…αž“αžΆαž“αž»αž€αŸ’αžšαž˜αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž‚αžΊαž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‘αŸ αž–αž½αž€αž‚αŸαž’αžΆαž…αž”αž‰αŸ’αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αžœαž…αž“αžΆαž“αž»αž€αŸ’αžšαž˜αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αžΆαž“αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαž•αŸ’αž“αŸ‚αž€αžœαž…αž“αžΆαž“αž»αž€αŸ’αžšαž˜αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αž“αŸƒαž€αžΌαžŠαž”αŸ’αžšαž—αž–αžšαž”αžŸαŸ‹αž‚αž˜αŸ’αžšαŸ„αž„αž“αŸ„αŸ‡ αž…αŸ’αžšαž€αž‚αž»αžŽαž—αžΆαž–αž’αž€αŸ’αžαžšαžΆαžœαž·αžšαž»αž‘αŸ’αž’αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžαžΆαž˜αžœαž·αž’αžΈαž“αŸαŸ‡αŸ– αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš aspell αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžœαž…αž“αžΆαž“αž»αž€αŸ’αžšαž˜αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš αž“αž·αž„αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“ αž˜αž·αž“αž‚αž½αžš αžšαž€αž˜αž·αž“αžƒαžΎαž‰αž€αŸ†αž αž»αžŸαž’αž€αŸ’αžαžšαžΆαžœαž·αžšαž»αž‘αŸ’αž’αŸ”

αž’αŸ†αž–αžΈαžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αž“αŸƒαž€αžΆαžšαž‡αž½αžŸαž‡αž»αž›αž€αŸ†αžŽαŸ‚αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚

αžŸαžšαž»αž”αžŸαŸαž…αž€αŸ’αžαžΈ αž…αŸ†αžŽαž»αž…αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž‚αžΊαžαžΆ αž˜αž·αž“αžαžΆαž’αŸ’αž“αž€αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžœαž·αž—αžΆαž‚αž”αŸ‚αž”αžŽαžΆαž‘αŸ…αž€αŸ’αž“αž»αž„αž”αŸ†αž–αž„αŸ‹αž…αŸ‚αž€αž…αžΆαž™αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‘αŸ αž€αŸ†αžŽαŸ‚αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚αžαŸ’αžšαžΌαžœαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αž½αžŸαž‡αž»αž›αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αžŠαŸ„αž™αž―αž€αž―αž„ αž“αŸ„αŸ‡αž“αŸ…αž–αŸαž›αž•αŸ’αž‚αž»αŸ†αžŸαŸ†αžŽαžΎαž‘αžΆαž‰αž”αž“αŸ’αž‘αžΆαž”αŸ‹ αž–αž·αž€αžΆαžšαž—αžΆαž–αžαŸ’αž˜αžΈαž’αžΆαž… "αž›αŸαž…αž‘αžΎαž„" αžŠαŸ‚αž›αž˜αž·αž“αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΌαžŠ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚αžαŸ’αž˜αžΈαž’αžΆαž…αžšαž€αžƒαžΎαž‰αž–αž·αž€αžΆαžšαž—αžΆαž–αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž - αž αžΎαž™αžœαžΆαž“αžΉαž„αž”αŸ†αž”αŸ‚αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‘αž‘αž½αž›αž™αž€αžŸαŸ†αžŽαžΎαž‘αžΆαž‰αŸ” αž€αžΆαžšαž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž“αžΌαžœαž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αž‚αž½αžšαžαŸ‚αž‡αžΆαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αžŠαŸ‚αž›αžŠαžΉαž„αžαŸ’αž›αž½αž“αŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž€αžΆαžšαž‡αž½αžŸαž‡αž»αž›αž™αŸ‰αžΆαž„αžαžΉαž„αžšαžΉαž„αž“αŸƒαž€αŸ†αžŽαŸ‚αž“αŸƒαž’αžΆαžαž»αž•αŸ’αžŸαŸ†αž“αŸƒαžŸαž“αŸ’αž“αž·αž”αžΆαžαž“αžΈαž˜αž½αž™αŸ— αž‡αžΆαž‘αžΌαž‘αŸ…αž‚αžΊαž‡αžΆαžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž…αžΆαŸ†αž”αžΆαž…αŸ‹ αž“αž·αž„αž‡αžΆαž”αŸ’αžšαž’αžΆαž“αž”αž‘αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž˜αž½αž™αŸ”

αž€αžΆαžšαžšαž€αžƒαžΎαž‰

  • αž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž“αžΉαž„αž˜αž·αž“αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ†αž αž»αžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€ αž αžΎαž™αž“αžΉαž„αž˜αž·αž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž‚αž»αžŽαž—αžΆαž–αž“αŸƒαž•αž›αž·αžαž•αž›αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ‚αž˜αž½αž™αž“αŸ„αŸ‡αž‘αŸαŸ” αž₯αž‘αŸ’αž’αž·αž–αž›αžœαž·αž‡αŸ’αž‡αž˜αžΆαž“αž›αžΎαž‚αž»αžŽαž—αžΆαž–αž’αžΆαž…αžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αžαŸ‚αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžαŸαžšαžšαž”αžŸαŸ‹αžœαžΆαž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αŸ”
  • αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ†αž αž»αžŸαž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž—αžΆαžšαž€αž·αž…αŸ’αž…αž…αž˜αŸ’αž”αž„αž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‘αžΆαž›αŸ‹αžαŸ‚αžŸαŸ„αŸ‡ αž˜αž»αžαž„αžΆαžšαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž αŸ”
  • αž’αž“αž»αžœαžαŸ’αžαž…αŸ’αžšαž€αž‘αŸ’αžœαžΆαžšαž‚αž»αžŽαž—αžΆαž–αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŠαŸ†αž”αžΌαž„αž“αŸƒαž”αŸ†αž–αž„αŸ‹αž…αŸ‚αž€αž…αžΆαž™αžŠαŸ„αž™αž”αŸ’αžšαžΎ "ratchet" αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž›αŸαžαž€αžΌαžŠαž€αŸαžšαŸ’αžαž·αŸαžŠαŸ†αžŽαŸ‚αž›αŸ”

αžŸαŸαž…αž€αŸ’αžαžΈαž™αŸ„αž„

  1. αž€αžΆαžšαžŠαžΉαž€αž‡αž‰αŸ’αž‡αžΌαž“αž”αž“αŸ’αž
  2. A. Kudryavtsev: αž€αžΆαžšαžœαž·αž—αžΆαž‚αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ– αžšαž”αŸ€αž”αž™αž›αŸ‹αžαžΆαž’αŸ’αž“αž€αž‡αžΆαž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž›αŸ’αž’αŸ” αžšαžΆαž™αž€αžΆαžšαžŽαŸαž’αŸ†αž–αžΈαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž•αŸ’αžŸαŸαž„αŸ—αž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚αž€αžΌαžŠ (αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž‹αž·αžαž·αžœαž“αŸ’αžαž‘αŸ!)

αž”αŸ’αžšαž—αž–: www.habr.com

αž‘αž·αž‰αž€αžΆαžšαž”αž„αŸ’αž αŸ„αŸ‡αžŠαŸ‚αž›αž’αžΆαž…αž‘αž»αž€αž…αž·αžαŸ’αžαž”αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαž€αžΆαžšαž–αžΆαžš DDoS, αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ VPS VDS πŸ”₯ αž‘αž·αž‰αžŸαŸαžœαžΆαž”αž„αŸ’αž αŸ„αŸ‡αž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž’αžΆαž…αž‘αž»αž€αž…αž·αžαŸ’αžαž”αžΆαž“αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αžΆαžšαž–αžΆαžš DDoS αž“αž·αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ VPS VDS | ProHoster