Podemos unirnos a un dominio (teniendo acceso) desde Windows 10, a través del CMD o PowerShell?

Sé que por GUI, podemos acceder fácilmente, pero me gustaría saber si es posible desde CMD o PowerShell.

android – ¿Como puedo compartir una imagen desde una PWA Safari?

Tengo el siguiente código para compartir una imagen desde una PWA hacia otra aplicación nativa que funciona como se supone en Chrome Android, pero en Safari IOS no funciona y no me dice el error

El html/css:

<img id="edition" class="rounded-lg" src="{{ env('IMAGE_PREFIX') . $edition->edition_url ?? '' }}" onclick="viewAny('#edition')" alt="image" style="min-width:18rem; max-width:18rem; min-height:12rem; max-height:12rem; object-fit:cover; object-position: 15% 15%;"/>
<span class="non-selectable absolute right-1 bottom-10 rounded-full bg-green-500 text-white py-1 px-2" onclick="postNow()">Post now</span>

El js:

    // POST NOW
    async function postNow() {
        try {

            var image = document.querySelector('#edition');
            var imageUrl = image.src;
            var response = await fetch(imageUrl);
            var blob = await response.blob();
            var file = new File((blob), 'image.jpg', {type: blob.type});
            await navigator.share({files: (file)});
            window.alert('YES');

        } catch (error) {

            console.log(error.name, error.message);
            window.alert('NO - ' + error.name + ' - ' + error.message);

        };
    }

¿Hay alguna manera de hacer funcionar esto en Safari?

Cargar imagen desde URL Instgram | HTML

Estoy intentando descargar una imagen desde el url de instagram (facebook) pero html no la detecta.

Este es el url:

https://scontent-lga3-2.cdninstagram.com/v/t51.2885-19/s320x320/130477898_122202759624805_2855205189155619342_n.jpg?tp=1&_nc_ht=scontent-lga3-2.cdninstagram.com&_nc_ohc=-ltQdzLz8mwAX_8yLNU&edm=AAuNW_gBAAAA&ccb=7-4&oh=eede2a3048dea55becdf126f5d39e58c&oe=60CC00C5&_nc_sid=498da5

Obviamente al darle click el mismo funciona, pero al incrustarlo en mi html no.

En la siguiente imagen se puede ver la seccion de instagran no tiene imagen y el texto
profile pic es el texto alt del img

Imagen de dashboard mostrando error

introducir la descripción de la imagen aquí

Si ejecutan este bloque de código podran ver a lo que me refiero.

    <img src="https://scontent-lga3-2.cdninstagram.com/v/t51.2885-19/s320x320/130477898_122202759624805_2855205189155619342_n.jpg?tp=1&_nc_ht=scontent-lga3-2.cdninstagram.com&_nc_ohc=-ltQdzLz8mwAX_8yLNU&edm=AAuNW_gBAAAA&ccb=7-4&oh=eede2a3048dea55becdf126f5d39e58c&oe=60CC00C5&_nc_sid=498da5" alt="image not load"/>

¿por qué pasa esto?

¿Es posible? Llamar a algoritmo principal desde subalgoritmo PSeInt

tengo un inconveniente y creería yo que es error de PSeInt, les comento lo que sucede…

He creado un algoritmo (algo extenso), prácticamente todo funciona ok, sin embargo encuentro un ligero fallo y es que al salir de un único condicionar (Validar si la base de datos está llena) en un único subproceso (ingresar()), PSeInt no se sale sino que después de la línea (FinSubProceso), continua dentro del mismo proceso y se devuelve 4 líneas arriba, quedando de ésta manera dentro de un ciclo “Repetir” donde indica la finalización de un proceso de registro. Cabe aclarar que al darle la opción correcta para salir a éste ciclo, entonces ahí si que sale del Subproceso y va al menú en el proceso principal.

Todos los demás subprocesos me funcionan correctamente incluso el mismo subproceso siempre y cuando no entra en la condicional que indica que la base de datos (Vector en este caso) está llena.

Si alguien puede revisarlo en su PSeInt y decirme si les pasa lo mismo y quizás si hay alguna manera de controlar este evento, se los agradezco muchísimo. Copiaré el código separado por subprocesos ya que es muy largo y el mismo depende de todos los subalgoritmos, es por ello que no copio tan solo la parte del error.

ALGORITMO PRINCIPAL

Algoritmo tiendaComercial
    Definir  opciones, cantRegistros Como Entero;
    
    Escribir "Defina cuantos registros que tendrá la base de datos.";
    Leer cantRegistros;
    
    Escribir "===== > Creando la base de datos. < =====";
    Escribir  "";
    Dimension documento(cantRegistros), nombres(cantRegistros), saldo(cantRegistros), activo(cantRegistros);    
    
    Repetir
        Limpiar Pantalla;
        Escribir "************* MENÚ PRINCIPAL *************";
        Escribir "===== > Seleccione una opción (Número). < =====";
        Escribir  "1. Consultar.";
        Escribir  "2. Ordenar de menor a mayor.";
        Escribir  "3. Eliminar.";
        Escribir  "4. Ingresar.";
        Escribir  "9. Terminar.";
        
        Leer opciones;
        
        Segun opciones
            1:
                consultar(documento, nombres, saldo, activo, cantRegistros);
            2:
                ordenar(documento, nombres, saldo, activo, cantRegistros);
            3:
                eliminar(documento, nombres, saldo, activo, cantRegistros);
            4:
                ingresar(documento, nombres, saldo, activo, cantRegistros);
            9:
                Escribir "Finalizando sesión...";               
            De Otro Modo:
                Limpiar Pantalla;
                Escribir "************* MENÚ PRINCIPAL *************";
                Escribir "Opción no válida!, ingrese una opción válida...";
                Esperar 2 Segundos;
        FinSegun        
    Hasta Que opciones = 9  
FinAlgoritmo

SUBALGORITMO PARA CONSULTA DE REGISTROS

//Creando Subproceso para consultar registros
SubProceso consultar (documento Por Referencia, nombres Por Referencia, saldo Por Referencia, activo Por Referencia, cantRegistros Por Valor)
    Definir option, registro Como Entero;   
    Definir respuesta Como Logico;
    Limpiar Pantalla;   
    
    Escribir "===== CONSULTANDO UN REGISTRO =====";
    Escribir "Seleccione 1. Consultar por documento.";
    Escribir "Seleccione 2. Listar todos los registros.";   
    Escribir "Seleccione 3. Salir.";    
    Leer option;
    Escribir "";
    
    Repetir     
        Segun option
            1:
                Escribir "Ingrese el documento a consultar";
                Leer registro;
                
                //Buscamos en los registros el documento ingresado
                Para i = 0 Hasta cantRegistros-1 Con Paso 1 Hacer
                    si registro = documento(i) Entonces
                        respuesta = Verdadero;              
                    FinSi
                FinPara
                
                // Verificamos si la búsqueda arrojó algun resultado
                si respuesta = Verdadero Entonces                   
                    // Si lo encontró mostramos la información del registro
                    Para i = 0 Hasta cantRegistros-1 Con Paso 1 Hacer
                        si registro = documento(i) Entonces
                            Limpiar Pantalla;
                            Escribir "";
                            Escribir "===== CONSULTANDO UN REGISTRO =====";
                            Escribir "Documento: ", documento(i);
                            Escribir "Nombres: ", nombres(i);
                            Escribir "Saldo: $", saldo(i);
                            
                            si activo(i) = "1" Entonces
                                Escribir "Activo: SI";
                            SiNo
                                Escribir "Activo: NO";
                            FinSi                           
                            Escribir "";
                            Escribir "Presione ENTER para regresar al menú principal";
                            Esperar Tecla;
                        FinSi
                    FinPara
                SiNo
                    Repetir
                        // Si el registro no existe, informamos que no se encontró
                        Limpiar Pantalla;                   
                        Escribir "===== CONSULTANDO UN REGISTRO =====";
                        Escribir "Ooops!! Registro no encontrado ¿Desea registrarlo?";
                        Escribir "1. Si";
                        Escribir "2. No";               
                        Leer option;
                        
                        Segun option
                            1:
                                ingresar(documento, nombres, saldo, activo, cantRegistros);                 
                            2:                              
                                Limpiar Pantalla;
                                Escribir "===== CONSULTANDO UN REGISTRO =====";
                                Escribir "Saliendo del proceso de consulta...";
                                Esperar 2 Segundos;
                            De Otro Modo:
                                Escribir "Opción incorrecta! elige una opción válida...";
                                Esperar 2 Segundos;
                        FinSegun
                    Hasta Que option = 2
                FinSi
                option = 3;
            2:
                // Verificamos posiciones llenas en el vector   
                cantReg = disponibilidad (documento, cantRegistros);
                
                si cantReg > 0 Entonces
                    Limpiar Pantalla;
                    Escribir "===== LISTANDO TODOS REGISTROS =====";
                    // Listamos todos los registros de la base datos
                    listar(documento, nombres, saldo, activo, cantReg);
                    Escribir "";
                    Escribir "Presione ENTER para continuar...";
                    Esperar Tecla;
                    option = 3;
                SiNo
                    Limpiar Pantalla;
                    Escribir "===== LISTANDO TODOS REGISTROS =====";
                    Escribir "La base de datos está vacía!";
                    Escribir "";
                    Esperar 2 Segundos;
                    option = 3;
                FinSi               
            3:
                Escribir "Regresando al menú principal...";
                Escribir "";
                Esperar 2 Segundos;
            De Otro Modo:
                Limpiar Pantalla;
                Escribir "===== LISTANDO TODOS REGISTROS =====";
                Escribir "Opción incorrecta!, elige una opción válida...";
                Escribir "";
                Esperar 2 Segundos;
                consultar(documento, nombres, saldo, activo, cantRegistros);
        FinSegun        
    Hasta Que option = 3
FinSubProceso

SUBALGORITMO PARA INGRESAR REGISTROS

//Creando Subproceso para ingresar registros
SubProceso ingresar (documento Por Referencia, nombres Por Referencia, saldo Por Referencia, activo Por Referencia, cantRegistros Por Valor)
    Definir option, indice, cantReg, nDocumento Como Entero;
    Definir detener, dupliDocumento, dupliNombre, continuar Como Logico;
    Definir nNombre Como Caracter;  
    
    continuar = Falso;
    
    // Verificamos posiciones llenas en el vector   
    cantReg = disponibilidad (documento, cantRegistros);
    
    si cantReg > 0 Entonces
        indice = (cantReg + 1)-1;
    SiNo
        indice = 0;
    FinSi       
    
    si cantReg = cantRegistros Entonces
        Repetir
            Limpiar Pantalla;
            Escribir "===== CREANDO NUEVO REGISTRO =====";
            Escribir "No hay espacios libres en la base de datos...";
            Escribir "=== > ¿Desea eliminar un registro?..  ";
            Escribir "1. Si";
            Escribir "2. No";
            Leer option;
            
            segun option
                1:
                    eliminar(documento, nombres, saldo, activo, cantRegistros);
                2:
                    Escribir "Regresando al menú principal...";
                    Esperar 2 Segundos;
                De Otro Modo:
                    Escribir "Opción no válida!, elige una opción válida...";
                    Esperar 2 Segundos;
            FinSegun
        Hasta Que option = 2;
    FinSi
    
    Si cantReg < cantRegistros Entonces
        Repetir
            Limpiar Pantalla;
            Escribir "===== CREANDO NUEVO REGISTRO =====";
            Repetir
                Escribir "Escriba documento a registrar...";
                Leer nDocumento;                
                dupliDocumento = validador(documento, nombres, cantRegistros, nDocumento, 1);
                
                si dupliDocumento = Verdadero Entonces
                    Escribir "Este documento ya existe!...";
                    Escribir "";
                    continuar = Falso;
                SiNo
                    Repetir
                        Escribir "Escriba el nombre del cliente...";
                        Leer nNombre;
                        dupliNombre = validador(documento, nombres, cantRegistros, nNombre, 2);
                        
                        Si dupliNombre = Verdadero Entonces
                            Escribir "";
                            Escribir "Nombre ya existe con documento diferente, ¿desea registrarlo?.";
                            Escribir "Escriba 1. Si quiero registrarlo";
                            Escribir "Escriba 2. No quiero elegir otro nombre";
                            Leer option;
                            
                            segun option
                                1:
                                    continuar = Verdadero;
                                De Otro Modo:
                                    continuar = Falso;                              
                            FinSegun
                        SiNo
                            continuar = Verdadero;
                        FinSi                       
                    Hasta Que continuar = Verdadero;
                FinSi               
            Hasta Que continuar = Verdadero;
            documento(indice) = nDocumento;
            nombres(indice) = nNombre;
            
            Escribir "Escriba el saldo del cliente...";
            Leer saldo(indice);
            Repetir
                Escribir "¿Cliente activo? 1= SI 2= NO...";
                Leer activo(indice);
            Hasta Que activo(indice) = "2" o activo(indice) = "1"
            
            ordenados(documento, nombres, saldo, activo, cantRegistros, 1);
            Repetir
                Limpiar Pantalla;
                Escribir "===== REGISTRO EXITOSO =====";
                Escribir "¿Desea agregar otro registro?.. 1 = SI, 2 = NO";
                Leer option;
                
                Segun option
                    1:
                        ingresar(documento, nombres, saldo, activo, cantRegistros);                                 
                    2:
                        detener = Verdadero;
                        Escribir "Regresando al menú principal...";
                        Esperar 2 Segundos;
                    De Otro Modo:                   
                        Escribir "Opción incorrecta!, regresando al menú principal...";
                        Esperar 2 Segundos; 
                FinSegun
            Hasta Que option =2;
        Hasta Que detener = Verdadero;
    FinSi
FinSubProceso

SUBALGORITMO PARA ELIMINAR REGISTROS

//Creando Subproceso para eliminar registros
SubProceso eliminar (documento Por Referencia, nombres Por Referencia, saldo Por Referencia, activo Por Referencia, cantRegistros Por Valor)
    Definir option, auxiliar, totalRegistros, cantReg Como Entero;
    
    // Verificamos posiciones llenas en el vector   
    cantReg = disponibilidad (documento, cantRegistros);    
    
    Escribir "===== ELIMINAR UN REGISTRO =====";
    Escribir "Actualmente estos son los registros de la base de datos, ¿Cual desea eliminar?...";   
    listar(documento, nombres, saldo, activo, cantReg); 
    Leer option;
    
    si option-1 >= cantReg Entonces
        Limpiar Pantalla;
        Escribir "===== ELIMINAR UN REGISTRO =====";
        Escribir "El registro a eliminar no existe!.. Regresando";
        Esperar 2 Segundos;
    SiNo
        auxiliar = option;
        
        Mientras auxiliar <= cantReg-1 Hacer
            // Eliminando el registro
            documento(option-1) = documento(auxiliar);
            nombres(option-1) = nombres(auxiliar);
            saldo(option-1) = saldo(auxiliar);
            activo(option-1) = activo(auxiliar);
            
            auxiliar = auxiliar+1;
        Fin Mientras
        
        documento(auxiliar-1) = 0;
        nombres(auxiliar-1) = "";
        saldo(auxiliar-1) = 0;
        activo(auxiliar-1) = "";        
        
        // Reordenamos la lista de la base de datos
        ordenados(documento, nombres, saldo, activo, cantRegistros, 1);
        // Verificamos posiciones llenas en el vector   
        cantReg = disponibilidad (documento, cantRegistros);    
        
        Limpiar Pantalla;
        // Mostramos los registros restantes
        Escribir "===== Registro eliminado con éxito. =====";   
        Si cantReg > 0 Entonces
            listar(documento, nombres, saldo, activo, cantReg);
            Escribir "";
            Escribir "Presione ENTER para salir";
            Esperar Tecla;
        SiNo
            Escribir "¡URRAAA!.. La base de datos ahora está vacía!";
            Escribir "";
            Escribir "Presione ENTER para regresar al menú Principal";
            Esperar Tecla;
        FinSi
    FinSi   
FinSubProceso

SUBALGORITMO PARA ESTABLECER UN ORDEN EN LOS REGISTROS

