πΎ Archived View for gemini.strahinja.org βΊ blog βΊ 2021-04 βΊ 20210422.gmi captured on 2022-03-01 at 15:28:44. Gemini links have been rewritten to link to archived content
β‘οΈ Next capture (2024-06-20)
-=-=-=-=-=-=-
ΠΡΠ΅ ΠΏΠ°Ρ Π΄Π°Π½Π° ΠΌΠ΅ ΡΠ΅ ΠΈΠ·Π½Π΅Π½Π°Π΄ΠΈΠΎ Π½Π΅ΡΡΠ°Π½Π°ΠΊ Π²ΠΎΠ΄Π΅. Π£Π²ΠΈΠ΄ΠΎΠΌ Ρ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ° ΠΎΠ±ΡΠ°Π²Π°ΠΌΠ° ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΈΡ ΡΠ°Π΄ΠΎΠ²Π°, Π²ΠΈΠ΄Π΅ΠΎ ΡΠ°ΠΌ Π΄Π° ΡΠ΅ ΠΈΡΠΊΡΡΡΠ΅ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΎ, ΠΈ Π΄Π° Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° ΡΡΠ°ΡΠ΅ ΠΎΠ΄ 02:00-22:00. ΠΡΠΎΠ±Π»Π΅ΠΌ ΡΠ΅ Ρ ΡΠΎΠΌΠ΅ ΡΡΠΎ Π½Π΅ ΠΏΡΠ°ΡΠΈΠΌ Π²Π΅ΡΡΠΈ, Π° βdeveloperβ-ΠΈ ΠΊΠΎΡΠΈ ΠΎΠ΄ΡΠΆΠ°Π²Π°ΡΡ ΡΠ°ΡΡ ΠΠΠ Π½ΠΈΡΡ Π½Π° Π²ΠΈΠ΄Π½ΠΎ ΠΌΠ΅ΡΡΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ Π²Π΅Π·Ρ ΠΊΠ° RSS ΡΠΎΠΊΡ (ΡΡΠΎ ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΈ Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΎ ΡΠ΅ΡΠ΅ΡΠ΅ Π·Π° ΠΏΡΠ°ΡΠ΅ΡΠ΅ Π½ΠΎΠ²ΠΎΡΡΠΈ), ΠΏΠ° ΡΠ°ΠΊ Π½ΠΈ Π½Π°ΡΠΎΠ±ΠΈΡΠ½ΠΈΡΠ΅ ΠΎΠ±Π°Π²Π΅ΡΡΠ°Π²Π°ΡΠ΅ ΠΏΡΠ΅ΠΊΠΎ ΠΌΠ΅ΡΠ»Π°. ΠΠ° ΡΡΠ΅ΡΡ, ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈΠΌ ΠΠΠ£ ΡΠ° ΠΠΈΠ½ΡΠΊΡΠΎΠΌ, Π° ΠΎΠ²ΠΎ ΡΠ΅ ΠΎΠ΄Π»ΠΈΡΠ½Π° ΠΏΡΠΈΠ»ΠΈΠΊΠ° Π·Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡΡ ΡΠΎΠ³Π° ΡΡΠ° ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΠΎΡΡΠΈΡΠΈ ΡΠ΅Π³ΠΎΠ²ΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΠΌΠ° ΠΊΠΎΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ Π»ΠΈΠ½ΠΈΡΡ.
ΠΠ»Π°Π²Π½Π° ΠΈΠ΄Π΅ΡΠ° ΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ curl(1) Π΄Π° ΠΏΡΠ΅ΡΠ·ΠΌΠ΅ΠΌΠΎ ΡΡΡΠ°Π½ΠΈΡΡ ΠΠΠ-Π°:
$ curl -s https://www.bvk.rs/planirani-radovi/ > radovi.html
ΠΠ°ΡΠΈΠΌ ΡΠΏΠΎΡΡΠ΅Π±ΠΈΠΌΠΎ grep(1) Π΄Π° Π±ΠΈΡΠΌΠΎ ΠΈΠ·Π΄Π²ΠΎΡΠΈΠ»ΠΈ ΡΠ°ΠΌΠΎ ΠΎΠ½Π΅ Π΄Π΅Π»ΠΎΠ²Π΅ ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΊΠΎΡΠΈ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ:
$ grep Π Π°ΠΊΠΎΠ²ΠΈΡΠ° radovi.html > rakovica.html
Π Π½Π° ΠΊΡΠ°ΡΡ ΡΠΊΠΈΠ½Π΅ΠΌΠΎ ΡΠ²Π΅ HTML ΠΎΠ·Π½Π°ΠΊΠ΅ ΠΈ ΠΈΠ·Π±Π°ΡΠΈΠΌΠΎ ΡΡΠ²ΠΈΡΠ½Π΅ ΡΠ°Π·ΠΌΠ°ΠΊΠ΅, Π° <p> ΠΏΡΠ΅ΡΠ²ΠΎΡΠΈΠΌΠΎ Ρ Π½ΠΎΠ²Π΅ ΠΏΠ°ΡΡΡΠ΅:
$ sed -e's/<p>/\n\n/g' < rakovica.html | sed -e's/<[^>]\+>//g' -e's/\s\+/ /g' -e's/^\s\+//g' > rakovica.txt
Π‘Π²Π΅ ΠΎΠ²Π΅ Π½Π°ΡΠ΅Π΄Π±Π΅ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΠΈΡΠΊΠΎΠΌΠ±ΠΈΠ½ΡΡΠ΅ΠΌΠΎ Ρ ΡΠ΅Π΄Π½Ρ:
$ curl -s https://www.bvk.rs/planirani-radovi/ | grep Π Π°ΠΊΠΎΠ²ΠΈΡΠ° | sed -e's/<p>/\n\n/g' | sed -e's/<[^>]+>//g' -e's/\s\+/ /g' -e's/^\s\+//g' > rakovica.txt
ΠΠ²ΠΈΠΌ ΡΠΌΠΎ ΡΠ°ΡΡΠ²Π°Π»ΠΈ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊ ΠΎ Π½ΠΎΠ²ΠΎΠΌ ΠΈΡΠΊΡΡΡΠ΅ΡΡ, ΠΊΠΎΡΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΡΠ°ΡΡΠ²Π°ΡΠΈ Π·Π° ΠΊΠ°ΡΠ½ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΡ. Π‘Π»Π΅Π΄Π΅ΡΠΈ ΠΏΡΡ ΠΊΠ°Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠ°Π²Π°ΠΌΠΎ ΡΡΡΠ°Π½ΠΈΡΡ, ΡΠ°ΠΌΠΎ ΠΏΡΠ΅ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ΅ΠΌΠΎ Π΄Π° Π»ΠΈ ΡΠ΅ Π½ΠΎΠ²ΠΈ ΡΠ΅Π΄ ΠΏΠΎΡΠ°Π²ΠΈΠΎ Ρ Π»ΠΈΡΡΠΈ Π²Π΅Ρ Π²ΠΈΡΠ΅Π½ΠΈΡ , ΠΈ Π°ΠΊΠΎ Π½ΠΈΡΠ΅, Π΄ΠΎΠ΄Π°ΡΠ΅ΠΌΠΎ Π³Π° ΠΈ ΠΎΠ±Π°Π²Π΅ΡΡΠ°Π²Π°ΠΌΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ°:
$ if grep -v -f sacuvano.txt rakovica.txt; then cat rakovica.txt >> sacuvano.txt; fi
ΠΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΎΠ±Π°Π²Π΅ΡΡΠΈΡΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ°? ΠΠΎΡΡΠΎΡΠΈ Π²ΠΈΡΠ΅ Π½Π°ΡΠΈΠ½Π°, Π°Π»ΠΈ ΠΎΠ½Π°Ρ ΠΊΠΎΡΠΈ ΡΠ΅ ΠΌΠ΅Π½ΠΈ ΡΡΠΈΠ½ΠΈΠΎ Π½Π°ΡΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΠΌ ΡΠ΅ΡΡΠ΅ Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΡΠ»Π°ΡΠ΅ ΠΌΠ΅ΡΠ»Π°. ΠΠ²ΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΠΎΡΡΠΈΡΠΈ, ΡΠ΅ΡΠΈΠΌΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΎΠΌ neomutt(1):
$ neomutt -s "ΠΠΠ: ΠΠΎΠ²ΠΈ ΡΠ°Π΄ΠΎΠ²ΠΈ" pera@peric.com < rakovica.txt
ΠΠ²ΠΎ ΡΠ΅, Ρ ΡΡΡΡΠΈΠ½ΠΈ, ΠΎΡΠ½ΠΎΠ²Π° ΠΌΠΎΠ³ ΡΠΊΡΠΈΠΏΡΠ° pagecheck. ΠΠ½ ΡΠ΅ ΠΏΠΎΠ·ΠΈΠ²Π°, ΡΠ΅ΡΠΈΠΌΠΎ, Π½Π° ΡΠ»Π΅Π΄Π΅ΡΠΈ Π½Π°ΡΠΈΠ½:
$ pagecheck Π Π°ΠΊΠΎΠ²ΠΈΡΠ° https://www.bvk.rs/planirani-radovi/ pera@peric.com
ΠΠΊΠΎ ΡΠ΅ Π±ΠΈΠ»ΠΎ Π½ΠΎΠ²ΠΎΡΡΠΈ, pagecheck ΡΠ΅ ΠΈΡ ΠΈΡΠΏΠΈΡΠ°ΡΠΈ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎΠΌ ΠΈΠ·Π»Π°Π·Ρ, ΡΡΠΎ ΡΠ΅ ΠΈ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ Π°ΠΊΠΎ Π½Π΅ Π·Π°Π΄Π°ΠΌΠΎ Π½ΠΈΡΠ΅Π΄Π°Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ. ΠΠΎΠ²ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° βseen-ΡΡΠ΅ΠΌΠΎβ ΠΏΠΎΠ·ΠΈΠ²ΠΎΠΌ ΡΠ· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ -s:
$ pagecheck -s
ΠΠΏΠ°ΠΊ, Π½Π°ΡΠΊΠΎΡΠΈΡΠ½ΠΈΡΠ΅ ΡΠ΅ Π΄Π° pagecheck ΠΏΠΎΠ·ΠΈΠ²Π°ΠΌΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΎΠΌ cron(8). Π Π΅ΡΠΈΠΌΠΎ:
$ crontab -e
ΠΈ ΡΠ½Π΅ΡΠ΅ΠΌΠΎ ΡΠ»Π΅Π΄Π΅ΡΠΈ ΡΠ΅Π΄ Ρ crontab:
0 */5 * * * pagecheck Π Π°ΠΊΠΎΠ²ΠΈΡΠ° https://www.bvk.rs/planirani-radovi/ pera@peric.com
Π’Π°ΠΊΠΎ ΡΠ΅ ΡΠ΅ Π½Π° ΡΠ²Π°ΠΊΠΈΡ 5 ΡΠ°ΡΠΈ Ρ ΠΏΠΎΠ·Π°Π΄ΠΈΠ½ΠΈ ΠΈΠ·Π²ΡΡΠΈΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌ pagecheck, ΠΈ Π°ΠΊΠΎ ΡΠ΅ Π΄ΠΎΡΠ»ΠΎ Π΄ΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈ ΠΊΠΎΡΠ΅ ΡΠΊΡΡΡΡΡΡ ΡΡΠ°ΠΆΠ΅Π½ΠΈ ΠΈΠ·ΡΠ°Π·, Π±ΠΈΡΠ΅ ΠΏΠΎΡΠ»Π°ΡΠΎ ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠ΅. ΠΠ°ΡΠ°Π²Π½ΠΎ, Ρ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π° Π΄Π° ΡΠ΅ ΡΠ°ΡΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½ΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΡΡ ΡΠ²Π°ΠΊΠΈ Π΄Π°Π½ ΡΠ°ΠΊΠΎ Π΄Π° ΠΎΠ±ΡΡ Π²Π°ΡΠΈ ΠΌΠ°ΠΊΠ°Ρ ΡΠ΅Π΄Π°Π½ ΡΠ°ΠΊΠ°Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π».