Se familiarizarán o reforzarán los principios básicos para crear servicios RESTful y sabrán cómo aplicarlos con Go, un lenguaje ideal para la creación de servicios debido a su servidor HTTP integrado, los métodos (funciones) simples para la codificación XML y JSON, su alta disponibilidad y paradigma concurrente.
LinkedIn Data Infrastructure Slides (Version 2)Sid Anand
Learn about Espresso, Databus, and Voldemort. LinkedIn Data Infrastructure Slides (Version 2). This talk was given in NYC on June 20, 2012
You can download the slides as PPT in order to see the transitions here :
http://bit.ly/LfH6Ru
phpMyAdmin es una herramienta gratis y de código abierto, escrita en PHP, y que sirve para administrar bases de datos MySQL a través de una página web.
Con esta herramienta puedes crear y borrar bases de datos; alterar, crear, eliminar tablas; borrar, añadir, editar campos; o simplemente ejecutar sentencias de SQL.
http://leccionesweb.com/
Web framework ligeros y micros en java barcamp 2014Carlos Camacho
Presentación enfocada a mostrar las funcionalidades más importante de los micro framework Spark y Ratpack. Dando una inducción a los conceptos básicos en su utilización del protocolo HTTP y los servicios REST.
Impartida en la segunda edición en el Barcamp 2014, Pontificia Universidad Católica Madre y Maestra (PUCMM), Santiago de los Caballeros, República Dominicana.
LinkedIn Data Infrastructure Slides (Version 2)Sid Anand
Learn about Espresso, Databus, and Voldemort. LinkedIn Data Infrastructure Slides (Version 2). This talk was given in NYC on June 20, 2012
You can download the slides as PPT in order to see the transitions here :
http://bit.ly/LfH6Ru
phpMyAdmin es una herramienta gratis y de código abierto, escrita en PHP, y que sirve para administrar bases de datos MySQL a través de una página web.
Con esta herramienta puedes crear y borrar bases de datos; alterar, crear, eliminar tablas; borrar, añadir, editar campos; o simplemente ejecutar sentencias de SQL.
http://leccionesweb.com/
Web framework ligeros y micros en java barcamp 2014Carlos Camacho
Presentación enfocada a mostrar las funcionalidades más importante de los micro framework Spark y Ratpack. Dando una inducción a los conceptos básicos en su utilización del protocolo HTTP y los servicios REST.
Impartida en la segunda edición en el Barcamp 2014, Pontificia Universidad Católica Madre y Maestra (PUCMM), Santiago de los Caballeros, República Dominicana.
Derribando la torre de marfil - Plain Concepts Dev DayPlain Concepts
Los microservicios son el nuevo hype del desarrollo pero, ¿seguro que sabemos cómo y cuándo utilizarlos? En esta charla veremos, a través de un ejemplo de un caso de negocio, una breve introducción a los microservicios, ventajas y retos que plantea (no todo va a ser fácil), incluyendo buenas prácticas.
Evento de Partners SiteGround "Escalando WordPress"SiteGround España
En SiteGround contribuimos activamente en el desarrollo de WordPress, seguimos aprendiendo de todos los que generan avances en la comunidad y queremos compartir este conocimiento con vosotros para que saquéis el máximo partido de WordPress y hagáis crecer vuestros negocios de la forma más óptima posible, ya sea un blog, una tienda online, una empresa, un medio de comunicación, etc.
Por ello, hemos creado nuestros eventos de Partners como punto de encuentro de expertos en WordPress y negocios y el 27 de abril celebramos en Madrid nuestro segundo evento de Partners “Escalando WordPress” con gran éxito (#SiteGroundPartners).
Podéis ver el vídeo resumen en nuestro canal de YouTube aquí https://www.youtube.com/watch?v=Ta_7huBLrAU
Cómo integrar AngularJS con una instalación de Drupal 7 a través de views y services o cómo agregarle a una web estándar las características de una aplicación HTML5.
Throughout this session we will see the fundamental elements of our new MVC Core Web framework. The changes made since the previous versions and the migration steps that we have. We will emphasize the new features and ways of working as well as everything related to the different models of deployment.
Corporación de Industrias Tecnológicas S.A. - Capacitaciones en Informática - Programación con CodeIgniter
www.CorpintecSA.com
contacto@CorpintecSA.com
Pues volvemos de nuevo a la carga con un nuevo meetup donde os vamos a contar cómo podeis optimizar al máximo los recursos que CloudHub nos ofrece como por ejemplo:
1.- Saber dimensionar el número de operaciones por API
2.- Aplicar buenas prácticas para no saturar los recursos
3.- Aprovechar al máximo el 0.1 vCore
4.- Cuando escalar vertical y horizontalmente un API
5.- Utilizar herramientas de análisis de código como Sonar
Estructuras de datos avanzadas: Casos de uso realesSoftware Guru
La utilización de estructuras de datos adecuadas para cada problema hace que se simplifiquen en gran medida los tiempos de respuestas y la cantidad de cómputo realizada.
Por Nelson González
Onboarding new members into an engineering team is not easy on anyone. In a short period of time, the new team member is required to be able to bring professional
Por Victoriya Kalmanovich
El secreto para ser un desarrollador SeniorSoftware Guru
En esta charla platicaremos sobre el “secreto” y el camino para llegar a ser un desarrollador Senior, experiencia, consejos y recomendaciones que en estos 8 años
Por René Sandoval
Apache Airflow es una plataforma en la que podemos crear flujos de datos de manera programática, planificarlos y monitorear de manera centralizada.
Por Yesi Díaz
How thick data can improve big data analysis for business:Software Guru
En esta presentación hablaré sobre cómo el Análisis de Datos Gruesos, específicamente el análisis antropológico y semiótico, puede ayudar a mejorar los resultados del Big Data
Por Martin Cuitzeo
CoDi® es la nueva forma de realizar pagos digitales desarrollada por el Banco de México. Por medio de CoDi puedes realizar cobros y pagos desde tu celular, utilizando una cuenta bancaria o de alguna institución financiera, sin comisiones.
Por Cristian Jaramillo
Gestionando la felicidad de los equipos con Management 3.0Software Guru
En las metodologías agiles hablamos de equipos colaborativos, autogestionados y felices. hablamos de lideres serviciales. El management 3.0 nos ayuda a cultivar el mindset correcto, aquel que servirá como el terreno fértil para que la agilidad florezca.
Por Andrea Vélez Cárdenas
Taller: Creación de Componentes Web re-usables con StencilJSSoftware Guru
Hoy por hoy las experiences de usuario pueden ser enriquecidas mediante el uso de Web Components, que son un estándar de la W3C soportado por la mayoría de los navegadores web modernos.
Por Alex Arriaga
Así publicamos las apps de Spotify sin stressSoftware Guru
En Spotify tenemos 1600+ ingenieros, trabajando en 280+ squads. Aún a esta escala, hemos logrado adoptar prácticas que nos han permitido acelerar la forma en que desarrollamos nuestro producto. Presentado por Erick Camacho en SG Virtual Conference 2020
Achieving Your Goals: 5 Tips to successfully achieve your goalsSoftware Guru
he measure of the executive, Peter F. Drucker reminds us, is the ability to "get the right things done." This involves having clarity on what are the right things as well as avoiding what is unproductive. Intelligence, creativity, and knowledge may all be wasted if not put to work on the things that matter.
Presentado por Cristina Nistor en SG Virtual Conference 2020
Acciones de comunidades tech en tiempos del Covid19Software Guru
Acciones de Comunidades Tech en tiempo del COVID-19 es una platica para informar acerca de las acciones que están realizando algunas comunidades de tecnología en México para luchar contra la propagación del COVID-19. Desde análisis de datos, visualizaciones, simulaciones de contagio, etc.
Presentado por Juana Martínez, Adriana Vallejo y Eduardo Ramírez en SG Virtual Conference 2020
De lo operativo a lo estratégico: un modelo de management de diseñoSoftware Guru
La charla presenta un modelo claro, generado por la ponente, para atender los niveles desde lo operativo a lo estratégico.
Presentado por Gabriela Salinas en SG Virtual Conference
3Redu: Responsabilidad, Resiliencia y Respetocdraco
¡Hola! Somos 3Redu, conformados por Juan Camilo y Cristian. Entendemos las dificultades que enfrentan muchos estudiantes al tratar de comprender conceptos matemáticos. Nuestro objetivo es brindar una solución inclusiva y accesible para todos.
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
En este proyecto de investigación nos adentraremos en el fascinante mundo de la intersección entre el arte y los medios de comunicación en el campo de la informática.
La rápida evolución de la tecnología ha llevado a una fusión cada vez más estrecha entre el arte y los medios digitales, generando nuevas formas de expresión y comunicación.
Continuando con el desarrollo de nuestro proyecto haremos uso del método inductivo porque organizamos nuestra investigación a la particular a lo general. El diseño metodológico del trabajo es no experimental y transversal ya que no existe manipulación deliberada de las variables ni de la situación, si no que se observa los fundamental y como se dan en su contestó natural para después analizarlos.
El diseño es transversal porque los datos se recolectan en un solo momento y su propósito es describir variables y analizar su interrelación, solo se desea saber la incidencia y el valor de uno o más variables, el diseño será descriptivo porque se requiere establecer relación entre dos o más de estás.
Mediante una encuesta recopilamos la información de este proyecto los alumnos tengan conocimiento de la evolución del arte y los medios de comunicación en la información y su importancia para la institución.
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
Recopilación de los puntos más interesantes de diversas presentaciones, desde los visionarios conceptos de Alan Turing, pasando por la paradoja de Hans Moravec y la descripcion de Singularidad de Max Tegmark, hasta los innovadores avances de ChatGPT, y de cómo la IA está transformando la seguridad digital y protegiendo nuestras vidas.
3. www.sgcampus.com.mx @sgcampus
CONTENIDO
• Primer API en Go
• Introducción de conceptos relacionados al uso de Go
• Uso del paquete http
• Servicios RESTful en Go
• Principios de arquitecturas REST. Diseño de APIs en Go
• Acceso y Uso de web services en Go
• Maneras de integrar otros web services para autenticación de manera segura
• Producción
• Estrategias de deployment
• Utilización de procesos para mantener el servidor corriendo, altamente accesible y
conectado con otros servicios
• Desempeño
• Estrategias para mantener el API vivo,responsivo y rápido en producción.
• Mecanismos de caching
• Seguridad
• SQL-injection
• Cross-site scripting
5. www.sgcampus.com.mx @sgcampus
APIs
• APIs: parte fundamental para el desarrollo web, mobile hoy en día
• Más fácil de crear y consumir que servicios precursores
• Todo el mundo tiene un API: bibliotecas, servicios (SaaS), datasets
• Estandarizan la comunicación entre cualesquiera dos (o más) plataformas
• Malos APIs: no inclusivos, semanticamente confusos, falta de consistencia
7. www.sgcampus.com.mx @sgcampus
Go: net/http
• El paquete net/http provee implementaciones de cliente y servidor HTTP
• Para hacer peticiones HTTP y HTTPS usamos Get, Head, Post y PostForm :
• El cliente debe cerrar el cuerpo (respuesta) cuando termina de usarlo:
8. www.sgcampus.com.mx @sgcampus
Paquete HTTP
• El paquete HTTP nos va a facilitar la tarea para construir un servicio
REST
• Además de servir vía HTTP, el paquete incluye otras utilidades como
cookie jars, clientes de configuración, reverse proxies, entre otros.
• http.server struct provee la base de todas las acciones de nuestro
servidor y parámetros.
• Dentro del servidor podemos establecer nuestra dirección TCP, routing
de peticiones, timeouts e información de headers.
• Go provee varios shortcuts (atajos) para invocar un servidor sin iniciar
directamente el struct.
9. www.sgcampus.com.mx @sgcampus
• Por ejemplo, cuando tenemos muchos valores por default, podríamos
usar el siguiente código:
• Y para ejecutar lo anterior, basta con poner:
11. www.sgcampus.com.mx @sgcampus
Lo anterior sirve para invocar un struct de servidor y establecer
las propiedades Addr y Handler.
Si se quiere tener control más granular de nuestro servidor, se
puede hacer de igual manera agregando las propiedades
pertinentes.
12. www.sgcampus.com.mx @sgcampus
Hello World!
• Objetivo: Desplegar un JSON en el Browser.
• Base:
• Este pedacito de código es lo mínimo que requerimos para desplegar
un string JSON por medio de HTTP.
13. www.sgcampus.com.mx @sgcampus
• Struct de respuesta, que contiene todos los datos que queremos
mandar al cliente (variable Message) después de tomarlo del API:
15. www.sgcampus.com.mx @sgcampus
• Al entrar a main(), establecemos una función de manejo de ruta
para responder a las peticiones a /api, misma que inicializa un
API struct con Hello,world!
• Cuando pasamos esto a un arreglo JSON (output) y después de
haber mandado el mensaje a nuestra clase iowriter (entrada/
salida), en este caso un valor del tipo http.ResponseWriter,
casteamos el valor a string.
• El último paso es una manera de mandar el arreglo por medio de
una función que espera recibir un string.
16. www.sgcampus.com.mx @sgcampus
Casting
• Go maneja el casting de tipos de manera muy simple, aplicando
el tipo como una función que delimita la variable objetivo.
• Por ejemplo, podemos casera un valor int64 a integer
simplemente delimitándolo con una función int(NuestroInt64)
• Aunque hay algunas excepciones: algunos tipos no pueden ser
convertidos directamente a otros y necesitan un paquete como
strconv para lograrlo.
17. www.sgcampus.com.mx @sgcampus
• Para verificar que todo está bien hecho, abrir el browser de su
preferencia y llamar al localhost:8080/api, que debe mostrar el
resultado de nuestro Hello World:
18. www.sgcampus.com.mx @sgcampus
Construyendo una Ruta
• Al hablar de routing en Go, hablamos de un multiplexer (o mux)
• En este caso, un multiplexer implica tomar URLs o patrones de URLs y
traducirlos a funciones internas.
• Visualícenlo como un mapeo simple de una petición a una función.
• Por ejemplo:
• Existen ciertas limitaciones con el ruteador de mux del paquete net/http,
pues, por ejemplo, no se puede generar un wildcard o una expresión
regular para una ruta.
• Otro problema es que no es bueno para responder a peticiones
dinámicas o aleatorias, lo que significa que no es capaz de aceptar/
identificar patrones.
20. www.sgcampus.com.mx @sgcampus
Soluciones
• Soluciones 3rd-party. Framework.
• Gorilla: web framework. Tiene un paquete que hace este tipo de
routing.
• También cuenta con otros beneficios como JSON-RPC, cookies
seguras y sesiones globales de datos.
• El paquete mux de Gorilla permite el uso de expresiones regulares
• http://www.gorillatoolkit.org
• http://www.gorillatoolkit.org/pkg/mux
21. www.sgcampus.com.mx @sgcampus
Soluciones
• Routes, de drone.io (https://github.com/drone/routes)
• Paquete dedicado solamente a routear
• Importante, porque es más eficiente que Gorilla
• Routing de URLs puede representar un cuello de botella en
aplicaciones grandes y/o escalables por el número de peticiones
• Para aplicaciones pequeñas, la diferencia es despreciable
22. www.sgcampus.com.mx @sgcampus
REST en Go
• API al último o primero?
• Depende de los fines: app o sitio de una sola página vs sitio
completo.
• Estrategias para diseñar un API
• Principios básicos de REST
• Creación de endpoints con Gorilla
• Tips para versionar aplicaciones
23. www.sgcampus.com.mx @sgcampus
REST
• REST : Representational state transfer
• Definición de formato: JSON, RSS, XML, binarios
• Es importante que el formato sea compatible con los datos. E.g. Es
usual ver datos traducidos de codificación Base64 y enviados vía JSON
• Tamaño: payload o cantidad de datos por transmitir
• El modelo de un API tiene que satisfacer las necesidades del cliente de
actualizar quitar u obtener un recurso o entrada en particular.
• Self-description: engloba 2 componentes de REST. 1) Debe incluir todo
lo necesario para satisfacer las peticiones del cliente y 2) información
sobre cómo manejar dicha información.
• Se evita la idea tradicional de conservar cookies o variables de sesión,
pues todo se maneja a través del API/web service.
24. www.sgcampus.com.mx @sgcampus
URIs y URLs
• Las URL o URI, en este caso, deben ser informativas. No sólo
deben dar información sobre los endpoints de datos, pero
también qué tipo de datos se debe esperar.
• No deben romperse en el futuro, a pesar de las versiones. Deben
ser consistentes.No aplicarlo se traduce en mal UX.
• Adelantarse a cambios: reaccionar a estos utilizando códigos de
status HTTP para indicar nuevas instancias y errores, en lugar
de sólo actualizarlos y romper el flujo anterior.