ΠŸΡ€Π΅Π½ΠΎΡˆΠ΅ΡšΠ΅ ПΠ₯П ΠΏΠΎΠ·Π°Π΄ΠΈΠ½Π΅ Π½Π° РСдис стрСам магистралу ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ нСзависнС ΠΎΠ΄ ΠΎΠΊΠ²ΠΈΡ€Π°

ΠŸΡ€Π΅Π½ΠΎΡˆΠ΅ΡšΠ΅ ПΠ₯П ΠΏΠΎΠ·Π°Π΄ΠΈΠ½Π΅ Π½Π° РСдис стрСам магистралу ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ нСзависнС ΠΎΠ΄ ΠΎΠΊΠ²ΠΈΡ€Π°

ΠŸΡ€Π΅Π΄Π³ΠΎΠ²ΠΎΡ€

Моја Π²Π΅Π± Π»ΠΎΠΊΠ°Ρ†ΠΈΡ˜Π°, ΠΊΠΎΡ˜Ρƒ Π²ΠΎΠ΄ΠΈΠΌ ΠΈΠ· Ρ…ΠΎΠ±ΠΈΡ˜Π°, Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½Π° јС Π·Π° Ρ…ΠΎΡΡ‚ΠΎΠ²Π°ΡšΠ΅ Π·Π°Π½ΠΈΠΌΡ™ΠΈΠ²ΠΈΡ… ΠΏΠΎΡ‡Π΅Ρ‚Π½ΠΈΡ… страница ΠΈ Π»ΠΈΡ‡Π½ΠΈΡ… ΡΠ°Ρ˜Ρ‚ΠΎΠ²Π°. Ова Ρ‚Π΅ΠΌΠ° јС ΠΏΠΎΡ‡Π΅Π»Π° Π΄Π° ΠΌΠ΅ Π·Π°Π½ΠΈΠΌΠ° Π½Π° самом ΠΏΠΎΡ‡Π΅Ρ‚ΠΊΡƒ ΠΌΠΎΠ³ програмског ΠΏΡƒΡ‚Π°, Ρƒ Ρ‚ΠΎΠΌ Ρ‚Ρ€Π΅Π½ΡƒΡ‚ΠΊΡƒ сам Π±ΠΈΠΎ фасциниран ΠΏΡ€ΠΎΠ½Π°Π»Π°ΠΆΠ΅ΡšΠ΅ΠΌ Π²Π΅Π»ΠΈΠΊΠΈΡ… профСсионалаца који ΠΏΠΈΡˆΡƒ ΠΎ сСби, својим Ρ…ΠΎΠ±ΠΈΡ˜ΠΈΠΌΠ° ΠΈ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚ΠΈΠΌΠ°. Навика Π΄Π° ΠΈΡ… ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°ΠΌ Π·Π° сСбС остала јС Π΄ΠΎ данас: Π½Π° скоро сваком ΠΊΠΎΠΌΠ΅Ρ€Ρ†ΠΈΡ˜Π°Π»Π½ΠΎΠΌ ΠΈ Π½Π΅ баш ΠΊΠΎΠΌΠ΅Ρ€Ρ†ΠΈΡ˜Π°Π»Π½ΠΎΠΌ ΡΠ°Ρ˜Ρ‚Ρƒ, настављам Π΄Π° Π³Π»Π΅Π΄Π°ΠΌ Ρƒ подноТјС Ρƒ ΠΏΠΎΡ‚Ρ€Π°Π·ΠΈ Π·Π° Π»ΠΈΠ½ΠΊΠΎΠ²ΠΈΠΌΠ° ΠΊΠ° Π°ΡƒΡ‚ΠΎΡ€ΠΈΠΌΠ°.

Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° идСјС

ΠŸΡ€Π²Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° јС Π±ΠΈΠ»Π° само Ρ…Ρ‚ΠΌΠ» страница Π½Π° ΠΌΠΎΠΌ Π»ΠΈΡ‡Π½ΠΎΠΌ Π²Π΅Π± ΡΠ°Ρ˜Ρ‚Ρƒ, Π³Π΄Π΅ сам ставио Π²Π΅Π·Π΅ са потписима Ρƒ ΡƒΠ» листу. ΠžΡ‚ΠΊΡƒΡ†Π°Π²ΡˆΠΈ 20 страница Ρ‚ΠΎΠΊΠΎΠΌ ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΎΠ³ врСмСнског ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π°, ΠΏΠΎΡ‡Π΅ΠΎ сам Π΄Π° мислим Π΄Π° ΠΎΠ²ΠΎ нијС баш Сфикасан ΠΈ ΠΎΠ΄Π»ΡƒΡ‡ΠΈΠΎ сам Π΄Π° ΠΏΠΎΠΊΡƒΡˆΠ°ΠΌ Π΄Π° Π°ΡƒΡ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΡƒΡ˜Π΅ΠΌ процСс. На стацковСрфлов-Ρƒ сам ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ΠΈΠΎ Π΄Π° ΠΌΠ½ΠΎΠ³ΠΈ Ρ™ΡƒΠ΄ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°Ρ˜Ρƒ ΡΠ°Ρ˜Ρ‚ΠΎΠ²Π΅ Ρƒ својим ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΠΌΠ°, ΠΏΠ° сам написао парсСр Ρƒ ΠΏΡ…ΠΏ-Ρƒ, који јС Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ ΠΏΡ€ΠΎΡˆΠ°ΠΎ ΠΊΡ€ΠΎΠ· ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅, ΠΏΠΎΡ‡Π΅Π²ΡˆΠΈ ΠΎΠ΄ ΠΏΡ€Π²ΠΎΠ³ (адрСсС Π½Π° БО Π΄ΠΎ данас су ΠΎΠ²Π°ΠΊΠ²Π΅: `/усСрс/1` ), издвојио Π²Π΅Π·Π΅ ΠΈΠ· ΠΆΠ΅Ρ™Π΅Π½Π΅ ΠΎΠ·Π½Π°ΠΊΠ΅ ΠΈ Π΄ΠΎΠ΄Π°ΠΎ јС Ρƒ Π‘ΠšΠ›ΠΈΡ‚Π΅.

