style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Blogs

¿Eres nuevo? ¿Cómo hacer que tus preguntas tengan mas posibilidades de ser respondidas?

Es normal que un usuario al tener un problema con algún programa quiera obtener ayuda de la comunidad y se disponga a escribir en algunos de los foros. Pero, ¿Que pasa cuando al crear el tema este queda como si hubiera sido escrito por un niño de 5 años?
Aquí daré unos tips sobre como hacer que tu pregunta tenga mas chance de ser respondida, mas rápido y con mas ganas de ayudarte por parte de la comunidad.
El mismo propósito de este tema puede parecer innecesario y/o inservible, por varias razones. Pero hay un motivo que me impulsa a hacerlo: me he dado cuenta de que la mayoría de las personas no saben como redactar una pregunta.

Primeros pasos con Selenium I

Hola :

Esta es la primera entrada de lo que pienso podría ser una librería que en algún momento le podría servir a alguien, he estado pensando en una forma en la cual poder ayudar con la configuración un poco más ordenada de lo que es la automatización de pruebas, obviamente existen muchas maneras de realizar test y en algún momento estaré pensando en publicar todas o la mayoría de herramientas que nos permitan realizar estas tareas de alguna mejor forma, así que esta primera entrada tratara de las automatizaciones de pruebas front-end por medio de Selenium WebDriver.
También empezaré a escribir sobre postman y algunas cosas que he tenido que aprender (no soy perfil tester, pero me interesan este tipo de pruebas)
La solución que se va a desarrollar en futuros posts me ha servido, y tal vez alguien pueda modificarla o aprovecharla para su beneficio y adaptarla a sus propias necesidades esto es lo bonito de la POO, pero antes de picar código, se debe de empezar con la teoría :) animo !

Realtime sin websockets

Cuando nos llega un requerimiento de aplicaciones en tiempo real y este requerimiento viene despues de Junio del 2018, la primera solucion que te vendra a la mente, sera usar websockets (creo) porque es una de las formas en las que podemos obtener actualizaciones de informacion desde el servidor, sin embargo, muchas empresas sobre todo las mas actualizadas (bancos, aseguradoras e instituciones financieras), debido a sus restricciones de red no siempre permiten usar protocolos tales como websockets y muchos desarrolladores piensan que la unica alternativa a websockets es polling o long-polling (hacer requests cada 5 o 3 segundos, o extender el request lo mas posible hasta recibir una respuesta) y usar una libreria como cometd para ayudar con eso (adivinas, tampoco me gusta cometd, de hecho soy uno de esos desarrolladores que no le gustan muchas cosas :P).

No se si soy yo

Otra vez se me duplico el post, este tiene el mismo contenido del de arriba

Rendering por todos lados

Si creaste el contador con Hooks que revisamos con anterioridad, te habras dado cuenta que el contador se incrementa cada segundo, pero no usamos un interval estamos usando setTimeout; esto sucede porque estamos inicializando el setTimeout cada vez que renderizamos el componente y en React esto sucede cada vez que actualizas el estado de un componente, pero si tienes mas de 100000 componentes hijos (tal vez con un poco menos), notaras que empiezas a tener performance issues, antes de hooks la unica forma de solucionarlo es usar uno de las funciones del ciclo de vida de React shouldComponentUpdate pero eso nos obliga a que ese componente sea una Clase (y no queremos clases con Hooks, de hecho no queremos clases del todo :P, OOP is evil).

Para solucionar este posible problema, desde la version 16.6 de React tenemos React.memo que nos ayuda a mostar una version memoizada del componente que queremos, reduciendo drasticamente el numero de repintados en los hijos.

Codigo

Ahora veremos un ejemplo de contador usando React.memo

import React, { useState } from 'react';
import ReactDOM from 'react-dom';

const Child = React.memo(props => {

React useReducer

Cuando queremos manejar estado mas complejo que una sola variable, o que depende muchas condiciones antes de entregar el valor final. Es mejor usar useReducer, este hook es sumamente similar a Redux y como tal es un observer de estado al que podemos subscribir nuestro componente.

Redux no es igual a Hooks o al revés useReducer no es Redux, hay importantes consideraciones de diseño al momento de querer reemplazar redux con hooks, eso lo veremos después cuando presentemos algo mas complejo que un simple contador, de momento vamos a expandir nuestro contador.

El nuevo contador

El nuevo contador nos permitirá incrementar o reducir su valor a voluntad. Solo tiene dos botones a continuación presento el código

import React, { useReducer } from 'react';
import R_merge from 'ramda/src/merge';
import ReactDOM from 'react-dom';

type Action =
  | { type: 'increment' }
  | { type: 'decrement' };

interface State {
  count: number
}

const reducer = (state: State, action: Action) => {
  switch (action.type) {
    case 'increment':
      return R_merge(state, { count: state.count + 1 });
    case 'decrement':

Observer pattern

Uno de los mas importantes patterns de diseno es Observer, este patron lo podemos ver en librerias como Reactive Extensions, React, Redux, Angular y varias librerias relacionadas con streaming, pero a veces no queremos toda una libreria porque nuestro requerimiento no es tan complejo, y escribir un simple Observer no es tan complicado, al menos no en Kotlin.

El modo de funcionar es bastante simple, tenemos un distribuidor de eventos y varios listeners cada vez que hay un evento, el distribuidor se encarga de enviar el evento a todos los que esten suscritos, es como crear un mini service bus.

https://en.wikipedia.org/wiki/Observer_pattern aqui hay una explicacion mucho mas detallada

Basicamente necesitamos 3 cosas, los suscriptores, una lista de suscritos y una forma de recibir y propagar eventos, vamos a implementar esto en kotlin;

El codigo

Kotlin test

En la comunidad de typescript una de las razones por las que comentan que se debe usar es por que usa types y que eso reduce la introducción de errores en el codigo, y para ciertos errores muy muy simples puede que sea verdad. Pero si he notado que la mayoría de los errores vienen cuando modificamos algo y ese algo se usa en otro lado que no sabemos; e introducimos bugs al código, esto ni con lenguajes typados lo solventas. Pero si hay una herramienta que puede al menos decirte que estas provocando side effects en partes del código que ni esperabas. Y esas son las pruebas unitarias.

Todos deberíamos saber los beneficios que estas conllevan y aunque muchos los sabemos la verdad como desarrolladores no nos gusta escribirlas (al menos a mi no) las vemos como tiempo extra, ademas casi siempre los project managers tambien y piden las pruebas unitarias aunque no den tiempo para poder escribirlas.

Pero esa es otra historia y no importa si sigues una metodología BDD o TDD o simplemente escribes pruebas cuando se te antoja, es importante crearlas.

A continuation veremos un ejemplo de como crear pruebas unitarias para Kotlin:

El codigo a probar

Seguridad en servicos web

Estimados buen día, hice un servidor Rest y utilice JWT para poder ponerle algo de seguridad, sin embargo, quisiera saber si me pueden apoyar en alguna orientación.

1. Aplicar JWT es suficiente para hacer seguro mi servicio?

2. Que tecnología puedo utilizar para firmar cada petición para garantizar que la petición no halla sido modificada en el camino.

3. Para realizar el firmado de la petición es necesario generar certificados para firmar la petición? o como puedo hacerlo, ya que requiero realizar un formulario con X datos sensibles pero necesito realizar el firmado de los mismos, el formulario que pretendo realizar es de acceso publico, como podría proteger las peticiones en el?

4. En otro formulario que quiero implementar es para un registro, estoy implementando un captcha de google, sin embargo espero no ser muy exagerado, pero alguien podría mandar N peticiones a mi servicio directamente sin pasar por el formulario, entonces ¿Cómo puedo proteger esa url de ataques masivos y evitar que llenen mi tabla con información no deseada?

Muchas gracias espero me puedan orientar.

Saludos.

Agregando estado

Estado en React

React es por asi decirlo, una maquina de estados, reacciona a cambios de estado y define todo un ciclo de eventos que suceden cada vez que cambia el estado, el proceso simple es que vuelve a renderizar el componente, es decir, crea el DOM virtual del componente hace la comparacion de diferencias y actualiza el DOM, esto lo hace a una velocidad mas que decente.

Hooks

Hablar de React despues del 06 Febrero del 2019 es hablar de Hooks, no podemos ser mas afortunados de por fin librarnos de ese mal concepto de Clases en javascript, que ni son clases reales porque son instancias y confunden mucho tanto a desarrolladores js como a los que no lo son.
Vamos a realizar un pequeno contador que muestre cuantos segundos han pasado desde que cargamos una pagina. Hooks nos ayudara a escribir el codigo en React.

Dependencias

- La unica dependencia es haber realizado el ejercicio del post anterior.

Actualizando el componente

Solo vamos a actualizar el archivo index.tsx, debera quedar asi:

import React, { useState } from 'react';
import ReactDOM from 'react-dom';

const Hello: React.SFC<{
  text: string

Distribuir contenido

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">