Home Menu

Menu



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


 
Herramientas
  #21  
Viejo 14/02/16, 22:50:45
Avatar de cace0353
cace0353 cace0353 no está en línea
Usuario muy activo
Mensajes: 508
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Versión de ROM: Stock
Versión de Radio: Stock
Tu operador: Jazztel
Mencionado: 11 comentarios
Tagged: 0 hilos
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
Responder Con Cita


  #22  
Viejo 15/02/16, 00:24:46
Avatar de mlesir
mlesir mlesir no está en línea
Usuario muy activo
Mensajes: 2,263
 
Fecha de registro: abr 2012
Mensajes: 2,263
Modelo de smartphone: OnePlus One,BQ Edison1, GoogleChrome,
Versión de ROM: 4.4 Cyanogen
Tu operador: Pepephone
Mencionado: 36 comentarios
Tagged: 2 hilos
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
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
Avatar de WillyWeb
WillyWeb WillyWeb no está en línea
Usuario muy activo
Mensajes: 2,067
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Versión de ROM: OxygenOS 9.0.6 | MIUI 12.5.1
Versión de Radio: Stock
Tu operador: Vodafone
Mencionado: 75 comentarios
Tagged: 3 hilos
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
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
Avatar de cace0353
cace0353 cace0353 no está en línea
Usuario muy activo
Mensajes: 508
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Versión de ROM: Stock
Versión de Radio: Stock
Tu operador: Jazztel
Mencionado: 11 comentarios
Tagged: 0 hilos
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....
Responder Con Cita
  #25  
Viejo 15/02/16, 11:30:01
Avatar de cace0353
cace0353 cace0353 no está en línea
Usuario muy activo
Mensajes: 508
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Versión de ROM: Stock
Versión de Radio: Stock
Tu operador: Jazztel
Mencionado: 11 comentarios
Tagged: 0 hilos
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!

Ú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
Avatar de Rsc
Rsc Rsc no está en línea
Usuario muy activo
Mensajes: 502
 
Fecha de registro: jun 2011
Mensajes: 502
Modelo de smartphone: Xiaomi Mi5s
Versión de ROM: Android 7.0
Tu operador: Otra
Mencionado: 16 comentarios
Tagged: 1 hilos
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
Avatar de WillyWeb
WillyWeb WillyWeb no está en línea
Usuario muy activo
Mensajes: 2,067
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Versión de ROM: OxygenOS 9.0.6 | MIUI 12.5.1
Versión de Radio: Stock
Tu operador: Vodafone
Mencionado: 75 comentarios
Tagged: 3 hilos
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.
Responder Con Cita
Los siguientes 2 usuarios han agradecido a WillyWeb su comentario:
  #28  
Viejo 15/02/16, 19:12:04
Avatar de cace0353
cace0353 cace0353 no está en línea
Usuario muy activo
Mensajes: 508
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Versión de ROM: Stock
Versión de Radio: Stock
Tu operador: Jazztel
Mencionado: 11 comentarios
Tagged: 0 hilos
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

Ú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
Avatar de cace0353
cace0353 cace0353 no está en línea
Usuario muy activo
Mensajes: 508
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Versión de ROM: Stock
Versión de Radio: Stock
Tu operador: Jazztel
Mencionado: 11 comentarios
Tagged: 0 hilos
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...

Ú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
Avatar de WillyWeb
WillyWeb WillyWeb no está en línea
Usuario muy activo
Mensajes: 2,067
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Versión de ROM: OxygenOS 9.0.6 | MIUI 12.5.1
Versión de Radio: Stock
Tu operador: Vodafone
Mencionado: 75 comentarios
Tagged: 3 hilos
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.
Responder Con Cita
Gracias de parte de:
  #31  
Viejo 15/02/16, 21:47:54
Avatar de cace0353
cace0353 cace0353 no está en línea
Usuario muy activo
Mensajes: 508
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Versión de ROM: Stock
Versión de Radio: Stock
Tu operador: Jazztel
Mencionado: 11 comentarios
Tagged: 0 hilos
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.

Ú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
Avatar de WillyWeb
WillyWeb WillyWeb no está en línea
Usuario muy activo
Mensajes: 2,067
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Versión de ROM: OxygenOS 9.0.6 | MIUI 12.5.1
Versión de Radio: Stock
Tu operador: Vodafone
Mencionado: 75 comentarios
Tagged: 3 hilos
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.
Responder Con Cita
Los siguientes 2 usuarios han agradecido a WillyWeb su comentario:
  #33  
Viejo 16/02/16, 10:59:39
Avatar de cace0353
cace0353 cace0353 no está en línea
Usuario muy activo
Mensajes: 508
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Versión de ROM: Stock
Versión de Radio: Stock
Tu operador: Jazztel
Mencionado: 11 comentarios
Tagged: 0 hilos
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"...
Responder Con Cita
Gracias de parte de:
  #34  
Viejo 16/02/16, 21:57:09
Avatar de WillyWeb
WillyWeb WillyWeb no está en línea
Usuario muy activo
Mensajes: 2,067
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Versión de ROM: OxygenOS 9.0.6 | MIUI 12.5.1
Versión de Radio: Stock
Tu operador: Vodafone
Mencionado: 75 comentarios
Tagged: 3 hilos
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.
Responder Con Cita
Gracias de parte de:
  #35  
Viejo 16/02/16, 22:16:50
Avatar de cace0353
cace0353 cace0353 no está en línea
Usuario muy activo
Mensajes: 508
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Versión de ROM: Stock
Versión de Radio: Stock
Tu operador: Jazztel
Mencionado: 11 comentarios
Tagged: 0 hilos
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
Responder Con Cita
  #36  
Viejo 16/02/16, 22:23:43
Avatar de WillyWeb
WillyWeb WillyWeb no está en línea
Usuario muy activo
Mensajes: 2,067
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Versión de ROM: OxygenOS 9.0.6 | MIUI 12.5.1
Versión de Radio: Stock
Tu operador: Vodafone
Mencionado: 75 comentarios
Tagged: 3 hilos
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 |.
Responder Con Cita
Gracias de parte de:
  #37  
Viejo 16/02/16, 22:37:03
Avatar de cace0353
cace0353 cace0353 no está en línea
Usuario muy activo
Mensajes: 508
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Versión de ROM: Stock
Versión de Radio: Stock
Tu operador: Jazztel
Mencionado: 11 comentarios
Tagged: 0 hilos
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
Responder Con Cita
  #38  
Viejo 10/03/16, 09:36:34
Avatar de maid450
maid450 maid450 no está en línea
Miembro del foro
Mensajes: 450
 
Fecha de registro: sep 2009
Localización: Valencia
Mensajes: 450
Modelo de smartphone: Nexus 5 / Nexus 7
Versión de Radio: Cualquiera que ponga buen Rock
Tu operador: Yoigo
Mencionado: 15 comentarios
Tagged: 0 hilos
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
Avatar de cace0353
cace0353 cace0353 no está en línea
Usuario muy activo
Mensajes: 508
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Versión de ROM: Stock
Versión de Radio: Stock
Tu operador: Jazztel
Mencionado: 11 comentarios
Tagged: 0 hilos
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!
Responder Con Cita
Gracias de parte de:


  #40  
Viejo 10/03/16, 09:58:36
Avatar de maid450
maid450 maid450 no está en línea
Miembro del foro
Mensajes: 450
 
Fecha de registro: sep 2009
Localización: Valencia
Mensajes: 450
Modelo de smartphone: Nexus 5 / Nexus 7
Versión de Radio: Cualquiera que ponga buen Rock
Tu operador: Yoigo
Mencionado: 15 comentarios
Tagged: 0 hilos
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   HTCMania > Todo sobre Android > Otro software para Android > Tasker

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 11:30:53 (GMT +1)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007