Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΠΌΠΈ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ
Nagios — ΡΠΈΡΡΠ΅ΠΌΠ° Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½Π°Ρ Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈ ΡΠ΅ΡΠ΅ΠΉ. ΠΠ½Π° ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌΠΈ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΡΠ·Π»Π°ΠΌΠΈ ΠΈ ΡΠ»ΡΠΆΠ±Π°ΠΌΠΈ, ΠΈ ΠΎΠΏΠΎΠ²Π΅ΡΠ°Π΅Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΈΠ· ΡΠ»ΡΠΆΠ± ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°ΡΡ (ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ) ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ. Nagios, ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Netsaint, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° ΠΡΠ°Π½ΠΎΠΌ ΠΠ°Π»ΡΡΠ°Π΄ΠΎΠΌ (Ethan Galstad). ΠΠ½ ΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΠΌΠΈ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
Π ΠΠ€ΠΠ ΠΠ’
Π¦Π΅Π»ΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΠΌΠΈ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π·Π°Π΄Π°Ρ, Ρ ΡΡΡΡΠΎΠΌ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ, Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Π΄Π°Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΠ°Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΈΠ½ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡ Ρ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»ΡΠΌΠΈ.
Π Π°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠ΅ ΡΠ»ΠΎΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ°ΡΡΡ, Π½Π΅ ΠΏΡΠΈΠ±Π΅Π³Π°Ρ ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΌΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΡΠ΅ΡΠ²Π»Π΅Ρ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. Π Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ LDAP-ΡΠ΅ΡΠ²Π΅Ρ, ΠΊΠ°ΠΊ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΡ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡ , Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅.
Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠΉ (ΡΠ°Π±ΠΎΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Ρ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠ΅ΠΌ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ Java-ΠΌΠ°ΡΠΈΠ½Ρ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ).
Π‘ΠΠΠΠ ΠΠΠΠΠ ΠΠΠΠΠΠΠΠ
- 1. ΠΠ½Π°Π»ΠΈΠ· ΡΠ΅ΡΠ°Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ
- 1.1 Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
- 1.2 Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
- 2. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ°
- 2.1 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΡ Π΅ΠΌΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
- 2.2 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
- 3. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΡΠΈΠ³Π³Π΅ΡΠΎΠ² ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ
- 3.1 Π₯ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈ ΡΡΠΈΠ³Π³Π΅ΡΡ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
- 3.1.1 Π Π°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΡΠΈΠ³Π³Π΅ΡΡ
- 3.2 Π Π΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
- 3.2.1 ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π² Π‘Π£ΠΠ Postgres
- 4. Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° ldap
- 4.1 ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° LDAP
- ΠΠ«ΠΠΠΠ«
- ΠΠΠ ΠΠ§ΠΠΠ¬ ΠΠ‘ΠΠΠΠ¬ΠΠ£ΠΠΠ«Π₯ ΠΠ‘Π’ΠΠ§ΠΠΠΠΠ
ΠΠΠΠΠΠΠΠ
Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΠΌΠΈ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ - ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ, Π° ΡΠ°ΠΊ ΠΆΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΉ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠ°ΠΌΠΈ (ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ), Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠΎΠ΄Π°ΠΆ, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΈΠ½Π³Π° ΠΈ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΏΡΡΡΠΌ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°Ρ ΠΈ ΠΈΡΡΠΎΡΠΈΠΈ Π²Π·Π°ΠΈΠΌΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ Ρ Π½ΠΈΠΌΠΈ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ².
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ°:
1.ΠΠΎΡΡΡΠΏ ΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΡΠ΅ΡΠ°Ρ .
2.ΠΠΎΡΡΠΎΡΠ½Π½Π°Ρ ΡΠ²ΡΠ·Ρ Ρ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»ΡΠΌΠΈ.
3.Π‘ΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΠ»ΠΎΡΠ°Π΄Ρ. ΠΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΡΠΊΠΎΠ»Ρ ΡΠ³ΠΎΠ΄Π½ΠΎ ΡΠ΄Π΅Π»ΠΎΠΊ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
4.Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ .
5.Π Π°Π·Π²ΠΈΡΠΈΠ΅ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ² Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° Π² ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ (ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΉ ΡΠ΅Π»Π΅ΡΠΎΠ½, ΠΠΠ ΠΈ Ρ. Π΄.) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠΎΡΡΠ°Π»Ρ ΠΈΠ· Π»ΡΠ±ΠΎΠΉ ΡΠΎΡΠΊΠΈ ΠΌΠΈΡΠ°, Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
1. ΠΠ½Π°Π»ΠΈΠ· ΡΠ΅ΡΠ°Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ Π¦Π΅Π»ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ².
ΠΠ°ΠΆΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ CRM ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ² ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΡΠ΅ΡΠ°Ρ , ΠΏΠ΅ΡΠ΅Π³ΠΎΠ²ΠΎΡΠ°Ρ , Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡ Ρ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»ΡΠΌΠΈ.
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΡΠ°ΠΊΠΈΠΌΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°ΠΌΠΈ ΠΊΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ, Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ, Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΡΡΡ, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ, ΠΏΡΠΎΡΡΠΎΡΠ° ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ.
ΠΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² (ΡΠ»ΠΎΠΆΠ½ΡΡ ) Π΄Π°Π½Π½ΡΡ , Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ»ΡΠΆΠΈΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΡΡ ΠΎΠ΄Π°ΠΌΠΈ, Π±ΡΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ»Π΅ΡΠΎΠ², ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ΅ΡΠ²Π΅ΡΡ ΠΎΠΏΡΠΎΡΠΎΠ² ΠΈ Π½ΠΎΠ²ΠΎΡΡΠ΅ΠΉ ΠΈ Ρ. Π΄.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ΄ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:
«ΡΠ°ΡΡΠ»ΠΎΠ΅Π½ΠΈΠ΅» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡΠΎΠ²Π½ΡΠΌ;
ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ;
ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ Ρ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ .
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΊΠ»ΡΡΠ°ΡΡ: .NET, J2EE ΠΈ Π΄Ρ. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΈΡΡΠ²Π°Ρ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΡΡΡ ΠΈ ΠΎΡΠΊΡΡΡΠΎΡΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΠ·ΡΠΊΠΎΠΌ Java ΠΈ J2EE Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΈΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΠΎΠ±ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ.
1.1 Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΡΠ΄Π΅Π»ΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π²ΡΡΠΎΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ.
ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΌΠΎΠΆΠ΅Ρ ΡΠΌΠ΅ΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² ΡΠ²ΠΎΠ΅ΠΉ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π½ΠΈΠΌ Π²ΡΡ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅. Π‘ΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ — ΡΡΠΎ ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΡΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΡΠΎΡΠ°Ρ ΡΡΡΠ½ΠΎΡΡΡ — ΡΡΠΎ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΡ. ΠΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡ — ΡΡΠΎ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΉ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π°Π±ΠΎΡ Π·Π°Π΄Π°Π½ΠΈΠΉ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΊΠ°ΠΊ Π»ΡΠ΄ΡΠΌΠΈ, ΡΠ°ΠΊ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΏΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ Π½Π° Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ·Π½Π΅Ρ-ΡΠ΅Π»ΠΈ Π·Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
Π‘ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²ΡΠ·Π°Π½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΉ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ . Π ΡΠ°ΠΌΠΊΠ°Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΠ° «Π½Π° Π²Ρ ΠΎΠ΄Π΅» ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ΄ΠΎΠ² ΡΠ΅ΡΡΡΡΠΎΠ², ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΡΠΎΠΉ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π° «Π²ΡΡ ΠΎΠ΄Π΅» ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡ (Π±ΠΈΠ·Π½Π΅Ρ-ΡΠ΅Π»Ρ), ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠ΅Π½Π½ΠΎΡΡΡ Π΄Π»Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. Π Π΅ΡΡΡΡΡ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π² Π²ΠΈΠ΄Π΅ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Ρ Π»ΡΠ±ΡΠΌ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΡΠ²ΡΠ·Π°Π½ Π΅Π³ΠΎ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ — ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΡΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠ°ΠΆΠ΄ΡΠΉ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π²Π»Π°Π΄Π΅Π»ΡΡΠ°. ΠΠ»Π°Π΄Π΅Π»Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π΅Π΄ΠΈΠ½ΠΎΠ»ΠΈΡΠ½ΠΎ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π΅Π³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΊ ΡΡΠ°ΡΡΠΈΡ Π² Π΅Π³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π΅ΠΉ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΎΠ»ΠΈ. ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΠΈ ΠΈ Π²Π»Π°Π΄Π΅Π»Π΅Ρ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΠ° — ΡΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ°Π±ΠΎΡΠ½ΠΈΠΊΠΈ ΠΏΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΡ. Π ΠΏΠ»Π°Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈ (ΠΈΠ»ΠΈ) Π±ΡΠ°ΡΡ Π² Π½Π΅ΠΌ ΡΡΠ°ΡΡΠΈΠ΅. Π’. Π΅., ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ, Π±Π΅ΡΡΡΠΈΠ΅ ΡΡΠ°ΡΡΠΈΠ΅ Π² Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΠ΅ — ΡΡΠΎ Π²Π½Π΅ΡΠ½ΡΡ ΡΡΡΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
Π’Π°ΠΊΠΆΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΡΡΠ½ΠΎΡΡΡ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ (ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²) Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ (ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ).
1.2 Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
ΠΊΠ»ΠΈΠ΅Π½Ρ Π±Π°Π·Π° ΡΡΠΈΠ³Π³Π΅Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ
Π‘ΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΡΠ΅ΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², Π»ΠΈΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΡΡ Π΄ΠΎΡΡΡΠΏ Π½Π΅Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΊ Π»ΡΠ±ΡΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌ ΠΏΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ .
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π°Π΄Π΅Π»Π΅Π½Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ΅ΡΡΡΡΠ°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ: Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ, ΠΌΠΎΠ΄Π΅ΡΠ°ΡΠΎΡ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π³ΠΎΡΡΡ.
Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΎΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ:
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ — ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠ±Π»Π°Π΄Π°ΡΡΠΈΠΌΠΈ Π²ΡΠ΅ΠΌΠΈ ΠΏΡΠ°Π²Π°ΠΌΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π½Π°Π·Π½Π°ΡΠ°ΡΡ ΠΏΡΠ°Π²Π° Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
ΠΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ — ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ, ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΡΠ΄Π΅Π»ΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
ΠΡΡ Π³Π°Π»ΡΠ΅Ρ — ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ»Π°ΡΠ΅ΠΆΠΈ ΠΏΠΎ ΡΠ΄Π΅Π»ΠΊΠ°ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅Ρ ΡΡΠΎΠΊΠΈ ΠΎΠΏΠ»Π°ΡΡ ΠΈ Π²Π΅Π΄Π΅Ρ ΠΎΡΡΠ΅Ρ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΠΎΠΉ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΡ.
2. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ°
2.1 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΡ Π΅ΠΌΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΡΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΠ, ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ Π½Π° ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΌ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ (Π‘Π£ΠΠ).
2.2 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΡΠΈΠ½ΡΠΈΠΏ ΠΈΠ»ΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ²ΡΠ·Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΡ Π΅ΠΌΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ 3.4.
Π ΠΈΡΡΠ½ΠΎΠΊ 2.1? Π‘Ρ Π΅ΠΌΠ° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
3. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΡΠΈΠ³Π³Π΅ΡΠΎΠ² ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ
3.1 Π₯ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈ ΡΡΠΈΠ³Π³Π΅ΡΡ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ ΡΠ°Π½ΠΈΠΌΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅: Ρ ΡΠ°Π½ΠΈΠΌΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° — ΠΎΠ±ΡΠ΅ΠΊΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ SQL-ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΈ Ρ ΡΠ°Π½ΠΈΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠΊΠΎΠ΅ ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ Ρ ΠΎΡΠΎΡΠ΅Π΅, Π²ΡΠ΅ ΡΡΠ½ΠΎ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎ. Π’ΠΎ Π΅ΡΡΡ Π² Π‘Π£ΠΠ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ SQL-ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡΡ Π² Π±Π°Π·Π΅ ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ/ΡΠ°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·ΠΎΠΉ. ΠΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠΈΠ³Π³Π΅ΡΠΎΠ² Π½Π°Π΄ΠΎ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²Π΅ΡΠ΅ΠΉ:
ΡΠ°Π·Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΡ;
ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Π½ΡΠΈ ΠΏΠ°ΡΡΠ΅ΡΠ½Π° «Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄» (ΡΠ²ΠΎΠ΅ ΠΏΠ»ΠΎΡ ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠΈ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΈ Π»ΡΡΡΠ΅Π³ΠΎ).
Π’ΡΠΈΠ³Π³Π΅Ρ — ΡΡΠΎ Ρ ΡΠ°Π½ΠΈΠΌΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ, Π° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½ΠΎ Π½Π°ΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ (Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ) — ΠΏΠΎ ΡΡΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ INSERT ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ DELETE ΡΡΡΠΎΠΊΠΈ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅, ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ UPDATE Π΄Π°Π½Π½ΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
3.1.1 Π Π°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΡΠΈΠ³Π³Π΅ΡΡ
Π’ΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ Π΄Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ° Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΎΠ²:
begin
if «old» ." contacts_name" ≠"new" ." contacts_name" then
update «contacts» set «id» = «old» ." id"
where «contacts.id» = «old» ." id" ;
end if;
return old;
end;
Π’ΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΡ ΠΎ ΠΊΠ°ΠΊΠΎΠΌ Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΠΉ, Π² ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ:
DECLARE
mstr varchar (30);
msstr varchar (30);
mssstr varchar (30);
nstr varchar (100);
ostr varchar (100);
astr varchar (100);
retstr varchar (364);
BEGIN
IF TG_OP = 'INSERT' THEN
nstr = NEW. tasks_name;
ostr = NEW. responsible;
mstr := 'Add new tasks: ';
msstr := ' to contacts: ';
retstr := mstr || nstr || msstr || ostr;
INSERT INTO «events» (id, events_text, tasks_id) values ((select count (*) from «events»)+1,retstr, NEW. id);
RETURN NEW;
ELSIF TG_OP = 'UPDATE' THEN
nstr = NEW. tasks_name;
mstr := 'Update task: ';
retstr := mstr || nstr;
if (OLD.tasks_name ≠ NEW. tasks_name) then
nstr = NEW. tasks_name;
ostr = OLD. tasks_name;
mstr := 'Update task name: ';
msstr := ' to name: ';
retstr := mstr || ostr || msstr || nstr;
end if;
INSERT INTO «events» (id, events_text, tasks_id) values ((select count (*) from «events»)+1,retstr, NEW. id);
RETURN NEW;
ELSIF TG_OP = 'DELETE' THEN
ostr = OLD. tasks_name;
mstr := 'Remove task: ';
retstr := mstr || ostr;
INSERT INTO «events» (id, events_text) values ((select count (*) from «events»)+1,retstr);
RETURN OLD;
END IF;
END;
Π’ΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΡ ΠΎ ΠΊΠ°ΠΊΠΎΠΌ Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, Π² ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ:
DECLARE
mstr varchar (30);
msstr varchar (30);
nstr varchar (100);
ostr varchar (100);
retstr varchar (254);
BEGIN
IF TG_OP = 'INSERT' THEN
nstr = NEW. company_name;
mstr := 'Add new company: ';
retstr := mstr || nstr;
INSERT INTO «events» (id, events_text) values ((select count (*) from «events»)+1,retstr);
RETURN NEW;
ELSIF TG_OP = 'UPDATE' THEN
nstr = NEW. company_name;
ostr = OLD. company_name;
mstr := 'Update company: ';
msstr := ' To company: ';
if (OLD.company_name ≠ NEW. company_name) then
retstr := mstr || ostr || msstr || nstr;
else
retstr := mstr || nstr;
end if;
INSERT INTO «events» (id, events_text) values ((select count (*) from «events»)+1,retstr);
RETURN NEW;
ELSIF TG_OP = 'DELETE' THEN
ostr = OLD. company_name;
mstr := 'Remove company: ';
retstr := mstr || ostr;
INSERT INTO «events» (id, events_text) values ((select count (*) from «events»)+1,retstr);
RETURN OLD;
END IF;
end;
Π’ΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΡ ΠΎ ΠΊΠ°ΠΊΠΎΠΌ Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΎΠ², Π² ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ:
DECLARE
mstr varchar (30);
msstr varchar (30);
nstr varchar (100);
ostr varchar (100);
retstr varchar (254);
BEGIN
IF TG_OP = 'INSERT' THEN
nstr = NEW. contacts_name;
mstr := 'Add new contact: ';
retstr := mstr || nstr;
INSERT INTO «events» (id, events_text, contakts_id) values ((select count (*) from «events»)+1,retstr, NEW. id);
RETURN NEW;
ELSIF TG_OP = 'UPDATE' THEN
nstr = NEW. contacts_name;
ostr = OLD. contacts_name;
msstr := ' To contact name: ';
if (OLD.contacts_name ≠ NEW. contacts_name) then
mstr := 'Update contact name: ';
retstr := mstr || ostr || msstr || nstr;
else
mstr := 'Update contact: ';
retstr := mstr || nstr;
end if;
INSERT INTO «events» (id, events_text, contakts_id) values ((select count (*) from «events»)+1,retstr, NEW. id);
RETURN NEW;
ELSIF TG_OP = 'DELETE' THEN
ostr = OLD. contacts_name;
mstr := 'Remove contact: ';
retstr := mstr || ostr;
INSERT INTO «events» (id, events_text) values ((select count (*) from «events»)+1,retstr);
RETURN OLD;
END IF;
end;
Π’ΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΡ ΠΎ ΠΊΠ°ΠΊΠΎΠΌ Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠ΄Π΅Π»ΠΎΠΊ, Π² ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ:
DECLARE
mstr varchar (30);
msstr varchar (30);
nstr varchar (100);
ostr varchar (100);
retstr varchar (254);
BEGIN
IF TG_OP = 'INSERT' THEN
nstr = NEW. deals_name;
mstr := 'Add new deal: ';
retstr := mstr || nstr;
INSERT INTO «events» (id, events_text, deals_id) values ((select count (*) from «events»)+1,retstr, NEW. id);
RETURN NEW;
ELSIF TG_OP = 'UPDATE' THEN
nstr = NEW. deals_name;
ostr = OLD. deals_name;
msstr := ' To deal name: ';
if (OLD.deals_name ≠ NEW. deals_name) then
mstr := 'Update deal name: ';
retstr := mstr || ostr || msstr || nstr;
else
mstr := 'Update deal: ';
retstr := mstr || nstr;
end if;
INSERT INTO «events» (id, events_text, deals_id) values ((select count (*) from «events»)+1,retstr, NEW. id);
RETURN NEW;
ELSIF TG_OP = 'DELETE' THEN
ostr = OLD. deals_name;
mstr := 'Remove deal: ';
retstr := mstr || ostr;
INSERT INTO «events» (id, events_text) values ((select count (*) from «events»)+1,retstr);
RETURN OLD;
END IF;
end;
Π’ΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²Π΅ΡΡΠΈ Π±ΡΠ΄ΠΆΠ΅Ρ ΡΠ΄Π΅Π»ΠΊΠΈ Π½ΠΈΠΆΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ, Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² Π΅Π΄ΠΈΠ½ΠΈΡΡ:
begin
if «new» ." money" <1 then
update «deals» set «money» = 1;
end if;
return new;
end;
Π’ΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²Π΅ΡΡΠΈ Π±ΡΠ΄ΠΆΠ΅Ρ ΡΠ΄Π΅Π»ΠΊΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠ° ΡΡΡΡΡ, Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² Π΅Π΄ΠΈΠ½ΠΈΡΡ:
begin
if «new» ." money" >100 000 then
update «deals» set «money» = 1;
end if;
return new;
end;
Π’ΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π½ΠΎΡΠΈΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π°Π΄ΡΠ΅ΡΠ° ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ°:
DECLARE
mstr varchar (30);
nstr varchar (100);
astr varchar (30);
ostr varchar (100);
retstr varchar (254);
begin
if OLD. contacts_address ≠ NEW. contacts_address then
nstr = NEW. contacts_name;
ostr = NEW. contacts_address;
mstr := 'Update address to contacts: ';
astr := ' to address: ';
retstr := mstr || nstr || astr || ostr;
insert into «events» («id» ," contakts_id" ," events_text")
values ((select count (*) from «events»)+1,
NEW.id, retstr);
end if;
return new;
end;
Π’ΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π½ΠΎΡΠΈΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ e-mail ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ°:
DECLARE
mstr varchar (30);
nstr varchar (100);
astr varchar (30);
ostr varchar (100);
retstr varchar (254);
begin
if OLD. contacts_email ≠ NEW. contacts_email then
nstr = NEW. contacts_name;
ostr = NEW. contacts_email;
mstr := 'Update mail to contacts: ';
astr := ' to mail: ';
retstr := mstr || nstr || astr || ostr;
insert into «events» («id» ," contakts_id" ," events_text")
values ((select count (*) from «events»)+1,
NEW.id, retstr);
end if;
return new;
end;
Π’ΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π½ΠΎΡΠΈΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ΅Π»Π΅ΡΠΎΠ½Π° ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ°:
DECLARE
mstr varchar (30);
nstr varchar (100);
astr varchar (30);
ostr varchar (100);
retstr varchar (254);
begin
if OLD. contacts_telephon ≠ NEW. contacts_telephon then
nstr = NEW. contacts_name;
ostr = NEW. contacts_telephon;
mstr := 'Update phone to contacts: ';
astr := ' to phone: ';
retstr := mstr || nstr || astr || ostr;
insert into «events» («id» ," contakts_id" ," events_text")
values ((select count (*) from «events»)+1,
NEW.id, retstr);
end if;
return new;
end;
Π’ΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π½ΠΎΡΠΈΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΡΠ°ΡΡΡΠ° ΡΠ΄Π΅Π»ΠΊΠΈ:
DECLARE
mstr varchar (30);
nstr varchar (100);
astr varchar (30);
ostr varchar (100);
retstr varchar (254);
begin
if OLD. deals_type ≠ NEW. deals_type then
nstr = NEW. deals_name;
ostr = NEW. deals_type;
mstr := 'Update deals type in dial: ';
astr := ' to type: ';
retstr := mstr || nstr || astr || ostr;
insert into «events» («id» ," deals_id" ," events_text")
values ((select count (*) from «events»)+1,
NEW.id, retstr);
end if;
return new;
end;
Π’ΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π½ΠΎΡΠΈΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π·Π° Π·Π°Π΄Π°ΡΡ:
DECLARE
mstr varchar (350);
nstr varchar (100);
astr varchar (50);
ostr varchar (100);
retstr varchar (254);
begin
if OLD. responsible ≠ NEW. responsible then
nstr = NEW. tasks_name;
ostr = NEW. responsible;
mstr := 'Update tasks responsible in task: ';
astr := ' to contacts: ';
retstr := mstr || nstr || astr || ostr;
insert into «events» («id» ," tasks_id" ," events_text")
values ((select count (*) from «events»)+1,
NEW.id, retstr);
end if;
return new;
end;
Π’ΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π½ΠΎΡΠΈΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΡΠ°ΡΡΡΠ° Π·Π°Π΄Π°ΡΠΈ:
DECLARE
mstr varchar (30);
nstr varchar (100);
astr varchar (30);
ostr varchar (100);
retstr varchar (254);
begin
if OLD. status ≠ NEW. status then
nstr = NEW. tasks_name;
ostr = NEW. status;
mstr := 'Update task status in task: ';
astr := ' to status: ';
retstr := mstr || nstr || astr || ostr;
insert into «events» («id» ," tasks_id" ," events_text")
values ((select count (*) from «events»)+1,
NEW.id, retstr);
end if;
return new;
end;
Π’ΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π½ΠΎΡΠΈΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π·Π° ΡΠ΄Π΅Π»ΠΊΡ:
DECLARE
mstr varchar (350);
nstr varchar (100);
astr varchar (50);
ostr varchar (100);
retstr varchar (254);
begin
if OLD. responsible ≠ NEW. responsible then
nstr = NEW. deals_name;
ostr = NEW. responsible;
mstr := 'Update deals responsible in dial: ';
astr := ' to contacts: ';
retstr := mstr || nstr || astr || ostr;
insert into «events» («id» ," deals_id" ," events_text")
values ((select count (*) from «events»)+1,
NEW.id, retstr);
end if;
return new;
end;
Π’ΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ»Ρ, Π² ΠΊΠΎΡΠΎΡΡΡ Ρ ΡΠ°Π½ΠΈΡΡΡ Π΄Π°ΡΠ° ΠΈ Π²ΡΠ΅ΠΌΡ, ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ ΡΠ΄Π΅Π»ΠΊΠΈ:
begin
update «tasks» set «tasks_date» = ('now':text):date where «tasks» ." id" = NEW. id;
update «tasks» set «tasks_time» = ('now':text):time with time zone where «tasks» ." id" = NEW. id;
return new;
end;
3.2 Π Π΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Π Π΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΠΠ — ΡΡΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΠΏΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . Π ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ — ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΠ Π² Π΄ΡΡΠ³ΡΡ.
ΠΡΠ΄Π΅Π»ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΈΠ΄Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ.
I. ΠΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ . Π Π΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π±ΡΠ²Π°Π΅Ρ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ (ΠΎΠ΄Π½ΠΎΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ) ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ (ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ). ΠΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½Π°Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΠ ΡΠ»Π°Π²Π½ΠΎΠΉ ΠΠ, ΠΌΠ½ΠΎΠ³ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½Π°Ρ — ΠΏΡΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π²ΡΡ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΡ ΠΊΠΎΠΏΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΉ ΠΠ.
II. Π‘ΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ.
ΠΡΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° Π²Π΅ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ — ΡΡΠΎ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΠΎ ΠΏΡΠΈ Π½Π΅ΠΉ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅, Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π΄Π°Π½Π½ΡΠ΅. ΠΠ±ΡΡΠ½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΠΈΠΌΠ΅ΡΡ Π² Π²ΠΈΠ΄Ρ, ΠΊΠΎΠ³Π΄Π° Π³ΠΎΠ²ΠΎΡΡΡ ΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π²ΠΎΠΎΠ±ΡΠ΅.
III. ΠΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ.
ΠΡΠ»ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΠΎΡΠ»Π΅ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΠ, ΡΠΎ ΡΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ Ρ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ.
IV. ΠΠΎ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ . ΠΡΠ΄Π΅Π»ΡΡΡ ΠΏΡΡΠΌΡΡ ΠΈ Π½Π΅Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ. ΠΡΡΠΌΠ°Ρ — ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΊΠ°Π½Π°Π» ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΡΠΎΠΉΡΠΈΠ². ΠΡΠ»ΠΈ ΠΆΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΠΎ Π½Π΅ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠΌΡ ΠΊΠ°Π½Π°Π»Ρ, ΡΠΎ ΠΏΡΠΈΡΠΌΠ½ΠΈΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π² Π»ΡΠ±ΠΎΠΉ Π½ΡΠΆΠ½ΡΠΉ Π΅ΠΌΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ²ΡΠ·Π°ΡΡΡΡ Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΈΠ·-Π·Π° ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡΠ΅ ΠΈΠΌ ΠΏΡΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ΅ Π΄Π°Π½Π½ΡΡ , Π½ΠΎΡΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΠ½ΡΠΉ (Π½Π΅Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ) Ρ Π°ΡΠ°ΠΊΡΠ΅Ρ.
Π ΡΠΈΡΠ»Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΠΠ, ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ. ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Π³ΠΎΠ»ΠΎΠ²Π½ΡΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ. ΠΠ»Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π΄Π°Π½Π½ΡΠ΅, Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Ρ ΠΊΠΎΠΏΠΈΡΠΌΠΈ.
3.2.1 ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π² Π‘Π£ΠΠ Postgres
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π° ΠΎΠ±Π΅ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ Π² /etc/hosts Π±ΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π΄Π²Π΅ ΡΡΡΠΎΡΠΊΠΈ:
1.1.1.1 db0
1.1.1.2 db1
ΠΠ°Π»Π΅Π΅ Π±ΡΠ» Π½Π°ΡΡΡΠΎΠ΅Π½ ΡΠ°ΠΉΠ» pg_hba.conf:
# nano /usr/home/pgsql/data/pg_hba.conf
ΠΠ»Ρ ΠΌΠ°ΡΡΠ΅ΡΠ°:
#IP ΠΌΠ°ΡΡΠ΅ΡΠ°
listen_addresses = `1.1.1.1'
#ΠΠ° ΡΠ»Π΅ΠΉΠ²
host replication postgres 1.1.1.2/32 trust
host all postgres 1.1.1.2/32 trust
#Π’ΡΡ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ, ΡΡΠΎ Π΄ΠΎΡΡΡΠΏ ΠΈΠΌΠ΅ΡΡ Π²ΡΠ΅ ΠΈ ΡΠΎ Π²ΡΠ΅Ρ Π°Π΄ΡΠ΅ΡΠΎΠ², Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠΎΠ»Ρ ΠΠ°Π»Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ°ΠΉΠ»Π° postgresql. conf:
# nano /usr/local/pgsql/data/postgresql.conf
Π ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅:
#ΠΠ΅Π΄Π΅Π½ΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Π° Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ ΡΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ»Π΅ΠΉΠ²Π°
wal_level = hot_standby
#ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΉΠ²ΠΎΠ²
max_wal_senders = 2
#Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅Π΅ Ρ ΡΠ°Π½ΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΡΡΠΊΠΎΠ² Π»ΠΎΠ³Π°
wal_keep_segments = 32
#ΠΡΠ±Π»ΠΈΡΡΠ΅ΠΌ ΠΆΡΡΠ½Π°Π» Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ
archive_mode = on
archive_command = 'cp %p /usr/lib/postgresql/9.1/main/archive/%f'
#ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ
max_connections = 150
#Π Π°Π·ΠΌΠ΅Ρ Π±ΡΡΠ΅ΡΠ°
shared_buffers = 2400MB
Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΌΠ°ΡΡΠ΅Ρ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π±Π°Π·Ρ Π½Π° ΡΠ»Π΅ΠΉΠ². ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ rsync:
# psqlc «SELECT pg_start_backup ('label', true)»
# rsynca /usr/lib/postgresql/9.1/main/ [email protected]:/usr/lib/postgresql/9.1/main/ —exclude postmaster. pid
# psqlc «SELECT pg_stop_backup ()»
Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ»Π΅ΠΉΠ². Π postgresql. conf:
hot_standby = on
archive_mode = off
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ recovery. conf:
standby_mode = 'on'
primary_conninfo = 'host=1.1.1.1 port=5432 user=postgres'
#ΡΡΠΈΠ³Π³Π΅Ρ Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ Π±ΡΠΊΠ°ΠΏΠ°, ΡΡΠΎΠ±Ρ Π² ΡΠ»ΡΡΠ°Π΅ Π±ΡΠΊΠ°ΠΏΠ° ΠΌΠΎΠ³Π»ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅ΠΉΠ² Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π½Π° Π·Π°ΠΏΠΈΡΡ
Trigger_file = '/usr/lib/postgresql/9.1/main/trigger'
restore_command = 'cp /usr/lib/postgresql/9.1/main/archive/%f «%p» '
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠ»Π΅ΠΉΠ²Π΅:
# ps
postgres 6878 6872 1 10:31? 00:00:01 postgres: wal receiver process streaming 0/2 000 000
ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π½Π°ΡΡΡΠΎΠ΅Π½Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
3.3 ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΡΠΈΡΡΠ΅ΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΈΠ»ΠΈΡΡ Nagios
Nagios — ΡΠΈΡΡΠ΅ΠΌΠ° Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½Π°Ρ Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈ ΡΠ΅ΡΠ΅ΠΉ. ΠΠ½Π° ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌΠΈ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΡΠ·Π»Π°ΠΌΠΈ ΠΈ ΡΠ»ΡΠΆΠ±Π°ΠΌΠΈ, ΠΈ ΠΎΠΏΠΎΠ²Π΅ΡΠ°Π΅Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΈΠ· ΡΠ»ΡΠΆΠ± ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°ΡΡ (ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ) ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ. Nagios, ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Netsaint, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° ΠΡΠ°Π½ΠΎΠΌ ΠΠ°Π»ΡΡΠ°Π΄ΠΎΠΌ (Ethan Galstad). ΠΠ½ ΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ, ΡΠ°ΠΊ ΠΈ Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ.
ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ Nagios Π±ΡΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠ΄ GNU/Linux, Π½ΠΎ ΠΎΠ½Π° ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ ΠΏΠΎΠ΄ Π΄ΡΡΠ³ΠΈΠΌΠΈ UnixΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΠΠ‘.
3.3.1 ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΠΈΡΡΠΈΠ½Π³ ΡΠ°ΠΉΠ»Π° localhost. cfg:
# A simple configuration file for monitoring the local host
# This can serve as an example for configuring other servers;
# Custom services specific to this host are added here, but services
# defined in nagios2-common_services.cfg may also apply.
#
define host
{
use generic-host; Name of host template to use
host_name slave
alias 1.1.1.2
address 1.1.1.2
}
#Apache
define command
{
command_name check_apache
command_line /home/sereban/apache2.sh
}
define service
{
use generic-service
host_name localhost
service_description Apache
check_command check_apache
notifications_enabled 1
}
#Postgres
define command
{
command_name check_postgres
command_line /home/sereban/pg.sh
}
define service
{
use generic-service
host_name localhost
service_description Postgres
check_command check_postgres
notifications_enabled 1
}
define service
{
use generic-service
host_name localhost
service_description Postgres
check_command check_postgres
notifications_enabled 1
}
define service
{
use generic-service
host_name slave
service_description Postgres
check_command check_postgres
notifications_enabled 1
}
Π ΠΈΡΡΠ½ΠΎΠΊ 3.1 — ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΡΠΈΡΡΠ΅ΠΌ
4. Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° ldap
4.1 ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° LDAP
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΎΡΠΊΡΡΡΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅Π΅ ΠΎΠ±ΡΠΈΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° LDAP. ΠΠΎΠΆΠ°Π»ΡΠΉ, ΡΠ°ΠΌΡΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΅ΡΡΡ ΡΠ΅ΡΠ²Π΅Ρ sldap.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²:
# apt-get install slapd ldap-utils migrationtools
Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ sldap, ΡΡΠΎΠ±Ρ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ:
#dpkg-reconfigure slapd
#ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΡΠ΅ΡΠ²Π΅ΡΠ° LDAP? … ΠΠ΅Ρ
#ΠΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΈΠΌΡ DNS: … debuntu. local
#ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ: … ΠΡΠ΅ΡΡΠΎΡΠ³ΠΎΠ΄Π½ΠΎ debuntu. local
#ΠΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ admin: 1
#ΠΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΠ΅ ΠΏΠ°ΡΠΎΠ»Ρ: 1
#ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ°ΠΊΠ΅Ρ slapd (ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΡΠΌΠ°ΡΠ΅ Π±Π°Π·Ρ ldap)
OK
#ΠΡΠ±ΠΎΡ ΡΠΎΡΠΌΠ°ΡΠ° Π±Π°Π·Ρ ldap
BDB
#Π£Π΄Π°Π»ΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈ Π²ΡΡΠΈΡΡΠΊΠ΅ slapd? … ΠΠ΅Ρ
#ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΡΡΠ°ΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ? … ΠΠ°
#ΠΠΊΠ»ΡΡΠΈΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» LDAPv2? … ΠΠ΅Ρ Π’Π΅ΠΏΠ΅ΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π΄Π΅ΠΌΠΎΠ½ ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½Π°Ρ ΡΡΠ΅ΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ. ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΅ΡΡΡ Π»ΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊ ldap-ΡΠ΅ΡΠ²Π΅ΡΡ:
$ ldapsearchx -b dc=debuntu, dc=local
# extended LDIF
#
# LDAPv3
# base with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# debuntu. local
dn: dc=debuntu, dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
o: nodomain
dc: debuntu
# admin, debuntu. local
dn: cn=admin, dc=debuntu, dc=local
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
# People, debuntu. local
dn: ou=People, dc=debuntu, dc=local
ou: People
objectClass: organizationalUnit
# search result
search: 2
result: 0 Success
# numResponses: 4
# numEntries: 3
Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ migrationtools ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΡΡΡΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ Π³ΡΡΠΏΠΏ Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π² LDAP. ΠΡΠΆΠ½ΠΎ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» migrate_common.ph ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
$DEFAULT_MAIL_DOMAIN = «debuntu.local» ;
$DEFAULT_BASE = «dc=debuntu, dc=local» ;
Π’Π΅ΠΏΠ΅ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅:
# ./migrate_group.pl /etc/group ~/group.ldif
# ./migrate_passwd.pl /etc/passwd ~/passwd.ldif
Π Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ» people_group.ldif ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ Π΅Π³ΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ:
dn: ou=People, dc=debuntu, dc=local
ou: People
objectclass: organizationalUnit
dn: ou=Group, dc=debuntu, dc=local
ou: Group
objectclass: organizationalUnit
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΏΠΈΡΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ Π³ΡΡΠΏΠΏ, ΡΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π² LDAP ΡΠΎΡΠΌΠ°Ρ ldif, Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² LDAP Π±Π°Π·Ρ:
# ldapaddx -WD «cn=admin, dc=debuntu, dc=local» -f ~/people_group.ldif
# ldapaddx -WD «cn=admin, dc=debuntu, dc=local» -f ~/group.ldif
# ldapaddx -WD «cn=admin, dc=debuntu, dc=local» -f ~/passwd.ldif
Π³Π΄Π΅:
— x ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ sasl;
— W ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΠΎΡΠ΅Π½ ΠΏΠ°ΡΠΎΠ»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° LDAP;
— D ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°;
— f ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ°ΠΉΠ», Π³Π΄Π΅ ldapadd Π±ΡΠ΄Π΅Ρ Π±ΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ.
ΠΠ«ΠΠΠΠ« Π ΡΠ°ΠΌΠΊΠ°Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π±ΡΠ»Π° ΡΠΎΠ·Π΄Π°Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ. ΠΠ°Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ² ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΡΠ΅ΡΠ°Ρ , ΠΏΠ΅ΡΠ΅Π³ΠΎΠ²ΠΎΡΠ°Ρ , Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡ Ρ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»ΡΠΌΠΈ.
ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ LDAP ΡΠ΅ΡΠ²Π΅ΡΠ°. Π ΠΎΠ»Ρ Π±ΡΡ Π³Π°Π»ΡΠ΅ΡΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΡΠΈΠ΅ΠΌΠ΅ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ ΠΏΠΎ ΡΠ΄Π΅Π»ΠΊΠ°ΠΌ ΠΈ Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΎΡΡΠ΅ΡΠ° ΠΎ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΠΎΠΉ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΡ. Π ΠΎΠ»Ρ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° Π½Π°Π·Π½Π°ΡΠ°Π΅Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ, Π³Π»Π°Π²Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π»Π΅ΠΆΠΈΡ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π° ΡΠ°ΠΊ ΠΆΠ΅ Π² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
Π Π°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ: Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ, Π±ΡΡ Π³Π°Π»ΡΠ΅Ρ.
ΠΠΠ ΠΠ§ΠΠΠ¬ ΠΠ‘ΠΠΠΠ¬ΠΠ£ΠΠΠ«Π₯ ΠΠ‘Π’ΠΠ§ΠΠΠΠΠ
Documentation information [ΠΠ»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΉ ΡΠ΅ΡΡΡΡ]: The JavaEE 6 Tuturial. — ΠΠ»Π΅ΠΊΡΡΠΎΠ½ Π΄Π°Π½. — [USA], 2010. ;
LDAP and JNDI [ΠΠ»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΉ ΡΠ΅ΡΡΡΡ]: Toglther forever. — ΠΠ»Π΅ΠΊΡΡΠΎΠ½. Π΄Π°Π½. — [USA] 2008;2010. — Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΡ: http://www.javaworld.com /javaworld/jw-03−2000/jw-0324-ldap.html .
Spring Web Service [ΠΠ»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΉ ΡΠ΅ΡΡΡΡ]: Spring Source. — ΠΠ»Π΅ΠΊΡΡΠΎΠ½. Π΄Π°Π½. [EU], 2005;2010. — Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΡ: http://static.springsource. org/spring-ws/sites/1.5/
Chapter 8. Testing [ΠΠ»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΉ ΡΠ΅ΡΡΡΡ]: Spring Source. — ΠΠ»Π΅ΠΊΡΡΠΎΠ½. Π΄Π°Π½. [EU], 2005;2010. — Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΡ: http://static.springsource.org/ spring/docs/2.5.x/reference/testing.html.
Chapter 3. Beans, BeanFactory and the ApplicationContext [ΠΠ»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΉ ΡΠ΅ΡΡΡΡ]: Spring Source. — ΠΠ»Π΅ΠΊΡΡΠΎΠ½. Π΄Π°Π½. [EU], 2005;2010. — Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΡ: http://static.springsource.org/spring/docs/1.2.9/reference/beans .html.
Π§Π°ΡΡΡ 19 — Spring. ΠΠΈΠ·Π½Π΅Ρ-ΡΡΠΎΠ²Π΅Π½Ρ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ [ΠΠ»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΉ ΡΠ΅ΡΡΡΡ]: Π‘ΡΡΠ΄Π΅Π½ΡΠΈΡΠΊΠΈΠΉ ΠΎΡΠ΄Π΅Π» ΠΊΠ°Π΄ΡΠΎΠ². ΠΠΎΡΠΎΠ±ΠΈΠ΅ ΠΏΠΎ JAVA-ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠΌ/Anton Saburov — ΠΠ»Π΅ΠΊΡΡΠΎΠ½. Π΄Π°Π½. [Π ΠΎΡΡΠΈΡ], 2009. — Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΡ: http://www.java-course.ru/students/part19.html.
Π§Π°ΡΡΡ 10 — Spring. ΠΠΈΠ·Π½Π΅ΡΠ’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° [ΠΠ»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΉ ΡΠ΅ΡΡΡΡ]: Π‘ΡΡΠ΄Π΅Π½ΡΠΈΡΠΊΠΈΠΉ ΠΎΡΠ΄Π΅Π» ΠΊΠ°Π΄ΡΠΎΠ². ΠΠΎΡΠΎΠ±ΠΈΠ΅ ΠΏΠΎ JAVA-ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠΌ/Anton Saburov — ΠΠ»Π΅ΠΊΡΡΠΎΠ½. Π΄Π°Π½. [Π ΠΎΡΡΠΈΡ], 2009. — Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΡ: http://www.java-course.ru/ students/ part10.html.