Pedro Lara {Dev}

Pedro Lara {Dev}

Código, Libros y Podcast

Cómo conectar un micrófono USB a un celular

Herramientas usadas : 1. Hub Atolla : Atolla - Hub USB 3.0 de 4 puertos con 4 puertos de datos USB 3.0 y 1 puerto de carga inteligente USB, https://amzn.to/2RXRLcV 2. Cable OTG tipo C: https://amzn.to/3iQdMoO 3. Cable OTG tipo Micro USB: https://amzn.to/3xp9WY8


Todo lo que necesitas 👇👇👇👇👇👇




Uno Platform: La revolución

Cuando surgieron Ionic y React Native fue algo revolucionario, porque nos permitieron desarrollar aplicaciones móviles  (IOS como para Android principalmente) usando un mismo código. Sin embargo, seguíamos desarrollando para web con otras herramientas (.NET, PHP, React, Angular, etc).  Ahora, hace apenas 3 años, la comunidad Open Source presentó Uno Platform que al igual que los framework y librerías ya mencionados, permite desarrollar aplicaciones móviles , pero agrega la novedad de ese mismo código que se utiliza para desarrollar  aplicaciones móviles , poder utilizarlo  para crear aplicaciones de  escritorio y aplicaciones WebAssembly . Quizás, por ser Uno Platform una herramienta relativamente nueva, todavía la comunidad de desarrolladores no se ha volcado totalmente a utilizarla, pero parece prometer mucho. Ya vemos como empresas como National Geographic Learning ya usan Uno Platform.



Auditoría Informática - Guía práctica, desde cero a experto.

Quiero recomendar este curso de Auditoria Informática, elaborado por el amigo David Amarante. Puedo asegurar que es uno de los mejores cursos en esta área. El curso está elaborado en español y en inglés. En la versión en español cuenta con más de dos mil estudiantes que lo han calificado como uno de los mejores cursos en este tema de auditoría. En la versión en inglés cuenta con más de cuatro mil estudiantes.
David Amarante es Ingeniero informático y Auditor de Sistemas certificado CISA con más de 10 años de experiencia en el área de tecnología. Ha trabajado para una gran variedad de empresas como: PwC (que es la principal firma de auditoría a nivel mundial), en bancos comerciales, cadenas de supermercado, fábricas, líneas farmacéuticas, hoteles entre otros.





In this course David Amarante show you how fun, easy and fast it can be to learn Systems Auditing. The classes are designed in a dynamic and practical way, made up of short videos with precise information and illustrated examples, based on the 5 domains of the CISA Certification Preparation Manual, so it will be an excellent guide if you decide to embark on the path to certification. international in systems auditing.
At the end you will know:
- Conduct regular audits
- How the audit department is managed
- What are the steps to plan and conduct an audit
- What is the operation of IT governance.
- Audit system operations and maintenance
- Types and forms of cybercrime and attack methods.
The systems audit is responsible for collecting, grouping and evaluating evidence to determine whether computer systems safeguard assets and maintain data integrity, through the effective use of the organization's resources. The systems audit seeks the availability, integrity, veracity and privacy of the information through validation techniques and recommendations based on best practices and international standards.
This function can operate internally or externally to the company. The internal audit is carried out by an internal agent of the company whose function is to carry out a professional, objective and critical analysis as a result of the evaluation of internal controls and the faithful fulfillment of plans in order to improve the operations of the company. In turn, the external audit is carried out by independent personnel who carry out revision work in different management areas of the company, to determine the efficiency they have in the development of their functions.

Subiendo imágenes en React Native y Firebase con React

Pedro Lara

En esta ocasión me propongo compartir estos pasos para subir  una una imagen en una aplicación creada con React Native y Expo. 

 


Para este ejemplo asumimos que ya disponemos de un proyecto creado en firebase con una ruta llamada “/imagenes” en la que vamos a guardar nuestras imágenes.

Lo primero que vamos a hacer es instalar las dependencias necesarias para poder hacer uso de la Gallery de nuestro teléfono:

expo install expo-permissions

También debemos instalar image Picker:

expo install expo-image-picker

 

Vamos a crear un componente llamado perfil_component y tres métodos que se encargarán de realizar todo el proceso dese validar los permisos de acceder a la galería de imágenes hasta enviar las imágenes a Firebase:

 

changePhoto()                    “Se ejecutará al presionar un icono para subir una imagen

loadImageFromGallery()   Se encargará validar los permisos de acceder a la        galería de imágenes de acceder a ella

uploadImage()                     Se encargará de subir la imagen a Firebase

fileToBlob()                          Se encargará de convertir la imagen a blob

updateProfile()                    Se encargará de actualizar la imagen en el perfil del usuario

 

1.    Creando el componenente perfil_component

 

Creamos un componente al que llamaremos perfil_component. En este nuevo componente vamos a hacer uso de un avatar que nos ofrece react. Hacemos el import desde react-native-elements:

perfil_component.js

import { Avatar } from 'react-native-elements';

import React from 'react';

import { Text, View, Image } from 'react-native';

import { Avatar } from 'react-native-elements';

 

 

export default function App() {

  return (

    <View>

      <Avatar

       rounded

       size= "large"

       source={{

       uri:

       'https://s3.amazonaws.com/uifaces/faces/twitter/ladylexy/128.jpg',

      }}

    />

    </View>

  );

}

El componente avatar recibe varios parámetros los cuales podemos ver en la documentación oficial, pero para nuestro caso, solo usaremos tres: rounded,  source y size.

Creamos un evento onPress en nuestro avatar para poder capturar cuando el usuario toque la imagen. Este evento onPress llamará una función que llamaremos onChangePhoto. Este método llamará a otro método llamado loadImageFromGallery el cual crearemos en nuestro Helpers:

 

import { Avatar } from 'react-native-elements';

import React from 'react';

import { Text, View, Image } from 'react-native';

import { Avatar } from 'react-native-elements';

 

 

export default function App() {

  return (

    <View>

      <Avatar

       rounded

       size= "large"

       source={{

       uri:

       'https://s3.amazonaws.com/uifaces/faces/twitter/ladylexy/128.jpg',

      }}

     onPress={()=>{

           changePhoto()}

       }

    />

    </View>

  );

}

2.    Creando el método changePhoto()

const changePhoto = async ()=>{

        const result = await loadImageFromGAllery([1,1])

        if(!result.status){

            return

        }

 

        const resultUploadImage = await uploadImage(result.image, "imagenes", user.uid)

        if(!resultUploadImage.statusResponse){

            setLoading(false)

            Alert.alert("Ha ocurrido un error al almacenar la imagen")

            return

 

        }

        const resultUpdateProfile = await updateProfile({protoURL: resultUploadImage.url})

        if(resultUpdateProfile.statusResponse){

           

            setPhotoURL(resultUploadImage.url)

           

        }else{

            Alert.alert("Ha ocurrido un error al actualizar la imagen de perfil")

        }

    }

 

3.    Creando el método loadImageFromGallery

El método loadImageFromGallery  se encargará de validar los permisos de acceder a la galería de imágenes así como cargar la imagen. En nuestro fichero helpers.js importamos la validación de permisos que nos ofrece expo, así como la función ImagePicker que nos permite acceder a las imágenes. Luego implementamos la subida de imágenes:

 

helpers.js

import * as Permissions from 'expo-permissions'

import * as ImagePicker from 'expo-image-picker'

 

Dentro de nuestro método loadImageFromGAllery creamos la implementación para acceder a la galería de imágenes de nuestro teléfono:

 

export const loadImageFromGAllery = async(array)  =>{

    const response = { status: false, images: null }

    const resultPermisions = await Permissions.askAsync(Permissions.CAMERA)

    if(resultPermisions.status == 'denied'){

        Alert('Debes de darle permisos para accedera la imagenes del telfono')

        return response

    }

    const result = await ImagePicker.launchImageLibraryAsync({

        allowsEditing: true,

        aspect: array

    })

    if(result.cancelled){

        return response

    }

    response.status = true

    response.iamge = result.uri

    return response;

}

La función Permissions.askAsync le pregunta al usuario si desea otorgar permisos de la Gallería de imagines a la aplicación.  Con el parámetro allowsEditing: true habitamos que el usuario pueda editar la imagen seleccionada. Con aspect: array le pasamos las dimensiones de la imagen. Con result.cancelled validamos si el usuario cancela la acción antes de guardar la imagen. Mientras que con result.uri obtenemos la ruta de la imagen seleccionada.

4.    Creando el método uploadImage()

export const uploadImage = async(image, path, name)=>{

     const result = {statusResponse: false, error: null, url:null}

     const ref = firebase.storage().ref(path).child(name)

     const blob = await fileToBlob(image)

    try{

        await ref.put(blob)

        const url = await firebase.storage().ref(`${path}/${name}`).getDownloadURL()

        result.statusResponse =true

        result.url = url

    }catch(error){

        result.error = error

        console.log(error)

    }

   

    return result

 

}

 

5.    Crenado e método fileToBlob()   

Aprovechamos y creamos otro método en nuestro fichero helper.js para convertir la imagen en blob.

export const fileToBlob = async(path)=>{

    const file = await fetch(path)

    const blob = await file.blob()

    return blob

}

 

 

6.    Creando el método updateProfile()

 

export const updateProfile = async(data)=>{

    const result = {statusResponse:true, error:null}

    try{

        await firebase.auth().currentUser.updateProfile(data)

    }catch(error){

        result.statusResponse = false

        result.error = error

    }

    console.log(result)

    return result

}

 

VIDEOS QUE TE PUEDEN INTERESAR:










Salto La Golondrina, municipio Salcedo, provincia de Hermanas Mirabal, República Dominicana

En el municipio de Salcedo, provincia de Hermanas Mirabal, República Dominicana, se encuentra el Salto La Golondrina, que junto a otros saltos conforman un hermoso lugar para pasarla bien. Estuve visitando el lugar por primera vez y creo que lo repetiré todas las veces que pueda. 

Ubicación: https://goo.gl/maps/KehiBMgJMBQZv17S7

La ruta de accesso no está en buenas condiciones, pero se puede transitar, sólo teniendo la precaución que en tiempos de lluvia puede haber mucho lodo que dificulta que los vehículos pueden pasar con facilidad. Luego, es necesario caminar hacia los saltos, un trayecto de alrededor de 30 minutos. Al llegar  vale la pena haber caminado, se disfruta mucho.