//Creando Subproceso para ordenar los registros
SubProceso ordenar (documento Por Referencia, nombres Por Referencia, saldo Por Referencia, activo Por Referencia, cantRegistros Por Valor)
    Definir orden, cantReg Como Entero;
    
    // Verificamos posiciones llenas en el vector   
    cantReg = disponibilidad (documento, cantRegistros);
    
    Si cantReg > 1 Entonces
        Repetir
            Limpiar Pantalla;
            Escribir "===== Orden actual de la base de datos =====";
            listar(documento, nombres, saldo, activo, cantReg);
            
            Escribir "";
            Escribir "Seleccione 1. Para ordenar de MENOR a MAYOR por Documento";
            Escribir "Seleccione 2. Para ordenar de MAYOR a MENOR por Documento";
            Leer orden;
            
            Si orden < 1 o orden > 2 Entonces
                Escribir "";
                Escribir "Opción incorrecta!, elige una opción válida...";
                Esperar 2 Segundos;
            FinSi
        Hasta Que orden <= 2
        
        ordenados(documento, nombres, saldo, activo, cantRegistros, orden);
        
        Escribir "";
        Escribir "===== Base de datos Ordenada  =====";
        listar(documento, nombres, saldo, activo, cantReg);
        Escribir "";
        Escribir "Presione ENTER para volver al menú principal...";
        Esperar Tecla;
    SiNo
        Si cantReg = 1 Entonces
            Limpiar Pantalla;
            Escribir "===== ORDENAR BASE DE DATOS =====";
            listar(documento, nombres, saldo, activo, cantReg);
            Escribir "";
            Escribir "No hay suficientes registros para ordenar.";
            Escribir "Presione ENTER para regresar al menú princial...";
            Esperar Tecla;
        SiNo
            Limpiar Pantalla;
            Escribir "===== ORDENAR BASE DE DATOS =====";
            Escribir "Esta base de datos no tiene registros para ordenar...";
            Esperar 2 Segundos;
        FinSi
    FinSi   
FinSubProceso

SUBALGORITMO PARA ORDENAR REGISTROS SEGUN ORDEN ENVIADO

// Estableciendo orden general
SubProceso ordenados (documento Por Referencia, nombres Por Referencia, saldo Por Referencia, activo Por Referencia, cantRegistros Por Valor, nOrden Por Valor)
    Definir cantReg Como Entero;
    
    Segun nOrden        
        1:          
            // Ordeno de Mayor a menor segun la cantidad total de cupos
            Para i=0 Hasta cantRegistros-1 Con Paso 1 Hacer
                Para j=i+1 Hasta cantRegistros-1 Con Paso 1 Hacer
                    si documento(i) < documento(j) Entonces
                        //Ordenando los documentos
                        tmpDocumento = documento(i);
                        documento(i) = documento(j);
                        documento(j) = tmpDocumento;
                        
                        //Ordenando los nombres
                        tmpNombre = nombres(i);
                        nombres(i) = nombres(j);
                        nombres(j) = tmpNombre;
                        
                        //Ordenando los saldos
                        tmpSaldo = saldo(i);
                        saldo(i) = saldo(j);
                        saldo(j) = tmpSaldo;
                        
                        //Ordenando los activos
                        tmpActivo = activo(i);
                        activo(i) = activo(j);
                        activo(j) = tmpActivo;                          
                    FinSi
                FinPara
            FinPara
            
            // Verifico cuantos cupos hay llenos 
            cantReg = disponibilidad (documento, cantRegistros);
            
            // Ordeno de Menor a Mayor unicamente los cupos que contienen datos en el vector
            Para i=0 Hasta cantReg-1 Con Paso 1 Hacer
                Para j=i+1 Hasta cantReg-1 Con Paso 1 Hacer
                    si documento(i) > documento(j) Entonces
                        //Ordenando los documentos
                        tmpDocumento = documento(i);
                        documento(i) = documento(j);
                        documento(j) = tmpDocumento;
                        
                        //Ordenando los nombres
                        tmpNombre = nombres(i);
                        nombres(i) = nombres(j);
                        nombres(j) = tmpNombre;
                        
                        //Ordenando los saldos
                        tmpSaldo = saldo(i);
                        saldo(i) = saldo(j);
                        saldo(j) = tmpSaldo;
                        
                        //Ordenando los activos
                        tmpActivo = activo(i);
                        activo(i) = activo(j);
                        activo(j) = tmpActivo;                          
                    FinSi
                FinPara
            FinPara
        2:
            // Ordeno de Mayor a menor segun la cantidad total de cupos
            Para i=0 Hasta cantRegistros-1 Con Paso 1 Hacer
                Para j=i+1 Hasta cantRegistros-1 Con Paso 1 Hacer
                    si documento(i) < documento(j) Entonces
                        //Ordenando los documentos
                        tmpDocumento = documento(i);
                        documento(i) = documento(j);
                        documento(j) = tmpDocumento;
                        
                        //Ordenando los nombres
                        tmpNombre = nombres(i);
                        nombres(i) = nombres(j);
                        nombres(j) = tmpNombre;
                        
                        //Ordenando los saldos
                        tmpSaldo = saldo(i);
                        saldo(i) = saldo(j);
                        saldo(j) = tmpSaldo;
                        
                        //Ordenando los activos
                        tmpActivo = activo(i);
                        activo(i) = activo(j);
                        activo(j) = tmpActivo;                          
                    FinSi
                FinPara
            FinPara     
    FinSegun    
