LATEST ARTICLES

abril 22nd 2018

Aprende a actualizar tu Samsung Galaxy S8 y S8+ a Android Oreo de manera manual

Número de lecturas: 2131
{lang: 'es-419'}

Soy un feliz usuario de Samsung S8 (hace 6 meses utilizaba iPhone) pero tenia la versión 7.0 y quería utilizar la versión 8.0 (Android Oreo) por alguna razón la operadora claro no me mostraba la opción de actualización así que decidí hacerlo por mi cuenta y utilice este tutorial el cuál lo seguí al 100% y funciona de manera perfecta sin ningún problema.

Una recomendación tener instalado Smart Switch sacar un respaldo previo hacer el tutorial. Tiempo de actualización de la información y nuevo sistema operativo me tomo unas 2 horas pero vale la pena

———————————————————-

Si eres de aquellos que tiene un espectacular Samsung Galaxy S8 o S8+ el cual lo adquiriste con algún operador local y todavía no se ha actualizado a Android 8.0.0 Oreo, entonces llegaste al lugar correcto porque acá te enseñaremos a actualizar de manera manual tu equipo.

La ROM que le instalarás a tu equipo es completamente oficial de Samsung y corresponde a la región de Chile, así que no tendrás ningún problema de incompatibilidad tras su instalación. De esta manera, tu equipo quedará como si lo hubieses comprado directamente con Samsung en Chile.

Sigue atentamente las instrucciones que te dejaré a continuación para que el proceso salga correctamente. Recuerda leer completamente el tutorial antes de actualizar tu equipo para que no cometas errores.

ADVERTENCIA: al realizar este proceso aceptas dejar fuera de toda responsabilidad a Pisapapeles Networks Ltda (incluyendo todos sus integrantes) y también a Samsung Chile. El incorrecto uso de este tutorial podría dejar tu equipo inservible o hacer que pierda la garantía. Si tienes el equipo bajo arriendo con tu operador, te recomendamos no modificarlo.

REQUISITOS

  • Contar con un Galaxy S8 modelo SM-G950F o Galaxy S8+ modelo SM-G955F
  • Computador corriendo Windows 7 o superior. En caso de los Mac, puedes usar Bootcamp o Parallels y usar Windows.
  • Al menos 6GB libres en el almacenamiento interno de tu computador
  • Conexión a internet para descargar archivos necesarios
  • Cable USB Tipo-C (el que viene con el equipo sirve)
  • Galaxy S8 o Galaxy S8+ con batería 100% cargada

ARCHIVOS A DESCARGAR

Procede a descargar la ROM según el modelo que tengas. NO es necesario descargar ambas ROM, solo descarga el que corresponda a tu modelo.

Android Oreo para Galaxy S8 SM-G950F –> DESCARGAR

Android Oreo para Galaxy S8+ SM-G955F –> DESCARGAR

Archivos superiores alojados en servidores de Updato. Permiten descargar a alta velocidad con administradores de descargas. Para realizar la descarga en el sitio de Updato, haz click en “Download” ubicado al lado derecho de la pantalla.

Los siguientes archivos son obligatorios:

ODIN v.3.13.1 (software para Windows que actualizará tu equipo) –> DESCARGAR

Drivers para el funcionamiento de equipos Samsung en Windows –> DESCARGAR

PREPARANDO TODO PARA LA ACTUALIZACIÓN

Asumiendo que ya descargaste los archivos necesarios para la actualización, procede a descomprimir el archivo llamado “SAMSUNG_USB_Driver_for_Mobile_Phones.exe.zip” y posteriormente haz doble click sobre el archivo llamado “SAMSUNG_USB_Driver_for_Mobile_Phones.exe“.

Presiona en “Instalar” y sigue la instrucciones en pantalla. Esto instalará los drivers que permitirán que Windows reconozca y pueda operar con nuestro Galaxy S8 o S8+ cuando lo conectemos por cable USB. Cuando el proceso de instalación termine, le das click en “Finalizar”.

Ahora procede a descomprimir el archivo llamado “ODIN v3.13.1.zip“, te recomiendo que descomprimas todos sus archivos en una carpeta nueva y que obviamente sea accesible. Te debería quedar así:

Ahora deja todo tal y como está y procede a descomprimir en una carpeta nueva la ROM que descargaste que se llamará “SM-G950F_1_20180220123853_1redntxehp_fac.zip” o “SM-G955F_1_20180220110753_3j1synmlin_fac.zip” según corresponda al modelo que tengas. Yo ocuparé como ejemplo el archivo para el Galaxy S8+. Te debería quedar así:

ACTUALIZANDO TU GALAXY S8 / S8+

Procede a ubicar la carpeta donde estaba el programa ODIN v3.13.1 y debes hacer doble click sobre el archivo llamado “Odin3 v3.13.1.exe“. Te aparecerá un mensaje que dice “Please make sure to download the appropriate binary and version for your model“. Tu solo debes hacer click en “Aceptar” y se abrirá Odin:

Ahora debes ubicar la carpeta donde dejaste los cinco archivos de la ROM descargada para tu S8 o S8+. ¿Los encontraste? Ok, a pesar de ser cinco archivos, solo utilizaremos cuatro de ellos, ahora te explicaré los motivos.

Presta mucha atención a lo siguiente por favor: el archivo que comienza con “CSC_OXM_…” actualizará tu Galaxy S8 o S8+ y eliminará TODOS TUS ARCHIVOS PERSONALES Y/O APLICACIONES. El equipo se reiniciará de fábrica, pero tendrá instalado Android 8.0.0 Oreo.

En caso de utilizar el archivo que comienza con “HOME_CSC_OXM…” actualizará tu equipo y se mantendrán tus archivos y aplicaciones. Es como si recibieras la actualización de software vía OTA, la cual simplemente actualiza el sistema operativo sin borrar nada del usuario.

Yo en lo personal te recomiendo que uses el primer archivo y que borres todo, de esta manera el equipo andará 100% fluido y operará correctamente. En caso contrario, tu equipo podría andar algo lento porque quedarán archivos innecesarios de la versión anterior de Android y podrían causar errores futuros.

Ahora que tienes todo claro, volvemos a Odin y hacemos click en “BL“, se nos abrirá una ventana para buscar y agregar un archivo, ahí debemos seleccionar el archivo que comienza con “BL_G95…”. Luego seleccionamos en “AP” y agregamos el archivo que comienza con “AP_G95...”, después hacemos lo mismo con el botón “CP” seleccionando el archivo que comienza con “CP_G95…”, y finalmente seleccionamos sobre el botón “CSC“, ahí debemos agregar el archivo que vamos a elegir de acuerdo a si queremos que se borren todos tus archivos o no (lo que expliqué más arriba). En mi caso quiero que quede reiniciado de fábrica mi equipo, así que seleccionaré el archivo que comienza con “CSC_OXM…”. Odin debería quedar así:

Cuando vayamos agregando los archivos en Odin, es posible que tu computador deje de responder por unos segundos o minutos mientras se agrega el archivo. Todo dependerá de la potencia de tu computador.

Ahora vamos a proceder a conectar nuestro Galaxy S8 o S8+ a nuestro computador usando el cable USB del equipo. Acá no es llegar y conectar, ya que primero debemos apagar nuestro S8 y activarlo en modo Download. Es un proceso muy fácil, pero si lo escribo acá será algo complicado de entender para algunos, así que procedan a ver el siguiente video y obviamente sigan sus instrucciones:

Una vez que hayan conectado su S8 o S8+ en modo Download al computador, en Odin debería aparecer conectado su equipo en la parte superior izquierda, donde dice “ID:COM“.

En mi caso mi S8+ aparece como “[COM:3]”, a ustedes les debería salir igual o similar. Ojo, es importante que esto aparezca porque es la única manera de saber que la comunicación entre nuestro S8 y el computador está correcta.

Si todo está bien, entonces procede finalmente a hacer click en el botón “Start” para iniciar el proceso de actualización. POR FAVOR no toques nada en tu computador, ni tampoco en tu S8 durante este proceso.

Cuando la actualización se haya completado, tu S8 o S8+ se apagará y reiniciará. En ese proceso es posible que aparezca un mensaje en tu equipo diciendo que Android se está actualizando, tu solo debes esperar a que se complete el proceso. Una vez que el equipo te de la bienvenida (en caso de actualizar borrando todo) o que te aparezca tu pantalla de inicio, ahí recién podrás desconectar tu equipo del cable y disfrutar de todas las bondades de Android Oreo.

Fuente:

pisapapeles.net/

abril 18th 2018

¿QUÉ ES HARDENING?

Número de lecturas: 1334
{lang: 'es-419'}

Hardening (palabra en inglés que significa endurecimiento) en seguridad informática es el proceso de asegurar un sistema mediante la reducción de vulnerabilidades en el mismo, esto se logra eliminando software, servicios, usuarios, etc; innecesarios en el sistema; así como cerrando puertos que tampoco estén en uso además de muchas otros métodos y técnicas que veremos durante este pequeño resumen introductorio al Hardening de sistemas.

Haciéndole la vida difícil al atacante.

Ese es el resumen de la razón de ser del Hardening de sistemas operativos, que se podría decir es:

Un conjunto de actividades que son llevadas a cabo por el administrador de un sistema operativo para reforzar al máximo posible la seguridad de su equipo.

Su propósito, entorpecer la labor del atacante y ganar tiempo para poder minimizar las consecuencias de un inminente incidente de seguridad e incluso, en algunos casos, evitar que éste se concrete en su totalidad. Una de las primeras cosas que hay que dejar en claro del Hardening de sistemas operativos es que no necesariamente logrará forjar equipos “invulnerables”. Es importante recordar que, según el modelo de defensa en profundidad, el host es sólo una capa de éste.

