Π’Π°ΠΊ ΡΠΆ ΡΠ»ΠΎΠΆΠΈΠ»ΠΎΡΡ, ΡΡΠΎ Π² Π‘ΠΠ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½ ΡΡΡΡΠΊΠΈΠΉ Q&A ΡΠ΅ΡΡΡΡ ΠΏΠΎ ΠΠ’ ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ΅ β . ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΅Π³ΠΎ-ΡΠΎ Π΅ΠΌΡ Π½Π΅ Ρ Π²Π°ΡΠ°Π»ΠΎ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°ΡΠ°Π» ΠΏΠ»ΠΎΡΠ½ΠΎ Ρ Π½ΠΈΠΌ Π·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ. ΠΡΠΎ ΠΈ Π²ΡΠ»ΠΈΠ»ΠΎΡΡ Π² ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ. ΠΡΡΡΠ΅ΡΠ°ΠΉΡΠ΅.
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
- ΠΠ°Π·Π²Π°Π½ΠΈΠ΅: Toster Comfort.
- Π‘ΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ: ΠΏΡΠΎΡΠ΅Π½Ρ Π²ΠΎΠΏΡΠΎΡΠΎΠ² Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ; ΠΊΠ°ΡΠΌΠ° Ρ Π₯Π°Π±ΡΠ°; ΡΠ²ΠΎΠ΄ΠΊΠ° ΠΈΠ· ΠΏΡΠΎΡΠΈΠ»Ρ β Π²ΡΡ ΡΡΠΎ Π² ΡΠΏΠΈΡΠΊΠ΅ Π²ΠΎΠΏΡΠΎΡΠΎΠ² Π’ΠΎΡΡΠ΅ΡΠ°.
- Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ: Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΡΠ°ΠΉΡΠ΅, Π½Π° ΠΈΠΊΠΎΠ½ΠΊΠ΅, ΠΏΠ»ΡΡ push-ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ, ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°ΡΡΡΠΎΠ΅ΠΊ, ΡΠ°ΠΉΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΠΊΡΡΡ ().
- Π€ΠΈΠ»ΡΡΡΡ: ΡΡΠ»ΠΎΠ²ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΎΡΠΌΡΠ»: ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡΡΠ²Π°ΡΡ Π²ΠΎΠΏΡΠΎΡΡ, ΡΠ°ΡΠΊΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΈΡ ΡΠ²Π΅ΡΠΎΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ, β Π²ΡΡ ΡΡΠΎ Π³ΠΈΠ±ΠΊΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ ().
- ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ: ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠΊΠ°Π· ΡΠΎΡΠ½ΡΡ Π΄Π°Ρ ΠΈΠ»ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΡΠ° ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅ Π²ΠΎΠΏΡΠΎΡΠΎΠ².
- ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π₯Π°Π±ΡΠ°: ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π»ΠΈΠ½ΠΈΠΈ Π½Π° ΠΎΡΡΡΡΠΏΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ .
- Open source: ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ΄ ΡΠ΅Π±Ρ, Π΅ΡΠ»ΠΈ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠ΅ΡΡΡ ().
- Free: MIT License.
- ΠΠ»Π°ΡΡΠΎΡΠΌΠ°: , .
- ΠΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ: 30-50ΠΠ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΎΠΏΡΠΈΠΉ ΠΈ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π’ΠΎΡΡΠ΅ΡΠ°
- Π Π°Π·ΠΌΠ΅Ρ: 93ΠΠ Π΄Π»Ρ v0.8.1 (ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΠΉ, Π½Π΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄).
- Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ: ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΡΠΈΡΡΡΠΉ JS (ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·ΠΌ).
- ΠΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ΄Π°: ΡΡΠ΅Π΄Π½Π΅Π΅, ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΈΠ»Π΅ΠΉ, Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π³ΡΡΠ·Π½ΡΠ΅ ΠΏΡΠΈΡΠΌΡ, ΠΌΠ°Π»ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΎΠ².
- Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ:
toster.ru, habr.com, notifications, storage, unlimitedStorage
ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ΄Π΅Π»Π°Π» Π΄Π»Ρ ΡΠ΅Π±Ρ Ρ ΠΎΠ΄Π½ΠΎΠΉ-Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ΅Π»ΡΡ: ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅Π½Ρ Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΡΠ΄ΠΎΡΡΠΆΠΈΠ»ΡΡ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Β«ΠΡΠΌΠ΅ΡΠΈΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌΒ». ΠΠ°ΡΠ΅ΠΌ ΠΌΠ°Π»ΠΎ-ΠΏΠΎΠΌΠ°Π»Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ»ΠΈΡΡ ΡΠΎ ΠΎΠ΄Π½ΠΈ, ΡΠΎ Π΄ΡΡΠ³ΠΈΠ΅ Ρ ΠΎΡΠ΅Π»ΠΊΠΈ, ΠΏΠΎΠΊΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π½Π΅ Π²ΡΡΠΎΡ Π² ΠΌΠΎΠ½ΡΡΡΠ° Π½Π° ΡΠΎΡΠ½Ρ ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΡΠΈΠ½ΡΠΈΠΏ Β«Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π»ΠΈΡΠ½Π΅Π³ΠΎΒ» ΡΠΎΠ±Π»ΡΠ΄Π°Π»ΡΡ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ°.
ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· Π³Π»Π°Π²Π½ΡΡ ΡΠΈΡ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΡΠΌΡΠ» Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ . Π‘ Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ, Π»ΡΠ±ΡΡ Ρ ΠΎΡΠ΅Π»ΠΊΡ ΠΏΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²ΠΎΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ. ΠΠ»Π°Π²Π½ΠΎΠ΅ Π·Π½Π°ΡΡ, ΡΡΠΎ Ρ ΠΎΡΠ΅ΡΡ. Π‘ΠΎΠΊΡΡΡΠΈΠ΅, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ° ΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ β Π²ΠΎΡ ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π°ΡΠΏΠ΅ΠΊΡΠ° Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠ°ΠΉΡΠΎΠΌ. Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ Π²ΡΠ΅Π³ΠΎ ΠΈ Π²ΡΡ β ΠΊΠ»ΡΡ ΠΊ ΡΠ΄ΠΎΠ±ΡΡΠ²Ρ.
ΠΡΠΈΠΌΠ΅Ρ Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΠ΅ΠΌΡ:
!tag("ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΠ»Π°ΠΌΡ") && !contains(t,"ΡΠ΅ΠΊΠ»Π°ΠΌ") && contains(t,"Π±Π»ΠΎΠΊΠΈΡΠΎΠ²") && !tag("HTACCESS") || containsWord(t,"ΡΠΊΠ½") || contains(t,"ΡΠΎΡΠΊΠΎΠΌΠ½Π°Π΄Π·ΠΎΡ") || contains(t,"ΡΠΎΡΠΊΠΎΠΌΠΏΠΎΠ·ΠΎΡ") || contains(t,"Π³ΠΎΡΡΠ΄Π°ΡΡΡΠ²") || contains(t,"Π·Π°ΠΏΡΠ΅ΡΠ΅Π½") || contains(t,"Π·Π°ΠΏΡΠ΅ΡΡΠ½") || contains(t,"ΠΏΠΈΡΠ°ΡΡΠΊ") || containsWord(t,"ΠΎΠ±Ρ
ΠΎΠ΄") || containsWord(t,"ΡΠΎΡΡΠ΅Π»Π΅ΠΊΠΎΠΌ") || containsWord(t,"ΡΡΠΎΠ²ΠΎΠΉ") || containsWord(t,"ΡΡ") && tag("ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΠ΅ ΡΠ΅ΡΠΈ") = notifyΠ‘ΡΠ°Π·Ρ ΡΠΊΠ°ΠΆΡ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ eval() ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΡΠ»ΠΎ Π½Π΅Π»ΡΠ·Ρ. Π’Π°ΠΊ ΡΡΠΎ ΠΎΡΠΎΠ±ΠΎ Π½Π΅ ΡΠ°Π·Π³ΡΠ»ΡΠ΅ΡΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΡΡΡΠ»Ρ Π½Π° 5 ΠΠ ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ . ΠΡΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΠΈΠ»ΡΠ½ΠΎ ΠΊΠ°ΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ JS, ΠΊΠ°ΠΊ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΡΠΌ, ΡΠ°ΠΊ ΠΈ ΠΏΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ.
ΠΠ΅Π΄Π°Π²Π½ΠΎ Π±ΡΠ» ΠΏΠΎΡΡ ΠΏΡΠΎ . ΠΡΠ»ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ, ΡΠΎ TE ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΡΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ ΠΊΠΎΠ΅-ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Ρ Π² Toster Comfort. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠΎΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π΅Π»Π°Π΅Ρ Π°ΠΊΡΠ΅Π½Ρ Π½Π° ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠΈ ΡΠ΅ΡΡΡΡΠΎΠ². ΠΠΏΡΠΎΡΠ΅ΠΌ, Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±Π° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ²Π°ΡΡ.
ΠΠΎ-Ρ
ΠΎΡΠΎΡΠ΅ΠΌΡ, TC Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ Ρ Π½ΡΠ»Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΊΠΎΡΠΈΡΡ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π²Π΄Π²ΠΎΠ΅, Π° ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΡΡΠ΅ΠΌ β ΡΠ°Π· Π² 10, ΠΎΡΠΊΠ°Π·Π°Π²ΡΠΈΡΡ ΠΎΡ localStorage ΠΈ JSON.stringify() ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠΎ ΡΡΠΎΡ ΠΏΠΎΠ΄Π²ΠΈΠ³ ΠΏΡΠ΅Π΄ΡΡΠΎΠΈΡ Π΄Π΅Π»Π°ΡΡ ΡΠΆΠ΅ Π½Π΅ ΠΌΠ½Π΅. Π Ρ ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Β«ΡΠ°Π±ΠΎΡΠ°Π΅Ρ β Π½Π΅ ΡΡΠΎΠ³Π°ΠΉΒ». ΠΠΎΠΊΠ° ΠΎΡΠΏΡΡΠΊ, Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Ρ issues ΠΈ PR, Π½ΠΎ Π½Π΅ Π² ΡΡΠ΅ΡΠ± ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·ΠΌΡ. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com