Ово сС ΠΌΠΎΠΆΠ΅ Π½Π°Π·Π²Π°Ρ‚ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π²Π΅Ρ€Π·ΠΈΡ˜ΠΎΠΌ: ΠΊΠΎΠ»Π΅ΠΊΡ†ΠΈΡ˜Π° ΠΎΠ΄ дСсСтина Ρ…ΠΈΡ™Π°Π΄Π° Π£Π Π›-ΠΎΠ²Π° Ρƒ Π‘ΠšΠ›ΠΈΡ‚Π΅ Ρ‚Π°Π±Π΅Π»ΠΈ, која јС Π·Π°ΠΌΠ΅Π½ΠΈΠ»Π° статичку листу Ρƒ Ρ…Ρ‚ΠΌΠ»-Ρƒ. Π£Ρ€Π°Π΄ΠΈΠΎ сам Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½Ρƒ ΠΏΡ€Π΅Ρ‚Ρ€Π°Π³Ρƒ Π½Π° овој листи. ΠˆΠ΅Ρ€ ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π»Π΅ су само Π£Π Π› адрСсС, ΠΎΠ½Π΄Π° сС ΠΏΡ€Π΅Ρ‚Ρ€Π°Π³Π° Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ заснивала Π½Π° њима.

Π£ овој Ρ„Π°Π·ΠΈ сам напустио ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ ΠΈ Π²Ρ€Π°Ρ‚ΠΈΠΎ ΠΌΡƒ сС послС Π΄ΡƒΠΆΠ΅Π³ Π²Ρ€Π΅ΠΌΠ΅Π½Π°. Π£ овој Ρ„Π°Π·ΠΈ, мојС Ρ€Π°Π΄Π½ΠΎ искуство јС Π±ΠΈΠ»ΠΎ Π²Π΅Ρ› вишС ΠΎΠ΄ Ρ‚Ρ€ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π΅ ΠΈ осСтио сам Π΄Π° ΠΌΠΎΠ³Ρƒ Π΄Π° Ρ€Π°Π΄ΠΈΠΌ Π½Π΅ΡˆΡ‚ΠΎ ΠΎΠ·Π±ΠΈΡ™Π½ΠΈΡ˜Π΅. ΠŸΠΎΡ€Π΅Π΄ Ρ‚ΠΎΠ³Π°, ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π»Π° јС Π²Π΅Π»ΠΈΠΊΠ° ΠΆΠ΅Ρ™Π° Π΄Π° сС ΡΠ°Π²Π»Π°Π΄Π°Ρ˜Ρƒ Ρ€Π΅Π»Π°Ρ‚ΠΈΠ²Π½ΠΎ Π½ΠΎΠ²Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ˜Π΅.

ΠœΠΎΠ΄Π΅Ρ€Π½Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π°

ΠŸΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ распорСђСна Ρƒ Π”ΠΎΡ†ΠΊΠ΅Ρ€-Ρƒ, Π±Π°Π·Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° јС ΠΏΡ€Π΅Π±Π°Ρ‡Π΅Π½Π° Ρƒ ΠΌΠΎΠ½Π³ΠΎΠ”Π±, Π° Π½Π΅Π΄Π°Π²Π½ΠΎ јС Π΄ΠΎΠ΄Π°Ρ‚ Ρ€Π°Π΄ΠΈΡˆ, који јС Ρƒ ΠΏΠΎΡ‡Π΅Ρ‚ΠΊΡƒ Π±ΠΈΠΎ само Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°ΡšΠ΅. Као основа сС користи јСдан ΠΎΠ΄ ПΠ₯П ΠΌΠΈΠΊΡ€ΠΎΠΎΠΊΠ²ΠΈΡ€ΠΎΠ²Π°.

ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ

НовС Π»ΠΎΠΊΠ°Ρ†ΠΈΡ˜Π΅ сС Π΄ΠΎΠ΄Π°Ρ˜Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ ΠΊΠΎΠ½Π·ΠΎΠ»Π΅ која синхроно Ρ€Π°Π΄ΠΈ слСдСћС:

  • ΠŸΡ€Π΅ΡƒΠ·ΠΈΠΌΠ° ΡΠ°Π΄Ρ€ΠΆΠ°Ρ˜ ΠΏΡ€Π΅ΠΌΠ° Π£Π Π›-Ρƒ
  • ΠŸΠΎΡΡ‚Π°Π²Ρ™Π° ΠΎΠ·Π½Π°ΠΊΡƒ која ΠΏΠΎΠΊΠ°Π·ΡƒΡ˜Π΅ Π΄Π° Π»ΠΈ јС Π₯ВВПБ Π±ΠΈΠΎ доступан
  • Π§ΡƒΠ²Π° ΡΡƒΡˆΡ‚ΠΈΠ½Ρƒ Π²Π΅Π± страницС
  • Π˜Π·Π²ΠΎΡ€Π½ΠΈ Π₯Π’ΠœΠ› ΠΈ Π·Π°Π³Π»Π°Π²Ρ™Π° сС Ρ‡ΡƒΠ²Π°Ρ˜Ρƒ Ρƒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡ˜ΠΈ β€žΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€Π°ΡšΠ°β€œ.
  • Π Π°ΡˆΡ‡Π»Π°ΡšΡƒΡ˜Π΅ ΡΠ°Π΄Ρ€ΠΆΠ°Ρ˜, издваја наслов ΠΈ опис
  • Π§ΡƒΠ²Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Ρƒ посСбну ΠΊΠΎΠ»Π΅ΠΊΡ†ΠΈΡ˜Ρƒ

Ово јС Π±ΠΈΠ»ΠΎ Π΄ΠΎΠ²ΠΎΡ™Π½ΠΎ Π΄Π° Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ ΡƒΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚ΠΈΡ‚Π΅ ΡΠ°Ρ˜Ρ‚ΠΎΠ²Π΅ ΠΈ ΠΏΡ€ΠΈΠΊΠ°ΠΆΠ΅Ρ‚Π΅ ΠΈΡ… Π½Π° листи:

ΠŸΡ€Π΅Π½ΠΎΡˆΠ΅ΡšΠ΅ ПΠ₯П ΠΏΠΎΠ·Π°Π΄ΠΈΠ½Π΅ Π½Π° РСдис стрСам магистралу ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ нСзависнС ΠΎΠ΄ ΠΎΠΊΠ²ΠΈΡ€Π°

Али идСја Π΄Π° сС свС аутоматски индСксира, ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡˆΠ΅ ΠΈ Ρ€Π°Π½Π³ΠΈΡ€Π°, Π΄Π° сС свС Π°ΠΆΡƒΡ€ΠΈΡ€Π°, нијС сС Π΄ΠΎΠ±Ρ€ΠΎ ΡƒΠΊΠ»Π°ΠΏΠ°Π»Π° Ρƒ ΠΎΠ²Ρƒ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ. Π§Π°ΠΊ ΠΈ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ додавањС Π²Π΅Π± ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Π·Π° додавањС страница Π·Π°Ρ…Ρ‚Π΅Π²Π°Π»ΠΎ јС Π΄ΡƒΠΏΠ»ΠΈΡ€Π°ΡšΠ΅ ΠΊΠΎΠ΄Π° ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°ΡšΠ΅ ΠΊΠ°ΠΊΠΎ Π±ΠΈ сС ΠΈΠ·Π±Π΅Π³Π°ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΡ˜Π°Π»Π½ΠΈ Π”Π”ΠΎΠ‘.

Π“Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ, Π½Π°Ρ€Π°Π²Π½ΠΎ, свС сС ΠΌΠΎΠΆΠ΅ Ρ€Π°Π΄ΠΈΡ‚ΠΈ синхроно, Π° Ρƒ Π²Π΅Π± ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ Π΄Π° сачуватС Π£Π Π› Ρ‚Π°ΠΊΠΎ Π΄Π° монструозни Π΄Π΅ΠΌΠΎΠ½ ΠΎΠ±Π°Π²Ρ™Π° свС Π·Π°Π΄Π°Ρ‚ΠΊΠ΅ Π·Π° Π£Π Π›-ΠΎΠ²Π΅ са листС. Али ΠΈΠΏΠ°ΠΊ, Ρ‡Π°ΠΊ ΠΈ ΠΎΠ²Π΄Π΅ сС сама ΠΏΠΎ сСби Π½Π°ΠΌΠ΅Ρ›Π΅ Ρ€Π΅Ρ‡ β€žΡ€Π΅Π΄β€œ. А Π°ΠΊΠΎ сС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° Ρ€Π΅Π΄, сви Π·Π°Π΄Π°Ρ†ΠΈ сС ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΠΈ ΠΈ ΠΎΠ±Π°Π²Ρ™Π°Ρ‚ΠΈ Π±Π°Ρ€Π΅ΠΌ асинхроно.

ΠΎΠ΄Π»ΡƒΠΊΠ°

Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Ρ€Π΅Π΄ΠΎΠ²Π΅ ΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ систСм Π²ΠΎΡ’Π΅Π½ Π΄ΠΎΠ³Π°Ρ’Π°Ρ˜ΠΈΠΌΠ° Π·Π° ΠΎΠ±Ρ€Π°Π΄Ρƒ свих Π·Π°Π΄Π°Ρ‚Π°ΠΊΠ°. И Π²Π΅Ρ› Π΄ΡƒΠΆΠ΅ Π²Ρ€Π΅ΠΌΠ΅ ΠΆΠ΅Π»ΠΈΠΌ Π΄Π° испробам РСдис БтрСамс.

ΠšΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ РСдис стримова Ρƒ ПΠ₯П-Ρƒ

ΠˆΠ΅Ρ€ ΠŸΠΎΡˆΡ‚ΠΎ мој ΠΎΠΊΠ²ΠΈΡ€ нијС јСдан ΠΎΠ΄ Ρ‚Ρ€ΠΈ Π³ΠΈΠ³Π°Π½Ρ‚Π° Π‘ΠΈΠΌΡ„ΠΎΠ½ΠΈ, Π›Π°Ρ€Π°Π²Π΅Π», Иии, ΠΆΠ΅Π»Π΅ΠΎ Π±ΠΈΡ… Π΄Π° ΠΏΡ€ΠΎΠ½Π°Ρ’Π΅ΠΌ нСзависну Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. Али, ΠΊΠ°ΠΊΠΎ сС ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ (Π½Π° ΠΏΡ€Π²ΠΎΠΌ ΠΏΡ€Π΅Π³Π»Π΅Π΄Ρƒ), Π½Π΅ΠΌΠΎΠ³ΡƒΡ›Π΅ јС ΠΏΡ€ΠΎΠ½Π°Ρ›ΠΈ ΠΏΠΎΡ˜Π΅Π΄ΠΈΠ½Π°Ρ‡Π½Π΅ ΠΎΠ·Π±ΠΈΡ™Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅. Π‘Π²Π΅ Ρƒ Π²Π΅Π·ΠΈ са Ρ€Π΅Π΄ΠΎΠ²ΠΈΠΌΠ° јС ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ ΠΎΠ΄ 3 ΡƒΡ€Π΅Π·ΠΈΠ²Π°ΡšΠ° ΠΏΡ€Π΅ ΠΏΠ΅Ρ‚ Π³ΠΎΠ΄ΠΈΠ½Π°, ΠΈΠ»ΠΈ јС Π²Π΅Π·Π°Π½ΠΎ Π·Π° ΠΎΠΊΠ²ΠΈΡ€.

Π§ΡƒΠΎ сам доста ΠΎ Π‘ΠΈΠΌΡ„ΠΎΠ½ΠΈ-Ρƒ ΠΊΠ°ΠΎ Π΄ΠΎΠ±Π°Π²Ρ™Π°Ρ‡Ρƒ ΠΏΠΎΡ˜Π΅Π΄ΠΈΠ½Π°Ρ‡Π½ΠΈΡ… корисних ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ, Π° Π½Π΅ΠΊΠ΅ ΠΎΠ΄ ΡšΠΈΡ… Π²Π΅Ρ› користим. Π’Π°ΠΊΠΎΡ’Π΅ сС ΠΌΠΎΠ³Ρƒ користити ΠΈ Π½Π΅ΠΊΠ΅ ствари ΠΈΠ· Π›Π°Ρ€Π°Π²Π΅Π»-Π°, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡšΠΈΡ…ΠΎΠ² ОРМ, Π±Π΅Π· присуства самог ΠΎΠΊΠ²ΠΈΡ€Π°.

симфони/мСссСнгСр

ΠŸΡ€Π²ΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ јС ΠΎΠ΄ΠΌΠ°Ρ… ΠΈΠ·Π³Π»Π΅Π΄Π°ΠΎ ΠΈΠ΄Π΅Π°Π»Π°Π½ ΠΈ Π±Π΅Π· ΠΈΠΊΠ°ΠΊΠ²Π΅ ΡΡƒΠΌΡšΠ΅ сам Π³Π° инсталирао. Али испоставило сС Π΄Π° јС Ρ‚Π΅ΠΆΠ΅ ΠΏΡ€ΠΎΠ½Π°Ρ›ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ° Π²Π°Π½ Π‘ΠΈΠΌΡ„ΠΎΠ½ΠΈ-ја. Како саставити ΠΈΠ· Π³ΠΎΠΌΠΈΠ»Π΅ класа са ΡƒΠ½ΠΈΠ²Π΅Ρ€Π·Π°Π»Π½ΠΈΠΌ, бСсмислСним ΠΈΠΌΠ΅Π½ΠΈΠΌΠ°, аутобусом Π·Π° ΠΏΡ€Π΅Π½ΠΎΡˆΠ΅ΡšΠ΅ ΠΏΠΎΡ€ΡƒΠΊΠ°, ΠΏΠ° Ρ‡Π°ΠΊ ΠΈ Π½Π° РСдис-Ρƒ?

ΠŸΡ€Π΅Π½ΠΎΡˆΠ΅ΡšΠ΅ ПΠ₯П ΠΏΠΎΠ·Π°Π΄ΠΈΠ½Π΅ Π½Π° РСдис стрСам магистралу ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ нСзависнС ΠΎΠ΄ ΠΎΠΊΠ²ΠΈΡ€Π°

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π° Π·Π²Π°Π½ΠΈΡ‡Π½ΠΎΠΌ ΡΠ°Ρ˜Ρ‚Ρƒ јС Π±ΠΈΠ»Π° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ Π΄Π΅Ρ‚Π°Ρ™Π½Π°, Π°Π»ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° јС описана само Π·Π° Π‘ΠΈΠΌΡ„ΠΎΠ½ΠΈ користСћи ΡšΠΈΡ…ΠΎΠ² ΠΎΠΌΠΈΡ™Π΅Π½ΠΈ Π˜ΠœΠ› ΠΈ Π΄Ρ€ΡƒΠ³Π΅ ΠΌΠ°Π³ΠΈΡ‡Π½Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Π·Π° нСсимфонистС. Π‘Π°ΠΌ процСс ΠΏΠΎΡΡ‚Π°Π²Ρ™Π°ΡšΠ° ΠΌΠ΅ нијС интСрСсовао, посСбно Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎΠ΄ΠΈΡˆΡšΠΈΡ… ΠΏΡ€Π°Π·Π½ΠΈΠΊΠ°. Али ΠΌΠΎΡ€Π°ΠΎ сам ΠΎΠ²ΠΎ Π΄Π° Ρ€Π°Π΄ΠΈΠΌ Π½Π΅ΠΎΡ‡Π΅ΠΊΠΈΠ²Π°Π½ΠΎ Π΄ΡƒΠ³ΠΎ.

ΠŸΠΎΠΊΡƒΡˆΠ°Ρ˜ Π΄Π° сС ΠΎΡ‚ΠΊΡ€ΠΈΡ˜Π΅ ΠΊΠ°ΠΊΠΎ инстанцирати систСм користСћи Π‘ΠΈΠΌΡ„ΠΎΠ½ΠΈ ΠΈΠ·Π²ΠΎΡ€Π΅ Ρ‚Π°ΠΊΠΎΡ’Π΅ нијС Π½Π°Ρ˜Ρ‚Ρ€ΠΈΠ²ΠΈΡ˜Π°Π»Π½ΠΈΡ˜ΠΈ Π·Π°Π΄Π°Ρ‚Π°ΠΊ Π·Π° ΠΊΡ€Π°Ρ‚Π°ΠΊ Ρ€ΠΎΠΊ:

ΠŸΡ€Π΅Π½ΠΎΡˆΠ΅ΡšΠ΅ ПΠ₯П ΠΏΠΎΠ·Π°Π΄ΠΈΠ½Π΅ Π½Π° РСдис стрСам магистралу ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ нСзависнС ΠΎΠ΄ ΠΎΠΊΠ²ΠΈΡ€Π°

Π£Π΄ΡƒΠ±ΠΈΠ²ΡˆΠΈ сС Ρƒ свС ΠΎΠ²ΠΎ ΠΈ ΠΏΠΎΠΊΡƒΡˆΠ°Π²ΡˆΠΈ Π΄Π° Π½Π΅ΡˆΡ‚ΠΎ ΡƒΡ€Π°Π΄ΠΈΠΌ Ρ€ΡƒΠΊΠ°ΠΌΠ°, дошао сам Π΄ΠΎ Π·Π°ΠΊΡ™ΡƒΡ‡ΠΊΠ° Π΄Π° Ρ€Π°Π΄ΠΈΠΌ Π½Π΅ΠΊΡƒ врсту ΡˆΡ‚Π°ΠΊΠ° ΠΈ ΠΎΠ΄Π»ΡƒΡ‡ΠΈΠΎ Π΄Π° ΠΏΠΎΠΊΡƒΡˆΠ°ΠΌ Π½Π΅ΡˆΡ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ.

освСтљСно/Ρƒ Ρ€Π΅Π΄Ρƒ

Π˜ΡΠΏΠΎΡΡ‚Π°Π²ΠΈΠ»ΠΎ сС Π΄Π° јС ΠΎΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° чврсто Π²Π΅Π·Π°Π½Π° Π·Π° Π›Π°Ρ€Π°Π²Π΅Π» инфраструктуру ΠΈ Π³ΠΎΠΌΠΈΠ»Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… зависности, Ρ‚Π°ΠΊΠΎ Π΄Π° нисам Ρ‚Ρ€ΠΎΡˆΠΈΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π° Π½Π° ΡšΡƒ: инсталирао сам јС, ΠΏΠΎΠ³Π»Π΅Π΄Π°ΠΎ јС, Π²ΠΈΠ΄Π΅ΠΎ зависности ΠΈ обрисао.

ииисофт/ΠΈΠΈΠΈ2-ΠΊΡƒΠ΅ΡƒΠ΅

Па, ΠΎΠ²Π΄Π΅ сС ΠΎΠ΄ΠΌΠ°Ρ… ΠΈΠ· Π½Π°Π·ΠΈΠ²Π° прСтпоставило, ΠΎΠΏΠ΅Ρ‚, строга Π²Π΅Π·Π° са Иии2. ΠœΠΎΡ€Π°ΠΎ сам Π΄Π° користим ΠΎΠ²Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈ нијС Π±ΠΈΠ»ΠΎ лошС, Π°Π»ΠΈ нисам Ρ€Π°Π·ΠΌΠΈΡˆΡ™Π°ΠΎ ΠΎ Ρ‚ΠΎΠΌΠ΅ Π΄Π° Ρƒ потпуности зависи ΠΎΠ΄ Иии2.

ΠžΡΡ‚Π°Ρ‚Π°ΠΊ

Π‘Π²Π΅ остало ΡˆΡ‚ΠΎ сам нашао Π½Π° Π“ΠΈΡ‚Π₯ΡƒΠ±-Ρƒ Π±ΠΈΠ»ΠΈ су Π½Π΅ΠΏΠΎΡƒΠ·Π΄Π°Π½ΠΈ, застарСли ΠΈ Π½Π°ΠΏΡƒΡˆΡ‚Π΅Π½ΠΈ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚ΠΈ Π±Π΅Π· Π·Π²Π΅Π·Π΄ΠΈΡ†Π°, Ρ„ΠΎΡ€ΠΊΠΎΠ²Π° ΠΈ Π²Π΅Π»ΠΈΠΊΠΎΠ³ Π±Ρ€ΠΎΡ˜Π° ΡƒΡ€Π΅Π·ΠΈΠ²Π°ΡšΠ°.

ΠŸΠΎΠ²Ρ€Π°Ρ‚Π°ΠΊ Π½Π° симфони/мСссСнгСр, Ρ‚Π΅Ρ…Π½ΠΈΡ‡ΠΊΠΈ Π΄Π΅Ρ‚Π°Ρ™ΠΈ

ΠœΠΎΡ€Π°ΠΎ сам Π΄Π° схватим ΠΎΠ²Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈ, Π½Π°ΠΊΠΎΠ½ ΡˆΡ‚ΠΎ сам ΠΏΡ€ΠΎΠ²Π΅ΠΎ још Π½Π΅ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅, успСо сам. Π˜ΡΠΏΠΎΡΡ‚Π°Π²ΠΈΠ»ΠΎ сС Π΄Π° јС свС ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ саТСто ΠΈ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ. Π”Π° Π±ΠΈΡ… инстанцирао аутобус, Π½Π°ΠΏΡ€Π°Π²ΠΈΠΎ сам ΠΌΠ°Π»Ρƒ Ρ„Π°Π±Ρ€ΠΈΠΊΡƒ, Ρ˜Π΅Ρ€... Π’Ρ€Π΅Π±Π°Π»ΠΎ јС Π΄Π° ΠΈΠΌΠ°ΠΌ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π³ΡƒΠΌΠ° ΠΈ са Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈΠΌ Ρ€ΡƒΠΊΠΎΠ²Π°ΠΎΡ†ΠΈΠΌΠ°.

ΠŸΡ€Π΅Π½ΠΎΡˆΠ΅ΡšΠ΅ ПΠ₯П ΠΏΠΎΠ·Π°Π΄ΠΈΠ½Π΅ Π½Π° РСдис стрСам магистралу ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ нСзависнС ΠΎΠ΄ ΠΎΠΊΠ²ΠΈΡ€Π°

Π‘Π°ΠΌΠΎ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΊΠΎΡ€Π°ΠΊΠ°:

  • Ми ΠΊΡ€Π΅ΠΈΡ€Π°ΠΌΠΎ Ρ€ΡƒΠΊΠΎΠ²Π°ΠΎΡ†Π΅ ΠΏΠΎΡ€ΡƒΠΊΠ°ΠΌΠ° којС Π±ΠΈ Ρ‚Ρ€Π΅Π±Π°Π»ΠΎ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ Π΄Π° сС ΠΏΠΎΠ·ΠΎΠ²Ρƒ
  • Π£ΠΌΠΎΡ‚Π°Π²Π°ΠΌΠΎ ΠΈΡ… Ρƒ Π₯андлСрДСсцриптор (класа ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅)
  • ОвС β€žΠ΄Π΅ΡΠΊΡ€ΠΈΠΏΡ‚ΠΎΡ€Π΅β€œ ΡƒΠΌΠΎΡ‚Π°Π²Π°ΠΌΠΎ Ρƒ инстанцу Π₯андлСрсЛоцатор
  • Π”ΠΎΠ΄Π°Π²Π°ΡšΠ΅ Π₯андлСрсЛоцатор инстанци ΠœΠ΅ΡΡΠ°Π³Π΅Π‘ΡƒΡ
  • ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΠΈΠΌΠΎ скуп `Π‘Π΅Π½Π΄Π΅Ρ€Π˜Π½Ρ‚Π΅Ρ€Ρ„Π°Ρ†Π΅` БСндСрсЛоцатору, Ρƒ ΠΌΠΎΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ инстанцС класа `РСдисВранспорт`, којС су конфигурисанС Π½Π° ΠΎΡ‡ΠΈΠ³Π»Π΅Π΄Π°Π½ Π½Π°Ρ‡ΠΈΠ½
  • Π”ΠΎΠ΄Π°Π²Π°ΡšΠ΅ БСндСрсЛоцатор-Π° ΠœΠ΅ΡΡΠ°Π³Π΅Π‘ΡƒΡ инстанци

ΠœΠ΅ΡΡΠ°Π³Π΅Π‘ΡƒΡ ΠΈΠΌΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ `->диспатцх()` који Ρ‚Ρ€Π°ΠΆΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜ΡƒΡ›Π΅ Ρ€ΡƒΠΊΠΎΠ²Π°ΠΎΡ†Π΅ Ρƒ Π₯андлСрсЛоцатору ΠΈ ΠΏΡ€ΠΎΡΠ»Π΅Ρ’ΡƒΡ˜Π΅ ΠΈΠΌ ΠΏΠΎΡ€ΡƒΠΊΡƒ, користСћи ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜ΡƒΡ›ΠΈ `Π‘Π΅Π½Π΄Π΅Ρ€Π˜Π½Ρ‚Π΅Ρ€Ρ„Π°Ρ†Π΅` Π·Π° слањС ΠΏΡ€Π΅ΠΊΠΎ магистралС (РСдис Ρ‚ΠΎΠΊΠΎΠ²ΠΈ).

Π£ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π° (Ρƒ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ ΠΏΡ…ΠΏ-Π΄ΠΈ), Ρ†Π΅ΠΎ овај ΠΏΠ°ΠΊΠ΅Ρ‚ сС ΠΌΠΎΠΆΠ΅ конфигурисати ΠΎΠ²Π°ΠΊΠΎ:

        CONTAINER_REDIS_TRANSPORT_SECRET => function (ContainerInterface $c) {
            return new RedisTransport(
                $c->get(CONTAINER_REDIS_STREAM_CONNECTION_SECRET),
                $c->get(CONTAINER_SERIALIZER))
            ;
        },
        CONTAINER_REDIS_TRANSPORT_LOG => function (ContainerInterface $c) {
            return new RedisTransport(
                $c->get(CONTAINER_REDIS_STREAM_CONNECTION_LOG),
                $c->get(CONTAINER_SERIALIZER))
            ;
        },
        CONTAINER_REDIS_STREAM_RECEIVER_SECRET => function (ContainerInterface $c) {
            return new RedisReceiver(
                $c->get(CONTAINER_REDIS_STREAM_CONNECTION_SECRET),
                $c->get(CONTAINER_SERIALIZER)
            );
        },
        CONTAINER_REDIS_STREAM_RECEIVER_LOG => function (ContainerInterface $c) {
            return new RedisReceiver(
                $c->get(CONTAINER_REDIS_STREAM_CONNECTION_LOG),
                $c->get(CONTAINER_SERIALIZER)
            );
        },
        CONTAINER_REDIS_STREAM_BUS => function (ContainerInterface $c) {
            $sendersLocator = new SendersLocator([
                AppMessagesSecretJsonMessages::class => [CONTAINER_REDIS_TRANSPORT_SECRET],
                AppMessagesDaemonLogMessage::class => [CONTAINER_REDIS_TRANSPORT_LOG],
            ], $c);
            $middleware[] = new SendMessageMiddleware($sendersLocator);

            return new MessageBus($middleware);
        },
        CONTAINER_REDIS_STREAM_CONNECTION_SECRET => function (ContainerInterface $c) {
            $host = 'bu-02-redis';
            $port = 6379;
            $dsn = "redis://$host:$port";
            $options = [
                'stream' => 'secret',
                'group' => 'default',
                'consumer' => 'default',
            ];

            return Connection::fromDsn($dsn, $options);
        },
        CONTAINER_REDIS_STREAM_CONNECTION_LOG => function (ContainerInterface $c) {
            $host = 'bu-02-redis';
            $port = 6379;
            $dsn = "redis://$host:$port";
            $options = [
                'stream' => 'log',
                'group' => 'default',
                'consumer' => 'default',
            ];

            return Connection::fromDsn($dsn, $options);
        },

ОвдС ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΠΈ Π΄Π° смо Ρƒ БСндСрсЛоцатор-Ρƒ Π΄ΠΎΠ΄Π΅Π»ΠΈΠ»ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚Π΅ β€žΡ‚Ρ€Π°Π½ΡΠΏΠΎΡ€Ρ‚Π΅β€œ Π·Π° Π΄Π²Π΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΡ€ΡƒΠΊΠ΅, ΠΎΠ΄ ΠΊΠΎΡ˜ΠΈΡ… свака ΠΈΠΌΠ° ΡΠ²ΠΎΡ˜Ρƒ Π²Π΅Π·Ρƒ са ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜ΡƒΡ›ΠΈΠΌ Ρ‚ΠΎΠΊΠΎΠ²ΠΈΠΌΠ°.

Направио сам посСбан Π΄Π΅ΠΌΠΎ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ који дСмонстрира Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ΠΎΠ΄ Ρ‚Ρ€ΠΈ Π΄Π΅ΠΌΠΎΠ½Π° који мСђусобно ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π°Ρ˜Ρƒ користСћи слСдСћу магистралу: https://github.com/backend-university/products/tree/master/products/02-redis-streams-bus.

Али ΠΏΠΎΠΊΠ°Π·Π°Ρ›Ρƒ Π²Π°ΠΌ ΠΊΠ°ΠΊΠΎ сС ΠΏΠΎΡ‚Ρ€ΠΎΡˆΠ°Ρ‡ ΠΌΠΎΠΆΠ΅ структурирати:

use AppMessagesDaemonLogMessage;
use SymfonyComponentMessengerHandlerHandlerDescriptor;
use SymfonyComponentMessengerHandlerHandlersLocator;
use SymfonyComponentMessengerMessageBus;
use SymfonyComponentMessengerMiddlewareHandleMessageMiddleware;
use SymfonyComponentMessengerMiddlewareSendMessageMiddleware;
use SymfonyComponentMessengerTransportSenderSendersLocator;

require_once __DIR__ . '/../vendor/autoload.php';
/** @var PsrContainerContainerInterface $container */
$container = require_once('config/container.php');

$handlers = [
    DaemonLogMessage::class => [
        new HandlerDescriptor(
            function (DaemonLogMessage $m) {
                error_log('DaemonLogHandler: message handled: / ' . $m->getMessage());
            },
            ['from_transport' => CONTAINER_REDIS_TRANSPORT_LOG]
        )
    ],
];
$middleware = [];
$middleware[] = new HandleMessageMiddleware(new HandlersLocator($handlers));
$sendersLocator = new SendersLocator(['*' => [CONTAINER_REDIS_TRANSPORT_LOG]], $container);
$middleware[] = new SendMessageMiddleware($sendersLocator);

$bus = new MessageBus($middleware);
$receivers = [
    CONTAINER_REDIS_TRANSPORT_LOG => $container->get(CONTAINER_REDIS_STREAM_RECEIVER_LOG),
];
$w = new SymfonyComponentMessengerWorker($receivers, $bus, $container->get(CONTAINER_EVENT_DISPATCHER));
$w->run();

ΠšΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ ΠΎΠ²Π΅ инфраструктурС Ρƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜ΠΈ

ΠŸΠΎΡˆΡ‚ΠΎ сам ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΠΎ магистралу Ρƒ свој Π±Π°Ρ†ΠΊΠ΅Π½Π΄, одвојио сам ΠΏΠΎΡ˜Π΅Π΄ΠΈΠ½Π°Ρ‡Π½Π΅ Ρ„Π°Π·Π΅ ΠΎΠ΄ старС синхронС ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΎ засСбнС Ρ€ΡƒΠΊΠΎΠ²Π°ΠΎΡ†Π΅, ΠΎΠ΄ ΠΊΠΎΡ˜ΠΈΡ… сваки Ρ€Π°Π΄ΠΈ својС.

Π¦Π΅Π²ΠΎΠ²ΠΎΠ΄ Π·Π° додавањС Π½ΠΎΠ²ΠΎΠ³ ΡΠ°Ρ˜Ρ‚Π° Ρƒ Π±Π°Π·Ρƒ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈΠ·Π³Π»Π΅Π΄Π°ΠΎ јС ΠΎΠ²Π°ΠΊΠΎ:

ΠŸΡ€Π΅Π½ΠΎΡˆΠ΅ΡšΠ΅ ПΠ₯П ΠΏΠΎΠ·Π°Π΄ΠΈΠ½Π΅ Π½Π° РСдис стрСам магистралу ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ нСзависнС ΠΎΠ΄ ΠΎΠΊΠ²ΠΈΡ€Π°

И ΠΎΠ΄ΠΌΠ°Ρ… Π½Π°ΠΊΠΎΠ½ Ρ‚ΠΎΠ³Π° постало ΠΌΠΈ јС ΠΌΠ½ΠΎΠ³ΠΎ лакшС Π΄Π° Π΄ΠΎΠ΄Π°ΠΌ Π½ΠΎΠ²Ρƒ функционалност, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, издвајањС ΠΈ Ρ€Π°ΡˆΡ‡Π»Π°ΡšΠΈΠ²Π°ΡšΠ΅ Рсс-Π°. ΠˆΠ΅Ρ€ овај процСс Ρ‚Π°ΠΊΠΎΡ’Π΅ Π·Π°Ρ…Ρ‚Π΅Π²Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈ ΡΠ°Π΄Ρ€ΠΆΠ°Ρ˜, Π° Π·Π°Ρ‚ΠΈΠΌ сС Ρ€ΡƒΠΊΠΎΠ²Π°Π»Π°Ρ† Π Π‘Π‘ Π²Π΅Π·Π΅, ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ јС Π’Π΅Π±ΡΠΈΡ‚Π΅Π˜Π½Π΄Π΅ΠΊΠ₯ΠΈΡΡ‚ΠΎΡ€ΠΈΠŸΠ΅Ρ€ΡΠΈΡΡ‚ΠΎΡ€, ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ›ΡƒΡ˜Π΅ Π½Π° ΠΏΠΎΡ€ΡƒΠΊΡƒ β€žΠ¦ΠΎΠ½Ρ‚Π΅Π½Ρ‚/Π₯Ρ‚ΠΌΠ»Π¦ΠΎΠ½Ρ‚Π΅Π½Ρ‚β€œ, ΠΎΠ±Ρ€Π°Ρ’ΡƒΡ˜Π΅ јС ΠΈ Π΄Π°Ρ™Π΅ ΠΏΡ€ΠΎΡΠ»Π΅Ρ’ΡƒΡ˜Π΅ ΠΆΠ΅Ρ™Π΅Π½Ρƒ ΠΏΠΎΡ€ΡƒΠΊΡƒ Π΄ΡƒΠΆ свог Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄Π°.

ΠŸΡ€Π΅Π½ΠΎΡˆΠ΅ΡšΠ΅ ПΠ₯П ΠΏΠΎΠ·Π°Π΄ΠΈΠ½Π΅ Π½Π° РСдис стрСам магистралу ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ нСзависнС ΠΎΠ΄ ΠΎΠΊΠ²ΠΈΡ€Π°

На ΠΊΡ€Π°Ρ˜Ρƒ смо Π΄ΠΎΠ±ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π΄Π΅ΠΌΠΎΠ½Π°, ΠΎΠ΄ ΠΊΠΎΡ˜ΠΈΡ… сваки ΠΎΠ΄Ρ€ΠΆΠ°Π²Π° Π²Π΅Π·Π΅ само са Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½ΠΈΠΌ рСсурсима. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π΅ΠΌΠΎΠ½ ΡˆΡ‚Ρ€Π°ΠΌΠΏΠ»ΠΈΡ†Π΅ садрТи свС Ρ€ΡƒΠΊΠΎΠ²Π°ΠΎΡ†Π΅ који Π·Π°Ρ…Ρ‚Π΅Π²Π°Ρ˜Ρƒ ΠΎΠ΄Π»Π°Π·Π°ΠΊ Π½Π° Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Ρ€Π°Π΄ΠΈ ΡΠ°Π΄Ρ€ΠΆΠ°Ρ˜Π° ΠΈ Π΄Π΅ΠΌΠΎΠ½Π° ΡƒΠΏΠΎΡ€Π°Π½ Π΄Ρ€ΠΆΠΈ Π²Π΅Π·Ρƒ са Π±Π°Π·ΠΎΠΌ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°.

Π‘Π°Π΄Π°, умСсто ΠΈΠ·Π±ΠΎΡ€Π° ΠΈΠ· Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°, Ρ‚Ρ€Π°ΠΆΠ΅Π½ΠΈ Π˜Π”-ΠΎΠ²ΠΈ Π½Π°ΠΊΠΎΠ½ ΡƒΠΌΠ΅Ρ‚Π°ΡšΠ° ΠΎΠ΄ странС пСрзистСра сС Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ прСносС ΠΏΡ€Π΅ΠΊΠΎ магистралС свим заинтСрСсованим Ρ€ΡƒΠΊΠΎΠ²Π°ΠΎΡ†ΠΈΠΌΠ°.

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ

Π”ΠΎΠ΄Π°Ρ˜ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€