Tumgik
blogdeprogramacion · 2 years
Text
Contratar hackers Mexicanos ¿Vale la pena?
Contratar hackers Mexicanos ¿Vale la pena? aparece primero en nuestro https://jonathanmelgoza.com/blog/contratar-hackers-mexicanos-vale-la-pena/
Tumblr media
Hablamos sobre contratar hackers Mexicanos y si realmente es una opción viable, revisamos que servicios se ofrecen y por supuesto que tan confiable es este servicio de hacking en el país. ¿Estás en busca de un hacker confiable? No te pierdas este artículo.
En esta época de tecnología la información es un activo muy valioso.
Por esta razón es que el servicio de los expertos en seguridad informática es cada vez más valioso y cotizado.
Muchas personas necesitan asesoría y servicios de esta índole por lo que necesitan encontrar expertos en el tema.
Como hay mucho pseudo experto en seguridad informática por todo internet nos decidimos a hacer este artículo.
¿Qué servicios de hacking se ofrecen en México?
En México se ofrecen distintos tipos de servicios de hacking.
Entre los más importantes y con mayor demanda por parte de las personas son los siguientes:
Hacking de WhatsApp
Uno de los servicios más buscados en Internet se refiere a la principal red de mensajería, WhatsApp.
Hacking de Facebook
Por supuesto no podía faltar una de las redes sociales más estables y populares de antaño, Facebook.
Hacking de Instagram
Una red social de moda en los últimos años no puede faltar en esta lista de servicios más demandados.
Hacking de Páginas Web
Relacionado con obtener accesos a sitios web o plataformas web tenemos el servicio de hackeo de páginas.
Hacking de Base de datos
Muy solicitado para empresas o instituciones escolares podemos encontrar el servicio de hacking a base de datos.
¿Qué tomar en cuenta al contratar un hacker mexicano?
Si lo que quieres es contratar hackers mexicanos entonces te diremos que tomar en cuenta antes de iniciar el contacto.
Debes de considerar que existen muchos sitios en Internet o en redes sociales que prometen resultados espectaculares, pero solo se quedan con tu dinero.
Por esto mismo debes primero investigar la red social o sitio web para ver si existen opiniones de clientes que refuercen su postura.
Otro punto a considerar es que es muy probable, e incluso hasta lógico, que se te solicite un adelanto del servicio, pues como en cualquier trabajo se requiere cierta seguridad del pedido.
Revisa las formas de contacto con estos profesionales, entre más puntos de contacto tengas mucho mejor para tener mayor confianza en el servicio.
Por último debes de considerar que el servicio de hacking puede o no puede ser posible, pues aunque es posible realizar el servicio si el objetivo está bien protegido será imposible proceder.
En este caso se debería de platicar con el experto en seguridad informática que pasaría si no se pudiera completar la tarea.
Si esta información sobre como contratar hackers mexicanos te ha sido de utilidad, no olvides compartirla en tus redes sociales favoritas y dejarnos un comentario en la sección de abajo si tienes cualquier duda respecto a este tema, será un placer ayudarte.
¡Hasta luego!
1 note · View note
blogdeprogramacion · 2 years
Text
Crear un modal en Flutter con 2 botones
Crear un modal en Flutter con 2 botones aparece primero en nuestro https://jonathanmelgoza.com/blog/crear-un-modal-en-flutter/
Hoy hablamos sobre cómo crear un modal en Flutter con dos botones de opción, cancelar y confirmar, te dejo una función lista, para integrar en tus proyectos rápidamente y te explico lo que hacemos para que no te pierdas de nada.
Recientemente, he estado trabajando en un proyecto de aplicación móvil multiplataforma.
La elección tomada fue Flutter por su simplicidad y el gigante detrás de esta tecnología.
En este proyecto he tenido que experimentar mucho con esta tecnología, por lo que próximamente estaré subiendo más snippets de código.
Hoy les hablaré un poco sobre una funcionalidad que recientemente tuve que implementar y que creo es muy necesaria en cualquier proyecto.
Veremos como crear un modal en Flutter con dos botones de acción: cancelar y eliminar.
Por supuesto puedes cambiar estas opciones, pues la estructura es la misma, puedes hacer por ejemplo un cancelar y confirmar.
Como te he comentado antes he puesto el código en una función para que sea más fácil integrar en tus proyectos.
Solo debes de tomar en cuenta a partir del código del botón que abre el modal para llamar la función.
onPressed: () async showConfirmDelete(context); ,
Lo único que hacemos es llamar a una función y mandar como parámetro nuestro contexto.
Ahora vemos la función principal de este post.
showConfirmDelete(BuildContext context) Widget cancelButton = ElevatedButton( child: Text("Cancelar"), style: ButtonStyle( backgroundColor: MaterialStateProperty.all<Color>(primarycolor), shape: MaterialStateProperty.all( RoundedRectangleBorder( borderRadius: BorderRadius.circular(16), ), ), ), onPressed: () print("Cancelando.."); Navigator.of(context).pop(); , ); Widget continueButton = ElevatedButton( child: Text("Eliminar"), style: ButtonStyle( backgroundColor: MaterialStateProperty.all<Color>(redcolor), shape: MaterialStateProperty.all( RoundedRectangleBorder( borderRadius: BorderRadius.circular(16), ), ), ), onPressed: () print("Eliminando.."); // Otras acciones de eliminar , ); // set up the AlertDialog AlertDialog alert = AlertDialog( title: Text("Eliminar cuenta"), content: Text("¿Estás seguro de eliminar permanentemente tu cuenta?"), actions: [ cancelButton, continueButton, ], ); // show the dialog showDialog( context: context, builder: (BuildContext context) return alert; , );
Lo primero que hacemos es crear nuestros dos botones de acción: cancelar y eliminar.
Agregamos un pequeño estilo, en mi caso el botón de Eliminar lo he puesto en rojo.
Puedes notar que para simplemente salir del modal para por ejemplo el botón de cancelar usamos:
Navigator.of(context).pop();
Nuestro modal lo creamos con AlertDialog donde podemos personalizar el título y contenido, además de por supuesto agregar los botones que creamos antes.
Como puedes ver no es nada complicado, pero es muy útil en proyectos de apps móviles con Flutter.
Si este artículo sobre cómo crear un modal en Flutter te ha sido de utilidad, no olvides compartirlo en tus redes sociales y dejarnos un comentario en la sección de abajo si tienes cualquier duda respecto a este tema, será un placer ayudarte.
¡Hasta luego!
3 notes · View notes
blogdeprogramacion · 2 years
Text
Tipos de auriculares y cómo elegirlos
Tipos de auriculares y cómo elegirlos aparece primero en nuestro https://jonathanmelgoza.com/blog/tipos-de-auriculares-y-como-elegirlos/
La calidad de los audífonos es esencial al momento de escuchar tu música favorita, darle play a alguna serie/película o jugar con tus amigos en la computadora o consola que tengan. Si son buenos, la experiencia que te darán será muy superior a la que hubieses obtenido con unos de mala calidad, por lo cual no ahorrar demasiado en esta clase de aparatos es una gran decisión.
Para que tomes una buena decisión al escoger tus próximos audífonos bluetooth o tradicionales, aquí te contaremos algunas cosas que deberías tener en cuenta.
Tipos y formas
Si hablamos del diseño de los auriculares, pueden venir en 3 tipos que variarán por sus dimensiones y también por cómo interactúan con la oreja. Los pabellones auriculares son distintos en cada persona, por lo cual encontrar el modelo que más se adecúe al tuyo será un reto muy interesante de resolver. Los que para algunos son realmente muy confortables y todo un placer auditivo, otros audífonos inalámbricos pueden llegar a ser molestos para otras personas.
In-Ear
Los In-Ear son aquellos que ingresan en el oído. Son los auriculares bluetooth más comunes hoy en día por la calidad de audio que tienen y su precio no suele ser demasiado alto. La portabilidad es un punto clave en los In-Ear, ya que se ponen en un pequeño estuche para luego ser guardados en cualquier bolsillo del pantalón.
Al tapar casi por completo el oído, aíslan muy bien del sonido exterior. Estos auriculares inalámbricos vienen en dos tipos: de botón o de inserción. En el caso de los primeros, estos ingresan al canal auditivo, pero no lo sellan, mientras que los segundos se meten directamente en el canal auricular y aíslan más, por lo cual se considera que son cerrados.
Over-Ear y On-Ear
Estos tienen bastantes parecidos entre sí, siendo que la diferencia más notoria es que los Over-Ear apoyan sobre la cabeza y los On-Ear en la oreja. Ambos pueden venir como audífonos bluetooth si es que así lo desea la persona. Los On-Ear no aíslan tanto del entorno y sus graves son menos profundos, pero sus pequeñas dimensiones los terminan haciendo mucho más cómodos para el día a día. Para percibir una calidad de sonido profesional, los Over-Ear son la mejor opción.
Aspectos importantes al elegir auriculares Bluetooth
Los audífonos inalámbricos bluetooth son los más cómodos del mercado, motivo por el cual su comercialización va en aumento desde hace ya varios años. Los hay en versiones súper compactas y cómodas que soportan hasta 30 horas de uso continuo, otros tienen codecs avanzados que impiden el retardo del audio con el video, y cientos de características más. A continuación te hablaremos sobre dos puntos clave al considerar un modelo: la comodidad que brindan y si tienen o no cancelación de ruido.
Comodidad
Para muchos, el aspecto más importante a la hora de elegir audífonos gamer o de cualquier otro tipo es la comodidad, y es que estamos hablando de un producto que estaremos usando buena parte del día para disfrutar nuestra música favorita, ver contenido audiovisual variado o jugar a algún videojuego. Los auriculares buenos permiten sesiones largas sin que el usuario termine cansado o con las orejas molestas por la presión que tengan.
Su diseño y los materiales de construcción son claves a la hora de elegir unos. La calidad de las almohadillas debería ser de punta y también la de los materiales que vayan a entrar en contacto con la piel. Algunos modelos incluyen un sistema de diadema gamer que ajusta de manera automática la anchura/altura con base en la morfología del usuario.
Cancelación de ruido
Al momento de escuchar música con los audífonos inalámbricos o de cable, es muy común que se pierda calidad por culpa del sonido que llega desde el exterior. Para que esto no ocurra, la función de cancelación de ruido es fundamental. Los que la traen, aprovechan la espectacular tecnología de cancelación activa de ruido con el fin de brindar una experiencia de uso más pulida en áreas que suelen sufrir del ruido ambiental.
Los auriculares bluetooth incluyen dos pequeñísimos micrófonos en ambos lados que captan el sonido ambiente e inmediatamente crean un complejo sistema de cancelación para bloquear de manera efectiva el ruido.
Elegir uno gamer
Diadema: la comodidad por encima
La diadema gamer inalámbrica es el punto débil de muchos cascos que tienen una muy buena calidad de sonido pero cometen errores al momento de su construcción. Muchos jugadores se quejan de este punto y terminan adquiriendo otros audífonos que estén mejor hechos. La diadema conecta los pabellones del casco y en algunos casos no trae una almohadilla que aminore la presión sobre la cabeza.
Cuando el jugador no es capaz de soportar la mala calidad de la diadema, suele recurrir a dos alternativas: compra otros auriculares gamer o busca In-Ears de calidad.
Micrófono: comunicación total
El micrófono es otro de los aspectos clave al momento de adquirir tus audífonos gamer inalámbricos, puesto que es aquello que te permitirá comunicarte en todo momento con tus compañeros de equipo al jugar videojuegos cooperativos, como el Fornite, Fall Guys, etc. Es fundamentalmente útil cuando disfrutamos de shooters tácticos, y es que en ocasiones dirigir la operación hablando es la mejor forma de sincronizar los movimientos del equipo para que todo salga bien.
Conexiones: ¿con o sin cables?
Los joysticks de las generaciones recientes de consolas, tablets, gabinetes e incluso hasta monitores permiten la conexión de unos buenos audífonos gamer mediante cable, ya que incluyen conexión jack de 3.5mm. Hasta hace unos años, los de cable no sufrían retrasos de audio y poseían una calidad superior a los inalámbricos, algo que ya no ocurre.
Como todo está mucho más parejo, desde aquí recomendamos la adquisición de unos lindos audífonos gamer inalámbricos que permiten muchas horas de uso hasta la siguiente carga. Así, podrás escuchar música lejos del gabinete sin que ello suponga algún inconveniente.
Conclusión
A modo de cierre, bueno sería volver a mencionar la importancia de que la diadema gamer sea lo más cómoda posible, porque de no serlo lo más probable es que quieras cambiar de auriculares en poco tiempo.
0 notes
blogdeprogramacion · 2 years
Text
¿Por qué hacer un Master en SEO Técnico?
¿Por qué hacer un Master en SEO Técnico? aparece primero en nuestro https://jonathanmelgoza.com/blog/por-que-hacer-un-master-en-seo-tecnico/
Tumblr media
El posicionamiento en motores de búsqueda se ha convertido en una de las disciplinas más esenciales en el actual mundo digital. Aplicar las estrategias avanzadas del SEO técnico aumentará exponencialmente la rentabilidad de las empresas, por lo que resulta uno de los mercados laborales más demandados.
Y aunque en general se trata de un mercado competitivo, la cantidad de profesionales de SEO técnico es realmente poca, especialmente en España, por lo que las oportunidades laborales serán enormes; todas las empresas querrán trabajar con un SEO técnico porque resulta ser la forma más avanzada, efectiva y difícil de SEO.
Pero si aún deseas conocer algunas otras razones por las que hacer un Master de SEO Técnico, a continuación te damos un par de razones por las que apostar por este tipo de formación avanzada.
Desde convertirse en un consultor SEO para gestionar propias e-Commerce utilizando estrategias de ventas avanzadas o conocer las entrañas del funcionamiento de Google para trabajar con el posicionamiento de grandes empresas. Las razones por las que estudiar SEO son casi infinitas, pero intentaremos resumirlas en cuatro claves básicas.
SEO Técnico, el perfil profesional más demandado en España
Con el pasar de los años, los estudios relacionados a los perfiles profesionales más buscados por las empresas solo apuntan a una dirección: Consultores SEO. Y de hecho, es lógico pensar que con el auge de las nuevas tecnologías y de lo digitalizado del mundo actual sea una de las profesiones que permite mayores posibilidades de encontrar oportunidades laborales interesantes.
El SEO, Marketing Digital, Social Media Marketing, Diseño Web y el Big Data son de las más buscadas. Empresas de todos los sectores se han subido al barco de la tecnología, y evidentemente no piensan bajar de él, pues, allí se encuentra el verdadero mundo de las ventas.
El mundo se dirige a la transformación digital
Como lo mencionamos anteriormente, todas las empresas están entrando al mundo digital. Empresas españolas han sido pioneras por apostar por internet y todo lo que representa este océano digital, por lo que decidieron no perder la posibilidad de ser las primeras con tiempo.
Sin embargo, esta transformación a la era digital no es exclusiva de empresas gigantes, por el contrario, Internet no discrimina el tipo de empresa ni su poder, muchas Pymes también han apostado por el mundo digital, y las oportunidades de crecer están frente a ellos.
El 75% de las empresas españolas cuenta con un dominio web, mientras que el 21% de los ingresos de las grandes compañías del país provienen de ventas en línea. Por lo que los números hablan por sí solos. Por lo que como profesionales SEO, contaremos con un papel fundamental para aportar valor a estas empresas, poniendo avanzadas estrategias para aumentar ventas, generar tráfico e incrementar la autoridad de las marcas online.
Invierte en tu futuro para que una empresa invierta en ti
En la sociedad actual donde el mundo digital cada vez gana cada vez más terreno, el sector empresarial requiere de profesionales que sepan controlar y desenvolverse en los mecanismos que van seguidos de esta transformación.
Entre todos los perfiles, los analistas SEO técnicos se encuentran entre los más deseados, todas las empresas buscan a alguien que cuente con el conocimiento avanzado para aplicar las estrategias más efectivas en los buscadores, que sepan cómo funciona y puedan dar soluciones a los problemas más complicados.
Por lejos, los especialistas en SEO Técnico son los que cuentan con la formación más avanzada, es por ello que hay tan pocos en el mundo. Sin embargo, un técnico en SEO contará con las herramientas y recursos más precisos, ligados estrechamente a la programación y al conocimiento de los buscadores, habilidades esenciales para la comunicación con los diferentes equipos de las empresas que cuentan con un entorno online más desarrollado. Invertir en un master en SEO Técnico es invertir en tu futuro profesional.
Te puede interesar, Tips para aparecer primero en Google.
Un SEO Técnico tiene múltiples facetas
Los que se decantan por estudiar SEO Técnico son capaces de gestionar la presencia online de proyectos digitales de cualquier índole, y de por supuesto, utilizar su avanzado conocimiento para construir una marca personal y trabajar por su cuenta.
Además, el SEO técnico es el punto medio entre un programador y un consultor. Por lo que tendremos todo el conocimiento para completar el rompecabezas de empresas, agencias y medios de comunicación, ya que seremos esa pieza faltante que encaja a la perfección.
Un consultor con alma de SEO técnico tendrá a su disposición mayores recursos y herramientas para facilitar a sus proyectos alcanzar metas en el mundo digital. La capacidad para resolver problemas, creatividad y conocimiento de este tipo de profesionales es de lo más deseado actualmente.
Además, la capacidad para entender y comunicarte con los diferentes sectores de la empresa no solo hará que el trabajo fluya de mejor manera, sino que también, nos convertiremos en más que una pieza, en un engranaje valioso y necesario para posicionar cualquier proyecto tan alto como deseemos.
Si esta información sobre hacer un Master en SEO te ha sido de utilidad, no olvides compartirla en tus redes sociales y dejarnos un comentario en la sección de abajo si tienes cualquier duda relacionada con este tema, será un placer ayudarte.
¡Hasta luego!
2 notes · View notes
blogdeprogramacion · 2 years
Text
Abrir una URL en el navegador con Flutter y Dart
Abrir una URL en el navegador con Flutter y Dart aparece primero en nuestro https://jonathanmelgoza.com/blog/abrir-una-url-en-el-navegador-flutter/
Tumblr media
Muchas veces necesitamos abrir un enlace dentro de nuestras aplicaciones móviles, enlaces que nos permitan abrir un URL en el navegador predeterminado de nuestros usuarios. Hoy veremos como abrir un enlace de forma externa mediante un navegador web en nuestras apps Android e iOS con Flutter y Dart.
Recientemente, me encuentro trabajando en un proyecto de app móvil.
Para este proyecto nos encontramos con Flutter en desarrollo multiplataforma, Android e iOS.
El cliente nos ha solicitado agregar un botón para abrir un sitio web.
Esto es precisamente lo que vamos a ver hoy a detalle.
Si necesitas abrir una URL en el navegador con Flutter y Dart entonces estas en lugar adecuado.
Cabe mencionar que queremos que el enlace sea abierto en la aplicación del navegador del teléfono y no dentro de nuestra propia app.
Para esto vamos a hacer uso de url_launcher por lo que lo primero es agregar la dependencia.
Vamos a nuestro pubspec.yaml y la agregamos.
url_launcher: ^6.0.9
En el evento de nuestro botón o enlace llamar nuestra función encargada de ir a una url determinada.
onPressed: _launchURL,
En la función launchURL agregar lo siguiente:
_launchURL() async const url = 'https://[tu-url-destino].com'; Uri uri = Uri.parse(url); if (await canLaunchUrl(uri)) await launchUrl(uri, mode: LaunchMode.externalApplication); else throw 'No se puede abrir $url';
Por supuesto, agregar tu propia dirección destino.
Nosotros aquí revisamos si es posible cargar la URL destino y si es así entonces lo hacemos con la función launchUrl.
Agregamos un parámetro tipo LaunchMode para asegurarnos de que en enlace sea abierto por una aplicación navegador web externa y no en la propia app.
Ahora, al probar veremos como nuestra app, mediante el botón que coloquemos, nos manda al navegador web en la URL indicada.
Y eso es todo, fue un pequeño, pero útil artículo que seguro ocuparemos más de alguna vez en desarrollo de apps con Flutter.
Si esta información sobre cómo abrir una URL en el navegador con Flutter y Dart te ha sido útil, entonces no olvides compartirla en tus redes sociales favoritas y dejarnos un comentario en la sección de abajo, si tienes cualquier duda relacionada con este tema, será un placer ayudarte.
¡Hasta luego!
0 notes
blogdeprogramacion · 2 years
Text
Principales ventajas de Blockchain
Principales ventajas de Blockchain aparece primero en nuestro https://jonathanmelgoza.com/blog/ventajas-de-blockchain/
Tumblr media
Hoy hablaremos de una tecnología que está revolucionando el Internet y el mundo digital en los últimos años, analizaremos las principales ventajas de Blockchain que debes de tomar en cuenta si no quieres perderte en la tecnología del futuro.
Cuando hablamos del Internet 3.0 es inevitable pensar en un término, Blockchain.
Se hablan de grandes ventajas y pros sobre esta tecnología, así como escenarios futuros, y no tan futuros, en que esta tecnología mejorará nuestras vidas.
Blockchain no solo es criptomonedas como Bitcoin o Ether, la tecnología detrás va mucho más allá.
Hoy hablaremos de las principales ventajas de Blockchain que no debes de dejar pasar.
Breve introducción a Blockchain
Antes de mencionar las principales ventajas de Blockchain vamos a hablar un poco de la tecnología.
Blockchain, como su nombre lo indica, es una serie de bloques que incluyen transacciones y cada bloque enlaza al anterior.
En pocas palabras es como un gran libro contable de movimientos que se van enlazando unos a otros.
No existe una entidad u organización que tenga el control de esto, (al menos para las redes Blockchain de las que estamos hablando) y sus registros, se dice, son prácticamente inalterables.
¿Suena bastante bien no es así? 
Es por esta razón que las criptomonedas se construyen con base en redes Blockchain, pues se puede corroborar el camino que ha seguido un moneda desde el comienzo hasta la actualidad, además de que no es posible falsificar o modificar información que ya se encuentra en Blockchain.
Principales ventajas de Blockchain
Ahora que ya conoces un poco sobre Blockchain, puedes intuir algunas de sus principales beneficios.
De cualquier forma vamos a hablar a detalle de las principales ventajas de Blockchain a continuación.
Seguridad
Al ser una red distribuida, la información que se sube a Blockchain permanece replicada en cientos y miles de nodos en todo el mundo.
Es mucho más seguro que tener la información en un solo servidor, pues estos nodos respaldan a cualquier nodo que llegue a fallar.
Resulta prácticamente imposible que se pierda la información, además es también casi imposible de hackear o falsificar información debido a cómo está diseñada la propia red.
Transparencia
La red Blockchain es pública, por lo que es posible visualizar todos los movimientos relacionados con cierta información desde un comienzo.
En un modelo Blockchain la confianza viene dada por la propia tecnología y no por usuarios o intermediarios.
Descentralización
La naturaleza de Blockchain es la descentralización, no depender ni confiar en una entidad para su correcto funcionamiento.
A diferencia por ejemplo de un banco, donde el mismo se encarga de validar tu transacción, en Blockchain la validación de una transacción lo hacen los nodos de la red.
Estos nodos, de nueva cuenta gracias al propio diseño de la red, no pueden falsificar o actuar de mala fe, pues se tendría que poner de acuerdo a todos los miles de nodos para que esto suceda.
Por lo tanto, Blockchain es una red donde no existe una entidad que controla todo sino que es la propia red la que se encarga de que todo funcione correctamente.
Trazabilidad
Sin duda, una de las principales ventajas de Blockchain es la trazabilidad.
Como podemos ir conociendo la historia de una moneda o activo digital desde que lo conseguimos nosotros hasta sus comienzos.
Seguro se te ocurren muchas aplicaciones utilizando la trazabilidad de Blockchain.
Te puede interesar, ¿Qué es piñata IPFS y cómo integrarlo en PHP?
Sello de tiempo
Otro de las ventajas importantes de Blockchain es el sello de tiempo.
Un sello de tiempo nos indica la fecha y hora exacta en la que una información contenida en una transacción se registró en Blockchain.
Esta fecha funciona como un timestamp o fecha cierta que puede ser utilizada para validar que cierta información existía en cierto momento.
Permanencia
Por supuesto, además de todas estas ventajas, tenemos la permanencia.
La información que sube a Blockchain queda para siempre registrada en los miles de nodos y forma parte de la cadena de bloques.
No es posible eliminar la información que se agrega en Blockchain.
Inmutabilidad
Y por último, en conjunto con el punto anterior llega la inmutabilidad.
Así como la información no se puede eliminar, obviamente tampoco es posible alterarla de ningún modo.
Como dijimos, los bloques se van enlazando uno con otro y alterar la información de un bloque rompe con esta cadena, por lo que es imposible.
Aplicaciones de Blockchain
Hablar de las principales aplicaciones y usos de Blockchain nos tomaría otro artículo completo.
Por el momento podemos quedarnos con el uso muy popular que se le ha dado a la red para criptomonedas.
Criptomonedas como bitcoin, ether, Litecoin, entre otras han crecido enormemente debido a la confianza de las personas en la tecnología.
Actualmente, también está teniendo mucha popularidad el término NFT, que son activos digitales únicos que son adquiridos por las personas para tener status o simplemente ganar dinero, revendiendo el activo después de un tiempo esperando que suba su valor.
El mundo de Blockchain y sobre todo los contratos inteligentes serán tocados más tarde en un artículo especial, pues su futuro es enorme.
Si estas principales ventajas de Blockchain te han sido de utilidad, no olvides compartirlas en tus redes sociales favoritas o dejarnos un comentario en la sección de abajo, si tienes cualquier duda o comentario relacionado con este tema, será un placer poder ayudarte.
¡Hasta luego!
0 notes
blogdeprogramacion · 2 years
Text
Formatear Bytes en KB, MB y GB con Javascript y PHP
Formatear Bytes en KB, MB y GB con Javascript y PHP aparece primero en nuestro https://jonathanmelgoza.com/blog/formatear-bytes-en-kb-mb-y-gb-con-javascript-y-php/
Tumblr media
Muchas veces tenemos cantidades en Bytes que queremos mostrarlas al usuario, para mostrarlas en una forma más fácil para los usuarios, hoy veremos cómo formatear bytes en KB, MB y GB con JavaScript y con PHP.
Actualmente, trabajo en un proyecto en el que se manejan cantidades de almacenamiento.
En este proyecto tenemos la necesidad de trabajar con cantidades de bytes pero también mostrarlas.
Sabemos que no podemos mostrar a un usuario que tiene 1073741824 bytes, pues no sabría realmente cuanto tiene de espacio.
Aunque estamos colocando la información real, el usuario no podrá comprender que tiene 1 GB de espacio de almacenamiento.
Es por esta razón que necesitamos una función para convertir estas cantidades a formato ‘bonito’ para los usuarios.
Hoy veremos cómo formatear Bytes en KB, MB y GB con JavaScript y PHP para tu mayor comodidad.
Formatear Bytes en JavaScript
La siguiente función en JavaScript nos permite formatear cualquier cantidad de bytes a KB, MB y GB sin problemas.
Solo necesitamos enviarle un parámetro que es la cantidad de bytes y nos regresa una cadena de texto con el formato ‘bonito’.
formatearBytes(bytes) var lista = ['Bytes', 'KB', 'MB', 'GB', 'TB']; if (bytes == 0) return '0 Byte'; var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024))); return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + lista[i];
Si estás trabajando en JavaScript puedes utilizar esta función, aunque si estás trabajando del lado del servidor, la siguiente función en PHP te será de utilidad.
¿Te podría interesar cómo subir un archivo a Amazon S3 desde PHP?
Formatear Bytes en PHP
La siguiente función en PHP nos permite formatear cualquier cantidad de bytes a formato de KB, MB y GB.
El único parámetro que necesita es la cantidad de bytes a formatear, la función regresa una cadena de texto con el formato leíble para los usuarios.
function formatearBytes($cantidad) $precision = 2; $lista = array('B', 'KB', 'MB', 'GB', 'TB'); $bytes = max($cantidad, 0); $i = floor(($bytes ? log($bytes) : 0) / log(1024)); $i = min($i, count($lista) - 1); $bytes /= (1 << (10 * $i)); return round($bytes, $precision) . ' ' . $lista[$i];
Así que ya sea que estás trabajando en el front-end o en el back-end tendrás la función a la mano.
Cabe destacar que en las funciones anteriores también es posible formatear cantidades hasta terabytes.
Ahora pasaremos de:
1073741824 => 1 GB
o de:
364713 => 356.17 KB
Y podremos trabajar en back con las cantidades en bytes y en front mostrarlas para que el usuario entienda fácilmente.
Si esta información sobre cómo formatear Bytes en KB, MB y GB con JavaScript y PHP te ha sido de utilidad, no olvides compartirla en tus redes sociales favoritas o dejarnos un comentario en la sección de abajo si tienes cualquier duda o comentario respecto con este tema, será un placer ayudarte.
¡Hasta luego!
0 notes
blogdeprogramacion · 2 years
Text
Convertir formato de imágenes con PHP y Imagick
Convertir formato de imágenes con PHP y Imagick aparece primero en nuestro https://jonathanmelgoza.com/blog/convertir-formato-de-imagenes-con-php-y-imagick/
Tumblr media
Muchas veces en desarrollo web tenemos la necesidad de pasar de un formato de imagen a otro, incluso bajar el peso de una imagen sin perder calidad, hoy veremos cómo convertir formato de imágenes con PHP y Imagick.
Recientemente, tuve la necesidad de crear un conversor de formato de imagen para uno de mis proyectos.
En mi caso especial tenía el requerimiento de convertir una imagen en formato HEIC y HEIF a formato JPG en tiempo real.
Después de una corta búsqueda llegue a Imagick.
Por suerte mi servidor VPS en Hostgator tenía instalada la librería, por lo que no tuve que hacer más en este punto.
Aunque si tuve que acceder vía SSH y recompilar la librería, pues aunque por defecto acepta demasiados formatos, no aceptaba HEIC ni HEIF.
Una vez que tenemos la certeza de que tenemos Imagick en nuestro servidor, (lo puedes instalar también en xampp, wampp o cualquier entorno local) vamos a proceder.
Para convertir formato de imágenes con PHP e Imagick vamos a tener nuestra imagen a convertir lista.
En mi caso tengo una imagen HEIC dentro de una carpeta images.
$imageheic = __DIR__ . "\images\image.heic";
Lo siguiente será crear nuestro objeto de Imagick.
$im = new Imagick();
Después vamos a establecer el formato al que queremos convertir nuestra imagen.
$im->setFormat('jpg');
Leemos la imagen original.
$im->readImage($imageheic);
Opcionalmente, podemos reducir un poco el tamaño con la opción de compresión.
$im->setImageCompressionQuality(80);
En este punto valores de 70 para arriba no se nota mucho la diferencia, pero puedes hacer tus pruebas.
Por último vamos a guardar nuestra imagen convertida donde queramos.
$im->writeImage(__DIR__ . '\images\image_conv.jpg');
Y destruimos nuestro objeto para finalizar.
$im->destroy();
Como vez no es nada complicado.
Lo único que puede llegar a ser complicado es no tener la librería Imagick.
Ahora ya tenemos nuestro conversor de formato de imágenes que incluso es capaz de reducir su peso.
Si este artículo sobre cómo convertir formato de imágenes con PHP y Imagick te ha sido de utilidad, no olvides compartirlo en tus redes sociales favoritas y dejarnos un comentario en la sección de abajo, si tienes cualquier duda relacionada con este tema, será un placer ayudarte.
¡Hasta luego!
0 notes
blogdeprogramacion · 2 years
Text
Consejos para crear mejores portadas para historias destacadas
Consejos para crear mejores portadas para historias destacadas aparece primero en nuestro https://jonathanmelgoza.com/blog/consejos-para-crear-mejores-portadas-para-historias-destacadas/
Si eres influencer o estás pensando en serlo entonces debes de aprender a utilizar tus redes sociales como Instagram, hoy hablaremos precisamente de esta red con algunos consejos para crear mejores portadas para historias destacadas.
Las redes sociales se han convertido en el principal instrumento de marca personal.
Tener un perfil bien diseñado y activo en redes sociales te abre muchas puertas.
En especial, Instagram se ha convertido en una red social indispensable hoy en día para hacer crecer tu imagen.
Dentro de esta red social las historias son parte fundamental de tener un perfil atractivo para tus seguidores, clientes o amigos.
Hoy hablaremos sobre algunos consejos para portadas para historias destacadas en Instagram, ¿Ya los aplicas?
¿Qué son las historias destacadas?
Instagram tiene una opción muy útil para todos, mostrar historias que solo se pueden ver por 24 horas.
Con ella podemos mostrar contenido de nuestro día a día a nuestro seguidores y amigos sin saturar nuestro perfil.
Podemos compartir momentos que no necesariamente son tan importantes para mantenerse publicados.
Después de liberar esta funcionalidad, Instagram agregó las historias destacadas.
Las historias destacadas ahora son todo lo contrario que las historias normales.
Son historias que queremos que se visualicen por mucho tiempo y que ahora tienen incluso un papel más relevante que una publicación tradicional.
Estas historias destacadas permiten agregar una imagen de portada que al hacer clic en ella se visualizan una serie de historias destacadas con una misma temática.
Las historias destacadas se han convertido en un elemento super importante en cualquier perfil de esta red social.
Por esta razón es de suma importancia crear imágenes de portada espectaculares para nuestras historias.
En este ejemplo podemos ver el perfil de Instagram de Elon Musk con historias destacadas variadas.
Consejos para una mejor portada
Veamos algunos consejos para tener mejores portadas en tus historias y en general para tus historias destacadas.
Antes que nada planifica el estilo que le quieres dar a tus historias destacadas, trata de tener coherencia en la personalidad de tus historias, colores y diseños.
También revisa otros perfiles relacionados con tu temática, si es que manejas un perfil de marca, revisa que hacen otros perfiles como el tuyo y adopta lo que más te guste.
Ahora que ya tienes una idea de lo que harás, entonces elige una herramienta.
Existen muchas herramientas para crear imágenes de portada para Instagram, un buen ejemplo es canvas.
Puedes optar por colocar un pequeño título en tu imagen, no más de 3 palabras.
Tal vez te puede interesar: Vender mis servicios por Internet, ¿Cómo hacerlo?
Muchas personas también han comenzado por agregar stickers o emojis para darle un poco más de vida a las portadas.
Otro consejo importante es seleccionar una imagen relevante de tus historias destacadas.
Si estás creando historias destacadas de tu viaje por París, entonces que imagen más representativa que una foto de la torre Eiffel.
Simplemente, se creativo y trata de que tu perfil luzca lo más profesional posible.
Si un seguidor visualiza tu perfil que al ver tus historias destacadas se quede atrapado en ellas y se motive a verlas.
Además, tomando en cuenta que las imágenes de portada de Instagram son circulares, entonces crea una imagen circular.
Muchas veces se pierde contenido importante de una imagen por no pensar en este aspecto.
Otro punto importante que no debes de perder de vista son los colores de tus historias, sé creativo y haz que tu perfil destaque.
Como puedes ver, las historias destacadas se han convertido en un elemento fundamental de branding para nuestra marca.
Es tu decisión cuidar o no de este aspecto para conseguir tus objetivos de marketing en esta importante red social.
Si estos consejos para crear portadas para historias destacadas te han sido de utilidad, no olvides compartirlos en tus redes sociales favoritas y dejarnos un comentario en la sección de abajo si tienes cualquier duda con respecto a este tema, será un placer ayudarte.
¡Hasta luego!
1 note · View note
blogdeprogramacion · 2 years
Text
Acelerar tu sitio web con htaccess
Acelerar tu sitio web con htaccess aparece primero en nuestro https://jonathanmelgoza.com/blog/acelerar-tu-sitio-web-con-htaccess/
Tumblr media
Un sitio web debe ser rápido y lograrlo no es nada fácil, intervienen muchos factores para poder lograrlo, pero hoy veremos uno de ellos, acelerar tu sitio web con htaccess y unas simples líneas a agregar en él.
Entre los muchos factores del posicionamiento web tenemos la velocidad de una web.
Además de ser importante para el posicionamiento de nuestra web, también lo es importante en usabilidad.
Nadie va a esperar 10 segundos a que tu web cargue si puede ir hacia atrás e ingresar a otra página.
Ahora bien, para mejorar nuestra velocidad de acceso, tenemos que hacer varias cosas.
Hoy hablaremos sobre acelerar tu sitio web con htaccess, con algunas modificaciones en este archivo nuestra web irá mucho más rápido.
En casi cualquier cuenta de hosting podremos encontrar este archivo en nuestro servidor o de lo contrario podremos crearlo nosotros mismos.
Antes de continuar vamos a hablar un poco sobre este archivo y donde podrás encontrarlo.
¿Qué es un archivo htaccess?
Un archivo htaccess es un archivo de configuración para servidores web Apache.
Contiene directivas de como debe funcionar nuestro servidor, por lo que es importante aprender a modificarlo.
Debemos de tener en cuenta que una mala configuración puede hacer que tu sitio no esté disponible temporalmente, así que ten cuidado.
En este archivo podremos indicar que puede o no hacer un visitante, así como el comportamiento del servidor respecto a las conexiones entrantes.
El archivo lo podremos encontrar en la raíz principal de nuestra web, aunque realmente podemos agregarlo en cualquier carpeta y modificar el comportamiento de ese nivel.
Si no ves el archivo, asegúrate de establecer que quieres visualizar archivos ocultos, si aun así no lo ves entonces podrás crearlo (.htaccess).
Cachear el contenido de nuestra web
Lo primero que vamos a agregar serán unas líneas para indicar cuando es que el contenido de nuestra web expira.
Contenido como imágenes, css, javascript, fuentes, audio o video tendrán una fecha de expiración.
Con esto nuestros visitantes bajarán estos archivos una vez y luego ya no hasta su fecha de expiración.
Ahora, la segunda vez que ingresen, ya no descargaran todo nuestro sitio, sino solo unos cuantos archivos.
<IfModule mod_expires.c> ExpiresActive On ExpiresByType text/css "now plus 1 week" ExpiresByType application/javascript "now plus 1 week" ExpiresByType application/x-javascript "now plus 1 week" ExpiresByType image/bmp "now plus 1 month" ExpiresByType image/gif "now plus 1 month" ExpiresByType image/jpeg "now plus 1 month" ExpiresByType image/jp2 "now plus 1 month" ExpiresByType image/pipeg "now plus 1 month" ExpiresByType image/png "now plus 1 month" ExpiresByType image/svg+xml "now plus 1 month" ExpiresByType image/tiff "now plus 1 month" ExpiresByType image/x-icon "now plus 1 month" ExpiresByType image/ico "now plus 1 month" ExpiresByType image/icon "now plus 1 month" ExpiresByType text/ico "now plus 1 month" ExpiresByType application/ico "now plus 1 month" ExpiresByType image/vnd.wap.wbmp "now plus 1 month" ExpiresByType application/x-font-ttf "now plus 1 week" ExpiresByType application/x-font-opentype "now plus 1 week" ExpiresByType application/x-font-woff "now plus 1 week" ExpiresByType font/woff2 "now plus 1 week" ExpiresByType image/svg+xml "now plus 1 week" ExpiresByType audio/ogg "now plus 1 month" ExpiresByType application/ogg "now plus 1 month" ExpiresByType audio/basic "now plus 1 month" ExpiresByType audio/mid "now plus 1 month" ExpiresByType audio/midi "now plus 1 month" ExpiresByType audio/mpeg "now plus 1 month" ExpiresByType audio/mp3 "now plus 1 month" ExpiresByType audio/x-aiff "now plus 1 month" ExpiresByType audio/x-mpegurl "now plus 1 month" ExpiresByType audio/x-pn-realaudio "now plus 1 month" ExpiresByType audio/x-wav "now plus 1 month" ExpiresByType application/x-shockwave-flash "now plus 1 month" ExpiresByType x-world/x-vrml "now plus 1 month" ExpiresByType video/x-msvideo "now plus 1 month" ExpiresByType video/mpeg "now plus 1 month" ExpiresByType video/mp4 "now plus 1 month" ExpiresByType video/quicktime "now plus 1 month" ExpiresByType video/x-la-asf "now plus 1 month" ExpiresByType video/x-ms-asf "now plus 1 month" </IfModule>
Comprimir el contenido de nuestra web
Otro factor importante que vamos a tocar es la compresión.
Generalmente, se envía el contenido sin comprimir, pero con estas líneas vamos a intentar comprimir con gzip nuestro contenido.
Si no fuera posible comprimir con gzip, entonces utilizaremos deflate.
<ifModule mod_gzip.c> mod_gzip_on Yes mod_gzip_dechunk Yes mod_gzip_item_include file .(html?|txt|css|js|php)$ mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime ^text/.* mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_exclude mime ^image/.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* </ifModule> AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript
Ahora te toca hacer pruebas y comprobar que tu sitio funciona de forma correcta.
Si notas un problema, prueba eliminando alguna de estas secciones.
Deberíamos de notar un cambio desde la primera vez que carguemos nuevamente nuestra web.
Aunque el mayor cambio lo deberíamos ver al cargar nuestra web por segunda vez, ya que los archivos cacheados ya no se pedirán nuevamente.
Ya antes hemos hablado de como mejorar la velocidad de tu web, pero este artículo está más enfocado al archivo htaccess.
Date una vuelta por ese artículo para conocer más técnicas de optimización web.
Si esta información sobre acelerar tu sitio web con htaccess te ha sido de utilidad, no olvides compartirla en tus redes sociales y dejarnos un comentario en la sección de abajo, si tienes cualquier duda relacionada con el tema de hoy, será un placer ayudarte.
¡Hasta luego!
0 notes
blogdeprogramacion · 2 years
Text
Script para organizar archivos por extensión - Batch
Script para organizar archivos por extensión - Batch aparece primero en nuestro https://jonathanmelgoza.com/blog/script-para-organizar-archivos-por-extension/
En algunas ocasiones tenemos carpetas con un caos total donde es necesario organizar archivos por extensión, obviamente no queremos hacerlo manualmente por lo que hemos creado un script para organizar archivos por extensión en batch.
Batch es un conjunto de comandos con los que podemos automatizar muchas tareas de windows.
Aprender estos comandos nos es muy util tanto para manejar la consola como para crear scritps.
Esto último es precisamente lo que haremos el día de hoy.
Crearemos un script sencillo para organizar archivos por extensión dentro de una carpeta.
Si tenemos una carpeta con muchos archivos sin ningún tipo de ordenamiento, solo tenemos que colocar este archivo.
Hacer doble clic y seguir las instrucciones en pantalla.
Al finalizar tendremos todos nuestros archivos ordenados por extensión en una carpeta resultante.
En esta primera versión únicamente incluí archivos pdf, jpg, png, xlsx, txt y exe, pero es muy fácil modificar el código y agregar más.
He visto códigos similares en Python, pero no uno tal cual lo necesitaba en batch.
Si desean agregar alguna modificación, siéntanse libre de hacerlo o enviarme la sugerencia en comentarios.
Script para organizar archivos:
@echo off :: Script para organizar archivos por extension title Organizador de archivos por extension echo Bienvenido al organizador de archivos por extension echo Gracias por utilizar nuestro script! echo Asegurese de ejecutar este script donde quiera organizar sus archivos pause set rutaActual=%~dp0 :: PDF if not exist "%rutaActual:~0,-1%\salida\pdf\" mkdir %rutaActual:~0,-1%\salida\pdf\ for /r "%rutaActual:~0,-1%" %%x in (*.pdf) do move "%%x" "%rutaActual:~0,-1%\salida\pdf\" :: TXT if not exist "%rutaActual:~0,-1%\salida\txt\" mkdir %rutaActual:~0,-1%\salida\txt\ for /r "%rutaActual:~0,-1%" %%x in (*.txt) do move "%%x" "%rutaActual:~0,-1%\salida\txt\" :: XLSX if not exist "%rutaActual:~0,-1%\salida\xlsx\" mkdir %rutaActual:~0,-1%\salida\xlsx\ for /r "%rutaActual:~0,-1%" %%x in (*.xlsx) do move "%%x" "%rutaActual:~0,-1%\salida\xlsx\" :: EXE if not exist "%rutaActual:~0,-1%\salida\exe\" mkdir %rutaActual:~0,-1%\salida\exe\ for /r "%rutaActual:~0,-1%" %%x in (*.exe) do move "%%x" "%rutaActual:~0,-1%\salida\exe\" :: JPG if not exist "%rutaActual:~0,-1%\salida\jpg\" mkdir %rutaActual:~0,-1%\salida\jpg\ for /r "%rutaActual:~0,-1%" %%x in (*.jpg) do move "%%x" "%rutaActual:~0,-1%\salida\jpg\" :: PNG if not exist "%rutaActual:~0,-1%\salida\png\" mkdir %rutaActual:~0,-1%\salida\png\ for /r "%rutaActual:~0,-1%" %%x in (*.png) do move "%%x" "%rutaActual:~0,-1%\salida\png\" echo El script ha finalizado.. pause
Como pueden ver no nada del otro mundo, pero me pareció muy algo muy útil.
Obtenemos la ruta actual donde se ejecuta el script y posteriormente creamos la estructura de carpetas por extensión permitida.
Trabajamos con un ciclo que ira moviendo archivos a su correcto destino una vez más según su extensión de archivo.
Espero y les guste este pequeño script, cualquier modificación bienvenida sea.
Si este script para organizar archivos por extensión en batch te ha sido de utilidad, no olvides compartirlo en tus redes sociales y dejarnos un comentario en la sección de abajo si tienes cualquier duda relacionada con este tema, será un placer ayudarte.
¡Hasta luego!
3 notes · View notes
blogdeprogramacion · 3 years
Text
5 sitios para practicar ejercicios de programación
5 sitios para practicar ejercicios de programación aparece primero en nuestro https://jonathanmelgoza.com/blog/5-sitios-para-practicar-ejercicios-de-programacion/
Sin lugar a dudas la práctica hace al maestro, esto en programación es mucho más, por eso hoy hablaremos de 5 sitios para practicar ejercicios de programación y mejorar considerablemente nuestra lógica de programación, ¿Ya utilizas alguno? ¿Tienes otro sitio en mente?
La lógica de un programador es una de sus mejores habilidades.
Un programador sin lógica de programación simplemente es uno más del montón.
Si consideras que no tienes buena lógica de programación, entonces ahora es cuando para mejorarla.
Además de que como programadores debemos estar constantemente practicando y retándonos a nosotros mismos.
En este artículo encontraremos 5 sitios para practicar ejercicios de programación que nos mantendrán ocupados por un buen rato.
LeetCode
Esta plataforma nos permite prepararnos para alguna entrevista importante.
Tiene una gran sección de problemas a resolver con filtros por complejidad, categoría y status.
Podemos fácilmente ordenar de los más sencillos a los más complejos o viceversa. También podemos filtrar por problemas de listas, arreglos, matemáticos, árboles, etc.
Adicionalmente, incluye una sección de concursos con los que puedes ganar puntos y premios reales. Incluye una tienda para cambiar los puntos por playeras, llaveros, libretas, etc.
Incluye un foro donde podemos aclarar dudas para que nuestra entrevista salga lo mejor posible.
En lo personal me gusta mucho esta plataforma y ya he empezado a participar un poco.
Sitio web: leetcode.com
HackerRank
Una plataforma que permite registrarse como empresa o como programador.
Pensado para unir el talento con las empresas que lo buscan, cuenta con varias certificaciones que puedes completar.
Por supuesto, también una parte para practicar y resolver problemas de algoritmos, estructura de datos, matemáticas y más.
Al practicar ganas puntos que por el momento puedes cambiar por casos de usos, pero se planea agregar más premios reales.
Existen concursos en los cuales te puedes inscribir, así como ver concursos pasados.
Sitio web: hackerrank.com
CodeChef
Esta plataforma permite practicar con gran variedad de problemas de diversas temáticas.
Incluye un área de práctica, concursos y foro de ayuda.
Cabe destacar su módulo de aprendizaje donde podemos aprender a resolver problemas en varios niveles.
Tenemos el Getting Started y de allí para arriba subiendo de nivel la complejidad de los ejercicios presentados.
Al igual que los anteriores, puedes elegir contestarlos en gran variedad de lenguajes de programación.
Sitio web: codechef.com
CoderByte
Otra excelente opción para practicar ejercicios de programación es CoderByte.
Este sitio permite resolver problemas de empresas reconocidas en muchos lenguajes de programación.
Su interfaz es sencilla y clara, aunque muchos ejercicios son prémium y deberás de pagar una suscripción para desbloquearlos.
Cuenta con problemas a resolver, cursos y kits para entrevistas por empresa o por tecnología.
Me parece genial, pero la verdad es que la suscripción para desbloquear ejercicios no es tan padre.
Sitio web: coderbyte.com
CodingGame
La última de la lista es una plataforma un poco diferente que, aunque nos permite practicar lógica de programación, lo haremos jugando.
Podemos practicar, aprender y competir en batallas donde pondremos nuestro código y su lógica contra otros programadores.
Lo bueno de esta plataforma es que todo problema se basa en un problema de un juego y es bastante visual. La idea principal es aprender jugando.
Podemos aprender conceptos de inteligencia artificial como si se tratara realmente de un juego. Bastante divertido.
Sitio web: codingame.com
Espero y estos sitios te sean de utilidad, ahora solo queda registrarse y te veo en la arena de prácticas.
Si estos 5 sitios para practicar ejercicios de programación te han sido de utilidad, no olvides compartirlos en tus redes sociales favoritas y dejarnos un comentario en la sección de abajo si tienes cualquier duda respecto a este tema, será un placer ayudarte.
¡Hasta luego!
3 notes · View notes
blogdeprogramacion · 3 years
Text
5 comunidades de mujeres en la programación
5 comunidades de mujeres en la programación aparece primero en nuestro https://jonathanmelgoza.com/blog/5-comunidades-de-mujeres-en-la-programacion/
Tumblr media
Hoy en día cada vez más y más mujeres están incursionando en carreras de tecnología, es por esto que hoy vamos a conocer 5 comunidades de mujeres en la programación que debes de conocer si eres mujer y te interesa pertenecer a una de estas carreras STEAM.
Las mujeres han tenido papeles importantes en la tecnología desde sus inicios.
Sin embargo, existe una gran diferencia entre el número de participantes comparado con hombres.
Desde las mujeres que programaban la ENIAC hasta Margaret Hamilton que escribió gran parte del código para ir a la luna.
Las mujeres han jugado un papel importante en las carreras de tecnología y en especial en la programación.
En lo personal he trabajado con varias mujeres desarrolladores y son simplemente geniales.
Muchas de ellas además de ser muy buenas programando son muy organizadas, detallistas y amables para el trabajo en equipo.
Si eres mujer y estás deseando integrar este mundo de mujeres programadoras este artículo es para ti.
Hablaremos de 5 comunidades de mujeres en la programación a las que puedes pertenecer.
GirlPowerInCode
Esta comunidad fue creada recientemente y su objetivo es atraer a más mujeres en la programación.
Participa en conferencias y clases para motivar a más mujeres a pertenecer a carreras STEAM.
Cuenta con un equipo que crea contenido de programación para mujeres y es muy activa en sus redes sociales.
En su sitio web cuenta con un foro de dudas para ayudar a mujeres en temas de programación.
Tweets by GirlPowerInCode
Tecnolatinas
Esta comunidad busca visibilizar, amplificar y empoderar a mujeres latinas en la tecnología.
Su comunidad cuenta con podcast, mentorías, conversaciones y sobre todo un bootcamp.
En su canal de YouTube encontrarás más contenido relacionado a atraer y capacitar a mujeres en este sector.
Es muy activa en Twitter y puedes conocer sus eventos para mujeres en su sitio web.
Tweets by Technolatinas
HackWomen
Esta comunidad se enfoca principalmente en hacer crecer más comunidades de mujeres en tecnología.
Es un esfuerzo alterno a hackademy México, que es un bootcamp muy bueno para mejorar tus habilidades.
Suelen organizar pláticas muy buenas con otras comunidades de varios temas, las puedes encontrar en sus redes sociales y YouTube.
Actualmente, están en un proyecto de mentorías, llamado Skills for Women in Tech, junto con mxbritish donde están capacitando a 500 mujeres.
Tweets by hack_women
Hijas de Internet
En esta comunidad ofrecen a mujeres temas de tecnología y contenido relacionado.
Tienen un podcast para mujeres muy bueno que habla precisamente de esto y de las implicaciones de nacer en la era de revolución digital.
También son muy frecuentes en eventos y charlas de comunidades exponiendo temas interesantes para mujeres en tecnología.
Tweets by hijasdeinternet
SG 4 Women
Esta comunidad es una iniciativa de Software Guru para impulsar la participación y desarrollo de mujeres en TI.
Cuentan con un grupo de facebook muy grande donde se apoya a la comunidad con dudas e información de capacitación.
Tienen un evento virtual llamado Dev Day for Women relacionado con mujeres en desarrollo de software.
Puedes conocer más información de los eventos y de la comunidad en devday4w.com.
Tweets by sg4women
¿Conoces otra comunidad que consideres deba de estar en este artículo?
Déjanos en los comentarios su nombre y lo que hace por atraer a más mujeres en esta carrera, lo revisamos y la incluimos.
Si esta información sobre algunas comunidades de mujeres en la programación te ha sido de utilidad no olvides compartirla en tus redes sociales y dejarnos un comentario en la sección de abajo si tienes cualquier duda con relación a este tema, será un placer ayudarte.
¡Hasta luego!
2 notes · View notes
blogdeprogramacion · 3 years
Text
Obtener coordenadas de Mapa al hacer click - Google Maps
Obtener coordenadas de Mapa al hacer click - Google Maps aparece primero en nuestro https://jonathanmelgoza.com/blog/obtener-coordenadas-de-mapa/
Tumblr media
Si estás implementando un sistema con mapas entonces este artículo te será de utilidad, te enseño como obtener coordenadas de mapa al hacer clic en él, obtener latitud y longitud de un mapa de Google Maps fácil y rápido.
Muchas tenemos que desarrollar sistemas web con mapas.
En estos sistemas suele ser muy común que el usuario indique un lugar exacto en el mapa.
Para hacer esto se permite que el usuario haga clic en el mapa o arrastre un marcador.
En este caso nos inclinaremos por la primera opción, el usuario deberá hacer clic en el mapa donde quiera ubicarse.
Actualmente, estamos desarrollando un sistema inmobiliario y el usuario al crear una nueva propiedad deberá señalar la ubicación.
Para obtener coordenadas  de mapa al hacer clic solo debemos hacer 3 sencillos pasos.
Creamos el mapa en HTML
Lo primero será crear un contenedor con id mapa en html.
<div id="map" style="height: 500px;margin: 20px 0px;"></div>
Colocamos unos estilos cualquiera, pero es importante definir una altura.
Ahora será necesario llamar un script de Google Maps:
<script src="https://maps.googleapis.com/maps/api/js?key=[TU API KEY]&callback=initMap&v=weekly" async></script>
Recuerda agregar tu API KEY, esta la puedes obtener en la página de Google Console en la sección de bibliotecas.
Únicamente debes buscar la biblioteca Google Maps API JavaScript y activarla, después ir a credenciales y crear una nueva API KEY.
Te podría interesar, trazar una ruta de un punto a otro con Google Maps.
Creamos el mapa en JavaScript
Ahora vamos a nuestro codigo JavaScript y agregamos la función initMap que se llama en el script anterior.
let map; function initMap() const coords = lat: 20.5866641, lng: -100.3863976 ; map = new google.maps.Map(document.getElementById("map"), center: coords, zoom: 15, );
Esta función será el punto de partida de nuestro mapa.
Aquí definimos las coordenadas de la vista inicial y conectamos con el contenedor HTML del mapa.
Agregamos evento de Clic
Ya solamente nos falta el código relacionado con el clic del usuario.
Dentro de la función initMap después de conectar con el mapa colocamos lo siguiente.
let infoWindow = new google.maps.InfoWindow( content: "Clic en el mapa para ubicar la propiedad.", position: coords, ); infoWindow.open(map); map.addListener("click", (mapsMouseEvent) => infoWindow.close(); infoWindow = new google.maps.InfoWindow( position: mapsMouseEvent.latLng, ); $("#lat").val(mapsMouseEvent.latLng.lat()); $("#lon").val(mapsMouseEvent.latLng.lng()); $("#alt").val(15); infoWindow.setContent( "Ubicar propiedad aquí." ); infoWindow.open(map); );
Creamos una ventanita de información con la leyenda ‘Clic en el mapa para ubicar la propiedad’.
De esta forma el usuario sabrá lo que tiene que hacer sin problemas.
Agregamos el evento clic donde se abrirá una nueva ventanita de información y en ella podremos hacer lo que queramos con las coordenadas del nuevo punto.
¿Bastante fácil no es así? ¿Qué más se te ocurre que podriamos hacer ahora?
Si esta información sobre como obtener coordenadas de mapa al hacer clic te ha sido de utilidad no olvides compartirla en tus redes sociales favoritas y dejarnos un comentario en la sección de abajo si tienes cualquier duda relacionada con el tema de arriba, será un placer ayudarte.
¡Hasta luego!
1 note · View note
blogdeprogramacion · 3 years
Text
Descargar archivos grandes con PHP
Descargar archivos grandes con PHP aparece primero en nuestro https://jonathanmelgoza.com/blog/descargar-archivos-grandes-con-php/
Tumblr media
Muchas veces en nuestros proyectos web necesitamos que los usuarios puedan obtener un archivo, el problema es cuando este pesa en GB, por esta razón hoy veremos cómo descargar archivos grandes en PHP mediante una sencilla función.
Hace tiempo necesitaba implementar la descarga de archivos con PHP.
El problema es que eran archivos muy pesados, de gigas.
Cualquera que haya trabajado con archivos grandes sabe que suele ser un dolor de cabeza.
La siguiente función nos permite descargar archivos de varios megas o gigas sin problemas.
Debo recalcar que esta función no la cree yo, la encontré hace tiempo no recuerdo donde pero me ha salvado ya algunas veces.
Archivos permitidos
Lo primero es definir los archivos permitidos para descarga.
function mimeTypes() $mime_types = array( "323" => "text/h323", "acx" => "application/internet-property-stream", "ai" => "application/postscript", "aif" => "audio/x-aiff", "aifc" => "audio/x-aiff", "aiff" => "audio/x-aiff", "asf" => "video/x-ms-asf", "asr" => "video/x-ms-asf", "asx" => "video/x-ms-asf", "au" => "audio/basic", "avi" => "video/x-msvideo", "axs" => "application/olescript", "bas" => "text/plain", "bcpio" => "application/x-bcpio", "bin" => "application/octet-stream", "bmp" => "image/bmp", "c" => "text/plain", "cat" => "application/vnd.ms-pkiseccat", "cdf" => "application/x-cdf", "cer" => "application/x-x509-ca-cert", "class" => "application/octet-stream", "clp" => "application/x-msclip", "cmx" => "image/x-cmx", "cod" => "image/cis-cod", "cpio" => "application/x-cpio", "crd" => "application/x-mscardfile", "crl" => "application/pkix-crl", "crt" => "application/x-x509-ca-cert", "csh" => "application/x-csh", "css" => "text/css", "dcr" => "application/x-director", "der" => "application/x-x509-ca-cert", "dir" => "application/x-director", "dll" => "application/x-msdownload", "dms" => "application/octet-stream", "doc" => "application/msword", "dot" => "application/msword", "dvi" => "application/x-dvi", "dxr" => "application/x-director", "eps" => "application/postscript", "etx" => "text/x-setext", "evy" => "application/envoy", "exe" => "application/octet-stream", "fif" => "application/fractals", "flr" => "x-world/x-vrml", "gif" => "image/gif", "gtar" => "application/x-gtar", "gz" => "application/x-gzip", "h" => "text/plain", "hdf" => "application/x-hdf", "hlp" => "application/winhlp", "hqx" => "application/mac-binhex40", "hta" => "application/hta", "htc" => "text/x-component", "htm" => "text/html", "html" => "text/html", "htt" => "text/webviewhtml", "ico" => "image/x-icon", "ief" => "image/ief", "iii" => "application/x-iphone", "ins" => "application/x-internet-signup", "isp" => "application/x-internet-signup", "jfif" => "image/pipeg", "jpe" => "image/jpeg", "jpeg" => "image/jpeg", "jpg" => "image/jpeg", "js" => "application/x-javascript", "latex" => "application/x-latex", "lha" => "application/octet-stream", "lsf" => "video/x-la-asf", "lsx" => "video/x-la-asf", "lzh" => "application/octet-stream", "m13" => "application/x-msmediaview", "m14" => "application/x-msmediaview", "m3u" => "audio/x-mpegurl", "man" => "application/x-troff-man", "mdb" => "application/x-msaccess", "me" => "application/x-troff-me", "mht" => "message/rfc822", "mhtml" => "message/rfc822", "mid" => "audio/mid", "mny" => "application/x-msmoney", "mov" => "video/quicktime", "movie" => "video/x-sgi-movie", "mp2" => "video/mpeg", "mp3" => "audio/mpeg", "mpa" => "video/mpeg", "mpe" => "video/mpeg", "mpeg" => "video/mpeg", "mpg" => "video/mpeg", "mpp" => "application/vnd.ms-project", "mpv2" => "video/mpeg", "ms" => "application/x-troff-ms", "mvb" => "application/x-msmediaview", "nws" => "message/rfc822", "oda" => "application/oda", "p10" => "application/pkcs10", "p12" => "application/x-pkcs12", "p7b" => "application/x-pkcs7-certificates", "p7c" => "application/x-pkcs7-mime", "p7m" => "application/x-pkcs7-mime", "p7r" => "application/x-pkcs7-certreqresp", "p7s" => "application/x-pkcs7-signature", "pbm" => "image/x-portable-bitmap", "pdf" => "application/pdf", "pfx" => "application/x-pkcs12", "pgm" => "image/x-portable-graymap", "pko" => "application/ynd.ms-pkipko", "pma" => "application/x-perfmon", "pmc" => "application/x-perfmon", "pml" => "application/x-perfmon", "pmr" => "application/x-perfmon", "pmw" => "application/x-perfmon", "pnm" => "image/x-portable-anymap", "pot" => "application/vnd.ms-powerpoint", "ppm" => "image/x-portable-pixmap", "pps" => "application/vnd.ms-powerpoint", "ppt" => "application/vnd.ms-powerpoint", "prf" => "application/pics-rules", "ps" => "application/postscript", "pub" => "application/x-mspublisher", "qt" => "video/quicktime", "ra" => "audio/x-pn-realaudio", "ram" => "audio/x-pn-realaudio", "ras" => "image/x-cmu-raster", "rgb" => "image/x-rgb", "rmi" => "audio/mid", "roff" => "application/x-troff", "rtf" => "application/rtf", "rtx" => "text/richtext", "scd" => "application/x-msschedule", "sct" => "text/scriptlet", "setpay" => "application/set-payment-initiation", "setreg" => "application/set-registration-initiation", "sh" => "application/x-sh", "shar" => "application/x-shar", "sit" => "application/x-stuffit", "snd" => "audio/basic", "spc" => "application/x-pkcs7-certificates", "spl" => "application/futuresplash", "src" => "application/x-wais-source", "sst" => "application/vnd.ms-pkicertstore", "stl" => "application/vnd.ms-pkistl", "stm" => "text/html", "svg" => "image/svg+xml", "sv4cpio" => "application/x-sv4cpio", "sv4crc" => "application/x-sv4crc", "t" => "application/x-troff", "tar" => "application/x-tar", "tcl" => "application/x-tcl", "tex" => "application/x-tex", "texi" => "application/x-texinfo", "texinfo" => "application/x-texinfo", "tgz" => "application/x-compressed", "tif" => "image/tiff", "tiff" => "image/tiff", "tr" => "application/x-troff", "trm" => "application/x-msterminal", "tsv" => "text/tab-separated-values", "txt" => "text/plain", "uls" => "text/iuls", "ustar" => "application/x-ustar", "vcf" => "text/x-vcard", "vrml" => "x-world/x-vrml", "wav" => "audio/x-wav", "wcm" => "application/vnd.ms-works", "wdb" => "application/vnd.ms-works", "wks" => "application/vnd.ms-works", "wmf" => "application/x-msmetafile", "wps" => "application/vnd.ms-works", "wri" => "application/x-mswrite", "wrl" => "x-world/x-vrml", "wrz" => "x-world/x-vrml", "xaf" => "x-world/x-vrml", "xbm" => "image/x-xbitmap", "xla" => "application/vnd.ms-excel", "xlc" => "application/vnd.ms-excel", "xlm" => "application/vnd.ms-excel", "xls" => "application/vnd.ms-excel", "xlt" => "application/vnd.ms-excel", "xlw" => "application/vnd.ms-excel", "xof" => "x-world/x-vrml", "xpm" => "image/x-xpixmap", "xwd" => "image/x-xwindowdump", "z" => "application/x-compress", "rar" => "application/x-rar-compressed", "zip" => "application/zip" ); return $mime_types;
Si necesitas agregar alguno sientente libre de agregarlo.
Te puede interesar, comprimir archivos con PHP.
Función para descargar archivos grandes con PHP
Ahora si, la función que nos permitirá descargar archivos grandes con php.
function downloadFiles($filePath) if (!empty($filePath)) $fileInfo = pathinfo($filePath); $fileName = $fileInfo['basename']; $fileExtnesion = $fileInfo['extension']; $default_contentType = "application/octet-stream"; $content_types_list = mimeTypes(); if (array_key_exists($fileExtnesion, $content_types_list)) $contentType = $content_types_list[$fileExtnesion]; else $contentType = $default_contentType; if (file_exists($filePath)) $size = filesize($filePath); $offset = 0; $length = $size; if (isset($_SERVER['HTTP_RANGE'])) preg_match('/bytes=(\d+)-(\d+)?/', $_SERVER['HTTP_RANGE'], $matches); $offset = intval($matches[1]); $length = intval($matches[2]) - $offset; $fhandle = fopen($filePath, 'r'); fseek($fhandle, $offset); $data = fread($fhandle, $length); fclose($fhandle); header('HTTP/1.1 206 Partial Content'); header('Content-Range: bytes ' . $offset . '-' . ($offset + $length) . '/' . $size); header("Content-Disposition: attachment;filename=" . $fileName); header('Content-Type: ' . $contentType); header("Accept-Ranges: bytes"); header("Pragma: public"); header("Expires: -1"); header("Cache-Control: no-cache"); header("Cache-Control: public, must-revalidate, post-check=0, pre-check=0"); header("Content-Length: " . filesize($filePath)); $chunksize = 8 * (1024 * 1024); if ($size > $chunksize) $handle = fopen($_FILES["file"]["tmp_name"], 'rb'); $buffer = ''; while (!feof($handle) && (connection_status() === CONNECTION_NORMAL)) $buffer = fread($handle, $chunksize); print $buffer; ob_flush(); flush(); if (connection_status() !== CONNECTION_NORMAL) echo "Connection aborted"; fclose($handle); else ob_clean(); flush(); readfile($filePath); else echo 'File does not exist!'; else echo 'There is no file to download!';
Ahora que tenemos nuestra función es hora de probar.
Probando el código
Ya por último vamos a probar nuestro código llamando a la función.
Asegurate de tener un archivo grande para hacer la prueba.
set_time_limit(0); ini_set('memory_limit', '512M'); $file = "test.exe"; downloadFiles($file);
Al ejecutar veremos como nuestro archivo comienza a descargar sin problemas.
Eso fue todo, hoy fue un articulo rápido pero bastante útil si te dedicas al desarrollo web del backend.
Si esta información sobre cómo descargar archivos grandes con PHP te ha sido de utilidad no olvides compartirla en tus redes sociales favoritas y dejarnos un comentario en la sección de abajo si tienes cualquier duda relacionada con este tema, será un placer ayudarte.
¡Hasta luego!
0 notes
blogdeprogramacion · 3 years
Text
Tips para crear un plan de negocios exitoso
Tips para crear un plan de negocios exitoso aparece primero en nuestro https://jonathanmelgoza.com/blog/tips-para-crear-un-plan-de-negocios/
Tumblr media
Si estás pensando en iniciar un negocio o emprendimiento el artículo de hoy te será de gran utilidad, hablaremos sobre algunos tips para crear un plan de negocios exitoso que te ayude a realizar a la perfección tu idea, conseguir inversión o proyectar de forma más correcta.
Un plan de negocios es la herramienta ideal para cualquier nuevo emprendedor.
Consiste en un documento en el que se plantea un nuevo proyecto comercial.
Se analizan las características del proyecto, el mercado alrededor de él y posibles resultados.
Muchos emprendedores piensan que crear un plan de negocios es muy complicado.
La verdad es que si te tomas un tiempo de investigar un poco te encuentras que no es nada del otro mundo.
Solo consiste de ir contestando preguntas que tienes que reflexionar y analizar la respuesta para plasmarla en un documento.
A continuación te dejamos algunos tips para crear un plan de negocios exitoso para tu proyecto.
  No partas de una hoja en blanco
Crear un plan de negocios desde cero es posible pero un poco laborioso.
¿Te imaginas tomar una base para tu plan de negocios? Esto nos facilitaría la vida.
Pues existen modelos de plan de negocios creados por expertos que nos ayudarán a crear el nuestro.
Una ventaja adicional a utilizar estos modelos de plan de negocios es que son creados por personas expertas en el tema.
Piensa detenidamente en todas las partes de tu proyecto
Antes de comenzar debes de sentarte a reflexionar y pensar sobre cada parte del proceso de tu negocio.
Reflexiona sobre tu producto o servicio, proveedores, costos y precios de venta, el mercado alrededor de tu empresa, etc.
Hacer esto nos ayudará bastante a la hora de comenzar a crear nuestro plan de negocios.
Analiza como es desde el inicio hasta el final en el proceso de venta, desde que se adquiere el material con el proveedor hasta el servicio posventa con el cliente.
Encuentra tu diferenciador
Dentro de tu plan de negocios plasma claramente el diferenciador de tu negocio.
Actualmente, existe mucha competencia en el mercado en prácticamente cualquier sector.
Por lo que tener un diferenciador bien definido te ayudará a alcanzar el éxito de tu proyecto.
Hoy en día las personas no les basta con comprar un producto, quieren que ese producto tenga un plus que no lo tenga nadie más.
Si tienes un negocio de ropa, comida o productos para el cabello, ¿Qué ofreces como diferenciador?
Mantén tu plan claro y conciso
Antes los planes de negocios eran bastante largos.
Hoy en día ya no es así, los planes de negocios deben de ser cortos, claros y al punto.
Asegúrate de eliminar cualquier información innecesaria de tu documento.
Los lectores perderán la atención de tu documento si agregas contenido adicional innecesario.
Te podría interesar, consejos para el inicio de tu emprendimiento.
Crea una hoja resumen
Un consejo fantástico es agregar una hoja de resumen.
Un hoja de resumen es una hoja de tu plan de negocios que resuma los puntos fundamentales de tu plan.
La persona que quiera visualizar únicamente el dato crudo leerá esa página.
Quienes quieran profundizar en los detalles recorrerá todo el documento fácilmente para saber más.
Mantenlo actualizado
Muchas personas creen que el plan de negocio se escribió y allí quedó.
Esto es un gran error, el plan de negocios puede y debe ser actualizado con el tiempo.
Cada cierto periodo de tiempo reúne a los socios de tu empresa y analicen su plan de negocios anterior.
A partir de esta reunión pueden salir mejoras o actualizaciones que deben de contemplarse en el nuevo plan de negocios.
  Si estos tips para crear un plan de negocios exitoso te han sido de utilidad no olvides compartirlos en tus redes sociales favoritas y dejarnos un comentario en la sección de abajo si tienes cualquier duda relacionada con el tema de hoy, será un placer ayudarte.
¡Hasta luego!
0 notes
blogdeprogramacion · 3 years
Text
Consumir un API Rest en Flutter con Dart
Consumir un API Rest en Flutter con Dart aparece primero en nuestro https://jonathanmelgoza.com/blog/consumir-un-api-rest-en-flutter-con-dart/
Mucho del trabajo de un programador es crear y consumir servicios, en este caso tenemos que consumir un API Rest en Flutter con Dart para obtener una lista de productos a mostrar en nuestra app store, veamos cómo podemos hacerlo.
Tanto en desarrollo de software, web y móvil una tarea cotidiana es consumir apis.
Es muy común tener servicios web que conectan con base de datos y conectar a ellos para obtener la información.
En el caso de desarrollo de apps es muy común consumir servicios web para obtener o modificar información.
En mi caso estamos creando una app con Dart en Flutter, esta app es una tienda de productos y para lo que nos conectaremos a una api rest es para obtenerlos en tiempo real.
Tomando en cuenta que tenemos un servicio web que nos regresa un json con información de productos como este:
  Vamos a proceder a ver cómo consumir un api rest en Flutter con Dart.
Lo primero es crear una clase con la estructura de la información que vamos a consumir:
class Product final String image, title, description; final int price, size, id; final Color color; Product( this.id, this.image, this.title, this.price, this.description, this.size, this.color, ); factory Product.fromJson(Map<String, dynamic> json) return Product( id: json['idproduct'], title: json['title'], description: json['description'], price: json['price'], image: json['image'], size: int.parse(json['size']), color: Color(int.parse(json['color'])));
Ahora necesitamos crear una lista de productos.
List<Product> products = [];
Te puede interesar, Hola mundo con Flutter y VSCode.
Para despues hacer lo más importante de este articulo, consumir el api rest mediante la siguiente funcion asincrona:
Future<List<Product>> getProducts() async var url = Uri.parse('..../get_products.php'); var response = await http.post(url).timeout(Duration(seconds: 10)); var data = jsonDecode(response.body); var records = List<Product>(); for (data in data) records.add(Product.fromJson(data)); return records;
Asegurate de incluir los import necesarios:
import 'dart:convert'; import 'package:http/http.dart' as http;
Por último ahora en nuestro StatefulWidget en el estado de nuestro componente vamos a indicar que hacer al finalizar:
void initState() super.initState(); getProducts().then((value) setState(() products = value; ); );
Igualamos una variable de products al valor resultante de la funcion getProducts.
En mi caso genero un GridView con la información de estos productos:
Expanded( child: Padding( padding: const EdgeInsets.symmetric(horizontal: kDefaultPadding), child: GridView.builder( itemCount: products.length, gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, mainAxisSpacing: kDefaultPadding, crossAxisSpacing: kDefaultPadding, childAspectRatio: 0.75), itemBuilder: (context, index) => ItemCard( product: products[index], press: () => Navigator.push( context, MaterialPageRoute( builder: (context) => DetailsScreen(product: products[index]))))), )
Sino sabes cómo funciona aquí puedes ver más sobre un GridView Builder.
Ahora nos toca agregar un indicador de carga para mostrar al usuario en lo que se recibe respuesta, ¿Se te ocurre cómo hacerlo? Cuentanoslo en los comentarios.
Si esta información sobre cómo consumir un API Rest en Flutter con Dart te ha sido de utilidad no olvides compartirla en tus redes sociales favoritas y dejarnos un comentario en la sección de abajo si tienes cualquier duda con respecto a este tema, será un placer ayudarte.
¡Hasta luego!
0 notes