Ĉu ripari aŭ forigi la aŭtomate instalitan Ĝavoskripton?

Ĉi tiu artikolo estas traduko el angla de artikolo «Fix or Kill Automatically Installed JavaScript?», publikigita de Julie Marchant sub licenco CC BY-SA 4.0.

En la eseo de Richard Stallman «La kaptilo de Ĝavoskripto» (angle «The Javascript trap») estas montrita, ke la homoj plenumas proprietajn programojn, kiuj estas aŭtomate, silente instalitaj en iliaj retiloj ĉiutage. Fakte li grande reduktis gravecon al problemo; ne nur la plejparto el la uzuloj plenumas proprietajn programojn ĉiutage nur retumante en la Reto. La Kaptilo de Ĝavoskripto estas tre reala kaj abunda; oni diras, ke la Reto estas tiel difektita sen tiuj mallaŭnormaj HTMLaj kromaĵoj, normale proprieta, kiel la retiloj jam ne eĉ oferas videblan opcion por malebligi Ĝavoskripto; malebligi Ĝavoskripton, oni argumentas, nur kaŭzos konfuzon.

Estas evidenta, ke ni bezonas solvi tiun problemon. Tamen koncentrante sin pri ĉu skriptoj estas «triviala» aŭ libera, S-ro Stallman forgesas kernan aspekton: ĉi tiu aŭtomata, silenta agmaniero de programa instalado mem estas la kerna problemo. Ke la plej da koncernaj programoj estas proprieta, estas nure kromefiko.

Legu plu el Ĉu ripari aŭ forigi la aŭtomate instalitan Ĝavoskripton?

Wget: elŝuti ĉiujn dosierojn de retejo laŭ regula esprimo

Ni trovis retejon, kiu havigas multe da dosieroj en PNG-aranĝo, MP3-aranĝo aŭ ajne nomita kaj ni volas elŝuti ĉiujn. Se estas multaj, fari tion per muso ne estas rapida.

Per GNU wget ni povas solvi ĉi tiun problemon facilege. Simple ni povas plenumi komandon kiel ĉi tiu:

Legu plu el Wget: elŝuti ĉiujn dosierojn de retejo laŭ regula esprimo

La socio post la disfalo

Disfalita la civilizo, la manieroj de kompreni la vivon aliiĝis radikale, kaj bone kaj malbone.

La landoj militis en ferocaj militoj por ŝteli la risurcojn al aliaj regionoj, per senespera klopodo por konservi siajn riĉajn vivmanierojn. Malgraŭe la regionoj kaj landoj plej senavantaĝaj rezistis, kaj ili malfaciliĝis iliajn celojn, kiujn la socio malaprobis, do iamaniere la grandparton da risurcoj partigis la reginta klaso. La sklaveco kaj la genocido okazis en multaj landoj kaj regionoj. Sed la tensio neniam ĉesis.

Unu monaton, en la jaro 2050, oni faligis 18 atombombojn en kelkajn partojn de la mondo, kiuj formortigis multajn speciojn kaj malpliigis la homan populacion. La atombombojn estis senkompate faligitaj de potencaj nacioj unu al alia. Eble multaj faris tion pri rabio kaj kiel lasta montro de sia potenco, kvankam ili malaperus iujn minutojn poste; ĉiam fidelaj al sia nacio, ili efektivigis la ordojn.

Legu plu el La socio post la disfalo

Fadenoj en Python

La komputaj fadenoj permesas al ni fari taskojn samtempe. En Python ni povas uzi la modulon threading, sed estas multaj aliaj.

Ni kreos kelkajn simplajn fadenojn (threads).

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import threading
import time
import random

def sleeper(name, s_time):
    print('{} komencita je {}.'.format(
        name, time.strftime('%H:%M:%S', time.gmtime())))

    time.sleep(s_time)

    print('{} finiĝis je {}.'.format(
        name, time.strftime('%H:%M:%S', time.gmtime())))


for i in range(5):
    thread = threading.Thread(target=sleeper, args=(
        str(i + 1) + 'a fadeno', random.randint(1, 9)))

    thread.start()

print('Mi finiĝis, sed la aliaj fadenoj ne.')

Unue ni importis la bezonatajn modulojn: time, random kaj threading. Por krei je threads ni nur bezonas la lastan. Je time ni uzis por simuli takson kaj akiri ĝian tempo de komenco kaj fino; random havigas al nia takso hazardan daŭron.

La funkcio sleeper «dormas» (faras nenion) dum la tempo kiu ni specifas, diras al ni kiam komencis «dormi» kaj kiam finis «dormi». Kiel parametroj ni donas la nomon, kiu ni volas doni al la fadeno, kaj la tempon, dum kiu «dormos» la funkcion.

Poste ni kreas "por"-iteracion, kiu kreas 5 fadenojn, kiuj plenumas la sleeper-funkcion. En la konstruilo (threading.Thread) ni devas diri la funkcion por plenumi (target=sleeper) kaj la parametrojn, kiujn ni volas doni al ĝi (args=('str(i + 1) + 'a fadeno', random.randint(1, 9))).

1a fadeno komencita je 15:17:07.
2a fadeno komencita je 15:17:07.
3a fadeno komencita je 15:17:07.
4a fadeno komencita je 15:17:07.
5a fadeno komencita je 15:17:07.
Mi finiĝis, sed la aliaj fadenoj ne.
3a fadeno finiĝis je 15:17:13.
5a fadeno finiĝis je 15:17:13.
2a fadeno finiĝis je 15:17:14.
4a fadeno finiĝis je 15:17:14.
1a fadeno finiĝis je 15:17:16.

La resulto de la plenumo estas hazarda: ni ne scias kiu fadeno finos unue.