FinSubProceso

SUBALGORITMO PARA CONTAR REGISTROS EN EL VECTOR

// Creamos función para contar las posiciones llenas en el vector
Funcion totalRegistros <- disponibilidad (documento Por Referencia, cantRegistros Por Valor)
    // Verificamos posiciones llenas en el vector
    Para i=0 hasta cantRegistros-1 Con Paso 1 Hacer
        si documento(i) <> 0 Entonces
            totalRegistros = totalRegistros+1;
        FinSi
    FinPara 
FinFuncion

SUBALGORITMO PARA LISTAR LOS REGISTROS DE LOS VECTORES

// Proceso para listar todos los registros de la base de datos
SubProceso listar (documento Por Referencia, nombres Por Referencia, saldo Por Referencia, activo Por Referencia, cantRegistros Por Valor)
    
    Para  i=0 Hasta cantRegistros-1 Con Paso 1 Hacer        
        si activo(i) = "1" Entonces         
            Escribir i+1,". Documento: ", documento(i), ", Nombre: ", nombres(i), ", Saldo: ", saldo(i), ", ¿Activo?: SI";
        SiNo            
            Escribir i+1,". Documento: ", documento(i), ", Nombre: ", nombres(i), ", Saldo: ", saldo(i), ", ¿Activo?: NO";
        FinSi
    FinPara
FinSubProceso

SUBALGORITMO PARA VALIDAR REGISTROS DUPLICADOS

Funcion duplicado <- validador (documento Por Referencia, nombres Por Referencia, cantRegistros Por Valor, regValidar Por Valor, vectorValidar Por Valor)
    
    Segun vectorValidar
        1:
            Para  i=0 Hasta cantRegistros-1 Con Paso 1 Hacer
                si regValidar = documento(i) Entonces
                    duplicado = Verdadero;
                FinSi
            FinPara
        2:
            Para  i=0 Hasta cantRegistros-1 Con Paso 1 Hacer
                si regValidar = nombres(i) Entonces
                    duplicado = Verdadero;
                FinSi
            FinPara
    FinSegun        
FinFuncion

Desde ya, gracias por tomarte el tiempo de revisarlo y decirme si te sucede el mismo fallo que me presenta.

RECUERDA: El fallo es cuando intentas hacer un nuevo registro estando los vectores llenos, puedes establecer un tamaño de vector de 1 elementos, registrarlo e intentar registrar de nuevo otro, te dirá que la base de datos está llena y te pregunta si quieres eliminar 1 registro, al indicar la opción 2, justo ahí es cuando no se sale del subproceso y se devuelve a la línea que indico al inicio de la pregunta.

Adjunto algunas capturas que describen la falla.

1.Muestra cuando llega al final del Subproceso
Muestra cuando llega al final del Subproceso

2.Muestra la línea a la que salta sin salir del subproceso
Muestra la línea a la que salta sin salir del subproceso

3.Muestra el ciclo en el que queda luego de fallar la salida del subproceso
Muestra el ciclo en el que queda luego de fallar la salida del subproceso

Python – ejecutar tests desde otro directorio

Tengo la siguiente estructura de carpetas:

Directorio | Data
           | Test
                | Test_Funcion1.py
                | Test_Funcion2_py
           | Funcion1.py
           | Funcio2.py
           | __init.py