En otras palabras, un factor más a considerar dentro del gran número de puntos a ser tomados en cuenta para defender “globalmente” un sistema. Entre las actividades propias de un proceso de hardening se pueden contar las siguientes:

  • Configuraciones necesarias para protegerse de posibles ataques físicos o de hardware de la máquina. Entre otras actividades, destacan el upgrade de firmware, el establecimiento de contraseñas complejas para el arranque del equipo y la configuración de la BIOS, la deshabilitación de inicio de sistema para cualquier unidad que no sea el disco duro principal, y en casos de servidores, la deshabilitación de dispositivos ópticos, usb o similares, para evitar cualquier entrada de malware desde un medio de almacenamiento externo.
  • Instalación segura del sistema operativo. Esto implica, entre otras cosas, el considerar al menos dos particiones primarias (1 para el sistema operativo en sí y otra para carpetas y archivos de importancia), el uso de un sistema de archivos que tenga prestaciones de seguridad, y el concepto de instalación mínima, es decir, evitando la instalación de cualquier componente de sistema que no sea necesario para el funcionamiento del sistema.
  • Activación y/o configuración adecuada de servicios de actualizaciones automáticas, para asegurar que el equipo tendrá todos los parches de seguridad que entrega el proveedor al día. En caso de que se encuentre dentro de una corporación, es adecuado instalar un servidor de actualizaciones, que deberá probar en un entorno de laboratorio el impacto de la instalación de actualizaciones antes de instalarlas en producción.
  • Instalación, configuración y mantención de programas de seguridad tales como Antivirus, Antispyware, y un filtro Antispam según las necesidades del sistema.
  • Configuración de la política local del sistema, considerando varios puntos relevantes:  Política de contraseñas robusta, con claves caducables, almacenamiento histórico de contraseñas (para no usar contraseñas cíclicas), bloqueos de cuentas por intentos erróneos y requisitos de complejidad de contraseñas. Renombramiento y posterior deshabilitación de cuentas estándar del sistema, como administrador e invitado. Asignación correcta de derechos de usuario, de tal manera de reducir las posibilidades de elevación de privilegios, y tratando siempre de limitar al mínimo los privilegios y/o derechos de los usuarios activos.
  • Configuración de opciones de seguridad generales, como aquellas relacionadas con rutas de acceso compartido, apagado de sistema, inicio y cierre de sesión y opciones de seguridad de red.
  • Restricciones de software, basado en lo posible en el uso de listas blancas de software permitido más que en listas negras del mismo.
  • Activación de auditorías de sistema, claves para tener un registro de algunos intentos de ataque característicos como la adivinación de contraseñas.
  • Configuración de servicios de sistema. En este punto es necesario tratar siempre de deshabilitar todos aquellos servicios que no vayan a prestar una funcionalidad necesaria para el funcionamiento del sistema. Por ejemplo, si su equipo no posee tarjetas de red inalámbrica, el servicio de redes inalámbricas debería estar deshabilitado.
  • Configuración de los protocolos de Red. En la medida de lo posible, es recomendable usar sistemas de traducción de direcciones (NAT) para direccionar los equipos internos de una organización. Deshabilitar todos aquellos protocolos de red innecesarios en el sistema y limitar el uso de los mismos al mínimo. TCP/IP es un protocolo que no nació pensando en seguridad, por lo que limitar su uso al estrictamente necesario es imperativo.
  • Configuración adecuada de permisos de seguridad en archivos y carpetas del sistema. En la medida de lo posible, denegar explícitamente cualquier permiso de archivo a las cuentas de acceso anónimos o que no tengan contraseña. Un correcto set de permisos a nivel de carpetas y archivos es clave para evitar acceso no deseado al contenido de los mismos.
  • Configuración de opciones de seguridad de los distintos programas, como clientes de correo electrónico, navegadores de internet y en general de cualquier tipo de programa que tenga interacción con la red.
  • Configuración de acceso remoto. En caso de no ser estrictamente necesario, es bueno deshabilitar el acceso remoto. Sin embargo, cuando es necesario tener control remoto de la máquina, es preciso configurarlo de manera adecuada, restringiendo el acceso a un número muy limitado de usuario, restringiendo al mínimo las conexiones concurrentes, tomando cuidado en la desconexión y cierre de sesión y estableciendo un canal cifrado de comunicaciones para tales propósitos, como SSH.
  • Configuración adecuada de cuentas de usuario, tratando de trabajar la mayor parte del tiempo con cuentas de acceso limitado y deshabilitando las cuentas de administrador. Es absolutamente recomendable usar la impersonificación de usuarios para realizar labores administrativas en vez de iniciar sesión como administradores.
  • Cifrado de archivos o unidades según las necesidades del sistema, considerando un almacenamiento externo para las llaves de descifrado. Considerar además la opción de trabajar con sistemas de cifrado de mensajería instantánea y correo electrónico.
  • Realizar y programar un sistema de respaldos frecuente a los archivos y al estado de sistema. En la medida de lo posible, administrar los respaldos vía red o llevar los respaldos a unidades físicas que estén alejadas del equipo que las origina.
Como se puede ver, el espectro de actividades que deben ser llevadas a cabo dentro de este proceso es bien amplio y tiene actividades de todo tipo. Sin embargo, la consigna para todas estas actividades es siempre la misma: Dejar el sistema operativo lo más restringido posible.
Y aquí es donde nace una pregunta que debería ser más o menos obvia. ¿Hasta qué punto el hardening es una ayuda y no una molestia?
En este punto, es importante considerar un paradigma muy interesante que tiene la seguridad. Al parecer, la seguridad por un lado, y la versatilidad y facilidad de uso de los sistemas por otro, son como dos grupos de personas tirando de ambos extremos de una cuerda.
En pocas palabras, a medida que se busca una seguridad mayor en los sistemas, la versatilidad y facilidad de uso del mismo se ven limitados, puesto que la cantidad de decisiones que puede tomar el usuario se reduce y la cantidad de posibilidades ajenas al propósito inicial del sistema en sí disminuye drásticamente.
Por otro lado, el aumentar la versatilidad y la facilidad de uso de los sistemas pareciera estar muy relacionado con el aumento en las decisiones y posibilidades del usuario, lo que por consiguiente aumenta la probabilidad del mismo de equivocarse y poner en peligro la seguridad de todo el sistema. Y el debate sobre el punto exacto de equilibrio en cuanto a la cantidad de decisiones que deben pasar por manos del usuario final es bastante extenso y no está del todo resuelto.
Por lo tanto, la respuesta a la pregunta planteada es la siguiente: El Hardening es una ayuda hasta el momento exacto en que entorpece el objetivo inicial que tiene el sistema.
Por citar un ejemplo, si un sistema trabaja con impresoras, redes inalámbricas y además con correo electrónico, no es recomendable deshabilitar la cola de impresión, el servicio de redes inalámbricas ni bloquear los puertos de smtp y pop. En otras palabras, en cada acción de Hardening que se vaya a ejecutar en el sistema operativo, hay que tener especial cuidado en que dichas acciones no afecten el propósito del sistema en sí.
Como conclusión, el Hardening es una ayuda indispensable para ahorrarse bastantes dolores de cabeza por parte de los administradores de sistemas. Entre sus ventajas, se puede contar la disminución por incidentes de seguridad, mejoras en el rendimiento al disminuir niveles de carga inútil en el sistema, una administración más simple y mayor rapidez en la identificación de problemas, ya que muchas de las posibles causas de ellos quedarán descartadas en virtud de las medidas tomadas, y finalmente la posibilidad – en muchos casos – de poder hacer un seguimiento de los incidentes y en algunos casos identificar el origen de los mismos.
Es un trabajo que no es trivial, pero que bien vale la pena hacerlo.

Fuente:

blog.smartekh.com

abril 9th 2018

WiFi o cable de red: ¿cuál es más rápida y más segura?

Número de lecturas: 996
{lang: 'es-419'}

Si bien en teoría WiFi ofrece una mayor capacidad de velocidad que la conexión a través de cable, la conexión vía Ethernet termina siendo en la práctica la más rápida y también la más segura.

La era tecnológica en la que estamos inmersos nos lleva, y en algunos casos hasta casi que nos obliga, a estar conectados permanentemente. Una de las consecuencias de esta conectividad de la que hablamos se percibe claramente en las comunicaciones y en cómo nos hemos acostumbrado a la instantaneidad. Y es que los usuarios de tecnología consideramos natural obtener la información o comunicarnos con otra persona de forma inmediata.

En este contexto, tenemos principalmente dos opciones para conectarnos a Internet, la primera es de manera inalámbrica atreves del WiFi, la segunda mediante un cable de red comúnmente conocido como Ethernet. A continuación, analizamos las dos opciones para ver las diferencias entre ambas y de paso cuestionar la creencia de que el cable de red es siempre la mejor opción.

La conexión a Internet a través de un cable de red: ¿es más rápida?

Naturalmente, la llegada de conexiones inalámbricas resultó ser una bendición ya que nos permite mantener el espacio físico más ordenado y evitar múltiples cableados entre todos los dispositivos conectados. Pero más allá de la comodidad que supone la conexión inalámbrica, al pensar exclusivamente en la velocidad de la conexión desde hace tiempo se plantea un debate que genera controversias: ¿es más rápida la conexión por WiFi o por cable de red? Es que contrario a lo que muchos creen, WiFi ofrece, en teoría, una mayor capacidad de velocidad que la conexión a través de cable. Si bien son muchos los factores (solo mencionaremos algunos en este post) que entran en juego y que influyen en que una conexión pueda ser más rápida que otra, el problema principal que explica por qué muchas veces esto no condice con la realidad es debido a la saturación de canales y a la gran cantidad de conexiones por defecto, lo que hace que sea inestable y disminuye la capacidad de transmisión de datos.

En el eje horizontal de la siguiente imagen se puede apreciar claramente el fenómeno de la saturación de canales.

A esto debemos agregar el factor estructuras, como por ejemplo, paredes de hormigón, piscinas y otros materiales de construcción que provocan perdidas de señal y una reducción del rendimiento que atenta contra la velocidad de la conexión WiFi. A modo general podemos decir que cuanta más alta sea la frecuencia, mayor es la tasa de absorción de muros y suelos.

Desde luego que detectar estas leves variaciones, casi imperceptibles, durante una sencilla navegación es casi imposible. Sin embargo, pueden resultar más obvias estas diferencias en el rendimiento a la hora de jugar juegos en línea, compartir archivos en red o inclusive reproducir contenidos ultraHD en streaming.

