Pedro Lara {Dev}

Pedro Lara {Dev}

Código, Libros y Podcast

Creación de diccionario griego con React Native: Planteamiento y creación del ambiente Pate 1

En esta ocasión vamos a crear una aplicación con React Native que consistirá en un diccionario Griego Koiné-Español. Este diccionario no sólo nos permitirá buscar palabras, sino que también nos mostrará el texto griego del Nuevo Testamento, y cuando el usuario haga clic en una palabra, mostrará su traducción y una lista de libros donde aparece la palabra seleccionada.

 

Además de mostrar la traducción de la palabra cliqueada, vamos a mostrar una lista de artículos y comentarios donde se habla acerca de los textos en los aparece dicha palabra.

 

Herramientas a Usar

 

1.Diccionario Griego Hebreo Strong api: https://github.com/openscriptures/strongs/blob/master/todo-diffs.txt

 

2. Texto griego del Nuevo Textamnete APi: https://github.com/tyndale/STEPBible-Data

 

3.  Api Blible https://scripture.api.bible/

 

Manos a la obra


Sigue: 

Creación de diccionario griego con React Native: Creación del api con Node Js, express, Firebase Functions y Firestore Parte 1



React Warning: Cannot update a component from inside the function body of a different component

Pedro Lara



A partir de la versión v16.13.0 de React, cuando se intenta actualizar un Hook de un componente desde el interior de otro nos muestra este warning: Warning: Cannot update a component from inside the function body of a different component

En mi caso particular, el error me aparece al intentar realizar el siguiente proceso:

Tengo un componente funcional que implementa un ListItem, si el usuario hace clic en este elemento debe llamar una función que muestra un console.log y actualiza un Hook useState. Sin embargo, esto no sucede, al contrario, me muestra el warning ya mencionado y no me actualiza el useState:

Aquí enlace el componente


import React, {useState} from 'react';

import { ListItem,Icon} from 'react-native-elements'

import { Alert, Modal, StyleSheet, Text, Pressable, View } from "react-native";

 

 

 

const OptionsAccount = ()=>{

   

    const [showModal, setShowModal] = useState(null)

    const [redeCompoenent, setRenderComponenet] = useState(null)

   

   

    const generateOptions =()=>{

        return =[

          {title: "Cambiar Nombre"

          iconNameLeft:"account-circle"

          iconColorLeft:"#DAF7A6"

          iconNameRight:"chevron-right"

          iconColorRight:"#DAF7A6"

          onPress: ()=>selectedComponent("name")

          },

          {title: "Cambiar Email"

          iconNameLeft:"account-circle"

          iconColorLeft:"#DAF7A6"

          iconNameRight:"chevron-right"

          iconColorRight:"#DAF7A6"

          onPress: ()=>selectedComponent("email")

          },

            {title: "Cambiar Password"

          iconNameLeft:"account-circle"

          iconColorLeft:"#DAF7A6"

          iconNameRight:"chevron-right"

          iconColorRight:"#DAF7A6"

          onPress: ()=>selectedComponent("password")

          }

           

        ]

    }

   

   

    const selectedComponenet = (key)=>{

         console.log(key)

       

        setShowModal(true)

    }

   

    const menuOptions = generateOptions();

    return(

   

    

          {

            list.map(menuOptions, (menu, index) => (

              

                

               

                

                  {menu.title}

                

       

                

               

              

            ))

          }

 

    

        

        Modal    

   

    )   

} 

const styles = StyleSheet.create({
   

}) 

export default OptionsAccount; 
 

Esto es estraño porque parecería que ahora no se puede realizar algo que hemos estado haciendo desde hace mucho tiempo, que además fue recomendado por el equipo de React.

He encontrado mucha información sobre este error, pero muy confusa y las soluciones que ofrecen no fueron efectivas en mi caso, por ejemplo, en https://flaviocopes.com/react-update-while-rendering-different-component/ dicen que colocando un Hook useEffect resuelve el problema, sin embargo, en mi caso no funcionó.

En este otro hilo se generó un acalorado debate en el que incluso intervino Dan Abramov creador de Redux. Pero, no ofrecen una solución efectiva en mi caso: https://github.com/facebook/react/issues/18178


En febrero del 2020 el equipo de React anunció sobre algunas advertencias que se presentarían en la versión 16.13.0: https://reactjs.org/blog/2020/02/26/react-v16.13.0.html


En mi caso, para resolver el problema,  procedí a pasarle el Hook setRednerComponent a la función selectedComponent:


onPress: ()=>selectedComponent("displayName", setRenderComponent )

Aquí el componente funcionando correctamente

¿ Qué es un CallBack? en javaScript

Pedro Lara

Cuando trabajamos con JavaScript o alguna librería basada en este lenguaje, es común  escuchar el término Call Back. Incluso, aunque no hayamos escuchado esta palabra, algo que sería inusual, es poco probable que no hayamos hecho uso de Call Back en nuestros códigos.  ¿ Qué es un  CallBack?


En palabras simples podemos decir que un  CallBack es una llamada a una función dentro de otra. El ejemplo más común del uso de call Back es con el uso de setTimeout dentro de una función. Veamos el caso.

1. Tenemos dos funciones:

//Función 1
const Corredor1 = ()=>{
  alert("Soy el corredor 1")
}

//Función 2
const Corredor2 = ()=>{
  alert("Soy el corredor 2")
}

//Ejecutamos las funciones el orden correspondiente
Corredor1();
Corredor2();

Hasta aquí todo bien. Sin embargo, si a nuestra función 1 le colocamos un setTimeout que retrase la ejecución del alert, tendremos que se ejecutará primero los datos contenidos en la segunda función. Vemos:

1. Colocamos un setTimeout dentro de nuestra función 1:

const Corredor1 = ()=>{

setTimeout(function(){
     alert("Soy el corredor 1")
}, 3000)
}

El resultado será que tendremos primero el  alert("Soy el corredor 2") y luego el  alert("Soy el corredor 1")

Este sencillo ejemplo nos puede dar la idea de la necesidad de hacer uso de un  CallBack. Para que el contenido de la función 1 se ejecute primero, aunque contenga un setTimeout que retrase su ejecución, debemos hacer uso de un Call back. Veamos:


const Corredor1 = (Corredor2)=>{
  setTimeout(function(){
     alert("Soy el corredor 1")
    Corredor2();
}, 3000)
}

De esta manera hemos logrado que nuestra primera función se ejecute siempre primero.

Micrófono económico para profesores

Sé que muchas personas expertas en diversas áreas desean empezar a realizar podcast y tutoriales, pero quizás no disponen de los recursos necesarios para invertir en los equipos necesarios como micrófonos y cámaras. En el caso del audio, que puede ser de lo mas importante al momento de transmitir contenido, disponemos de muchas marcas de buena calidad, pero que a la vez tienen precios elevados. Sin embargo, en esta ocasión quiero recomendar este micrófono de solapa que si bien es barato, no deja de darnos un audio decente para iniciar. 





Cómo conectar dos micrófonos a una sola entrada de audio de cámara DSRL

El avance de la tecnología en los teléfonos móviles y la popularización de las redes sociales ha permitido que la creación de contenido digital ya no sólo esté disponible a medios profesionales como canales de televisión o radio. En ese sentido, en los últimos años ha aumentado la cantidad de personas que suben entrevistas y podcast a Youtube, Facebook, Twitter y demás plataformas digitales que lo permiten. Pero, a diferencia de las empresas de televisión y radio, que disponen de equipos profesionales que le permiten hacer entrevistas de calidad, el usuario común no dispone de las herramientas tecnológicas , y en muchos casos, tampoco dispone de los recursos económicos  que le permitan adquirir dichas herramientas. Por ejemplo, un micrófono de solapa profesional de la serie DPA d:screet CORE 6060 Lavalier Micrófono-, de los usados en los canes de televisión, tiene un precios estimado de 549.95 dolares. Un procesador de audio Antelope Audio Discrete 8 Synergy CoreThunderbolt y interfaz de audio USB con FPGA + DSP FX Procesamiento, tiene un costo de 1599.00 dolares. De modo que montar un sistema profesional de audio o video como los canales o emisoras profesionales tiene un costo que no está al alcance del bolsillo de todos.

Como no disponemos de las herramientas profesionales que se usan en los canales de televisión o en la radio, tenemos que hacer uso de las herramientas a nuestro alcance, y una de esas herramientas son los teléfonos móviles y las cámaras DSRSL o Mirrorls. La mayoría de los teléfonos inteligentes de gama alta actuales, nos permiten  realizar entrevistas y Podcast con una calidad decente. Con el video que graban estos teléfonos no tenemos mayores dificultades mas que con la iluminación.

Uno de los mayores problemas es el audio, por esta razón vemos la cantidad de micrófonos disponibles y la competencia entre marcas premium que constantemente lanzan nuevos modelos con mejores resultados para el audio.

Uno de los mayores problemas con el audio en nuestros celulares es que hasta la fecha (año 2021) sólo disponemos de una sola entrada de audio. Esto dificulta cuando necesitamos usar más de un micrófono.

Por ejemplo, en muchas ocasiones necesitamos realizar una entrevista y necesitamos usar dos micrófonos, pero nuestros celulares y nuestras cámaras sólo disponen de una sola entrada de audio. Este problema se puede resolver de manera fácil y económica con el uso de un cable que duplique las entradas de audio de nuestro celular o nuestra cámara. 

En este caso, el cable que recomiendo es el Hosa YMM-261 - Cable de conexión estéreo (0.138 in TRS a Dual 0.138 in). Este cable se puede adquirir en la tienda de Amazon. http://geni.us/JjNBdBi

¿ Cómo funciona?

Este cable tiene una salida con un mini jack TRS (tres anillos), que es el usado en las cámaras SRL  para la recepción de audio. Tiene dos entradas  TSF (dos anillos hembra). Estas dos entradas son una para el canal Right y otra para el canal Left. Luego es posible unir estos dos canales en la edición del audio, algo que es posible hacer hasta con software gratuitos como el Audacity.




Equipos profesionales de grabación de Audio: 👇👇👇👇👇👇👇


¿ Es posible crear vida a partir de celulas sin necesidad de fecundación ?

El polémico descubrimiento de los Premio Nobel de Medicina 2012: John B. Gurdon y Shinya Yamanaka que podría cambiar el curso de la historia.

Formularios reactivos en Angular 7