He definido un __init__.py para poder usar de forma global el ‘Directorio’ pero no sé si es correcto este primer paso.

Quiero ejecutar Test_Funcion1.py, que es el test para la Funcion1.py, los cuales se ven de la siguiente manera:

Funcion1.py

def suma(a,b):
    return a+b

Test_Funcion1.py

from funcion1 import suma

class TestDataExpl(unittest.TestCase):
   def test_suma(self):
       resultado = suma (3,4
       self.assertEqual(resultado, 7)

suite = unittest.TestLoader().loadTestsFromTestCase(TestDataExpl)

Desde el terminal, estando situado en el directorio Test, ejecuto el código

coverage run test_Funcion1.py

El error que obtengo es:

  File "test_concern_level.py", line 3, in <module>
    from Funcion1 import suma
ModuleNotFoundError: No module named 'Funcion1'

Creo que el error es que estoy haciendo algo mal con los directorios.

Cómo puedo mantener la estructura de directorios para ejecutar desde la de Test cada uno de los test de las funciones?

Muchas gracias.

angular – Como ejecutar o iniciar un robot desde una aplicación java con spring boot?

quiero saber si se puede ejecutar desde el framework spring boot un programa de robot que haga otras acciones ya previamente configuradas, en otra palabras que con un controlador desde spring boot me inicie un robot que haga por ejemplo abrir un navegador y vaya a una url de google, por decir algo.

Quisiera saber si eso es posible y como podría hacerlo, de antemano gracias.

leer json desde php(laravel) – Stack Overflow en español

como se podria acceder al “name” que está ubicado en league?

pude acceder a lastName con esto:

$url = "https://www.easports.com/fifa/ultimate-team/api/fut/item";
$response = Http::get($url);
$data = $response->json(('items'));

foreach ($data as $obj) {         
     $name = "nombre de jugador: ". $obj('firstName') . '<br>';
     print ($name);
            
}

"items": ({
  "commonName": "Cristiano Ronaldo",
  "firstName": "C. Ronaldo",
  "lastName": "dos Santos Aveiro",
  "league": {
    "imageUrls": {},
    "abbrName": "ITA 1",
    "id": 31,
    "imgUrl": null,
    "name": "Serie A TIM"
  },

}),

Estoy obteniendo los datos de https://www.easports.com/fifa/ultimate-team/api/fut/item

Como desSSL desde JAVA en MySQL

Cada vez que tengo una conexión con mi base de datos me aparece el siguiente mensaje:
You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

He visto maneras de deshabilitar pero ninguno coincide con la estructura de mi conexión, que es:
Connection conex = DriverManager.getConnection("jdbc:mysql://localhost:3306/comercial", "root", "");

Con esta estructura de conexión como podría deshabilitarla?. Ya que varios dicen escribir al final useSSL = false pero no me funciona.

Desde ya muchas gracias.

Tabla en html y php desde mysql

queria saber como se puede hacer una tabla que en lugar de mostrar los registros de una bbbdd por columnas me los muestre dentro de una misma celda. Tengo en cada registro (legajo, nombre, dni) y quiero poder hacer una tabla en html con 3 columnas y que cada celda me muestra los datos de todo el gristro.
En las imagenes muestro mi codigo el cual lee una bbdd y genera un codigo de barras con el legajo del empleado, pero a su vez quiero que en el mismo codigo aparezca el nombre y otros detalles como se ve en la segunda imagen. No he podido hacerlo de otra forma que esta y no me agrada como queda.
La idea es poder imprimir en pdf, la imagen del resultado es un imprimir como pdf desde el navegador.

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

sql – ¿Cómo lograr una consulta, además que edite y elimine desde java a una base de datos en MySQL?

Estoy generando un sistema de registro de alumnos en java, utilizando como base de datos MySQL, mi sistema debe tener las funciones de Registrar, Editar, eliminar y consultar, pero no logro que funcionen las opciones de editar, eliminar y consultar, todo esto inicia con un menú donde están las 4 opciones, al darle Click a cualquiera de ellas se dirige a un formulario donde solicitara la matricula por la cual buscare el registro que deseo eliminar o cualquier otra opción.
introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí