Tasker Para hablar de todo lo relacionado con la aplicación tasker

Respuesta
 
Herramientas
  #21  
Viejo 14/02/16, 22:50:45
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
 Cita: Originalmente Escrito por mlesir Ver Mensaje
No te dice tasker en qué linea falla? Le puedes meter una variable en el parametro error o marcar "seguir tras error" y usar la variable interna %err.
Otra usar un flash para ir viendo que valor cogen las variables.

Enviado desde mi T1-701u mediante Tapatalk
Hola @mlesir, gracias por tu interés.

El error no està en las acciones "normales" de la tarea. La aplicación me funciona bién tal como la he puesto en el recuadro de texto.

El problema està al pretender substituir todo el bucle que extrae los distintos datos de cada linea de la matriz %dades por una llamada a JavaScript.
He puesto el código que he copiado en mi post anterior en una acción JavaScriplet y el error que me da (lo he copiado también arriba) està en la ejecución del script. Intrerpreto que es un error de sintaxis.

Como puedo meter este control del error DENTRO del código en JS?



Enviat des del meu SM-T550 usant Tapatalk
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita


  #22  
Viejo 15/02/16, 00:24:46
Array

[xs_avatar]
mlesir mlesir no está en línea
Usuario muy activo
 
Fecha de registro: abr 2012
Mensajes: 2,263
Modelo de smartphone: OnePlus One,BQ Edison1, GoogleChrome,
Tu operador: Pepephone
Yo me referia a la acción de codigo de javascript no las normales.
Lo tengo un poco oxidado lo siento, esa accion a diferencia de la de consola no tiene un parametro para q te meta en una variable el error.
En cualquier caso puedes utilizar esto:
"flash (variable);" sin las comillas. Esto funciona como el flash de tasker. Sin comillas (variable) te muestra la variable: variable. Con comillas simple ,('variable') te muestra el texto variable.
Unespected token normalmente se refiere a que hay un signo para el que previamente no se ha preparado. Por ejemplo poner un "}" sin antes abrirlo ( "{" ).

La verdad es que javascript es muy util pero muy puñetero. Primero con el flash me aseguraría de que todas las variables que utilizas están disponibles en el script.

Te dejo una copia de un script q utilizo por si te sirve de ejemplo:

//Declaramos arrays

var tarea = [];
var parametro = [];
var splitvoz = [];
//Preparamos variables necesarias
tasc = global('TasC');
splitasc = tasc.split("|#|");
tas = global('Tas');
splitas = tas.split("|#|");

//Separamos los comandos de voz y las tareas
var pat_a = "("+(tasc)+")"+".*?((?= "+"("+(tasc)+"))|$)";
var patrona = new RegExp (pat_a,"gi");
splitvoz = fora.match(patrona);

//FOR del array splitvoz
for ( a= 0; a < splitvoz.length; a++)
{
//FOR del array splitasc

for ( b = 0; b < splitasc.length; b++)
{
var pat_b = splitasc[b]+"\\w*(\\s|$)";
var patronb = new RegExp (pat_b,"gi");
if (patronb.test(splitvoz[a]))
{
var pat_c = splitasc[b];
var patronc = new RegExp (pat_c,"gi");

coinci = splitvoz[a].match(patronc);

if (pardos === undefined )
{
var pardos = coinci
}
else
{
var pardos = pardos+","+coinci;
};
var pat_p = "("+splitasc[b]+")"+"(\\w)* ";
var patronp = new RegExp (pat_p,"i");
parametro[a] = splitvoz[a].replace(patronp,"");
tarea.push(splitas[b]);
break;
}
}
};

var param = [];
var param = pardos;
var param = param.split(",");

// Explicacion del regex: Busca todo lo que contiene la variable tasc, seguido de cualquier carácter ( .) repetido una o mas veces (*) pero que la coincidencia mas corta posible (?, se le llama non greedy) y seguido espacio (\s) y seguido de cualquier cosa que se contenga en la variable tasc o que sea el final de la frase (|$) pero todo esto sin incluirlo en el patrón ( por eso empleo lo que se llama un look around assertion)

Enviado desde mi T1-701u mediante Tapatalk
__________________
Fdo: Mlesir. Miembro del equipo que promueve el foro y el recopilatorio de Tasker http://www.htcmania.com/forumdisplay.php?f=969
Responder Con Cita
Los siguientes 3 usuarios han agradecido a mlesir su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]
  #23  
Viejo 15/02/16, 08:40:37
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por cace0353 Ver Mensaje
For (var i=0 ; i=apunts; i++) {
var planta = dades(i+1).split(";");
var cientific(i+1) = planta[1]
var vulgar(i+1) = planta[2]
var floracio(i+1) = planta[3]
var sol(i+1) = planta[4]
var temperatura(i+1) = planta[5]
var reg(i+1) = planta[6]
var adob(i+1) = planta[7]
var imatge(i+1) = planta[8]
var link(i+1) = planta[9]
var comentaris(i+1) = planta[10]
}

Pero me da el error: Uncaught sintax error: Unexpected token ILLEGAL.

Lo he probado también substituyendo los (i+1) por [i+1] y tampoco me funciona...

Qué hago mal?
En lo que tenga un momento lo escribo en mi Tasker y compruebo lo que sale, pero yo empezaría cambiando un par de cosas...

El "var" del inicio de bucle no es necesario. Debería quedarse así ... For (i=0 ; i=apunts; i++).

El "var" de la segunda línea también lo puedes quitar. La instrucción "var" sólo es necesario si quieres que la variable que estás definiendo pase a Tasker, y yo diría que la variable "planta" la usas de forma temporal.

Tienes que cambiar todos los (i+1) por [i+1]. En JS los índices de un array se referencian con corchetes, igual que has hecho con los valores de planta[x].

Y deberías añadir un ; después de cada línea dentro del FOR igual que has hecho en la primera.

Si tienes dudas con la sintaxis de JS mira aquí ... http://www.w3schools.com/js/default.asp
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Los siguientes 3 usuarios han agradecido a WillyWeb su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]
  #24  
Viejo 15/02/16, 11:10:45
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
 Cita: Originalmente Escrito por mlesir Ver Mensaje
En cualquier caso puedes utilizar esto: "flash (variable);" sin las comillas. Esto funciona como el flash de tasker. Sin comillas (variable) te muestra la variable: variable. Con comillas simple ,('variable') te muestra el texto variable. Unespected token normalmente se refiere a que hay un signo para el que previamente no se ha preparado. Por ejemplo poner un "}" sin antes abrirlo ( "{" ).
Bueno @mlesir gracias por tu aporte, te cuento lo que he probado:

Primero he añadido al principio del código la declaración de todas los arrays que usaré más adelante (planta, cientific, vulgar, floracio, sol,...) con la notación que usas tú:
var cientific = [];
var vulgar = [];
-----
Cuando testeo el código con el botón de la flecha (arriba a la derecha en la pantalla de edición del Script), me suelta un OK!. (En alguna ocasión me he dejado un símbolo y me indicaba el error)
Es al ejecutar la tarea que contiene el JavaScriptlet donde el punyetero me suelta:

JavaScriptlet: line 1: Uncaught SyntaxError: Unnexpected token ILLEGAL

He añadido también una instrucción "flash" para ver si me ha cargado la matriz %dades, pero como el error ya està (según indica el mensaje) en la linea 1, pues nada, no sirve....
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita
  #25  
Viejo 15/02/16, 11:30:01
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
 Cita: Originalmente Escrito por WillyWeb Ver Mensaje
En lo que tenga un momento lo escribo en mi Tasker y compruebo lo que sale, pero yo empezaría cambiando un par de cosas... El "var" del inicio de bucle no es necesario. Debería quedarse así ... For (i=0 ; i=apunts; i++). El "var" de la segunda línea también lo puedes quitar. La instrucción "var" sólo es necesario si quieres que la variable que estás definiendo pase a Tasker, y yo diría que la variable "planta" la usas de forma temporal. Tienes que cambiar todos los (i+1) por [i+1]. En JS los índices de un array se referencian con corchetes, igual que has hecho con los valores de planta[x]. Y deberías añadir un ; después de cada línea dentro del FOR igual que has hecho en la primera. Si tienes dudas con la sintaxis de JS mira aquí ... http://www.w3schools.com/js/default.asp
Muchas gracias por tu interés @WillyWeb,

He hecho los cambios sugeridos (si pongo el For en mayúscula me da error en el testeo dentro de la página del editor del JavaScriptlet, he de poner for, en minúsculas) y estamos en las mismas (el mismo error en line 1)

Queda pendiente aprender Javascript p.e. desde el enlace que sugieres. Hace algún tiempo ya usé un Script copiado del foro en otra aplicación. Pero hice una transcripción pura, me limité a copiar el código. También compré el libro que me parece que recomendó @mlesir de la editorial Anaya (Guia Práctica de Javascript Edición 2012) en algún post, pero ahí està...
.
Veo, y por esto me he metido en este berenjenal, que la ejecución desde Javascript es mucho más rápida. Para tareas de Tasker en la que hay acciones que manejan bases de datos extensas (en mi caso matrices generadas a partir de hojas de Excel en formato CSV) me està resultando imprescindible.

Creo que voy a meterme un poco con JS porqué la verdad es que programando lo paso "pipa". Además ahora estoy jubilado y tengo tiempo...

Repito mis agradecimientos a vosotros, luz y guia del foro, por vuestra colaboración.

Saludos!
__________________
Me apasiona volar, pero con los pies en el suelo...

Última edición por cace0353 Día 15/02/16 a las 12:56:20. Razón: Rectificar el nombre de la editorial del libro
Responder Con Cita
Gracias de parte de:
  #26  
Viejo 15/02/16, 14:40:17
Array

[xs_avatar]
Rsc Rsc no está en línea
Usuario muy activo
 
Fecha de registro: jun 2011
Mensajes: 502
Modelo de smartphone: Xiaomi Mi5s
Tu operador: Otra
Este hilo se pone interesante, a ver si saco un poco de tiempo y vuelvo por aquí, a ver si aprendo algo. Siempre he pensado que lo único que le falta a este foro, es profundizar un poco mas en las funciones de Java y JavaScript.
Responder Con Cita
Los siguientes 3 usuarios han agradecido a Rsc su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]
  #27  
Viejo 15/02/16, 17:41:35
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
Me he pasado más de una hora probando cosas y viendo siempre el mismo error.

Como no conseguía nada he probado a cargar un simple archivo de texto en una variable de Tasker y mostrar el contenido de esa variable desde JS y me he quedado de piedra al ver que también salía ese error.

No entiendo el motivo, pero esta línea...

Código:
A5: Leer Archivo [ Archivo:Plantes.txt A la variable:%dades ]
...tiene efectos secundarios mortales en JS.

En definitiva, he cambiado la acción "Leer archivo" por "Leer párrafo" y fin del problema.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Los siguientes 2 usuarios han agradecido a WillyWeb su comentario:
  #28  
Viejo 15/02/16, 19:12:04
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
Gracias @WillyWeb por tu tiempo.

Efectivamente, usando "Leer parrafo" no da error.

Pero, en mi caso no sirve. La acción "Leer parrafo" de Tasker lee el archivo hasta el primer punto solamente y guarda el resultado en %dades. En mi caso el archivo contiene más de 150 filas (una por planta) con 10 datos distintos cada una. En cada linea tengo varios puntos (en las URL de los web donde puedo ampliar la información desde la ficha de cada planta en el programa). Lo que ocurre entonces es que Tasker lee hasta el primer punto que encuentra. Si especifico la frase nº 2 lee entre el primer y segundo puntos... No sirve

Por esto divido primero la variable %dades (que almacena "todo" el archivo) por los saltos de linea en Tasker y luego paso la matriz resultante %dades() a Javascript para que divida de nuevo en el bucle cada %dades(i) por los ";" (el separador de valores por columna que dan los CSV) y me haga el trabajo más pesado (acciones A9-A22 del código en Tasker simple).

Enfin, espero que el creador del hilo @maid450 se pase por aquí y nos aclare el problema.

Gracias de todos modos
__________________
Me apasiona volar, pero con los pies en el suelo...

Última edición por cace0353 Día 15/02/16 a las 19:35:04.
Responder Con Cita
Gracias de parte de:
  #29  
Viejo 15/02/16, 19:26:27
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
He probado con un bucle FOR dividir por lineas en lugar de hacerlo por saltos de línea como está ahora (accion "leer linea" en Tasker) y construir así %dades(). Pero tampoco funciona...

Parece como si no se pasaran de Tasker a JS los arrays...
__________________
Me apasiona volar, pero con los pies en el suelo...

Última edición por cace0353 Día 15/02/16 a las 19:34:17.
Responder Con Cita
  #30  
Viejo 15/02/16, 19:37:09
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por cace0353 Ver Mensaje
Efectivamente, usando "Leer parrafo" no da error.

Pero, en mi caso no sirve. La acción "Leer parrafo" de Tasker lee el archivo hasta el primer punto solamente...
No. Esa acción lee hasta encontrar una línea en blanco o un código de fin de línea.

En mis pruebas he usado un archivo con datos que contenían puntos y comas, y lo he podido leer de una tacada sin problemas con "Leer párrafo".

Revisa tu archivo de datos por si contiene algo de eso.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Gracias de parte de:
  #31  
Viejo 15/02/16, 21:47:54
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
Bueno, tema resuelto siguiendo las indicaciones de @WillyWeb

He modificado la tarea en Tasker para tratar toda la variable %dades (resultado de Leer parrafo) dentro de JS.

Para ello, como el archivo de texto tiene los saltos de línea que salen del CSV, en la propia tarea, con Buscar y Reemplazar, substituyo los saltos de linea "\n" por un carácter "|". El resultado es una variable %dades que contiene los separadores "|" y ";" (pero no tiene ni puntos-aparte ni saltos de línea) y que luego utilizararemos en JS para generar las matrices con la instrucción "split".

Ya en el Script y después de declarar las variables-array, hago un split sobre la variable dades para obtener tantas "hijas" como plantas. Inmediatamente después y mediante el bucle saco los distintos datos de cada planta....

Como estoy muy verde aún en JS, es possible que sobre alguna declaración de variable, pero así ya va. En las primeras pruebas me funcionaba una vez sí y otra no (????), la vez que no funcionaba me mostraba, como única salida "EOF", es decir End Of File (fin de archivo). He supuesto que esto era así porque no habia definido el nº de pàrrafo en la acción "Leer parrafo" y Tasker leia el primero y en la siguiente ejecución el segundo y último. Poniendo un 1 en lugar de dejar el campo vacio se ha resuelto el problema.

Transcripción de la tarea en Tasker:


Código:
Plantes JS (314)
    A1: Destruir Escena [ Nombre:Detall Planta Continuar Tarea Tras Error:Encendido ] 
    A2: Destruir Escena [ Nombre:Llistat Cientific Continuar Tarea Tras Error:Encendido ] 
    A3: Destruir Escena [ Nombre:Llistat Vulgar Continuar Tarea Tras Error:Encendido ] 
    A4: Establecer variable [ Nombre:%texte A:Espera, llegint la base de dades de plantes…  Calcular:Apagado Añadir:Apagado ] 
    A5: Mostrar Escena [ Nombre:Espera Plantes Mostrar como:Actividad,  Ventana Completa, Sin Título Posición Horizontal:100 Posición  Vertical:100 Animación:Sistema Mostrar Botón Salida:Apagado Continuar  tarea inmediatamente:Encendido ] 
    A6: Leer párrafo [ Archivo:Plantes.txt Párrafo:1 A la variable:%dades ] 
    A7: Buscar y Reemplazar Contenido de Variable [ Variable:%dades  Buscar:\n Ignorar Caso:Apagado Multilínea:Apagado Una sola  coincidencia:Apagado Almacenar Coincidencias En: Reemplazar  Coincidencias:Encendido Reemplazar Con:| ] 
    A8: JavaScriptlet [ Código:var cientific = [];
var vulgar = [];     < Declaración de variables-array
var floracio = [];
var sol = [];
var temperatura = [];
var reg = [];
var adob = [];
var imatge = [];
var link= [];
var comentaris = [];
dades = (dades.split("|"));         < Obtención de los datos de las distintas plantas (lo que antes hacia en Tasker mediante "Separar variable con |)
for (i=0 ; i <dades.length; i++)   < Obtención de los datos de cada planta (nombre científico, nombre vulgar, floración, sol,...)
{
planta = (dades[i].split(";"));
cientific[i] = planta[0];
vulgar[i] = planta[1];
floracio[i] = planta[2];  
sol[i] = planta[3];
temperatura[i] = planta[4];
reg[i] = planta[5];
adob[i] = planta[6];
imatge[i] = "Pictures/Plantes/"+ planta[7];   Aquí añado el PATH donde tengo las imágenes de las plantas
link[i] = planta[8];
comentaris[i] = planta[9];
} Librerías: Salida Automática:Encendido Cuenta atrás (segundos):45 ] 
    A9: Mostrar Escena [ Nombre:Llistat Cientific Mostrar como:Actividad,  Ventana Completa, Sin Título Posición Horizontal:100 Posición  Vertical:100 Animación:Sistema Mostrar Botón Salida:Apagado Continuar  tarea inmediatamente:Encendido ] 
    A10: Destruir Escena [ Nombre:Espera Plantes Continuar Tarea Tras Error:Encendido ]
El dato imatge[i] lo construyo añadiendo delante del nombre de la foto el PATH, /Pictures/Plantes en mi caso. Así me ahorro escribir siempre este valor en el campo correpondiente al nombre de la foto.

Sin vuestra ayuda no lo habria sacado, muchíiiisssimas gracias de nuevo.

Observación final:

Tiempo de ejecución de la Tarea con Tasker solamente = aprox. 12 segundos.
Tiempo de ejecución de la Tarea incluyendo el Scriplet = aprox. 4 segundos.
__________________
Me apasiona volar, pero con los pies en el suelo...

Última edición por cace0353 Día 15/02/16 a las 21:57:07.
Responder Con Cita
Los siguientes 2 usuarios han agradecido a cace0353 su comentario:
  #32  
Viejo 15/02/16, 22:04:37
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
Estupendo

Se me pasó decirte lo del EOF y que se podía solucionar añadiendo un 1 en el número de párrafo, pero veo que lo has solucionado perfectamente.

La mejora de tiempo de ejecución es muy buena, y puede que si ahora generas un APK todavía mejore un poco más. Es cosa de probar.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Los siguientes 2 usuarios han agradecido a WillyWeb su comentario:
  #33  
Viejo 16/02/16, 10:59:39
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
 Cita: Originalmente Escrito por WillyWeb Ver Mensaje
Estupendo

Se me pasó decirte lo del EOF y que se podía solucionar añadiendo un 1 en el número de párrafo, pero veo que lo has solucionado perfectamente.

La mejora de tiempo de ejecución es muy buena, y puede que si ahora generas un APK todavía mejore un poco más. Es cosa de probar.
La tarea principal, al generar el APK, no se ejecuta mucho más rápido (quizás ahora lo hace en 3 seg. en lugar de 4...). En cambio tengo otra tarea que uso para ordenar las plantas por su nombre vulgar, releyendo el archivo, generando una nueva matriz ordenada por la segunda columna (mediante una acción Procesar Array, orden alfabético) y creando un nuevo archivo Plantes_vulgar.txt (que contiene los nombres vulgares de las plantas y el índice que tenian en la matriz %dades) cada vez que añado lineas a la base de datos. En esta tarea el uso de la acción JavaScriptlet ha reducido el tiempo de ejecución de unos 10 ó 12 seg. a 3 seg.!

Estoy realmente satisfecho. Habrá que profundizar el estudio de JS para ir incorporando este tipo de código en mis programas...

Lo que si és evidente es que el pasar la aplicación de Tasker a APK la mejora ya no és tan impactante como lo era antes.

Me he subscrito al hilo para ver como evoluciona esto, a ver si le damos vas "vidilla"...
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita
Gracias de parte de:
  #34  
Viejo 16/02/16, 21:57:09
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por cace0353 Ver Mensaje
Lo que si és evidente es que el pasar la aplicación de Tasker a APK la mejora ya no és tan impactante como lo era antes.
La verdad es que, después de pensarlo un poco, tiene su lógica que mejore algo la velocidad de ejecución de una APK basada en acciones puras de Tasker y que no lo haga en la misma medida si está basada en JS.

Supongo que las acciones de Tasker, en la versión APK, son algo más rápidas porque el interprete es más ligero al no tener que arrastrar su entorno de desarrollo. En cambio, el código JS siempre se ejecuta/interpreta igual.

Y ahora que me fijo mejor en tu tarea...

Puedes eliminar la acción A7 (la de cambiar \n por |) y dentro del código JS cambiar la línea ...

dades = (dades.split("|"));

...por...

dades = dades.split("\n");

Eso lo mismo reduce el tiempo de ejecución otro medio segundo.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Gracias de parte de:
  #35  
Viejo 16/02/16, 22:16:50
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
 Cita: Originalmente Escrito por WillyWeb Ver Mensaje
… /…

Y ahora que me fijo mejor en tu tarea...

Puedes eliminar la acción A7 (la de cambiar \n por |) y dentro del código JS cambiar la línea ...

dades = (dades.split("|"));

...por...

dades = dades.split("\n");

Eso lo mismo reduce el tiempo de ejecución otro medio segundo.
Tienes toda la razón, WillyWeb. En Tasker no puedo usar "\n" para dividir una variable, por eso debo substituir previamente el salto de línea por otro símbolo.

Lo he hecho como tu dices directamente en JS, "et voilà… ", funciona.

Me he ahorrado una línea y el código queda mas limpio, pero en tiempo de ejecución no aprecio diferencia. En realidad, y según esté de "cargada" la RAM, la duración de ejecución varia ligeramente.

Cada vez me gusta más esto del JavaScript… 👌

Enviat des del meu SM-T550 usant Tapatalk
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita
  #36  
Viejo 16/02/16, 22:23:43
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por cace0353 Ver Mensaje
... En Tasker no puedo usar "\n" para dividir una variable, por eso debo substituir previamente el salto de línea por otro símbolo.
En este caso ya lo tienes resuelto, pero para otra ocasión prueba con esto...

-Crea una variable (%newline) y como valor no metas nada. Simplemente pulsa el enter para meter una línea en blanco.

-Usa la acción de "Separar variable" como haces siempre y en el campo "Separador" usa la variable de antes (%newline).

Con eso te ahorras lo de cambiar \n por | y luego separar por |.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Gracias de parte de:
  #37  
Viejo 16/02/16, 22:37:03
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
Buen truco! Pero vaya, ahora que he descubierto como hacerlo en JS creo que siempre que deba procesar muchos datos ya sé como hacerlo con más velocidad, je, je... .

Incluso creo que para mis programillas voy a prescindir de convertirlos a APK con el App Factory ya que, al ejecutarlos una vez, siempre se quedan "en ejecución" ocupando RAM …

Enviat des del meu SM-T550 usant Tapatalk
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita
  #38  
Viejo 10/03/16, 09:36:34
Array

[xs_avatar]
maid450 maid450 no está en línea
Miembro del foro
 
Fecha de registro: sep 2009
Localización: Valencia
Mensajes: 450
Modelo de smartphone: Nexus 5 / Nexus 7
Tu operador: Yoigo
Hola @cace0353, perdona pero entro al foro muy de uvas a peras...
Justo acabo de ver el problema que tenías y venía a responder, pero veo que ya lo has solucionado

En cualquier caso me alegro que consiguieras resolverlo con la ayuda de @WillyWeb

A ver si me activo las alertas para enterarme mejor de menciones y MPs y empiezo a entrar más al foro de nuevo!

Última edición por maid450 Día 10/03/16 a las 09:41:23.
Responder Con Cita
  #39  
Viejo 10/03/16, 09:49:43
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
 Cita: Originalmente Escrito por maid450 Ver Mensaje
Hola @cace0353, perdona haber tardado tanto en contestar, pero entro al foro muy de uvas a peras... Me he pasado casi una hora redactando una respuesta super currada explicando todo paso a paso y en detalle para que la respuesta fuera más didáctica y por un error de navegador se ha perdido así que sintiendolo mucho, voy a poner directamente como escribiría yo el código para emular la tarea de Tasker (al menos el trozo problemático) y ya si tienes alguna duda concreta me preguntas... (a ver si activo que me lleguen notificaciones del foro al correo porque en parte por eso no me había enterado antes de esto...)
Muchas gracias por tu interés @maid450, pero ya he resuelto el tema como he puesto unos posts más arriba...

Veo que lo que tú propones es utilizar el comando push para meter el dato en los arrays (cientific, vulgar, floracio...) en lugar de asignarlo por el indice... Tomo nota para la próxima. Poco a poco se hicieron la catedrales, pero ahí están!

Te estábamos encontrando a faltar ya!
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita
Gracias de parte de:


  #40  
Viejo 10/03/16, 09:58:36
Array

[xs_avatar]
maid450 maid450 no está en línea
Miembro del foro
 
Fecha de registro: sep 2009
Localización: Valencia
Mensajes: 450
Modelo de smartphone: Nexus 5 / Nexus 7
Tu operador: Yoigo
Mi navegador estaba un poco tonto esta mañana (motivo por el que he perdido mi respuesta inicial) y me salía como si no te hubieran contestado, por eso lo he escrito, y al publicarlo ya me ha salido la retahila con el tema solucionado, por eso he editado mi respuesta... jejeje
Responder Con Cita
Los siguientes 2 usuarios han agradecido a maid450 su comentario:
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Otro software para Android > Tasker



Hora actual: 00:02:14 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2026 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /