เชŸเซ‹เชธเซเชŸเชฐ - เชฌเชงเซเช‚ เช•เชฎเซเชชเซ‹เชธเซเชŸเชฐเชฎเชพเช‚ เชœเชพเชฏ เช›เซ‡. เชซเชฟเชฒเซเชŸเชฐ เช•เชฐเซ‹ เช…เชจเซ‡ เช†เชจเช‚เชฆ เช•เชฐเซ‹

เชเชตเซเช‚ เชฌเชจเซ‡ เช›เซ‡ เช•เซ‡ เช†เช‡เชŸเซ€ เชตเชฟเชทเชฏเซ‹ เชชเชฐเชจเชพ เชฐเชถเชฟเชฏเชจ เชชเซเชฐเชถเซเชจ เช…เชจเซ‡ เชœเชตเชพเชฌ เชธเช‚เชธเชพเชงเชจ CIS เชฎเชพเช‚ เช–เซ‚เชฌ เชœ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เช›เซ‡ - เชŸเซ‹เชธเซเชŸเชฐ. เชœเซ‹ เช•เซ‡, เชœเซเชฏเชพเชฐเซ‡ เชฎเซ‡เช‚ เชคเซ‡เชจเซ‡ เชจเชœเซ€เช•เชฅเซ€ เชœเชพเชฃเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚ เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡ เช•เช‚เชˆเช• เช–เซ‚เชŸเชคเซ‹ เชนเชคเซ‹. เช†เชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‡ เชฌเซเชฐเชพเช‰เชเชฐ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจเชจเชพ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚ เชธเซเชงเชพเชฐเซ‹ เชฅเชฏเซ‹. เชฎเชจเซ‡ เชฎเชณเชตเชพ.

เชฎเซเช–เซเชฏ เชตเชฟเชถเซ‡เชทเชคเชพเช“:

  • เชจเชพเชฎ: เชŸเซ‹เชธเซเชŸเชฐ เช†เชฐเชพเชฎ.
  • เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช†เช‚เช•เชกเชพ: เช‰เช•เซ‡เชฒเซ‹ เชธเชพเชฅเซ‡ เชชเซเชฐเชถเซเชจเซ‹เชจเซ€ เชŸเช•เชพเชตเชพเชฐเซ€; เชนเชฌเชฐเชฎเชพเช‚เชฅเซ€ เช•เชฐเซเชฎ; เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฎเชพเช‚เชฅเซ€ เชธเชพเชฐเชพเช‚เชถ - เช† เชฌเชงเซเช‚ เชŸเซ‹เชธเซเชŸเชฐเชจเชพ เชชเซเชฐเชถเซเชจเซ‹เชจเซ€ เชธเซ‚เชšเชฟเชฎเชพเช‚ เช›เซ‡.
  • เชธเซ‚เชšเชจเชพเช“: เชธเชพเชˆเชŸ เชชเชฐ เชตเชพเชธเซเชคเชตเชฟเช• เชธเชฎเชฏเชฎเชพเช‚, เช†เชฏเช•เชจ เชชเชฐ, เชตเชคเซเชคเชพ เชชเซเชถ เชธเซ‚เชšเชจเชพเช“, เช˜เชฃเซ€ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ, เชธเชพเชˆเชŸ เช–เซเชฒเซเชฒเซ€ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช (เชตเชฟเช•เซ€).
  • เชซเชฟเชฒเซเชŸเชฐเซเชธ: เชธเซ‚เชคเซเชฐเซ‹ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชถเชฐเชคเซ‹: เชคเชฎเซ‡ เชชเซเชฐเชถเซเชจเซ‹ เช›เซเชชเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹, เชคเซ‡เชฎเชจเซ‡ เชฐเช‚เช— เช†เชชเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชธเซ‚เชšเชจเชพเช“ เชชเชฃ เชฌเชคเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹ - เช† เชฌเชงเซเช‚ เชคเชพเชฐเซเช•เชฟเช• เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช“เชจเชพ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚ เชฒเชตเชšเซ€เช• เชฐเซ€เชคเซ‡ เช—เซ‹เช เชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡ (เชตเชฟเช•เซ€).
  • เช‡เชจเซเชŸเชฐเชซเซ‡เชธ: เชจเชพเชจเชพ เชธเซเชงเชพเชฐเชพเช“, เชœเซ‡เชฎ เช•เซ‡ เชšเซ‹เช•เซเช•เชธ เชคเชพเชฐเซ€เช–เซ‹ เชฆเชฐเซเชถเชพเชตเชตเซ€ เช…เชฅเชตเชพ เชชเซเชฐเชถเซเชจเซ‹เชจเซ€ เชธเซ‚เชšเชฟเชฎเชพเช‚ เชธเชฌเซเชธเซเช•เซเชฐเชฟเชชเซเชถเชจ เชธเซเชฅเชฟเชคเชฟ เชฆเชฐเซเชถเชพเชตเชตเซ€.
  • เชนเซ‡เชฌเซเชฐ เช‡เชจเซเชŸเชฐเชซเซ‡เชธ: เชจเชพเชจเชพ เชธเซเชงเชพเชฐเชพเช“ (เชตเซˆเช•เชฒเซเชชเชฟเช•), เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชŸเชฟเชชเซเชชเชฃเซ€เช“เชฎเชพเช‚ เช‡เชจเซเชกเซ‡เชจเซเชŸเซ‡เชถเชจ เชฐเซ‡เช–เชพเช“.
  • เช–เซเชฒเซเชฒเชพ เชธเซเชคเซเชฐเซ‹เชค: เชœเซ‹ เชคเชฎเซ‡ เช–เชฐเซ‡เช–เชฐ เช‡เชšเซเช›เซ‹ เชคเซ‹ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชฐเซ€เชฎเซ‡เช• เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ (เชธเซเชคเซเชฐเซ‹เชคเซ‹).
  • เชฎเซเช•เซเชค: เชเชฎเช†เชˆเชŸเซ€ เชฒเชพเช‡เชธเชจเซเชธ.
  • เชฎเซ‡เชฎเชฐเซ€ เชตเชชเชฐเชพเชถ: 30-50MB, เชตเชฟเช•เชฒเซเชชเซ‹ เช…เชจเซ‡ เชŸเซ‹เชธเซเชŸเชฐเชจเชพ เช‰เชชเชฏเซ‹เช—เชจเซ€ เชคเซ€เชตเซเชฐเชคเชพเชจเชพ เช†เชงเชพเชฐเซ‡
  • เช•เชฆ: v93 เชฎเชพเชŸเซ‡ 0.8.1KB (เช…เชจเชชเซ‡เช•เซเชก, เชฎเชฟเชจเชฟเชซเชพเช‡เชก เช•เซ‹เชก เชจเชฅเซ€).
  • เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•: เช–เซ‚เชŸเซ‡ เช›เซ‡, เชธเซเชตเชšเซเช› 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 KB เชฎเชพเช‚ เชฎเชพเชฐเซ€ เชชเซ‹เชคเชพเชจเซ€ เช•เซเชฐเชš เชฒเช–เชตเซ€ เชชเชกเซ€ เชฐเชฟเชตเชฐเซเชธ เชชเซ‹เชฒเชฟเชถ เชจเซ‹เชŸเซ‡เชถเชจ. เช†, เชเช• เชเชตเซเช‚ เช•เชนเซ€ เชถเช•เซ‡ เช›เซ‡ เช•เซ‡, เชซเช‚เช•เซเชถเชจเซเชธ เช…เชจเซ‡ เชธเชฟเชจเซเชŸเซ‡เช•เซเชธ เชฌเช‚เชจเซ‡เชจเซ€ เชฆเซเชฐเชทเซเชŸเชฟเช เช…เชคเซเชฏเช‚เชค เชจเซเชฏเซเชŸเชฐเซเชก JS เช›เซ‡.

เชตเชฟเชถเซ‡ เชคเชพเชœเซ‡เชคเชฐเชฎเชพเช‚ เชเช• เชชเซ‹เชธเซเชŸ เชนเชคเซ€ เชŸเซ‹เชธเซเชŸเชฐ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ. เชธเชฐเช–เชพเชฎเชฃเซ€เชฎเชพเช‚, TE เชชเชพเชธเซ‡ เชเช• เชธเชฐเชธ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เช›เซ‡ เช…เชจเซ‡ เช•เซ‡เชŸเชฒเซ€เช• เชธเซเชตเชฟเชงเชพเช“ เช›เซ‡ เชœเซ‡ Toster Comfort เชชเชพเชธเซ‡ เชจเชฅเซ€. เชœเซ‹ เช•เซ‡, เชฎเชพเชฐเซเช‚ เชตเชฟเชธเซเชคเชฐเชฃ เชธเช‚เชธเชพเชงเชจ เชตเชชเชฐเชพเชถ เชชเชฐ เชญเชพเชฐ เชฎเซ‚เช•เซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‡, เชฌเช‚เชจเซ‡ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‹เชˆ เชคเชฎเชจเซ‡ เชชเชฐเซ‡เชถเชพเชจ เช•เชฐเชคเซเช‚ เชจเชฅเซ€; เชคเซ‡เช“ เชตเชฟเชฐเซ‹เชงเชพเชญเชพเชธเซ€ เชจ เชนเซ‹เชตเชพ เชœเซ‹เชˆเช.

เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡, TC เชจเซ‡ เชถเชฐเซ‚เช†เชคเชฅเซ€ เชซเชฐเซ€เชฅเซ€ เชฒเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เช•เชพเชฎเชจเซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ เชฌเซ‡ เชตเชพเชฐ เชเชกเชชเซ€ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เช…เชจเซ‡ เช•เซ‡เชถ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ - 10 เชตเช–เชค, localStorage เช…เชจเซ‡ JSON.stringify() เชจเซ‡ เช›เซ‹เชกเซ€เชจเซ‡ เช…เชจเซ‡ เช•เซ‡เชŸเชฒเชพเช• เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชฒ เชธเซ‹เชฒเซเชฏเซเชถเชจเซเชธ เชฌเชฆเชฒเซ€เชจเซ‡. เชชเชฐเช‚เชคเซ เช† เชชเชฐเชพเช•เซเชฐเชฎ เชฎเชพเชฐเซ‡ เชจเชฅเซ€ เช•เชฐเชตเซเช‚ เชชเชกเซเชฏเซเช‚. เช…เชจเซ‡ เชนเซเช‚ "เชœเซ‹ เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡เชจเซ‡ เชธเซเชชเชฐเซเชถ เช•เชฐเชถเซ‹ เชจเชนเซ€เช‚" เชธเชฟเชฆเซเชงเชพเช‚เชคเชจเซ‹ เชšเชพเชนเช• เช›เซเช‚. เชœเซเชฏเชพเชฐเซ‡ เชนเซเช‚ เชตเซ‡เช•เซ‡เชถเชจ เชชเชฐ เชนเซ‹เช‰เช‚ เช›เซเช‚, เชคเซเชฏเชพเชฐเซ‡ เชนเซเช‚ เชธเช•เซเชฐเชฟเชฏเชชเชฃเซ‡ เชฎเซเชฆเซเชฆเชพเช“ เช…เชจเซ‡ เชชเซ€เช†เชฐเชจเซ‡ เชฒเชˆ เชฐเชนเซเชฏเซ‹ เช›เซเช‚, เชชเชฐเช‚เชคเซ เชฒเช˜เซเชคเซเชคเชฎเชตเชพเชฆเชจเชพ เชญเซ‹เช—เซ‡ เชจเชนเซ€เช‚. เชคเชฎเชพเชฐเชพ เชงเซเชฏเชพเชจ เชฌเชฆเชฒ เช†เชญเชพเชฐ!

เชธเซเชคเซเชฐเซ‹เชค: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