ΠΠΎΠ»ΡΡΠ°Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π±Π΅ΠΉΠ΄ΠΆΠ΅ΠΉ, Π»Π΅Π½Ρ ΠΈ ΡΡΠΈΠΊΠ΅ΡΠΎΠΊ Π² Π²Π΅ΠΊΡΠΎΡΠ΅
18Β 191 Π»ΡΠ±ΠΎΠΏΡΡΠ½ΡΡ // 5 ΡΠ΅Π½ΡΡΠ±ΡΡ, 2014
ΠΡΠΈΠ²Π΅ΡΡΡΠ²ΡΡ, Π΄ΡΡΠ·ΡΡ. ΠΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΠ°ΠΌ Π² ΡΡΠΎΡ Π΄Π΅Π½Ρ Π½Π΅ ΠΌΠ°Π»Π΅Π½ΡΠΊΡΡ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΠΎΠ΄Π±ΠΎΡΠΊΡ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΡ Π±Π΅ΠΉΠ΄ΠΆΠ΅ΠΉ, ΡΡΠΈΠΊΠ΅ΡΠΎΠ², ΡΡΠΈΠΊΠ΅ΡΠΎΠΊ ΠΈ Π»Π΅Π½Ρ. Π― ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΡΠ° ΠΏΠΎΠ΄Π±ΠΎΡΠΊΠ° ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅ΠΌ Π²Π΅Π± β Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠ°ΠΌ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ΅ΠΌ, ΠΊΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΄ΠΈΠ·Π°ΠΉΠ½ Π² ΡΡΠΈΠ»Π΅ ΡΠ΅ΡΡΠΎ, Π½Ρ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅ ΡΡΡ Π΅ΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΠΌΠ°ΡΠΈΠΊ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎΒ http://www.cssauthor.comΒ ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ:
- ΠΡΠ΅Π½Ρ Π²ΠΊΡΡΠ½ΡΠ΅ PSD ΡΠΈΡΠΊΠΈ Π΄Π»Ρ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠΎΠ² Π·Π° Π½ΠΎΡΠ±ΡΡ 2013
- ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π΄Π»Ρ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ ΡΠ°ΠΉΡΠΎΠ² ΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ² Π² PSD
- Π Π°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠ΅ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΠΈΡΠΊΠΈ Π΄Π»Ρ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠ° Π·Π° ΠΌΠ°ΠΉ ΠΈ ΠΈΡΠ½Ρ
- Π‘Π°ΠΌΡΠ΅ Π»ΡΡΡΠΈΠ΅ ΠΈ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡΠΈ Π΄Π»Ρ Π²Π΅Π± β Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠΎΠ² Π·Π° ΠΈΡΠ»Ρ 2013
- Π‘Π°ΠΌΠ°Ρ Π»ΡΡΡΠ°Ρ ΠΏΠΎΠ΄Π±ΠΎΡΠΊΠ° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²Π΅Π± Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π² PSD Π·Π° Π°ΠΏΡΠ΅Π»Ρ 2013
100 Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ Π²Π΅ΠΊΡΠΎΡΠ½ΡΡ ΠΈ Π²ΠΈΠ½ΡΠ°ΠΆΠ½ΡΡ Π±Π΅ΠΉΠ΄ΠΆΠ΅ΠΉ, Π»Π΅Π½Ρ ΠΈ ΠΌΠ°ΡΠΎΠΊ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅ ΠΈ Π·ΠΎΠ»ΠΎΡΡΠ΅ Π±Π΅ΠΉΠ΄ΠΆΠΈ Π² Π²Π΅ΠΊΡΠΎΡΠ΅
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠΈΠ½ΡΠ°ΠΆΠ½ΡΠ΅Β Π»Π΅ΠΉΠ±Π»Ρ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ Π²ΠΈΠ½ΡΠ°ΠΆΠ½ΡΠ΅ Π»Π΅Π½ΡΡ Π² Π²Π΅ΠΊΡΠΎΡΠ΅
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅ ΠΈ ΠΏΠ»ΠΎΡΠΊΠΈΠ΅ Π²Π΅ΠΊΡΠΎΡΠ½ΡΠ΅ Π±Π΅ΠΉΠ΄ΠΆΠΈ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅ΠΊΡΠΎΡΠ½ΡΠ΅ ΡΡΠΌΠ½ΡΠ΅ ΡΡΠΈΠΊΠ΅ΡΠΊΠΈ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΡΠ°ΡΠΈΠ²ΡΠ΅ Π²Π΅ΠΊΡΠΎΡΠ½ΡΠ΅ Π»Π΅Π½ΡΡ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠΎΠ΄Π±ΠΎΡΠΊΠ° ΠΊΡΠ°ΡΠ½ΡΡ Π»Π΅Π½Ρ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ ΠΈ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΡ Π»Π΅Π½Ρ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅ΠΊΡΠΎΡΠ½ΡΠ΅ Π»Π΅Π½ΡΡ Π½Π°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΡ ΡΡΠΊΠΈ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅ΠΊΡΠΎΡΠ½ΡΠ΅ Π±Π΅ΠΉΠ΄ΠΆΠΈ Π² ΡΡΠΈΠ»Π΅ Flat
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΌΡΡ ΡΠ°Π·Π½ΡΡ Π²Π΅ΠΊΡΠΎΡΠ½ΡΡ Π»Π΅Π½Ρ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΠΈ Π½Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ Π±Π΅ΠΉΠ΄ΠΆ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²Π΅ΠΊΡΠΎΡΠ½ΡΠ΅ Π»Π΅Π½ΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ½ΡΠ°ΠΆΠ½ΡΡ Π±Π΅ΠΉΠ΄ΠΆΠ΅ΠΉ
Π‘ΠΊΠ°ΡΠ°ΡΡ
Flat Π±Π΅ΠΉΠ΄ΠΆΠΈ Π² Π²Π΅ΠΊΡΠΎΡΠ΅
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅ΠΊΡΠΎΡΠ½ΡΠ΅ ΠΈ ΡΠ²Π΅ΡΠ½ΡΠ΅ Π»Π΅Π½ΡΡ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅ΠΊΡΠΎΡΠ½ΡΠ΅ ΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π½ΡΠ΅ ΡΡΠΈΠΊΠ΅ΡΠΊΠΈ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΡΠΎΠ·ΡΠ°ΡΠ½ΡΠ΅ Π±Π΅ΠΉΠ΄ΠΆΠΈ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠΈΠ½ΡΠ°ΠΆΠ½Π°Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π»Π΅Π½Ρ ΠΈ ΡΡΠΈΠΊΠ΅ΡΠΎΠΊ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅ΠΊΡΠΎΡΠ½ΡΠ΅ Π±Π΅ΠΉΠ΄ΠΆΠΈ Π·Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅Π½ΡΡ ΠΈ Π±Π΅ΠΉΠ΄ΠΆΠΈ Π² Π²Π΅ΠΊΡΠΎΡΠ΅
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅ΠΊΡΠΎΡΠ½ΡΠ΅ ΠΈ ΠΊΡΠ°ΡΠΈΠ²ΡΠ΅ Π±Π΅ΠΉΠ΄ΠΆΠΈ βΒ Petshop
Π‘ΠΊΠ°ΡΠ°ΡΡ
Π¨ΠΎΠΊΠΎΠ»Π°Π΄Π½ΡΠ΅ Π²Π΅ΠΊΡΠΎΡΠ½ΡΠ΅ Π±Π΅ΠΉΠ΄ΠΆΠΈ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅ΠΉΠ΄ΠΆΠΈ Π½Π° ΡΠ΅ΠΌΡ ΠΏΡΡΠ΅ΡΠ΅ΡΡΠ²ΠΈΠΉ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅ΠΊΡΠΎΡΠ½ΡΠ΅ Π±Π΅ΠΉΠ΄ΠΆΠΈ Π½Π° Π΄Π΅ΡΡΠΊΡΡ ΡΠ΅ΠΌΠ°ΡΠΈΠΊΡ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠΈΠ½ΡΠ°ΠΆΠ½ΡΠ΅ ΠΈ ΠΊΡΠ°ΡΠΈΠ²ΡΠ΅ ΡΡΠΈΠΊΠ΅ΡΡ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΡΠ³Π°Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±Π΅ΠΉΠ΄ΠΆΠΈ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΡΠ³Π°Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π±Π΅ΠΉΠ΄ΠΆΠ΅ΠΉ Π² Π²Π΅ΠΊΡΠΎΡΠ΅
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠΊΠΎ ΠΈ ΠΠΈΠΎ ΡΡΠΈΠΊΠ΅ΡΡ
Π‘ΠΊΠ°ΡΠ°ΡΡ
Π‘ΡΠΈΠ»ΡΠ½ΡΠ΅ Π±Π΅Π»ΡΠ΅ Π±Π΅ΠΉΠ΄ΠΆΠΈ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΡΠ°ΡΠΈΠ²ΡΠ΅ ΡΠ΅ΡΡΠΎ Π±Π΅ΠΉΠ΄ΠΆΠΈ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅ Π±Π΅ΠΉΠ΄ΠΆΠΈ βΒ Hipster
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ»ΠΎΡΠΊΠΈΠ΅ Π²Π΅ΠΊΡΠΎΡΠ½ΡΠ΅ Π±Π΅ΠΉΠ΄ΠΆΠΈ ΠΈ Π»Π΅Π½ΡΡ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠΈΠ½ΡΠ°ΠΆΠ½ΡΠ΅ ΠΈ ΡΡΠΈΠ»ΡΠ½ΡΠ΅ Π±Π΅ΠΉΠ΄ΠΆΠΈ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅ΠΊΡΠΎΡΠ½ΡΠ΅ Π±Π΅ΠΉΠ΄ΠΆΠΈ ΠΊΠΎ Π΄Π½Ρ ΠΠ°Π»Π΅Π½ΡΠΈΠ½Π°
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΡΠΈΠΊΠ΅ΡΠΊΠΈ ΠΊ ΠΠΎΠ²ΠΎΠΌΡ ΠΠΎΠ΄Ρ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅ΠΉΠ΄ΠΆΠΈ Π½Π° Π΄Π΅ΡΠ΅Π²Π΅
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ΅ΠΉΠ΄ΠΆΠΈ βΒ Baseball Cup
Π‘ΠΊΠ°ΡΠ°ΡΡ
Π Π΅ΡΡΠΎ Π±Π΅ΠΉΠ΄ΠΆΠΈ
Π‘ΠΊΠ°ΡΠ°ΡΡ
ΠΠ°ΠΊ ΠΏΡΠΎΠΊΠ°ΡΠ°ΡΡ ΡΠ²ΠΎΠΉ open-source ΠΏΡΠΎΠ΅ΠΊΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π°
ΠΡΠΌΠ°Ρ, ΠΊΠ°ΠΆΠ΄ΡΠΉ, ΠΊΡΠΎ ΠΈΡΠ΅Ρ ΡΡΠΎ-ΡΠΎ Π½Π° GitHub, Π²ΡΠ΅ΠΌΡ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΡΡΠ΅ΡΠ°Π΅Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ
Π² ΡΠ°ΠΉΠ»Π΅ README ΠΏΠΎΡΠ»Π΅ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΠ΄Π΅Ρ ΠΊΡΡΠ° ΡΠ°Π·Π½ΡΡ
Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΎΠ². ΠΠ½ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΠ»Ρ ΠΏΡΠΈΠ±ΠΎΡΠ½ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Π΄Π»Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΅Ρ
Π°ΡΡ. ΠΠΎΠ³Π΄Π° ΠΏΡΡΠ°Π΅ΡΡΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΡΡΠΎΠΌ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠΈ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΎΠ² β Π½Π°ΡΡΡΠΏΠ°Π΅Ρ Ρ
Π°ΠΎΡ. ΠΠ°ΠΊΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΌΠ½Π΅ Π½ΡΠΆΠ½Ρ? Π§ΡΠΎ ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡΡ? ΠΠ°ΠΊ ΠΈΡ
ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ? ΠΠ΄Π΅ Π²Π·ΡΡΡ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΊΠΎΠ½ΡΠΈΠ³? ΠΠ΄Π΅ Π²Π·ΡΡΡ ΠΊΠΎΠ΄ Π΄Π»Ρ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠ°? ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π½Π°ΡΡΡΠΏΠΈΠ² Π½Π° ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π³ΡΠ°Π±Π»ΠΈ, Ρ ΡΠ΅ΡΠΈΠ» ΠΏΠΎΡΡΠ°ΡΠΈΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΡΠΎΠ±Ρ Π² ΡΡΠΎΠΌ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ.
ΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΡΠ»Π΅Π΄ΡΡ ΡΡΡ ΡΠ΅ΠΌΡ, Ρ ΠΏΡΠΈΡΠ΅Π» ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ, ΡΡΠΎ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΈ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡ ΠΏΠ΅ΡΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΡΠΎΠ² ΠΈ Π°Π»ΡΡΡΡΠΈΡΡΠΎΠ². ΠΡΠ»ΠΈ Π°Π²ΡΠΎΡ Π²ΡΠΏΡΡΡΠΈΠ» Π² open source ΡΠ²ΠΎΠ΅ ΡΠ²ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π½Π° Π²ΠΎΠΏΡΠΎΡΡ, ΡΠΈΠΊΡΠΈΡ Π±Π°Π³ΠΈ, Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΡΠ»Π»-ΡΠ΅ΠΊΠ²Π΅ΡΡΡ, ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π°, ΡΠΎ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° ΡΠ°ΠΊΠΎΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΊ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΎΡΠ΅Π½ΠΊΠΈ ΠΊΠΎΠ΄Π°. Π§Π΅ΡΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, ΠΏΡΠΈΡΡΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ Π»ΡΠ΄ΡΠΌΠΈ, ΠΎΠ½ΠΈ Π·Π°ΡΡΠΆΠ°ΡΡ ΡΠ΅Π±Ρ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ½Π΅ΡΠ³ΠΈΠ΅ΠΉ, ΠΈ ΡΡ ΡΡΠ°ΡΠ°Π΅ΡΡΡΡ Π±ΡΡΡ Π½Π΅ Ρ ΡΠΆΠ΅, ΡΠ΅ΠΌ ΠΎΠ½ΠΈ.
Π‘ΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΊ ΡΠ²ΠΎΠΈΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π³ΡΡΠ±ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ.
Continuous integration (CI)
ΠΡ
Π·Π°Π΄Π°ΡΠ° β ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠΌΠΈΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠ»Π»-ΡΠ΅ΠΊΠ²Π΅ΡΡΠ° (Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΠ΅) ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΠ· Π²ΡΠ΅Ρ
Π΅Π³ΠΎ Π²Π΅Π½Π΄ΠΎΡΠΎΠ². ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ΅ΡΡΡ (ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅, ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅). ΠΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅ΡΠ΅ Π·Π°ΠΏΡΡΠΊ ΡΠ°Π·Π½ΡΡ
ΡΡΠΈΠ»ΠΈΡ, ΡΠΊΡΠΈΠΏΡΠΎΠ². Π£ΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΠ±ΠΎΡΠΊΠ°, Π΅ΡΠ»ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΠ΅Ρ
ΠΊΠΎΠΌΠ°Π½Π΄ ΠΊΠ°ΠΆΠ΄Π°Ρ Π·Π°Π²Π΅ΡΡΠΈΠ»Π°ΡΡ Ρ exit 0
. ΠΠΎΠ΄, ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΡ Π½ΡΠ»Ρ, ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΎΡΠΈΠ±ΠΊΡ. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΠΈΠ±ΠΎ Β«Π·Π΅Π»Π΅Π½Ρм» β Π²ΡΠ΅Β ΠΎΠΊ. ΠΠΈΠ±ΠΎ Β«ΠΊΡΠ°ΡΠ½Ρм» β ΡΠ±ΠΎΡΠΊΠ° Π½Π΅Β ΡΠ΄Π°Π»Π°ΡΡ.
Code Coverage
Π‘Π΅ΡΠ²ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΎΡΡΠ΅ΡΠΎΠ² ΠΏΠΎ ΠΏΠΎΠΊΡΡΡΠΈΡ ΠΊΠΎΠ΄Π° ΡΠ΅ΡΡΠ°ΠΌΠΈ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, PHPUnit) Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ Π²ΡΠ΅ ΡΠ΅ΡΡΡ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΠΏΡΠΈΠ΅ΠΉ ΠΏΠΎ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΡΠ΅ΡΠ° ΠΎ ΠΏΠΎΠΊΡΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° ΡΠ΅ΡΡΠ°ΠΌΠΈ. Π‘ΡΡΠΎΠΊΠ° ΠΊΠΎΠ΄Π° ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΏΠΎΠΊΡΡΡΠΎΠΉ, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡ Ρ
ΠΎΡΡ Π±Ρ ΡΠ°Π· Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ³ΠΎΠ½ΠΊΠΈ ΡΠ΅ΡΡΠΎΠ². Π‘ΡΠΈΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊΠΈ Ρ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠ΅ΡΠ΅Π½ΠΎΡΡ, ΠΏΡΡΡΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ β Π½Π΅ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ.
ΠΡΡΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΡΠΎΠ³Π΅, Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π½Π° ΡΠ°ΠΊΠΎΠΉ ΡΠ΅ΡΠ²ΠΈc (Π΄Π΅Π»Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ).
ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΠΊΠΎΠ΄Π°
ΠΡΠΈΠ·Π²Π°Π½Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΊΠΎΠ΄ Π½Π° best practice. ΠΡΠΎΠ²Π΅ΡΠΊΠ° copy-paste, code style, Π°Π½Π°Π»ΠΈΠ· Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΠΏΠΎ Π·Π°ΠΌΠ΅Π½Π΅ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ Ρ.Π΄.
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ
ΠΡΠ»ΠΈ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Composer Π² PHP) ΠΈ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΡΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ Π·Π°Ρ ΠΎΡΠ΅ΡΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π΄ΡΡΠ³ΠΈΠΌΠΈ Π»ΡΠ΄ΡΠΌΠΈ. ΠΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Ρ ΡΠ°ΠΉΡΠ° ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², Π»ΠΈΠ±ΠΎ Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°.
ΠΠΈΡΠ΅Π½Π·ΠΈΡ
Π ΠΌΠΈΡΠ΅ open source ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡ Π°Π²ΡΠΎΡΡΠΊΠΈΠ΅ ΠΏΡΠ°Π²Π° (Π΄Π° ΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΌΠΈΡΠ΅ open source!). ΠΠΎΡΡΠΎΠΌΡ Π·Π½Π°ΡΡ, Π½Π° ΠΊΠ°ΠΊΠΈΡ
ΡΡΠ»ΠΎΠ²ΠΈΡΡ
Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΠΆΠΎΠΉ ΠΊΠΎΠ΄ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ. ΠΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ Ρ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ±ΠΎΡΠΎΠΌ ΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠΎ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ Ρ Π²Π°Ρ ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ², ΠΈ Π²Ρ Π²Π΄ΡΡΠ³ Π²ΡΠΏΠΎΠΌΠ½ΠΈΠ»ΠΈ ΠΏΡΠΎ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠ°ΠΉΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΡ
ΡΠ°Π·Π½ΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ² ΡΠ²ΠΎΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΊ ΡΠ°ΠΊΠΎΠΌΡ ΡΠ΅ΡΠ²ΠΈΡΡ, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΡΠΈΡΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠΌΠΎΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΆΠ΅Π»Π°ΡΡ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π½ΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΡ
Π½Π° GitHub, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Ρ Π²ΠΈΠ΄Π΅Π» issue, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π°Π²ΡΠΎΡΠ° ΠΏΡΠΎΡΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠ°ΠΉΠ» Ρ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ, ΡΡΠΎΠ±Ρ Π±ΡΠ»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠ΅.
ΠΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅
Π‘ΡΠ΄Π° ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π²ΡΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ. ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π²Π°ΡΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ°ΡΡ ΠΈ ΠΊΠ°Π½Π°Π»Ρ ΡΠ²ΡΠ·ΠΈ ΠΊ Π²Π°ΡΠΈΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌ, ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ Π²Π°ΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΡΠ΅ΠΉΡΠΈΠ½Π³Π°Ρ , ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡ , ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ.
Travis CI
Travis CI Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠΏΠ΅Π½ΡΠΎΡΡΡ-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈ ΡΡΠ°Π» Π΄Π΅-ΡΠ°ΠΊΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ. ΠΠ½ Π·Π°Π²ΠΎΠ΅Π²Π°Π» ΡΠ²ΠΎΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠ½ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ, ΠΎΠ½ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² GitHub, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΉ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. ΠΠ΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π»ΠΎΠ³ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΠ»Π΄Π° Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π²ΡΠ΅ΠΌ ΠΆΠ΅Π»Π°ΡΡΠΈΠΌ. ΠΡΡΡ ΠΈ ΠΏΠ»Π°ΡΠ½ΡΠ΅ ΡΠ°ΡΠΈΡΠ½ΡΠ΅ ΠΏΠ»Π°Π½Ρ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ.
Travis CI ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠΎΠ²Π΅ΡΡΠ°Π» ΡΠ±ΠΎΡΠΊΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°, ΡΠ°ΠΊ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΡΠ»Π»-ΡΠ΅ΠΊΠ²Π΅ΡΡΠΎΠ². ΠΠ½ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ Π² GitHub ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΡΠ°ΡΡΡ ΡΠ±ΠΎΡΠΊΠΈ Π²ΠΎΠ·Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠ»Π»-ΡΠ΅ΠΊΠ²Π΅ΡΡΠ°. ΠΡΠ»ΠΈ ΡΠ±ΠΎΡΠΊΠ° ΡΠ»ΠΎΠΌΠ°Π½Π°, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΈΠΊΡ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ, Travis ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΠ²Π΅ΡΠΈΡ ΠΏΡΠ»Π»-ΡΠ΅ΠΊΠ²Π΅ΡΡ, ΠΈ ΠΎΠ½ ΡΡΠ°Π½Π΅Ρ Β«Π·Π΅Π»Π΅Π½ΡΠΌΒ».
Π Π»ΠΎΠ³Π°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΡΡ ΠΈΡΡΠΎΡΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ·Π½Π°ΡΡ ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½Π° Π±ΡΠ»Π° Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ.
Π§ΡΠΎΠ± ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΊ Travis CI, Π½ΡΠΆΠ½ΠΎ:
- Π‘ΠΎΠ·Π΄Π°ΡΡ Π² ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°ΠΉΠ»
.travis.yml
ΠΈ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ Π² Π½Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ; - ΠΠ°Π»ΠΎΠ³ΠΈΠ½ΠΈΡΡΡΡ Π½Π° Travis Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ° Ρ GitHub ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΊ ΡΠ΅ΡΠ²ΠΈΡΡ.
Travis ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°Π·Π½Π°ΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π° ΡΠ°Π·Π½ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ: Π΄ΠΎ Π½Π°ΡΠ°Π»Π° ΡΠ±ΠΎΡΠΊΠΈ, Π΄ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΡΠΊΡΠΈΠΏΡΠΎΠ², ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ², ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΈ Ρ.Π΄. ΠΠ°ΡΠ°ΡΡ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ https://docs.travis-ci.com/user/getting-started. Travis ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈ Π΅ΡΠ»ΠΈ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ° ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΡΡ ΡΡΠΈΠ»ΠΈΡΠ°, ΡΠΎ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ. ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° .travis.yml
Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° PHP ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π²ΠΎΡ ΡΠ°ΠΊ:
language: php php: - 5.4 - 5.5 - 5.6 before_script: - composer install script: - phpunit notifications: email: - [email protected]
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ language: php
. ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΠ΅ΠΌ Π²Π΅ΡΡΠΈΠΈ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ±ΠΎΡΠΊΡ β Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°ΠΏΡΡΡΠΈΡΡΡ ΡΠ²ΠΎΠΉ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ. Π ΡΠ΅ΠΊΡΠΈΠΈ before_script
ΠΏΠΎΠ΄Π³ΠΎΡΠ°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΡ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°Π΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ΡΠ΅Π· Composer. Π ΡΠ΅ΠΊΡΠΈΠΈ
script
ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΠ΅ΠΌ Π²ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ. ΠΡ, ΠΈ ΠΎΡΡΡΠ»Π°Π΅ΠΌ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π½Π° email ΠΏΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ.
ΠΠ΅ Π±ΡΠ΄Ρ ΡΠ³Π»ΡΠ±Π»ΡΡΡΡΡ Π² Π΄Π΅ΡΠ°Π»ΠΈ ΠΎΠΏΡΠΈΠΉ .travis.yml
ΠΠ΅ΠΉΠ΄ΠΆΠΈΠΊ Π’ΡΡΠ²ΠΈΡΠ° Π±ΡΠ²Π°Π΅Ρ Π΄Π²ΡΡ ΡΠ²Π΅ΡΠΎΠ², Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠ±ΠΎΡΠΊΠΈ.
ΠΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ΄ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΊΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π½Π° ΡΠ°ΠΉΡΠ΅ Travis, ΠΏΡΠΎΡΡΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡΠ² Π½Π° ΡΠ°ΠΌΠΎΠΌ Π·Π½Π°ΡΠΊΠ΅.
Π§Π΅ΡΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΡΠ΅Π±Π΅ open source ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΡΡ Π±Ρ Π±Π΅Π· Travis CI. ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ Π½Π΅ ΡΠ²ΠΈΠ΄ΠΈΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡΠ»ΠΈ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΡΠ»Π»-ΡΠ΅ΠΊΠ²Π΅ΡΡΠ΅. ΠΠΎ Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΈΠΌ Travis CI ΠΏΡΠΎΠ³Π½Π°Π» Π²ΡΠ΅ ΡΠ΅ΡΡΡ, Π²Ρ ΡΠΆΠ΅ Π±ΡΠ΄Π΅ΡΠ΅ Π·Π½Π°ΡΡ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎΡΠ»Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ ΡΠΈΡΠΈ. ΠΡΠ²ΠΎΠ΄ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Travis CI ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ!
Scrutinizer
Scrutinizer β ΡΠ΅ΡΠ²ΠΈΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π°. ΠΠΎΠΊΠ° Scrutinizer ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ PHP, Python ΠΈ Ruby, ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Java ΠΈ Scala. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΈΡΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°:
- ΠΡΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΠ΅Π½ΠΊΡ Π²Π°ΡΠ΅ΠΌΡ ΠΊΠΎΠ΄Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, ΡΠΎΠ±ΡΠ°Π½Π½ΡΡ ΠΎΡ ΡΠ°Π·Π½ΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ²;
- Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΈΡΡΠΎΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π°, ΠΌΠΎΠΆΠ½ΠΎ Π½Π° Π³ΡΠ°ΡΠΈΠΊΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΊΠ°ΠΊ ΡΠ°Π·Π²ΠΈΠ²Π°Π»ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ;
- Π‘ΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ Ρ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ΠΌ, ΠΊ ΡΠ΅ΠΌΡ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ. ΠΠ°Π·Π° Π·Π½Π°Π½ΠΈΠΉ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠΈΡΠΎΠΊΠ°Ρ;
- Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π²Π΅Π½Π΄ΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅, Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ security issue;
- ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΡΡΠ΅ΡΠΎΠ². ΠΠΎΠΆΠ΅Ρ ΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π½Π° push ΠΈΠ»ΠΈ pull-request, ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ±ΠΎΡΠΊΠΈ;
- Π‘Π΅ΡΠ²ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ Π² GitHub ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² ΠΏΡΠ»Π»-ΡΠ΅ΠΊΠ²Π΅ΡΡΠ°Ρ Π½Π°ΡΡΠ΄Ρ Ρ Travis (ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΠΏΠΎΡΠ»Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ).
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ PHP ΡΠ°ΠΌΡΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ β ΡΡΠΎ:
- PHP Code Similarity Analyzer
- PHP Code Sniffer
- PHP CS Fixer
- PHP Mess Detector
- PHP Analyzer
- Security Advisory Checker
PHP Analyzer β ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Π²ΠΎΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Scrutinizer https://scrutinizer-ci. com/docs/tools/php/php-analyzer/checks.
ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ ΠΈ Π²Ρ ΡΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½Π΅ΡΠ΅ Π΄Π΅Π»Π°ΡΡ ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π½Π°Ρ
ΠΎΠ΄ΠΈΡ Scrutinizer Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅. Π§ΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ, Π²ΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, Π½ΡΠΆΠ½ΠΎ Π½Π° Π½Π΅ΠΌ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π³ΠΈΡΡ
Π°Π±Π°. Π Π»ΠΈΡΠ½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ GitHub. Π Π°Π·ΠΌΠ΅ΡΡΠΈΡΡ Π² ΠΊΠΎΡΠ½Π΅ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΡΠ°ΠΉΠ» .scrutinizer.yml
.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΠΈΠ»ΠΈΡΡ ΡΠΆΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΎ. Scrutinizer ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π²Π°ΠΌ ΡΡΠ°ΡΡΠ°Π½ΡΡΡ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠΌ, Π² Π½Π΅Π³ΠΎ ΡΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π΄ΠΆΠ΅Π½ΡΠ»ΡΠΌΠ΅Π½ΡΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ²:
checks: php: code_rating: true duplication: true filter: excluded_paths: - vendor/* before_commands: - "composer install --prefer-source"
ΠΠ»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° Symfony Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΅ΡΠ΅ ΠΏΠ°ΡΡ ΡΡΠΈΠ»ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΡΡ ΡΠ²Π½ΠΎΠ³ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ:
checks: php: code_rating: true duplication: true filter: excluded_paths: - vendor/* - app/* - bin/* - web/* - spec/* before_commands: - "composer install --prefer-source" tools: php_code_sniffer: config: standard: "PSR2" php_cs_fixer: true sensiolabs_security_checker: true
Π‘Π΅ΡΠ²ΠΈΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠΈ ΡΠΈΠΏΠ° Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΎΠ². ΠΠΎ, ΠΏΠΎ ΡΡΡΠΈ, Π·Π½Π°ΡΠΈΠΌΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎΡΠ΅Π½ΠΊΡ ΠΊΠΎΠ΄Π°. Code coverage Ρ ΠΏΠΎΠΌΠΎΡΡΡ Scrutinizer Ρ Π½Π΅ ΡΠΎΠ²Π΅ΡΡΡ Π²Π°ΠΌ Π΄Π΅Π»Π°ΡΡ, Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ (Π΄Π°Π»Π΅Π΅ Π² ΡΡΠ°ΡΡΠ΅). ΠΠΎΠ΄ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π² Π»ΠΈΡΠ½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ΅, Π½ΡΠΆΠ½ΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡΡΡ ΠΏΠΎ ΠΈΠΊΠΎΠ½ΠΊΠ΅ (i). Π’Π°ΠΊ ΠΊΠ°ΠΊ Scrutinizer ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π΄Π»Ρ open source, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠΉ ΠΊ Π»ΡΠ±ΠΎΠΌΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠΌΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΡΡΠΎΠ΅Π½ Π½Π° ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ.
ΠΡΠ΅Π½Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Scrutinizer Π΄Π»Ρ open source ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
Packagist
Packagist β ΡΠΏΠΈΡΠΎΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ/ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² PHP, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Composer. ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ Π΄Π»Ρ Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠΎΡ ΡΠ΅ΡΠ²ΠΈΡ β ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ°. ΠΡΠΎ Π²ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ ΡΠ°ΠΉΡΠ΅, Π½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Ρ
ΠΎΡΠΎΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΡΠ²ΠΎΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, ΡΡΠΎΠ± Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΊΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π² GitHub ΡΠΆΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ. Packagist Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ²ΠΎΠΈΡ
Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΎΠ² Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ. ΠΠ΅ΠΉΠ΄ΠΆΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π½Π΅ΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ΅ Badge Poser. ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΊΠΎΠ΄ Π²ΡΠ΅Ρ
Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΎΠ².
ΠΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ β Π²Π°ΡΠ΅ Π΄Π΅Π»ΠΎ. ΠΠ°ΡΠ°ΡΡΡΡ Π²ΡΡΡΠ°Π²Π»ΡΡΡ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΈ: ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ, ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΈ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ. ΠΠΈΡΠ΅Π½Π·ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π° composer.json Π»ΠΈΠ±ΠΎ ΠΈΠ· ΡΠ°ΠΉΠ»Π° LICENSE. ΠΠΎΠΉ ΡΠΎΠ²Π΅Ρ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠ°, ΠΎΠ½ΠΈ Π½Π΅ΡΡΡ ΡΠ°ΠΌΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
VersionEye
Π‘Π΅ΡΠ²ΠΈΡ VersionEye ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° Π²Π΅ΡΡΠΈΡΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΡ Π½Π° Π³ΠΈΡΡ Π°Π±Π΅. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΈ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Ρ Π³ΠΈΡΡ Π°Π±Π°, ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΅ΡΠ΅Π· API. Π‘Π΅ΠΉΡΠ°Ρ ΡΠ΅ΡΠ²ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ: Java, Ruby, Python, Node.JS, PHP, JavaScript, Objective-C, R, Clojure.
ΠΠ°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ° Π΄Π²Π°. ΠΠΎΠΆΠ½ΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° ΡΡΠΎΠΌ ΡΠ°ΠΉΡΠ΅, Π½Π°ΠΉΡΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ, ΠΈ Π·Π°ΡΠΎΠ»ΠΎΠ²ΠΈΡΡ ΠΈΡ
. ΠΠΎΡΠ»Π΅ Π²ΡΡ
ΠΎΠ΄Π° Π½ΠΎΠ²ΡΡ
Π²Π΅ΡΡΠΈΠΉ Π²Π°ΠΌ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ Π½Π° email. Π’Π°ΠΊ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ Π½ΡΠΆΠ½ΡΡ
Π²Π°ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. ΠΠΎΠΉ ΠΎΠΏΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΎΡ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ° ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΡ
ΠΎΠ΄ΡΡ ΡΠ°Π½ΡΡΠ΅, ΡΠ΅ΠΌ ΠΎΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎ Π²ΡΡ
ΠΎΠ΄Π΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ PHP Ρ ΡΠ·Π½Π°Ρ Π΅ΡΠ΅ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½ΠΎΠ²ΠΎΡΡΡ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π° php.net. Π’Π°ΠΊΠΆΠ΅ Π½Π° ΡΡΠΎΡ ΡΠ΅ΡΠ²ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ. ΠΡΠΎ Π΄Π°ΡΡ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ, ΠΎΡ ΠΊΠΎΡΠΎΡΡΡ
Π·Π°Π²ΠΈΡΠΈΡ Π²Π°Ρ ΠΊΠΎΠ΄.
ΠΠ±ΡΡΡΠ½Ρ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ PHP. Π§ΡΠΎΠ±Ρ Π²Π°Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ»ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ VersionEye, Π² ΠΊΠΎΡΠ½Π΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°ΠΉΠ» composer.json. ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΠ»ΠΈ Π±Π°Π½Π΄Π», Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ ΡΠ°ΠΉΠ» composer.lock, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π·Π°ΠΌΠΎΡΠ°ΠΆΠΈΠ²Π°ΡΡΡΡ Π²Π΅ΡΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. VersionEye Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΈΡ
Π΄Π²ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π²Π°ΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡ Π²Π΅ΡΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π²Ρ, Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ, ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ Π²Π°ΠΌ Π²ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ. Π ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ°ΡΠ΅ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ? ΠΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ
Π² composer.json Π²Ρ ΡΠΊΠ°Π·Π°Π»ΠΈ
"symfony/symfony": "~2.5"
, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Symfony 2.5, 2.6, 2.7 ΠΈ Ρ.Π΄. Π½ΠΎ Π½Π΅ Ρ 3.0 ΠΈ Π²ΡΡΠ΅. ΠΠΎΠ³Π΄Π° Π²ΡΡ
ΠΎΠ΄ΠΈΡ Π½ΠΎΠ²Π°Ρ ΠΌΠΈΠ½ΠΎΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ, Π²Π°ΠΌ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ, Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π²Ρ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ issue Π½Π° Π³ΠΈΡΡ
Π°Π±Π΅, ΡΡΠΎ Ρ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ Π²Π°Ρ Π±Π°Π½Π΄Π» ΠΏΠ΅ΡΠ΅ΡΡΠ°Π» ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΡ, Π° Π΅ΡΠ»ΠΈ Π²Ρ Π°Π»ΡΡΡΡΠΈΡΡ, ΡΠΎ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠΈΡΠ΅ΡΡ, ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π²Π°Ρ ΠΊΠΎΠ΄ Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ, ΠΏΠΎΠ΄ΠΏΡΠ°Π²ΠΈΡΠ΅, ΡΡΠΎ Π½Π°Π΄ΠΎ, ΠΈ Π·Π°ΡΠ΅Π»ΠΈΠ·ΠΈΡΠ΅ ΡΠΈΠΊΡ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π±ΡΠ΄ΡΡ ΡΡΠ°ΡΡΠ»ΠΈΠ²Ρ, Π΄Π°ΠΆΠ΅ ΡΠ°ΠΌΠΈ ΡΠΎΠ³ΠΎ Π½Π΅ Π·Π½Π°Ρ.
Π’Π°ΠΊΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΡΠΎΠ³Π°Π½ΡΠ΅ΡΠ΅ ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Travis, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΠΈ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Symfony, ΠΎΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΡ Π²Π°Ρ ΠΊΠΎΠ΄. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° Π΄ΡΡΠ³ΠΈΡ
ΡΠ·ΡΠΊΠ°Ρ
ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ: Composer, Bundler, PIP, NPM, Bower, Leiningen, CocoaPods, Maven, SBT, Gradle. ΠΡΠ΅ ΠΎΠ΄Π½Π° ΡΠΈΡΠ° ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° β ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΈΡ
ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² ΡΠΊΠ°Π·Π°Π»ΠΈ Π²Π°Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. ΠΠ»Π°Π²Π½ΠΎΠ΅, ΡΡΠΎΠ± ΠΎΠ½ΠΈ ΡΠΎΠΆΠ΅ Π±ΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π² VersionEye. Π Π°Π·Π²Π΅ Π²Π°ΠΌ Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΊΡΠΎ ΠΈ Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²Π°Ρ ΠΊΠΎΠ΄? ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ· ΡΡΡΠ°Π½ΠΈΡΠΊΠΈ Symfony Π²Π΅ΡΡΠΈΠΈ 2.6.4.
ΠΠΎ ΠΊΠ»ΠΈΠΊΡ Π½Π° References ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Symfony. ΠΡΠΎΡ ΡΠ΅ΡΠ²ΠΈΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π²Π° Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠ° (ΠΏΡΠΈΠ²ΠΎΠΆΡ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΈ Π΄Π»Ρ Symfony):
ΠΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΊΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π² VersionEye, ΠΊΠ»ΠΈΠΊΠ½ΡΠ² Π½Π° ΡΠ°ΠΌ Π±Π΅ΠΉΠ΄ΠΆ.
ΠΠΎΠΎΠ±ΡΠ΅, ΡΡΠΎΡ ΡΠ΅ΡΠ²ΠΈΡ ΠΌΠ½Π΅ ΠΎΡΠ΅Π½Ρ Π½ΡΠ°Π²ΠΈΡΡΡ. ΠΠ½ΠΎΠ³Π΄Π°, ΠΏΡΠ°Π²Π΄Π°, ΠΎΠ½ ΡΠΏΠ°ΠΌΠΈΡ, Π΅ΡΠ»ΠΈ ΡΡΠΆΠΈΠ΅ Π²Π΅Π½Π΄ΠΎΡΡ Π²ΡΠΏΡΡΠΊΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΡΠ΅ΠΉ Π² Π΄Π΅Π½Ρ, Π½ΠΎ Ρ ΡΡΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΈΡΠΈΡΡΡΡ. ΠΠ»Π°Π²Π½ΠΎΠ΅, ΡΡΠΎ ΠΎΠ½ Π΄Π°Π΅Ρ ΡΠ²Π΅ΠΆΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
CodeCov
CodeCov β ΡΠ΅ΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΡΠ°ΡΠΈΠ²ΡΠ΅ ΠΎΡΡΠ΅ΡΡ ΠΏΠΎ ΠΏΠΎΠΊΡΡΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΡΠ΅ΡΡΠ°ΠΌΠΈ. Π§ΡΠΎΠ± ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ, Π½ΡΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΠΈ Π² ΡΠ°ΠΉΠ»Π΅ .travis.yml
. ΠΠΎΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³:
language: php php: - 5.4 - 5.5 - 5.6 before_install: - sudo pip install codecov before_script: - composer install --dev script: - phpunit --coverage-clover=coverage.xml after_success: - codecov
ΠΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΡΠ΅ΠΊΡΠΈΠΈ before_install
ΠΈ after_success
, Π° PHPUnit Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ --coverage-clover=coverage.xml
. ΠΠΎΡΠ»Π΅ ΠΏΡΠΎΠ³ΠΎΠ½ΠΊΠΈ Travis CI Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΎΠΉΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΏΠΎΠΊΠ° ΠΎΡΡΠ΅Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π² Π²Π°ΡΠ΅ΠΌ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ΅ Π½Π° CodeCov. ΠΠ° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π² ΠΏΡΠ½ΠΊΡΠ΅ ΠΌΠ΅Π½Ρ Features ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΊΠΎΠ΄ Π΄Π»Ρ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠ°, ΡΠ°ΠΌ ΠΎΠ½ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
ΠΡΠ΅ ΠΎΠ΄Π½Π° ΠΏΡΠΈΠΊΠΎΠ»ΡΠ½Π°Ρ ΡΠΈΡΠ° CodeCov β ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ Π³ΡΠ°Ρ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ code coverage ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ:
Π― ΠΏΡΠΈΠ²Π΅Π» ΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ, Π½ΠΎ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ»ΠΈΠΊΠ°ΡΡ Π½Π° ΡΠΎΡΠΊΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ Π½Π° ΠΎΡΡΠ΅Ρ ΠΏΠΎ ΠΏΠΎΠΊΡΡΡΠΈΡ ΡΠ΅ΡΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°.
Coveralls
Coveralls β ΡΠ΅ΡΠ²ΠΈΡ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌΡ. Π§ΡΠΎΠ± Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² Ρomposer.json:
{ "require-dev": { "satooshi/php-coveralls": "dev-master" } }
ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ .travis.yml
:
language: php php: - 5.ΠΈΠ»ΠΈ Π·Π°Π΄Π°ΡΡ Π²ΠΎΠΏΡΠΎΡ Π±ΠΎΠ»ΡΡΠΎΠΌΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±ΡΡΡΡΡΠΉ ΠΎΡΠ²Π΅Ρ. ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΡΡΠΎΡΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π±ΡΠ΄Π΅Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ, ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΡΠ°Ρ Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Π² GitHub. ΠΠ΅ΠΉΠ΄ΠΆ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
Π Π½Π°ΠΉΡΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΊΠ΅ ΠΊΠ°Π½Π°Π»Π°:
ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ Π±ΡΠ΄Π΅Ρ Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ, ΠΏΠΎΠΊΠ° ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΠ°Π² ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ ΠΎΡΠ²Π΅Ρ Π½Π° Π½Π΅ΠΏΡΠΎΡΡΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ, ΡΠ΅ΡΠ΅Π· Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ Π΅Π³ΠΎ ΡΠΆΠ΅ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΡΠ²ΠΈΠ΄ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΡΠ½ΠΎ, ΠΏΡΠΈΠΆΠΈΠ²Π΅ΡΡΡ Π»ΠΈ ΡΡΠΎΡ ΡΠ΅ΡΠ²ΠΈΡ, Ρ ΠΎΡΡ ΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ. ΠΠΎΠ»ΡΠ·ΡΡΡΡ ΡΠ»ΡΡΠ°Π΅ΠΌ, ΠΏΡΠΈΠ²ΠΎΠΆΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ°ΡΡ PHP-ΠΊΠΎΠΌΡΡΠ½ΠΈΡΠΈ Π£ΠΊΡΠ°ΠΈΠ½Ρ:
- https://gitter.im/php-ua/php
- https://gitter.im/php-ua/symfony
- https://gitter.im/php-ua/zf
- https://gitter.im/php-ua/yii
- https://gitter.im/php-ua/laravel
- https://gitter.im/php-ua/phalcon
CoderWall
CoderWall β ΡΡΠΎ-ΡΠΎ ΡΠΈΠΏΠ° ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ (Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊ Π½Π°Π·Π²Π°ΡΡ) Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ². ΠΠΎΠΆΠ½ΠΎ Π΄Π΅Π»ΠΈΡΡΡΡ ΡΠΎΠ²Π΅ΡΠ°ΠΌΠΈ, ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΉ, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΡΠ΄Π° ΡΡΠ°ΡΠ½ΠΈΠΊΠΎΠ², Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ, ΡΠΎΠ»ΠΎΠ²ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΡΠΎΡ ΡΠ΅ΡΠ²ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΈ. ΠΠΎ ΡΡΠΈ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΈ Π±ΡΠ΄ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΠΊ Π²Π°ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠΈΠ»Ρ Π½Π° Π³ΠΈΡΡ
Π°Π±Π΅, Π° Π½Π΅ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π΅ΠΉΠ΄ΠΆ, Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ²ΠΎΠΉ Π½Π°Π²ΡΠΊ Π² ΠΏΡΠΎΡΠΈΠ»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: php, open source. ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π΅ΡΠ»ΠΈ ΡΠΎΠΌΠ½Π΅Π²Π°Π΅ΡΠ΅ΡΡ β ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ
ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ², ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Ρ Π½ΠΈΡ
. ΠΠ°Π»Π΅Π΅ ΡΠ°Π· Π² Π½Π΅Π΄Π΅Π»Ρ (ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ ΡΠ°ΠΉΡΠ°) ΡΠ΅ΡΠ²ΠΈΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π°ΡΠΈ Π½Π°Π²ΡΠΊΠΈ Ρ ΠΏΡΠΎΡΠΈΠ»Ρ Ρ Π²Π°ΡΠ΅ΠΉ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ Π½Π° Π³ΠΈΡΡ
Π°Π±Π΅. ΠΡΠ»ΠΈ Π²Ρ ΡΠΊΠ°Π·Π°Π»ΠΈ Π½Π°Π²ΡΠΊ PHP ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π½Π° Π³ΠΈΡΡ
Π°Π±Π΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ β ΡΡΠΎ PHP, ΡΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊ Β«ΠΏΠ°ΡΠΊΒ». ΠΠ° ΡΡΠΈ PHP-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ β Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π±Π΅ΠΉΠ΄ΠΆ Β«ΡΡΠΎΠΉΠ½ΠΎΠΉ ΠΏΠ°ΡΠΊΒ». ΠΠΎ ΡΡΠΈ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΈ ΠΏΠΎΠΊΠ° ΡΡΠΎ Π±ΡΠ΄ΡΡ Π²ΠΈΠ΄Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΊΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠΈΠ»Ρ Π² CoderWall. Π§ΡΠΎΠ± ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ Π²ΠΈΠ΄Π½Ρ Π½Π° GitHub, Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΡΠ²ΠΎΠΉ GitHub-Π°ΠΊΠΊΠ°ΡΠ½Ρ Π² ΠΏΡΠΎΡΠΈΠ»Ρ CoderWall. Π§Π΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ CoderWall ΠΏΡΠΈΠ³Π»Π°ΡΠΈΡ Π²Π°Ρ Π² ΡΠ²ΠΎΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ, ΠΈ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π±Π΅ΠΉΠ΄ΠΆ Π½ΠΈ Π³ΠΈΡΡ
Π°Π±Π΅. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΎΠ² Ρ ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΡΠΈΠ»Ρ.
ΠΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ - ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ CoderWall Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π° GitHub, ΡΠ°ΠΌ ΡΠ°ΠΉΡ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Ruby. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ GitHub.
SensioLabs Insight
ΠΡΠ΅Π½Ρ Π»ΡΠ±Π»Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ SensioLabs Π·Π° ΡΠΎ, ΡΡΠΎ ΠΎΠ½Π° ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ Π²Π΅ΡΠΈ Π΄Π»Ρ ΠΌΠΈΡΠ° PHP. SensioLabs Insight β Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ΅ΡΠ²ΠΈΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π°, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ PHP. Π’ΠΎΡΠ½Π΅Π΅ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ PHP, ΡΠ°ΠΌ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π²Π°ΡΠ΅ΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ: Symfony-Π±Π°Π½Π΄Π», Symfony-ΠΏΡΠΎΠ΅ΠΊΡ, ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ Drupal ΠΈ Ρ.Π΄.
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, Insight Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΠΈ Π² XML ΠΈ YAML ΡΠ°ΠΉΠ»Ρ, Twig ΡΠ°Π±Π»ΠΎΠ½Ρ, Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·Π΅ΡΠ°.
Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ SensioLabs Insight ΠΏΡΠΎΡΡΠΎ Π²Π½ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ. Π ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π² ΠΊΠΎΡΠΎΡΡΡ
Π΅ΡΡΡ ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ, ΠΈ Π΅ΡΠ΅ ΠΊΡΡΠ°-ΠΊΡΡΠ° Π²ΡΠ΅Π³ΠΎ. ΠΡΠ΅Π³ΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΎΡΠ½ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π²Π°Ρ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΌΠ΅Π΄Π°Π»Ρ Π·Π° ΠΎΡΠ²Π°Π³Ρ!!! ΠΡΠ»ΠΈ Π±Ρ ΠΊΠΎΠ΄ Π±ΡΠ» ΠΆΠΈΠ²ΠΈΠΌ ΡΡΡΠ΅ΡΡΠ²ΠΎΠΌ, ΡΠΎ ΠΎΠ½ Π±Ρ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°ΡΠΈΠ» ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ :)
ΠΠ΅Π΄Π°Π»ΠΈ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠΎΠΊΠ° Ρ Π²Π°Ρ Ρ ΠΎΡΡ ΠΎΠ΄Π½ΠΎ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ β ΠΌΠ΅Π΄Π°Π»ΠΈ Π²Π°ΠΌ Π½Π΅ Π²ΠΈΠ΄Π°ΡΡ! ΠΠ΅Π΄Π°Π»ΠΈ-Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΈ Π±ΡΠ²Π°ΡΡ ΡΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ², Π²ΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠ°ΠΊΠΎΠΉ Π²Π°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠ°Π²ΠΈΡΡΡ:
ΠΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ΄ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊ SensioLabs Insight, ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π²Π°ΡΠ΅Π³ΠΎ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π²Π°ΡΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² Π½Π° Π³ΠΈΡΡ Π°Π±Π΅ ΡΠ΅ΡΠ΅Π· web-hook. ΠΠ΄ΡΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅ΡΠ½ΡΡΡ Π³ΠΈΡΡ Π°Π±, ΡΡΠΎΠ± Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ, Π±Π΅ΡΠ΅ΡΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ API/SDK Π²Π°ΡΠ΅Π³ΠΎ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°. ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π·Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π½Π° Π³ΠΈΡΡ Π°Π±Π΅ Π² ΠΌΠ΅Π½Ρ Webhooks & Services ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ Π½ΠΎΠ²ΡΠΉ Ρ ΡΠΊ.
ΠΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΠ΅ΡΠ²ΠΈΡ! ΠΠ½ Π½Π°ΠΉΠ΄Π΅Ρ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ ΡΠΎ, ΠΎ ΡΠ΅ΠΌ Π²Ρ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Π»ΠΈ. ΠΠ΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Π° Π΄Π»Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ
ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π², ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΡΡΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠΆΠ΅ ΠΏΠ»Π°ΡΠ½Π°Ρ.
KnpBundles
ΠΡΠ»ΠΈ Π²Ρ Symfony-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΡΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ Π²Ρ Π·Π½Π°Π΅ΡΠ΅ ΠΎ ΡΠ°ΠΉΡΠ΅ knpbundles.com. ΠΠ° ΡΡΠΎΠΌ ΡΠ°ΠΉΡΠ΅ ΡΠΎΠ±ΡΠ°Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Π±Π°Π½Π΄Π»Ρ Π΄Π»Ρ Symfony2. ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π±Π°Π½Π΄Π» ΠΈ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ± ΠΎΠ½ ΡΠ°ΠΌ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ, ΡΠΎ Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. ΠΠ°Π»ΠΎΠ³ΠΈΠ½ΠΈΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π³ΠΈΡΡ Π°Π±Π° ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° Π²Π°Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ. Π’.Π΅. Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ Π±Π°Π½Π΄Π» Π½Π° ΡΠ°ΠΉΡΠ΅, ΡΠΎ ΠΎΠ½ ΡΠ°ΠΌ Π½Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ! ΠΠ° ΡΡΠΎΠΌ ΡΠ°ΠΉΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅ΠΉΡΠΈΠ½Π³Π°. ΠΡΠ΅Π½ΠΊΠ° Π΄Π»Ρ Π±Π°Π½Π΄Π»Π° ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΠ°ΠΊ:
- 1 Π±Π°Π»Π» Π·Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΠ»ΠΎΠ²Π΅ΡΠ° Π½Π° Π³ΠΈΡΡ Π°Π±Π΅;
- 5 Π±Π°Π»Π»ΠΎΠ² Π·Π° README ΡΠ°ΠΉΠ», Π΅ΡΠ»ΠΈ Π² Π½Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΌ 300 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²;
- 5 Π±Π°Π»Π»ΠΎΠ² Π΅ΡΠ»ΠΈ Π±Π°Π½Π΄Π» ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΊ Travis CI;
- ΠΡΠ΅ 5 Π±Π°Π»Π»ΠΎΠ² Π΄Π°Π΅ΡΡΡ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΡΠΏΠ΅ΡΠ½ΡΠΉ Π±ΠΈΠ»Π΄ Π½Π° Travis CI;
- 5 Π±Π°Π»Π»ΠΎΠ², Π΅ΡΠ»ΠΈ Π² Π±Π°Π½Π΄Π»Π΅ Π΅ΡΡΡ ΡΠ°ΠΉΠ» composer.json ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½Π° packagist.org;
- 5 Π±Π°Π»Π»ΠΎΠ² Π·Π° ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ Π±Π°Π½Π΄Π»Π° Π½Π° ΡΠ°ΠΉΡΠ΅ knpbundles.com (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΠ°ΠΉΡΠ°).
- ΠΠΎΠ½ΡΡ Π·Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ 30 Π΄Π½Π΅ΠΉ.
Π€ΠΎΡΠΌΡΠ»Π° (30 β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π½Π΅ΠΉ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ) / 5. ΠΠΈΠ½ΡΡΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π΅ ΡΡΠΈΡΠ°ΡΡ, Π½ΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΄ΡΠΎΠ±Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΠΌ, Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΌΠ½ΠΎΠ³ΠΎ Π±Π°Π»Π»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π½Π°Π±ΡΠ°ΡΡ Π±Π°Π½Π΄Π» Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΈΠ»ΠΈΡΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π»ΠΈΡΡ Π°Π²ΡΠΎΡΠ°. ΠΡΠ²ΠΈΠ½ΡΡ Π΄ΠΎΠ»Ρ Π±Π°Π»Π»ΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠΎΠ»Π»ΠΎΠ²Π΅ΡΡ ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΎΡΡ. ΠΠ°Π½Π΄Π» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΡΠΌ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ, ΡΡΠΎΠ± Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ»ΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π΅ΠΌΡ ΠΏΠ»ΡΡ.
Π‘Π°ΠΉΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π²Π° Π²ΠΈΠ΄Π° Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΎΠ² (ΠΈΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π±Π°Π½Π΄Π»Π° Π² ΡΠ°ΠΉΠ΄Π±Π°ΡΠ΅). ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ ΡΠ°ΠΌΡΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ Π±Π°Π½Π΄Π» FOSUserBundle ΠΈ Π΅Π³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΡ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΎΠ²:
ΠΠΎΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ: ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ²ΠΎΠΉ Π±Π°Π½Π΄Π» Π½Π° ΡΡΠΎΡ ΡΠ°ΠΉΡ ΠΈ Π²ΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠ΄ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠ°. ΠΠ΅Π΄Ρ Π΅ΡΠ»ΠΈ Π²Ρ Π΅Π³ΠΎ Π²ΡΡΡΠ°Π²ΠΈΠ»ΠΈ Π² open source, Π·Π½Π°ΡΠΈΡ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ± ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ. Π Π°ΡΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΎ Π½Π΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Ρ!
HHVM
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ HHVM, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ Π² .travis.yml
ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΠΎΡ ΡΠ°ΠΊ:
language: php php: - 5.3 - 5.4 - 5.5 - 5.6 - hhvm matrix: allow_failures: - php: hhvm before_script: - composer install --dev script: - phpunit --coverage-text tests
ΠΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ --hhvm
Π² Π²Π΅ΡΡΠΈΠΈ PHP. ΠΡΠ»ΠΈ Π²Π°Ρ ΠΊΠΎΠ΄ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ Π½Π° HHVM, ΡΠΎ ΡΠ±ΡΠΎΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π°, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ²Π°Π»ΠΈΠ²ΡΠ°ΡΡΡ. ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ HHVM, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΡΠ΅ΠΉΠ»ΠΈΡΡ Π±ΠΈΠ»Π΄, ΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΎΠΏΡΠΈΡ allow_failures
. ΠΠ΅ΠΉΠ΄ΠΆΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ HHVM, ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅ https://hhvm.h5cc.de/.
ΠΠ° ΡΡΡΠ°Π½ΠΈΡΠΊΠ΅ Search Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ Π½ΡΠΆΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈΠ· Π³ΠΈΡΡ Π°Π±Π°, ΡΡΠ°Π·Ρ Π²ΠΈΠ΄ΠΈΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΊΠ»ΠΈΠΊΠ°Π΅ΠΌ Π½Π° Badges ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½ΡΠΆΠ½ΡΠΉ ΠΊΠΎΠ΄.
Shields.io
Shields.io β ΡΠ°ΠΉΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΈ ΠΎΡ ΡΠ°Π·Π½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌΡ Π²ΠΈΠ΄Ρ. Π‘ΠΏΠΈΡΠΎΠΊ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ, ΡΡΡ ΡΠΎΠ±ΡΠ°Π½Ρ ΡΠ°ΠΌΡΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π― Π½Π΅Π΄Π°Π²Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ·Π½Π°Π» ΠΎ ΡΠ°ΠΊΠΎΠΌ ΡΠ±ΠΎΡΠ½ΠΈΠΊΠ΅, ΠΈ ΠΎΠ½ ΠΌΠ½Π΅ ΡΡΠ°Π·Ρ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΡΡ. ΠΡΡΡ ΡΡΠΈ ΡΠ°Π±Π»ΠΎΠ½Π° Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΎΠ²:
ΠΠΈΡΠ½ΠΎ ΠΌΠ½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ, ΠΈ Ρ ΠΏΠΎΠΌΠ΅Π½ΡΠ» Π²ΡΠ΅ Π±Π΅ΠΉΠ΄ΠΆΠΈΠΊΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΌΠΎΠΈΡ
ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π².
ΠΡΠ»ΠΎ:
Π‘ΡΠ°Π»ΠΎ
Π§ΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ΄ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Markdown, Π½ΡΠΆΠ½ΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡΡΡ Π½Π° Π±Π΅ΠΉΠ΄ΠΆΠ΅ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠΈΠ½ΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΏΡΡΡ ΠΊ ΡΠ²ΠΎΠ΅ΠΌΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π½Π° Π½ΡΠΆΠ½ΠΎΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ°ΠΌΠΎΠΌΡ. ΠΡΠ²Π°Π΅Ρ, Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π½ΠΈΠΊ ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. Π Π±ΡΠ²Π°Π΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Ρ
Π΅Ρ-ΠΊΠΎΠ΄, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, https://img.shields.io/sensiolabs/i/45afb680-d4e6-4e66-93ea-bcfa79eb8a87.svg
. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈΠ΄ΡΠΈ Π² Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ ΠΈ ΡΠ°ΠΌ ΠΈΡΠΊΠ°ΡΡ...
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠΏΠΈΡΠΎΠΊ Π½Π΅ ΠΏΠΎΠ»Π½ΡΠΉ. ΠΡΠ΅ ΠΏΠΎΠ»Π½ΠΎ ΡΠ°Π·Π½ΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π΄Π°ΠΆΠ΅ Π΄Π»Ρ PHP, Π΄ΡΠΌΠ°Ρ, Π½Π°ΠΉΠ΄Π΅ΡΡΡ Π΅ΡΠ΅ ΠΏΠ°ΡΠΎΡΠΊΠ° ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, ΠΎ ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π½Π΅ Π·Π½Π°Π». ΠΠΎ ΡΡΡ Π΄Π΅Π»ΠΎ ΡΠ°ΠΊΠΎΠ΅, Π·Π° Π²ΡΠ΅ΠΌ Π½Π΅ ΡΡΠ»Π΅Π΄ΠΈΡΡ. ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ Π±ΡΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΈ ΠΈΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ ΡΡΠ΅Π΄ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠ°ΡΡΠ΅Ρ. ΠΠ°Π΄Π΅ΡΡΡ, ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ ΠΎΠ½Π° Π΅ΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡ :). ΠΠ΅ ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅Π³Π°ΠΉΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Ρ, ΡΡΠΎΠ±Ρ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ!
Π’ΠΎΠΏ-5 ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ Π·Π½Π°ΡΠΊΠΎΠ² Ρ ΠΎΠ½Π»Π°ΠΉΠ½-ΡΠ°Π±Π»ΠΎΠ½Π°ΠΌΠΈ Π² 2023 Π³ΠΎΠ΄Ρ
ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: 12 ΡΠ½Π²Π°ΡΡ 2023 Π³ΠΎΠ΄Π°
ΠΠ½Π°ΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡ Π² Π½Π°ΡΠ΅ΠΉ ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ. ΠΠ½ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅. Π§Π»Π΅Π½ Π³ΡΡΠΏΠΏΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ ΠΈΠ· ΡΡΡΡΡΠΈ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π±Π΅ΠΉΠ΄ΠΆ. ΠΠ½Π°ΡΠΊΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΏΡΠΈΠ·Π½Π°Π½ΠΈΡ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π°Π²ΡΠΎΡΠΈΡΠ΅ΡΠ°. ΠΠΌΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
ΠΎΠ½Π»Π°ΠΉΠ½-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π·Π½Π°ΡΠΊΠΎΠ², Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ Π·Π½Π°ΡΠΎΠΊ Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΡ, ΡΠΊΠΎΠ»Ρ / ΠΊΠΎΠ»Π»Π΅Π΄ΠΆΠ° ΠΈΠ»ΠΈ Π΄Π»Ρ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅Π»ΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΠΈ ΡΠ°Π·Π΄Π°ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡΠΌ Π»ΠΈΡΠ°ΠΌ.
ΠΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ Π·Π½Π°ΡΠΎΠΊ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ?
Π§ΡΠΎ ΠΆ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΠΏΠ΅ΡΠ°ΡΠ»ΡΡΡΠ΅Π³ΠΎ Π·Π½Π°ΡΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π½Π΅ΠΏΡΠΎΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΠ΅ΡΡ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ ΠΈ Ρ Π²Π°Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΠ΅Π΄ΡΡΠ², ΡΡΠΎΠ±Ρ Π½Π°Π½ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠ° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ Π²Π°ΡΠΈΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½-ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ. ΠΠΎ, ΠΊ ΡΡΠ°ΡΡΡΡ, Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π·Π½Π°ΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ Π·Π½Π°ΡΠΎΠΊ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ΅Π³ΠΎ Π·Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ½ΡΡ.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΏΠ΅ΡΠ°ΡΡ ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π±Π΅ΠΉΠ΄ΠΆΠ΅ΠΉ ΡΡΠ°Π»ΠΈ Π»Π΅Π³ΠΊΠΈΠΌΠΈ. ΠΠ΄Π΅ΡΡ, Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅, ΠΌΡ ΡΠΎΠ±ΡΠ°Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ»ΠΈΡΠ½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π·Π½Π°ΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π½Π°ΡΠ»ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ.
01. Designhill Badge Maker
Designhill Badge Maker β ΡΡΠΎ Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ. Π‘ Π½ΠΈΠΌ Π»Π΅Π³ΠΊΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΈ Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΡΠ°ΡΠΈΠ²ΡΠΉ Π·Π½Π°ΡΠΎΠΊ Π΄Π»Ρ ΡΠ²ΠΎΠ΅ΠΉ ΡΠΊΠΎΠ»Ρ, ΠΎΡΠΈΡΠ° ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΡ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΡΠΊΠΈΡ Π½Π°Π²ΡΠΊΠΎΠ². ΠΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΡΡΡΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² Π½Π° Π²ΡΠ±ΠΎΡ. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π²Π°ΡΠΈΠΌ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΠΌ, ΠΈ Π½Π°ΡΠ½ΠΈΡΠ΅ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ±ΠΎΡ ΡΠ²Π΅ΡΠΎΠ², ΡΡΠΈΡΡΠΎΠ², ΡΡΠΈΠ»Ρ ΡΠ΅ΠΊΡΡΠ°, ΠΌΠ°ΠΊΠ΅ΡΠ°, Π·Π½Π°ΡΠΊΠΎΠ² ΠΈ Ρ. Π΄. ΠΠΎΡ ΠΈ Π²ΡΠ΅! ΠΠ°Ρ Π·Π½Π°ΡΠΎΠΊ Π³ΠΎΡΠΎΠ² ΠΊ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠΊΠΈ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠ²Π΅ΡΠ°ΠΌΠΈ ΠΈ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡΠΌΠΈ.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π·Π½Π°ΡΠΎΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Designhill Badge Maker
- Π§ΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ, Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Β«Π‘ΠΎΠ·Π΄Π°ΡΡΒ».
- ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ ΡΠ°Π±Π»ΠΎΠ½.
- ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΈΠ»ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
- ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ ΡΠ²ΠΎΡ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡ, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ΅ΠΊΡΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΡΠΈΠ»Ρ ΡΡΠΈΡΡΠ°.
- Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΈ ΡΠΊΠ°ΡΠ°ΡΡ.
02. Adobe Photoshop
Adobe Photoshop β Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π·Π½Π°ΡΠΊΠΎΠ² Π΄Π»Ρ ΡΠ²ΠΎΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ»ΠΈ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ². Photoshop ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² Π½Π° Π²ΡΠ±ΠΎΡ. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Ρ
ΠΎΡΠΈΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½. ΠΠ΅ΠΉΠ΄ΠΆ Ρ ΠΊΡΠ°ΡΠΈΠ²ΡΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅Ρ Ρ Π²Π°ΡΠΈΡ
ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ² ΡΡΠ²ΡΡΠ²ΠΎ ΡΠ΅ΡΡΠΈ ΠΏΡΠΈ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ.
03. AlphaCard
ΠΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±Π΅ΠΉΠ΄ΠΆΠ΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΎΠ·Π³ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΠ΅ΡΠ°ΡΠΈ Π±Π΅ΠΉΠ΄ΠΆΠ΅ΠΉ. AlphaCard ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π·Π½Π°ΡΠΎΠΊ. ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²Π°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡ . ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΠΉΡΠ΅ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΠΉΡΠ΅ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ² ΠΈ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Π΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΎΡΡΠ΅ΡΠΎΠ² ΠΎ ΠΏΠΎΡΠ΅ΡΠ°Π΅ΠΌΠΎΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π±Π΅ΠΉΠ΄ΠΆΠ΅ΠΉ. ΠΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π°ΠΆΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠΎΠΌΠΎΠ³Π°ΡΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Π½Π΅ΡΠ°Π½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ.
04. HID Global
HID Global β ΡΡΠΎ ΠΏΡΠ΅Π²ΠΎΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΏΠΎΠ»Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π·Π½Π°ΡΠΊΠΎΠ² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΠ½Π°ΡΠΎΠΊ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ HID Assure β ΡΡΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠ°ΡΠΎΠ»Ρ. ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π»Π°Π·Π΅ΡΠ½ΡΡ ΡΠ΅Π·ΡΠ±Ρ Π΄Π»Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
HID Global ΠΈΠΌΠ΅Π΅Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ. ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π±ΡΡΡΡΠΎ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°ΠΌ Π±Π°Π· Π΄Π°Π½Π½ΡΡ .
05. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Jolly ID Badge
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Jolly Badge Maker ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ². ΠΠ½ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΊΠ°ΠΊ ΡΠ°ΠΌΡΡ ΡΠ»ΠΎΠΆΠ½ΡΡ, ΡΠ°ΠΊ ΠΈ ΡΠ°ΠΌΡΡ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ ΡΠ°Π±Π»ΠΎΠ½Π° , ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΠΌΡΠΉ Π·Π½Π°ΡΠΎΠΊ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ Π»ΠΈΡΠ½ΠΎΡΡΠΈ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π΅Π³ΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ² ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠ΅ΡΠ°ΡΠΈ Π±Π΅ΠΉΠ΄ΠΆΠ΅ΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠΎΡΠΎΠ±Π΅ΠΉΠ΄ΠΆΠΈ.
Π’Π°ΠΊΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π±Π΅ΠΉΠ΄ΠΆΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΡΠΌ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΡ, ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΡΠΌ ΠΈ Π΄ΡΡΠ³ΠΈΠΌ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌ.
ΠΡ ΠΈΡΠ΅ΡΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠ°? ΠΡΠ»ΠΈ Π΄Π°, ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΡΠ΅ Π½Π°ΠΌ ΠΏΠΎ ΡΠ΅Π»Π΅ΡΠΎΠ½Ρ +1-855-699-2851 [Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ Π·Π²ΠΎΠ½ΠΊΠ° 9Π΄ΠΎ 18:00 EST (Π‘Π¨Π)] ΠΈΠ»ΠΈ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°ΡΠΈΠΈ ΠΏΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Ρ
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΡΠ΅ΠΌΡ Π·Π½Π°ΡΠΊΠΈ ΡΠ°ΠΊ Π²Π°ΠΆΠ½Ρ? ΠΠΎΡΠ΅ΡΠ°ΠΉΡΠ΅ Π²Π΅Π±ΠΈΠ½Π°ΡΡ β ΠΎΠ±Π·ΠΎΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π±Π΅ΠΉΠ΄ΠΆΠ΅ΠΉ, ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠΉ Π»ΠΈΡΠ½ΠΎΡΡΠΈ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° Π±Π΅Π· Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ, ΠΈ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΎΡΠ½ΡΠ΅ ΠΎΡΠ²Π΅ΡΡ Π½Π° ΡΠ²ΠΎΠΈ Π²ΠΎΠΏΡΠΎΡΡ. ΠΠ΅Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π²Ρ Π²ΠΎΠ·Π³Π»Π°Π²Π»ΡΠ΅ΡΠ΅; Π²Ρ ΡΠ²Π»ΡΠ΅ΡΠ΅ΡΡ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠΌ ΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΠΎΠ΄Π°ΡΠ΅Π»Π΅ΠΌ; ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π²ΡΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ Π·Π½Π°ΡΠΊΠΎΠ² Π±ΡΠ΄ΡΡ Π² ΡΡΠ΅Π½Π΄Π΅ Π² 2023 Π³ΠΎΠ΄Ρ ΠΈ, ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ, Π±ΡΠ΄ΡΡ ΠΏΡΠΎΡΠ²Π΅ΡΠ°ΡΡ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠ΅ Π³ΠΎΠ΄Ρ. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π²Π°ΡΠΈΠΌ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΠΌ, ΠΈ Π½Π°ΡΠ½ΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ²ΠΎΠΉ Π·Π½Π°ΡΠΎΠΊ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ Ρ Π»ΠΎΠΏΠΎΡ.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π·Π½Π°ΡΠΎΠΊ ΠΎΠ½Π»Π°ΠΉΠ½
30 ΠΊΡΠ°ΡΠΈΠ²ΡΡ Π·Π½Π°ΡΠΊΠΎΠ² ΠΈ Π»ΠΎΠ³ΠΎΡΠΈΠΏΠΎΠ² ΠΠΈΠ·Π°ΠΉΠ½ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ | ΠΠΎΠ³ΠΎΡΠΈΠΏΡ
2,1Β Π ΠΠΊΡΠΈΠΈ ΠΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ Π»ΠΎΠ³ΠΎΡΠΈΠΏΡ ΠΈ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ ΠΊΡΠ°ΡΠΈΠ²ΡΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΠΌΠΈ ΠΈ ΠΈΠ΄Π΅ΡΠΌΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π½ΠΎΠ²ΡΠΌΠΈ ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡΠΌΠΈ. Π‘Π΅Π³ΠΎΠ΄Π½Ρ Π² ΡΡΠΎΠΉ Π³Π°Π»Π΅ΡΠ΅Π΅ Ρ ΡΠΎΠ±ΡΠ°Π» ΠΊΡΠ΅Π°ΡΠΈΠ²Π½ΡΠ΅ Π·Π½Π°ΡΠΊΠΈ ΠΈ Π»ΠΎΠ³ΠΎΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° Π²Π°Ρ Π²Π΄ΠΎΡ
Π½ΠΎΠ²ΡΡ.
Π€ΠΈΡΠΌΠ΅Π½Π½ΡΠΉ ΡΡΠΈΠ»Ρ ΠΈΠ»ΠΈ Π±ΡΠ΅Π½Π΄ΠΈΠ½Π³Β ΡΠ²ΡΠ·Π°Π½ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌΒ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π»ΠΎΠ³ΠΎΡΠΈΠΏΠ° Β ΠΈ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ΅Π½Π½ΠΎΡΡΠΈ Π±ΡΠ΅Π½Π΄Π° Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΌΠ΅Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΎΡ ΡΠ°Π½ΡΡ ΡΠ²Π΅ΡΠΎΠ²ΡΠ΅ ΡΡ Π΅ΠΌΡ ΠΈ Ρ ΡΠ΄ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ΅Π½Π½ΠΎΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΡΠ΅Π½Π΄, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΎΡΠΈΠΏΠ° ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊ ΠΌΠΎΠ³ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ Π΄ΠΈΠ·Π°ΠΉΠ½ Π»ΠΎΠ³ΠΎΡΠΈΠΏΠ°.
ΠΠ°ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ°ΡΡΠΈ.
- 30 Π»ΡΡΡΠΈΡ ΠΊΡΠ΅Π°ΡΠΈΠ²Π½ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ΅Π»Π΅Π²ΡΡ ΡΠ΅ΠΌ WordPress 2019 Π³ΠΎΠ΄Π°
- ΠΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ Π²ΠΈΠ·ΠΈΡΠ½ΡΡ ΠΊΠ°ΡΡΠΎΡΠ΅ΠΊ (30 ΠΏΠ΅ΡΠ°ΡΠ½ΡΡ ΡΠΎΡΠΌ)
- 8 Π³Π»Π°Π²Π½ΡΡ ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΉ Π² 2019 Π³ΠΎΠ΄Ρ
- Π’Π΅Π½Π΄Π΅Π½ΡΠΈΠΈ Π²Π΅Π±-Π΄ΠΈΠ·Π°ΠΉΠ½Π° 2019 β 31 Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°
- 35 Π»ΡΡΡΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΡΠ΅Π·ΡΠΌΠ΅
ΠΠ΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°Π³ΡΡΠ·ΠΎΠΊ
ΠΠΎΠ»Π΅Π΅ 1 500 000 ΡΡΠΈΡΡΠΎΠ², ΠΌΠΎΠΊΠ°ΠΏΠΎΠ², Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² Π΄Π»Ρ Π΄ΠΈΠ·Π°ΠΉΠ½Π°
Π‘ΠΊΠ°ΡΠ°ΡΡ ΡΠ΅ΠΉΡΠ°Ρ
ΠΡΠΈΠΌΠ΅ΡΡ ΠΊΡΠ΅Π°ΡΠΈΠ²Π½ΡΡ Π·Π½Π°ΡΠΊΠΎΠ² ΠΈ Π»ΠΎΠ³ΠΎΡΠΈΠΏΠΎΠ²
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΡΠΎΠ±ΡΠ°Π»ΠΈ ΡΡΠΈΠ΄ΡΠ°ΡΡ ΠΊΡΠ°ΡΠΈΠ²ΠΎ ΠΎΡΠΎΡΠΌΠ»Π΅Π½Π½ΡΡ
Π·Π½Π°ΡΠΊΠΎΠ² Ρ Π»ΠΎΠ³ΠΎΡΠΈΠΏΠ°ΠΌΠΈ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ ΡΠΎ Π²ΡΠ΅Π³ΠΎ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΏΠΎΠ»Π½ΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΠ΅ΡΠΈΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π»ΠΎΠ³ΠΎΡΠΈΠΏΠ° .
ΠΠΈΠ·Π°ΠΉΠ½ Π»ΠΎΠ³ΠΎΡΠΈΠΏΠ° Mountain Journey
Source
ΠΠΎΠ³ΠΎΡΠΈΠΏ Fire At Will Badge
Source
ΠΠΎΠ³ΠΎΡΠΈΠΏ Conwy Castle Badge
Source
ΠΠΎΠ³ΠΎΡΠΈΠΏ Brindle Properties Badge
Source
Rocky Mountain Redux
Source
ΠΠ½Π°ΡΠΎΠΊ ΠΠΎΡΠ΅ΠΌΠΈΡΡΠΊΠΎΠ³ΠΎ Π½Π°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠΊΠ°
Source
ΠΠΎΠ³ΠΎΡΠΈΠΏ Trendy Minds Badge
Source
ΠΡΡΡΠ³Π°Π»ΡΡΠ΅ΡΡ ΠΠΎΠ³ΠΎΡΠΈΠΏ s Peak Ski Mountain
ΠΡΡΠΎΡΠ½ΠΈΠΊ
ΠΠΈΠ·Π°ΠΉΠ½ Π»ΠΎΠ³ΠΎΡΠΈΠΏΠ° Summer Vibes
ΠΡΡΠΎΡΠ½ΠΈΠΊ
ΠΠ°ΠΊΠ»Π΅ΠΉΠΊΠ° Raw Forest Foods
ΠΡΡΠΎΡΠ½ΠΈΠΊ
ΠΠ½Π°ΡΠΎΠΊ Π»ΠΎΠ³ΠΎΡΠΈΠΏΠ° ΠΌΠ΅ΡΠ΅ΡΠΈ Π¨Π°ΡΠ΅Π½Π°
ΠΡΡΠΎΡΠ½ΠΈΠΊ
ΠΠΈΠ·Π°ΠΉΠ½ Π»ΠΎΠ³ΠΎΡΠΈΠΏΠ° Twinine
ΠΡΡΠΎΡΠ½ΠΈΠΊ
ΠΠΎΠ³ΠΎΡΠΈΠΏ ΡΠΏΠΎΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠΊΠ°
Source
ΠΠΎΠ³ΠΎΡΠΈΠΏ Beat Culture Badge
Source
ΠΠΎΠ³ΠΎΡΠΈΠΏ Go Fetch Badge
Source
ΠΠΎΠ³ΠΎΡΠΈΠΏ Distanza Badge
Source
ΠΡΠ·ΠΎΠ²Ρ ΠΠΈΠ·Π°ΠΉΠ½ Π»ΠΎΠ³ΠΎΡΠΈΠΏΠ° Π±ΡΠ΅Π½Π΄Π°
ΠΡΡΠΎΡΠ½ΠΈΠΊ
ΠΠΈΠ½ΡΠ°ΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠΊΠΈ ΠΡΠ±Π°Ρ
ΠΡΡΠΎΡΠ½ΠΈΠΊ
ΠΡΡΡΠΈΠΉ ΠΠ°Π±ΠΎΡΡ ΠΈΠΊΠΎΠ½ΠΎΠΊ Π³ΠΎΠ΄Π°
ΠΡΡΠΎΡΠ½ΠΈΠΊ
Π€Π΅Π΄Π΅ΡΠ°ΡΠΈΠ²Π½Π°Ρ Π Π΅ΡΠΏΡΠ±Π»ΠΈΠΊΠ° ΠΡΠ°Π·ΠΈΠ»ΠΈΡ
ΠΡΡΠΎΡΠ½ΠΈΠΊ
ΠΠΈΠ·Π°ΠΉΠ½ Π»ΠΎΠ³ΠΎΡΠΈΠΏΠ° ΡΠΏΠΎΡΡΠ·Π°Π»Π°
ΠΡΡΠΎΡΠ½ΠΈΠΊ
ΠΠ½Π°ΡΠΎΠΊ EDAC Technologies
Source
Teamwork Dream Work Badge Logo
Source
West Virginia Badge Logo
Source
Park Badge Logo
Source
American Native Patch Lock Π²Π²Π΅ΡΡ
ΠΡΡΠΎΡΠ½ΠΈΠΊ
ΠΠΎΠ³ΠΎΡΠΈΠΏ Zion Badge
ΠΡΡΠΎΡΠ½ΠΈΠΊ
Zendesk Team Phoenix
ΠΡΡΠΎΡΠ½ΠΈΠΊ
ΠΠ½Π°ΡΠΎΠΊ Epicurrence Breckenridge
ΠΡΡΠΎΡΠ½ΠΈΠΊ
ΠΠ²ΡΠΎΡ: ΠΡΡ
Π°ΠΌΠΌΠ°Π΄ Π€Π΅ΠΉΡΠ°Π»
Π― ΠΡΡ
Π°ΠΌΠΌΠ°Π΄ Π€Π΅ΠΉΡΠ°Π», ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»Ρ GDJ ΠΈ ΡΠΎΡΡΡΠ΅Π΄ΠΈΡΠ΅Π»Ρ FPD.