En resumen, podemos decir que si bien existen varias normas y estándares distintos en cada tipo de conexión, comúnmente la que se realiza por cable de red y es implementada de manera correcta termina siendo más rápida que la conexión WiFi. Cuando observemos las capacidades de cada protocolo, como por ejemplo el estándar 802.11ac, debemos entender que son velocidades Máximas teóricas de 6,5 Gbps (superiores a las de Ethernet 2,5 a 6 Gbps) pero que en la mayoría de los casos no pueden explotar su máximo potencial porque son afectadas por los obstáculos anteriormente comentados. Por su parte, las conexiones vía Ethernet presentan un rendimiento más estable al no verse afectado por esos agentes u otros factores externos. Para finalizar, vale la pena destacar que hace aproximadamente dos años se lanzó el protocolo Cat.8 de Ethernet, el cual no es muy común verlo implementado por sus altos costos, pero que brinda velocidades altísimas que alcanzan hasta los 40Gbps.

Conectarse a Internet vía Ethernet es más seguro que por WiFi

Si pensamos en términos de seguridad en las comunicaciones, la batalla para las conexiones inalámbricas está perdida si las comparamos con Ethernet. Existen numerosos tipos de ataques que pueden realizarse de manera remota, tanto para desautenticar un dispositivo como para romper la clave de cifrado e ingresar a la red. Además, durante el año pasado fuimos testigos de vulnerabilidades como KRACK que afecta a uno de los protocolos más robustos y utilizados como es el WPA2, y que probablemente haya sido la causa que impulsó el desarrollo del novedoso WPA3 que aún no se implementó. Por otra parte, con mayor o menor medida de éxito, un atacante podría también bloquear este tipo de comunicaciones inalámbricas a través de los famosos jammers o inhibidores de señal.

Por ultimo, otro ataque muy común es el que utiliza los falsos puntos de acceso y que permite a la victima conectarse de modo automático al dispositivo del atacante para espiar su tráfico y robar sus datos. Por supuesto, estos ataques son imposibles de hacer de forma remota a través de una red Ethernet, ya que solo podrían realizarse si se tuviese acceso físico. Debido a esto, las conexiones por cable son más seguras que las comunicaciones inalámbricas, en otras palabras, posee menor riesgo de sufrir incidentes sin profundizar en las medidas de seguridad que podrían aplicarse.

Entonces ¿más cables y menos wifi?

Luego de haber llegado hasta aquí, quizás estés pensando en actualizar la arquitectura de tu red y conectar todo a través de Ethernet. Por supuesto que quedan afuera de esta opción dispositivos como smartwach, tablets, celulares o lámparas inteligentes.

Como conclusión, es lógico que lo más adecuado para transferir archivos a máxima velocidad entre dispositivos sea el cable de red Ethernet. Es importante aclarar que la velocidad que tengamos contratada para acceder a Internet mediante nuestro ISP en este caso no tiene incidencia alguna.

Evidentemente, la movilidad marcará las necesidades en conjunto con las bocas o puertos disponibles en tu router. Si trabajas con una notebook y estás constantemente cambiando de puesto dentro de la cobertura WiFi, quizá no podrás limitarte a un cable que te obligue a permanecer en el mismo espacio físico. En el caso de las PC de escritorio es diferente, ya que, aunque puedan contar con tarjeta inalámbrica, solo es recomendable cuando no se te permita llevar el cable de red Ethernet hasta el equipo. Para unidades compartidas de Red o Media Player también se recomiendan conexiones por cable.

Si bien el sueño de no utilizar más cables para los dispositivos ya es posible, en muchos casos para los amantes de la velocidad no es la mejor opción. Por lo tanto, será cuestión de priorizar tus gustos.

Fuente:

 

marzo 19th 2018

¿AngularJS vs ReactJS? Cómo confundir la velocidad con el tocino

Número de lecturas: 1926
{lang: 'es-419'}

Últimamente no hago otra cosa que encontrarme post comparando frameworks JavaScript. Y es que si nos ponemos a pensarlo, es normal que existan tantos post explicativos de este tipo. Cada año, mes, incluso día, existe un nuevo framework JavaScript en el planeta que nos promete el mejor rendimiento y la mejor forma para desarrollar aplicaciones robustas, mantenibles y escalables.

Es lógico que con la velocidad a la que crecen las alternativas, necesitemos ayuda para elegir la mejor solución. No es lo mismo desarrollar con EmberJS, que montar una aplicación compleja con BackboneJS, por lo que cuanto antes nos ayuden a abrirnos los ojos con que podemos hacer y que no con tanto framework, mejor.

Sin embargo, últimamente veo muy obsesionada a la comunidad creando una batalla ficticia entre dos ecosistemas que, bajo mi punto de vista, no tienen nada que ver el uno con el otro y en el que hacer cualquier comparación puede llegar a ser bastante odiosa.

Cada vez que leo un post donde se comparan las virtudes y bondades que existen entre AngularJS y ReactJS pienso que algo no va bien o que el propio escritor no ha entendido algo. Me pasaba algo parecido a cuando la comunidad comparaba jQuery con AngularJS. Me resultaba una comparación tan ficticia que esos post más que ayudar, al final hacian liar mas a los desarrolladores que querían acercarse por primera vez a AngularJS.

Como os digo, algo parecido está ocurriendo con AngularJS y ReactJS y me da cierto miedo a que creando estas comparaciones los desarrolladores vayan con unas expectativas hacia ReactJS diferentes a lo que son, como si, por culpa de estos primeros post introductorios, se nos estuviese vendiendo ReactJS como una evolución natural desde AngularJS y la decepción sea mayúscula.

Por eso es importante saber que AngularJS y ReactJS juegan en dos ligas diferentes por dos motivos muy esclarecedores:

Primer motivo: ReactJS no es un framework, es una librería

El primer motivo es que AngularJS se presenta como un framework total. Un framework donde podemos hacer todo lo necesario en una aplicación front compleja. Podemos incluir ciertas extensiones al framework, pero por lo general, el core de AngularJS nos va a permitir realizar un porcentaje altísimo de aplicaciones sin tener que incluir grandes cambios.

ReactJS en cambio se define como una librería. Una librería que tiene como fin un propósito muy definido: ReactJS solo quiere encargarse de gestionar la vista de tu aplicación. Si te acercas a esta librería, te cansarás de que Facebook te diga que si nuestra aplicación está diseñada como un MVC, ReactJS se encargará de dar forma a la V de nuestro patrón.

Por esto está gustando tanto ReactJS. Es una librería ligera que solo se encarga de hacer bien una cosa y nada más. AngularJS ha sufrido muchas críticas en su core. Existen personas que no son partidarias de su sistema de routing por lo poco flexible que es. Otros desarrolladores tienen ciertas dudas en la forma en que trabaja el $scope. Otras en cambio no son partidarias de su filosofía en directivas y el resto, por ejemplo, preferiría usar otro inyector de dependencias diferente al actual.

Menos en el caso del routing, que se encuentra extraído fuera del núcleo, a día de hoy cambiar cualquiera de esas piezas es complicado, ya que tienen una dependencia muy alta de cómo debe funcionar Angular, por lo que cambiar una pieza es harto complejo o nos va a dar más problemas que soluciones el cambiarlo. Como siempre me gusta decir, si decides casarte con AngularJS, será para siempre con sus pros y sus contras.

Con ReactJS esto no pasa. Si nos gusta la forma en que trabaja la librería, simplemente la usaremos para la interacción del usuario y el resto de los módulos software típicos con los que cuenta una aplicación front podrán ser realizadas por las librerías que más nos gusten o por nuestras propias soluciones si ninguna nos convence. Incluso podría llegar un día que ReactJS deje de parecernos la mejor opción y que cambiarla por otra librería nos pueda parecer hasta fácil.

Como vemos es complicado comparar un framework contra una librería, porque sería como comparar una navaja multiusos con un cuchillo. La navaja sabemos que hace muchas cosas que el cuchillo no puede. Lo único que sabemos es que el cuchillo corta muy bien.

Segundo motivo: El paradigma de ReactJS no es el de AngularJS

ReactJS nació como una solución para realizar programación declarativa en la capa de interfaz de una aplicación. ReactJS se presenta como una opción muy válida para desarrollar aplicaciones JavaScript por medio del paradigma funcional. Es decir, aplicaciones que solo contengan un único flujo, donde las funciones no contengan estado y si lo contienen, este sea  inmutable, en la medida de lo posible.

Donde la abstracción se consiga por medio de funciones que contengan entradas y salidas sin saber cómo se comportan internamente, simplemente que funcionen como cajas negras que siempre funcionen de la manera esperada, es decir, que dada siempre la misma entrada, siempre devuelvan la misma salida.

Todo esto se traduce a que ReactJS crea interfaces por medio de componentes. Componentes mínima, con funcionalidad mínima que se van componiendo los unos a los otros para formar jerarquías de componentes. Donde los datos fluyen desde las capas más genéricas de componentes hacia los más simples y específicas, formando un árbol donde las entradas son datos y las salidas son html.

Todas estas ideas no son consideradas en AngularJS. AngularJS apostó en su día por ser más tradicional y diseñarse dentro de un patrón estructural MVC que con el tiempo irá dando paso a un MVVM y que a día de hoy tiene la flexibilidad suficiente como para permitir al desarrollador usar el que necesite, denominándose a esto el patrón MVW o MV* (Model-View-Whatever).

Las vistas y los controladores de las aplicaciones AngularJS comparten módelos en los que se cambia el estado y donde no existe nada inmutable. Suelen ser aplicaciones muy parecidas a lo que nos encontrabamos en MVC.NET o Spring de Java pero ahora en la parte cliente. Aplicaciones llenas de clases que son instanciadas por medio del framework según las necesidades.

Y si ReactJS es una librería que se encarga de la vista ¿Por qué no lo usamos junto con AngularJS?

Al igual que se está poniendo muy de moda el comparar AngularJS con ReactJS. Existen muchos tutoriales de cómo usarlos juntos. Esto es algo que se puede hacer. Podemos hacer que ReactJS se encargue de gestionar la jerarquía de componentes visuales de nuestra aplicación y que AngularJS funcione en el resto de capas.

Particularmente yo no lo recomiendo. Creo que AngularJS cuenta con un motor de vistas por medio de directivas y componentes bastante potente y que se adapta mejor a las necesidades de su framework a como lo hace ReactJS. Creo que ReactJS pierde esencia usándose con AngularJS y creo que migrar aplicaciones a Angular 2 en el futuro se complicaría demasiado.

No soy partidario de crear estos ‘frankensteins’. Me parece más un empecinamiento por usar dentro de nuestra aplicaciones todo aquello nuevo que sale al mercado y seguir las modas, que una necesidad principal para nuestra aplicación. Por lo que no nos dejemos llevar por estas arquitecturas raras.

Si ya tenemos aplicaciones hechas en AngularJS en producción, mejorémoslas para que se adapten mejor al mantenimiento y la reusabilidad que necesitemos actualizando Angular a su versión 1.5 por ejemplo, que nos va a permitir mejorar nuestra aplicación por medio de la  nueva funcionalidad angular.component o con su nuevo router más flexible que el anterior.

Si por el contrario precisamos una aplicación nueva, pero nos da miedo lanzarnos a ReactJS tan pronto. No pasa nada. Sigamos con AngularJS. Aprovechemos todo nuestro conocimiento y experiencia y orquestemos una mejor arquitectura. Quizá una arquitectura orientada a componentes que pueda migrarse en el futuro a Angular 2. No hace falta seguir modas.

Pero si en cambio, sabes de ReactJS, te convence su paradigma y filosofía, no lo dudes y embárcate. Creo que tu workflow y tu ciclo de desarrollo mejorará y que tus aplicaciones serán igual o más competentes.

Nos leemos ?

PD: Si aun no sabes nada sobre AngularJS o ReactJS, este y este post puede que te interesen.

Fuente:

https://elabismodenull.wordpress.com