ΠΡΠ°ΠΊΡΠΈΠΊΠ° 1. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ
Π¦Π΅Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ - ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½Π°Π±ΠΎΡ ΠΏΡΠΎΡΡΡΡ
ΡΠΈΠ»ΡΡΡΠΎΠ², Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΈΠ»ΡΡΡΠ°
ΡΠ³Π»Π°ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ ΠΏΠΎ ΠΎΠΊΡΠ΅ΡΡΠ½ΠΎΡΡΠΈ, Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ°
Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌ ΡΠ΄ΡΠΎΠΌ, ΠΌΠ΅Π΄ΠΈΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ°, Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ° Π‘ΠΎΠ±Π΅Π»Ρ.
Π Π·Π°Π΄Π°ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ Π·Π°Π΄Π°Π½Π° Π΄Π²ΡΠΌΠ΅ΡΠ½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠΈΠΏΠ°
unsigned char
. Π’Π°ΠΊΠΆΠ΅ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠΈΠ»ΡΡΡΠΎΠ² ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ΄ΡΠ°, Π»ΠΈΠ±ΠΎ ΡΠ°ΠΌΠΎ
ΡΠ΄ΡΠΎ ΡΠΈΠ»ΡΡΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ²Π΅ΡΡΠΊΠΈ. ΠΠΎ ΡΡΡΠ΅ΡΡΠ²Ρ
ΡΠ΄ΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ.
ΠΡΠΎΠ΅ΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΏΠΎ ΠΎΡΠ²ΠΎΠ΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ:
- Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ Git.
- Google Test Framework.
- Π£ΡΠΈΠ»ΠΈΡΠ° CMake Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΊΠΎΠ΄ΠΎΠ².
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ
- Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ³Π»Π°ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ
ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ ΠΏΠΎ ΠΎΠΊΡΠ΅ΡΡΠ½ΠΎΡΡΠΈ. ΠΡΠ°Π½ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π·Π΅ΡΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ
ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ (
gfedcb|abcdefgh|gfedcba
). - Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΉ ΡΠΈΠ»ΡΡΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌ ΡΠ΄ΡΠΎΠΌ. ΠΡΠ°Π½ΠΈΡΠ° Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π° Π½ΡΠ»Π΅Π²ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ.
- Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ΅Π΄ΠΈΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ°. ΠΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ Π²Π½ΡΡΡΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΠ»ΡΡΡ Π‘ΠΎΠ±Π΅Π»Ρ. ΠΡΠ°Π½ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ
Π·Π΅ΡΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ (
gfedcb|abcdefgh|gfedcba
).
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ
- Π Π°ΡΡΠΈΡΠΈΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° ΠΌΠ°ΡΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ ΠΈ ΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΊ Π½ΠΈΠΌ:
- Π’ΡΠ°Π½ΡΠΏΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡ.
- Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ (Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ).
- ΠΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ (Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ).
- ΠΠ΅ΡΠΎΠ΄Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΎΠΉ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΎΠΉ.
- ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π½ΡΠ°.
- Π Π°ΡΡΠΈΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ ΡΠΈΠ»ΡΡΡΠΎΠΌ Π‘ΠΎΠ±Π΅Π»Ρ ΠΈ ΠΌΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ ΡΡΠΎΠ·ΠΈΠΈ ΠΈ Π΄ΠΈΠ»Π°ΡΠ°ΡΠΈΠΈ.
- Π‘Π΄Π΅Π»Π°ΡΡ ΡΠΎΡΠΊ upstream-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
- ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ origin-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΊ ΡΠ΅Π±Π΅ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ (ΡΠ°Π·Π΄Π΅Π» ΠΠ±ΡΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ Git).
- Π‘ΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ, Π·Π°ΠΏΡΡΡΠΈΠ² ΡΠ΅ΡΡΡ ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ (ΡΠ°Π·Π΄Π΅Π» Π‘Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ CMake ΠΈ MS VS).
- Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠ°Π±ΠΎΡΡΡ Π²Π΅ΡΠΊΡ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΡΠΈΠ»ΡΡΡΠΎΠ² (ΡΠ°Π·Π΄Π΅Π» ΠΠ±ΡΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ Git).
- Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°
FiltersSurname
ΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠΈΠ»ΡΡΡΠΎΠ². - Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ΅ ΡΠΈΡΡΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° - ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ.
- ΠΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠ΅ΡΡΠΎΠ². ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ, Π²ΡΠΊΠ»Π°Π΄ΡΠ²Π°Ρ Π² ΡΠ°Π±ΠΎΡΡΡ Π²Π΅ΡΠΊΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ (ΡΠ°Π·Π΄Π΅Π» ΠΠ±ΡΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ Git).
- Π‘Π΄Π΅Π»Π°ΡΡ Pull Request Π² upstream-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
- ΠΡΠ±ΡΠ°ΡΡ ΠΈ ΡΠ΅ΡΠΈΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ· Π·Π°Π΄Π°Ρ ΡΠΏΠΈΡΠΊΠ° ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎΠ±Ρ Π·Π°Π΄Π°ΡΠ° Π½Π΅ Π±ΡΠ»Π° Π²ΡΠ±ΡΠ°Π½Π° Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌΠΈ ΡΠΊΠΎΠ»Ρ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ ΠΏΠ΅ΡΠ²Π°Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π³ΠΎΡΠΎΠ²Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ.
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°:
3rdparty
- Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Google Test.include
- Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ².samples
- Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π΅ΠΌΠΎ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.src
- Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ ΠΊΠΎΠ΄Π°ΠΌΠΈ.test
- Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ ΡΠ΅ΡΡΠ°ΠΌΠΈ..gitignore
- ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΠΌΡΡ Git..travis.yml
- ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Travis-CI.CMakeLists.txt
- ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΡΠ°ΠΉΠ» Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ CMake.README.md
- ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΡΠ΅ΠΉΡΠ°Ρ ΡΠΈΡΠ°Π΅ΡΠ΅.
Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ:
- ΠΠ±ΡΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ
matrix
(./include/matrix.hpp
,./src/matrix.cpp
), ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΏΡΠΎΡΡΠ΅ΠΉΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° ΠΌΠ°ΡΡΠΈΡ. ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΎΠ½ Π½Π΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠ»ΡΡΡΠΎΠ². - ΠΠΎΠ΄ΡΠ»Ρ
filters
(./include/filters.hpp
,./src/filters_opencv.cpp
,./src/filters_factory.cpp
), ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠΈΠ»ΡΡΡΠΎΠ² (filters.hpp
) ΠΈ Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠΈΠ»ΡΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OpenCV (filters_opencv.cpp
), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° ΡΠΈΠ»ΡΡΡΠΎΠ² (filters_factory.cpp
). - Π’Π΅ΡΡΡ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° ΠΌΠ°ΡΡΠΈΡ ΠΈ ΡΠΈΠ»ΡΡΡΠΎΠ² (
matrix_test.cpp
,filters_test.cpp
). - ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ»ΡΡΡΠ° (
matrix_sample.cpp
).
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΎΠΏΠΈΡΠ°Π½Π° ΡΠΈΠΏΠΈΡΠ½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ. ΠΠ°Π»Π΅Π΅ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ practice1-devtools.
-
Π‘ΠΎΠ·Π΄Π°ΡΡ Π°ΠΊΠΊΠ°ΡΠ½Ρ Π½Π° github.com, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ. ΠΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡΠΈ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΠΌ Π°ΠΊΠΊΠ°ΡΠ½Ρ
github-account
. -
Π‘Π΄Π΅Π»Π°ΡΡ fork ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ https://github.com/Itseez-NNSU-SummerSchool2015/practice1-devtools (Π² ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Git upstream-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ) ΠΊ ΡΠ΅Π±Π΅ Π² Π»ΠΈΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΈΠ»Ρ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ github-account. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π° ΠΊΠΎΠΏΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ https://github.com/github-account/practice1-devtools (origin-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ).
-
ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ origin ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΊ ΡΠ΅Π±Π΅ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
$ git clone https://github.com/github-account/practice1-devtools
- ΠΠ΅ΡΠ΅ΠΉΡΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ practice1-devtools:
$ cd ./practice1-devtools
- ΠΠ°ΡΡΡΠΎΠΈΡΡ Π°Π΄ΡΠ΅Ρ upstream-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ (ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ):
$ git remote add upstream https://github.com/Itseez-NNSU-SummerSchool2015/practice1-devtools
- ΠΠ°ΡΡΡΠΎΠΈΡΡ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΈΠ· ΠΏΠΎΠ΄ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅ΠΌ Git:
$ git config --global user.name "github-account"
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π΅ΡΠ»ΠΈ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅
ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²Π²ΠΎΠ΄ΠΈΡΡ Π²Π°Ρ gihub-account
(ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π½ΠΈΠΆΠ΅).
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:
git config --global push.default matching
To squelch this message and adopt the new behavior now, use:
git config --global push.default simple
When push.default is set to 'matching', git will push local branches
to the remote branches that already exist with the same name.
In Git 2.0, Git will default to the more conservative 'simple'
behavior, which only pushes the current branch to the corresponding
remote branch that 'git pull' uses to update the current branch.
See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)
Username for 'https://github.com': github-account
Password for 'https://github-account@github.com':
ΠΠΎΠ³Π΄Π° ΡΠ΄Π΅Π»Π°Π½ ΡΠΎΡΠΊ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Ρ Π²Π°Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ Π²Π΅ΡΠΊΠ°
master. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ
Π·Π°Π΄Π°Ρ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°Π±ΠΎΡΠΈΠ΅
Π²Π΅ΡΠΊΠΈ. ΠΠ°Π»Π΅Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΠΊΠ°ΠΌΠΈ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Π΅ΡΠΊΠΈ
filter-implementation
.
- ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²Π΅ΡΠΎΠΊ:
$ git branch [-v]
# [-v] - ΡΠΏΠΈΡΠΎΠΊ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
ΠΊΠΎΠΌΠΌΠΈΡΠ°Ρ
- Π‘ΠΎΠ·Π΄Π°ΡΡ Π²Π΅ΡΠΊΡ:
$ git branch filter-implementation
- Π‘ΠΎΠ·Π΄Π°ΡΡ Π²Π΅ΡΠΊΡ
filter-implementation
ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² Π½Π΅Π΅:
$ git checkout [-b] filter-implementation
# [-b] - ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ Π² Π²Π΅ΡΠΊΡ <branch_name>
- Π£Π΄Π°Π»ΠΈΡΡ Π²Π΅ΡΠΊΡ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ:
$ git branch -d <branch_name>
- Π£Π΄Π°Π»ΠΈΡΡ Π²Π΅ΡΠΊΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅:
$ git push [remotename] :[branch]
# [remotename] - ΠΈΠΌΡ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. ΠΡΠ»ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΉ
# ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΡΠΎ origin - ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ github-account, upstream -
# ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Itseez-NNSU-SummerSchool2015/practice1-devtools
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π² Π²Π΅ΡΠΊΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ. ΠΠ°Π»Π΅Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½
ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΠΊΠΎΠΌΠ°Π½Π΄ Π² ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΡΡΠΎ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π²Π΅ΡΠΊΠΎΠΉ
ΡΠ²Π»ΡΠ΅ΡΡΡ filter-implementation
.
- ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅ΠΊΡΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:
$ git status
- ΠΠΎΠΌΠ΅ΡΠΈΡΡ ΡΠ°ΠΉΠ» ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠΉ Π² ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΠΊΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ (ΡΠ°ΠΉΠ» Π±ΡΠ΄Π΅Ρ
Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
commit
):
$ git add [<file_name>]
# <file_name> - Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π² commit
# Π΅ΡΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΠΊΠ°Π·Π°Π½ ΡΠΈΠΌΠ²ΠΎΠ» *, ΡΠΎ Π±ΡΠ΄ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π²ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ,
# Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΠ΅ Ρ ΠΌΠ°ΡΠΊΠ°ΠΌΠΈ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌΠΈ Π² .gitignore
- ΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΠΊΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ:
$ git commit [-m "<message_to_commit>"] [-a]
# [-a] - Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²
# Π±Π΅Π· Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git add
# [--amend] - ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ Π½Π΅ Π·Π°Π±ΡΡΡ
# ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ)
- Π Π°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ
Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
commit
:
$ git push [-u] origin [filter-implementation]
# [-u] - ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ Π²Π΅ΡΡΠΈΡ Π²Π΅ΡΠΊΠΈ [filter-implementation] Π½Π° ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅
# (origin). ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git pull
# Π±Π΅Π· ΡΠ²Π½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈ ΠΈΠΌΠ΅Π½ΠΈ Π²Π΅ΡΠΊΠΈ.
- ΠΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
pull
ΠΈ ΡΠ»ΠΈΡΡ ΠΈΡ Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΡΠΌΠΈ Π²Π΅ΡΠΊΠ°ΠΌΠΈ:
$ git pull [remotename [<branch name>]]
- Π£Π΄Π°Π»ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ ΠΈΠ»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ (!Π±Π΅Π· ΠΎΠΏΡΠΈΠΈ -f Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅):
$ git rm [-f] [--cached]
# [-f] - ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ (ΡΠ°ΠΉΠ»Π° Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ)
# [--cached] - ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, Π½ΠΎ Π½Π΅ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ
- ΠΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ (ΠΈΠ»ΠΈ 3 ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
mv
,git rm
,git add
):
$ git mv <file_from> <file_to>
ΠΠΎΠ³Π΄Π° Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, ΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ - Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ².
- Π‘Π»ΠΈΡΠ½ΠΈΠ΅ (Π²Π°ΡΠΈΠ°Π½Ρ 1):
$ git merge upstream/master # ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Π²Π΅ΡΠΊΠΈ upstream Π² master
$ git merge master # ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Π²Π΅ΡΠΊΠΈ master Π² ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΠΊΡ
- Π‘Π»ΠΈΡΠ½ΠΈΠ΅ (Π²Π°ΡΠΈΠ°Π½Ρ 2):
$ git checkout <branch_name> # ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ Π² Π²Π΅ΡΠΊΡ <branch_name> (ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ)
$ git rebase <base_branch> [<branch_name>] # ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Π²Π΅ΡΠΊΠΈ <base_branch> Π² Π²Π΅ΡΠΊΡ <branch_name>
$ git checkout <base_branch>
$ git merge <branch_name>
- ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ²:
$ git mergetool
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΎΠΏΠΈΡΠ°Π½Π° ΡΠΈΠΏΠΈΡΠ½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΈΠ»ΠΈΡΡ CMake ΠΈ
Microsoft Visual Studio. ΠΠ°Π»Π΅Π΅ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ practice1-devtools
.
-
Π ΡΠ΄ΠΎΠΌ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠ΅ΠΉ
practice1-devtools
ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅practice1-devtools-build
. Π Π½ΠΎΠ²ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Ρ ΡΠ°ΠΉΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ CMake.$ cd .. $ mkdir practice1-devtools-build
-
ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ
practice1-devtools-build
:$ cd ./practice1-devtools-build
-
Π‘Π³Π΅Π½Π΅ΡΠΈΡΡΠΉΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΈΠ»ΠΈΡΡ CMake. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π²Ρ ΠΎΠ΄ΡΡΠΈΠΌ Π² ΡΠΎΡΡΠ°Π² ΡΡΠΈΠ»ΠΈΡΡ, Π»ΠΈΠ±ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
$ cmake -DOpenCV_DIR="<OpenCVConfig.cmake-path>" -G <generator-name> <path-to-practice1-devtools>
# <OpenCVConfig.cmake-path> - Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π°
# Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° OpenCV ΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ ΡΠ°ΠΉΠ» OpenCVConfig.cmake
# <generator-name> - Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°, Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ
# ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² ΡΠΊΠΎΠ»Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ "Visual Studio 10 Win64"
# (Π΅ΡΠ»ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π½Π°Π±ΡΠ°ΡΡ cmake Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ
# ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠ²)
# <path-to-practice1-devtools> - ΠΏΡΡΡ Π΄ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ
# practice1-devtools, Π³Π΄Π΅ Π»Π΅ΠΆΠ°Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΠΊΠΎΠ΄Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° (Π΅ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ
# Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, ΡΠΎ ΡΡΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ`../practice1-devtools`)
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π²Π΅ΡΡΠΈΡ OpenCV 2.4.x, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 2.4.11, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°ΡΠ°ΡΡ Π·Π΄Π΅ΡΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΡΡΠΈΠ»ΠΈΡΡ CMake Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΏΠΎΡΠ²ΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅.
-- The C compiler identification is MSVC 16.0.30319.1
-- The CXX compiler identification is MSVC 16.0.30319.1
-- Check for working C compiler using: Visual Studio 10 Win64
-- Check for working C compiler using: Visual Studio 10 Win64 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 10 Win64
-- Check for working CXX compiler using: Visual Studio 10 Win64 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- OpenCV ARCH: x64
-- OpenCV RUNTIME: vc10
-- OpenCV STATIC: OFF
-- Found OpenCV 2.4.11 in c:/OpenCV-2.4.11/opencv/build/x64/vc10/lib
-- You might need to add c:\OpenCV-2.4.11\opencv\build\x64\vc10\bin to your PATH to be able to run your applications.
--
-- General configuration for practice1
-- ======================================
--
-- Configuration: Release
-- OpenCV build path: c:\OpenCV-2.4.11\opencv\build
--
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/ss2015/Documents/GitHub/practice1-devtools
- ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠ΅ΡΠ΅Π½ΠΈΡ
practice1.sln
. - ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡ
ALL_BUILD
ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΡΠ½ΠΊΡRebuild
ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Ρ, ΡΡΠΎΠ±Ρ ΡΠΎΠ±ΡΠ°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π±ΡΠ΄ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Ρ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈpractice1-devtools-build/bin
. - ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ΅ΡΡΠΎΠ² ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ (
cmd.exe
Π²ΠΡΡΠΊ
) ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ Π±ΠΈΠ½Π°ΡΠ½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρcd
. - ΠΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅:
The program can't start because opencv_imgproc2411d.dll is missing from your computer. Try reinstalling the program to fix this problem.
. Π Π΅ΡΠ΅Π½ΠΈΠ΅ 1: ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΈΠ·C:\openCV-2.4.11\opencv\build\x64\vcX\bin
(vcX
- Π²Π΅ΡΡΠΈΡ Visual Studio, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡvc10
,vc11
,vc12
) ΠΊ Π±ΠΈΠ½Π°ΡΠ½ΡΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠΈ ΡΠ°ΠΊΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈopencv_core2411d.dll
,opencv_highgui2411d.dll
,opencv_imgproc2411d.dll
. Π Π΅ΡΠ΅Π½ΠΈΠ΅ 2: Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΡΡC:\openCV-2.4.11\opencv\build\x64\vcX\bin
(Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΡvcX
Π½Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ Visual Studio) Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡPATH
. - ΠΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΡΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ² ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅ΡΡΠΎΠ² ΠΈ ΡΡΠ°ΡΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½ΠΈΠΆΠ΅.
[==========] Running 16 tests from 2 test cases.
[----------] Global test environment set-up.
[----------] 5 tests from Matrix
[ RUN ] Matrix.matrix_can_set_zeros
[ OK ] Matrix.matrix_can_set_zeros (0 ms)
[ RUN ] Matrix.matrix_can_set_ones
[ OK ] Matrix.matrix_can_set_ones (0 ms)
[ RUN ] Matrix.comparator_returns_true_on_equal_matrices
[ OK ] Matrix.comparator_returns_true_on_equal_matrices (0 ms)
[ RUN ] Matrix.comparator_returns_false_on_non_equal_matrices
[ OK ] Matrix.comparator_returns_false_on_non_equal_matrices (0 ms)
[ RUN ] Matrix.copy_ctor_works
[ OK ] Matrix.copy_ctor_works (1 ms)
[----------] 5 tests from Matrix (4 ms total)
[----------] 11 tests from Instance/FiltersTest
[ RUN ] Instance/FiltersTest.box_filter_on_zero_mat/0
[ OK ] Instance/FiltersTest.box_filter_on_zero_mat/0 (0 ms)
[ RUN ] Instance/FiltersTest.box_filter_on_ones_mat/0
[ OK ] Instance/FiltersTest.box_filter_on_ones_mat/0 (0 ms)
[ RUN ] Instance/FiltersTest.box_filter_on_correct_mat/0
[ OK ] Instance/FiltersTest.box_filter_on_correct_mat/0 (26 ms)
[ RUN ] Instance/FiltersTest.filter2d_on_zero_mat/0
[ OK ] Instance/FiltersTest.filter2d_on_zero_mat/0 (0 ms)
[ RUN ] Instance/FiltersTest.filter2d_on_ones_mat/0
[ OK ] Instance/FiltersTest.filter2d_on_ones_mat/0 (0 ms)
[ RUN ] Instance/FiltersTest.filter2d_on_correct_mat/0
[ OK ] Instance/FiltersTest.filter2d_on_correct_mat/0 (23 ms)
[ RUN ] Instance/FiltersTest.median_on_zero_mat/0
[ OK ] Instance/FiltersTest.median_on_zero_mat/0 (0 ms)
[ RUN ] Instance/FiltersTest.median_on_correct_mat/0
[ OK ] Instance/FiltersTest.median_on_correct_mat/0 (25 ms)
[ RUN ] Instance/FiltersTest.SobelOx_on_zero_mat/0
[ OK ] Instance/FiltersTest.SobelOx_on_zero_mat/0 (0 ms)
[ RUN ] Instance/FiltersTest.SobelOx_on_ones_mat/0
[ OK ] Instance/FiltersTest.SobelOx_on_ones_mat/0 (0 ms)
[ RUN ] Instance/FiltersTest.sobel_ox_on_correct_mat/0
[ OK ] Instance/FiltersTest.sobel_ox_on_correct_mat/0 (30 ms)
[----------] 11 tests from Instance/FiltersTest (112 ms total)
[----------] Global test environment tear-down
[==========] 16 tests from 2 test cases ran. (120 ms total)
[ PASSED ] 16 tests.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ Visual Studio, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ OpenCV. Π ΠΏΠ°ΠΊΠ΅ΡΠ΅ OpenCV Π΄ΠΎΡΡΡΠΏΠ½Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠΎΠ±ΡΠ°Π½Π½ΡΠ΅ ΠΏΠΎΠ΄ VS 2010, 2012, 2013.
- Π‘Π΄Π΅Π»Π°ΡΡ ΡΠΎΡΠΊ upstream-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
- ΠΡΠΊΡΡΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ upstream-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ https://github.com/Itseez-NNSU-SummerSchool2015/practice1-devtools.
- Π ΠΏΡΠ°Π²ΠΎΠΌ Π²Π΅ΡΡ
Π΅ΠΌ ΡΠ³Π»Ρ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ
Fork
. - ΠΡΠ±ΡΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΡΠ΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ ΡΠΎΡΠΊ, ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Π²Π°ΡΠ΅ΠΌΡ Π°ΠΊΠΊΠ°ΡΠ½ΡΡ @github-account.
- ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ origin-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΊ ΡΠ΅Π±Π΅ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ.
- ΠΡΠΊΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ Git Bash (ΠΈΠ»ΠΈ Git Shell Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ git-ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π½Π° Π²Π°ΡΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π΅). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΡΠ»ΡΠΊ Π½Π° ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΡΡΠΎΠ»Π΅ ΠΈΠ»ΠΈ Π² ΠΌΠ΅Π½Ρ "ΠΡΡΠΊ".
- ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠ½Π΅ΠΌ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΠ±ΡΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ Git).
- Π‘ΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ, Π·Π°ΠΏΡΡΡΠΈΠ² ΡΠ΅ΡΡΡ ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ.
- ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ ΠΏΠΎ ΡΠ±ΠΎΡΠΊΠ΅ ΠΈ Π·Π°ΠΏΡΡΠΊΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Π‘Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ CMake ΠΈ MS VS).
- Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠ΅ΡΡΠΎΠ², Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ
practice1_test.exe
ΠΈmatrix_sample.exe
. ΠΡΠ»ΠΈ Π²ΡΠ΅ ΡΠ΅ΡΡΡ "Π·Π΅Π»Π΅Π½ΡΠ΅", ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅.
$ cd practice1-devtools-build/bin
$ ./practice1_test.exe
$ ./matrix_sample.exe
-
Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠ°Π±ΠΎΡΡΡ Π²Π΅ΡΠΊΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² Π½Π΅Π΅ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΡΠΈΠ»ΡΡΡΠΎΠ² (ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΠ±ΡΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ Git).
-
Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°
FiltersYourName
ΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠΈΠ»ΡΡΡΠΎΠ².- Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ»
filters_YOUR_NAME.cpp
(ΡΠ°ΠΉΠ» Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅) Π΄Π»Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΡΠΈΠ»ΡΡΡΠΎΠ². - Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π±Π»ΠΎΠ½Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ
filters_opencv.cpp
. ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡ Π±Π΅Π· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈΠ· ΡΠ°ΠΉΠ»Π°filters_opencv.cpp
Π² ΡΠ°ΠΉΠ»filters_YOUR_NAME.cpp
, Π·Π°ΠΌΠ΅Π½ΠΈΠ² Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ°FiltersOpenCV
Π½Π°FiltersYourName
(Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°).
class FiltersYourName : public Filters { public: virtual void boxFilter(const Matrix &src, Matrix& dst, const int kSize = 3) { } virtual void filter2d(const Matrix &src, Matrix& dst, const Matrix &kernel) { } virtual void median(const Matrix &src, Matrix &dst, const int kSize = 3) { } virtual void SobelOx(const Matrix &src, Matrix &dst) { } };
- ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΅ΡΠ΅ ΡΠ°Π· CMake, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΡΠ΅ΠΏΠΈΡΡ ΠΈΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
- Π ΡΠ°ΠΉΠ»
filters.hpp
Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π²enum FILTERS_IMPLEMENTATIONS
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π²Π°ΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠ»ΡΡΡΠ°. ΠΠ°Π·ΠΎΠ²ΠΈΡΠ΅ Π΅Π³ΠΎ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ Π²Π°ΡΠ΅ΠΉ ΡΠ°ΠΌΠΈΠ»ΠΈΠΈYOUR_NAME
. Π£ΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΏΡΠΎΠ³ΠΎΠ½Π΅ ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅ ΡΠ΅ΡΡΠΎΠ² Π½Π° Π²ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡΠ° ΡΠΈΠ»ΡΡΡΠΎΠ². - Π ΡΠ°ΠΉΠ»Π΅
filters_factory.cpp
ΠΎΠ±ΡΡΠ²ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡFilters* createFiltersYourName()
. ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° Ρ Π²Π°ΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠ»ΡΡΡΠΎΠ². - Π ΡΡΠ½ΠΊΡΠΈΠΈ
Filters* createFilters(FILTERS_IMPLEMENTATIONS impl)
(ΡΠ°ΠΉΠ»filters_factory.cpp
) Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ Π²Π΅ΡΠΊΡ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°- ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρswitch
, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π΅ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° ΡΠΈΠ»ΡΡΡΠΎΠ²YOUR_NAME
. - Π ΡΠ°ΠΉΠ»
filters_YOUR_NAME.cpp
Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° ΡΠΈΠ»ΡΡΡΠΎΠ² Ρ Π²Π°ΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉFilters* createFiltersYourName()
. Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅: Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π² ΡΠ°ΠΉΠ»Π΅filters_opencv.cpp
.
Filters* createFiltersYourName() { Filters* filters = new createFiltersYourName(); return filters; }
- ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ, Π½ΠΎ ΡΠ΅ΡΡΡ Ρ Π²Π°ΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΠΈΠ»ΡΡΡΠΎΠ² Π±ΡΠ΄ΡΡ ΠΏΠ°Π΄Π°ΡΡ.
- Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ»
-
Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ΅ ΡΠΈΡΡΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° - ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ° ΡΠ²ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΡΠ°Π΅Π²ΡΡ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ.
-
ΠΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠ΅ΡΡΠΎΠ². ΠΡΠΎΡΠΎΡΠΈΠΏΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π½Π΅Π»ΡΠ·Ρ! ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ, Π²ΡΠΊΠ»Π°Π΄ΡΠ²Π°Ρ Π² ΡΠ°Π±ΠΎΡΡΡ Π²Π΅ΡΠΊΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ (ΡΠ°Π·Π΄Π΅Π»Ρ ΠΠ±ΡΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ Git, Π‘Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ CMake ΠΈ MS VS).
-
Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ»ΡΡΡΠ°.
- Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ»
filter_sample_SURNAME.cpp
. - Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π±Π»ΠΎΠ½Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
matrix_sample.cpp
.
- Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ»
-
Π‘ΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠΈΠ»ΡΡΡΠΎΠ² (ΡΠ°Π·Π΄Π΅Π» Π‘Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ CMake ΠΈ MS VS)
-
Π‘Π΄Π΅Π»Π°ΡΡ Pull Request Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ upstream, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠ΅ΡΡΠΎΠ² Π½Π° Travis-CI ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΠΏΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°ΡΠ΅Π»ΡΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ΅Π²ΡΡ ΠΠ°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°.
-
ΠΡΠ±ΡΠ°ΡΡ ΠΈ ΡΠ΅ΡΠΈΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ· Π·Π°Π΄Π°Ρ ΡΠΏΠΈΡΠΊΠ° ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎΠ±Ρ Π·Π°Π΄Π°ΡΠ° Π½Π΅ Π±ΡΠ»Π° Π²ΡΠ±ΡΠ°Π½Π° Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌΠΈ ΡΠΊΠΎΠ»Ρ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ ΠΏΠ΅ΡΠ²Π°Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π³ΠΎΡΠΎΠ²Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ.