Archive for Apple

October 2nd 2019

En el desarrollo de apps ¿Flutter o Ionic?

Número de lecturas: 620
{lang: 'es-419'}
flutter o ionic

Los frameworks agilizan el trabajo de los programadores a la hora de desarrollar apps.

Su utilización garantiza una mayor productividad durante la jornada laboral, agilizando las horas de trabajo volcadas en el desarrollo.

Para ayudar a los desarrolladores y equipos a tomar la decisión correcta, esta breve guía explica las similitudes y diferencias entre Flutter o Ionic.

¿Qué es Flutter?

 

Flutter es un framework de Google. Permite, a partir de un mismo código, el desarrollo de apps compatibles con iOS y Android a una velocidad récord.

Basándonos en nuestra experiencia, Flutter mejora el rendimiento de las aplicaciones. Reduce su tamaño y es en general más estable y

produce menos errores.

¿Qué es Ionic?

 

Ionic es un framework originalmente basado en Angular. Permite a nuestros programadores el desarrollo de apps con tecnologías web. Utiliza estándares como HTML, CSS y JavaScript. Prepara el código de una app para que pueda funcionar tanto en plataformas iOS como en Android. También,  ofrece la posibilidad de realizar una compilación más y hacer una ampliación de escritorio basada en ElectronJS. Dando lugar a una Progressive Web App.

Flutter vs Ionic

Ionic y Flutter comparten una visión común de crear aplicaciones de alto rendimiento que funcionen en todos los dispositivos. Sin embargo, sus filosofías centrales no podrían ser más diferentes.

 

  • El principio de Ionic es utilizar la plataforma web. Adoptando estándares abiertos siempre que sea posible.
  • Al programar con Ionic se aprende sobre las herramientas y los lenguajes de la web. Es un framework diseñado para ofrecer un gran rendimiento en dispositivos móviles, equipos de escritorio y, especialmente, en la web.
  • Flutter, en cambio, crea un ecosistema propio que está en desacuerdo con los lenguajes comunes, conjuntos de herramientas y estándares que se encuentran en el mundo del desarrollo en general.
  • Flutter ofrece un rendimiento muy bueno en dispositivos móviles. Pero las limitaciones fundamentales de su arquitectura hacen que sea una mala elección para implementaciones basadas en web.
  • La elección de la solución debe basarse en dónde y cómo se planea implementar la app y qué habilidades se conoce o se quiere aprender en el futuro.

 

Visión compartida

Tanto Ionic como Flutter son únicos entre todos los otros enfoques de desarrollo de aplicaciones. Comparten la visión de crear un framework para diseñar la interfaz de usuario que funcione en todas partes. Ofreciendo un gran rendimiento y una buena experiencia de usuario dondequiera que se ejecute.

Mientras que la mayoría de los enfoques multiplataforma, como React Native, se centran casi exclusivamente en dispositivos móviles. Ionic y Flutter están diseñados para abordar dispositivos móviles, equipos de escritorio y la web. Todo esto con una base de código compartida.

La distinción clave entre ellas es la forma en que cada solución trata de realizar esta visión y en que medida pueden cumplirla.

Filosofías opuestas

Las diferencias entre Ionic y Flutter comienzan con la filosofía central de cada framework. Que no podría ser más diferente. En todo lo que hacemos en Ionic, el principio rector es “utilizar la plataforma” mediante la adopción de estándares y capacidades web abiertas siempre que sea posible.

Cuando se elige Ionic, no se apuesta realmente por Ionic. Se está apostando en la web.

Esto se debe a que Ionic y sus herramientas se basan en tecnologías web abiertas. Desde los lenguajes web que utiliza para crear aplicaciones (HTML, CSS, JavaScript) hasta los componentes de interfaz de usuario basados en estándares que se ejecutan dentro de la app.

Flutter ha optado por realizar su visión creando un ecosistema completamente nuevo y propio desde cero. Desde Dart, el lenguaje que usa Flutter para crear aplicaciones, hasta su motor de renderizado personalizado. Casi todo Flutter se basa en su propio conjunto de estándares que no aprovechan las capacidades del navegador, los lenguaje web y las librerías JavaScript de hoy en día.

Estas filosofías opuestas tienen un profundo efecto en lo que se puede hacer con cada framework, y el impacto que tienen tanto hoy como en el futuro.

Cómo funciona Flutter
El lenguaje central de Flutter es Dart, un lenguaje poco conocido que comenzó en 2011. Aunque lleva unos años, pocos desarrolladores lo conocen hoy (menos del 2%, según la Encuesta StackOverflow de 2019), y rara vez se usa fuera de la comunidad de Flutter.

Al compilar para dispositivos móviles, Flutter usa el compilador Dart para convertir su código Dart en un código nativo que se ejecutará en la plataforma del dispositivo. Junto con un motor de renderizado personalizado para mostrar su interfaz de usuario dentro de una app móvil.

Las aplicaciones móviles de Flutter acceden a las funciones nativas del dispositivo mediante una biblioteca de complementos similar a Ionic y React NativeFlutter no usa los elementos de la interfaz de usuario nativos. Como encontrarías en React Native, ni utiliza componentes web como Ionic. En su lugar, Flutter ofrece su propia biblioteca de widgets de interfaz de usuario.

Las aplicaciones móviles de Flutter acceden a las funciones nativas del dispositivo mediante una biblioteca de complementos similar a Ionic y React Native. Los paquetes listos para usar están disponibles para acceder a las funciones comunes del dispositivo. También se puede escribir código personalizado específico para la plataforma si el paquete o el complemento que se está buscando no está disponible. Utilizando una plataforma de mensajería asíncrona específica de Flutter que maneja la correspondencia entre el cliente (UI) y el host (sistema operativo de la plataforma).

En resumen, para cumplir con los objetivos establecidos de crear un “framework de IU que funcione en todas partes”. El equipo de Flutter utiliza el lenguaje Dart. Flutter utiliza un motor de renderizado personalizado, una implementación nativa y un framework web personalizado para el navegador. Reflejando su decisión de construir una arquitectura independiente.

Cómo funciona Ionic
Las aplicaciones de Ionic se crean utilizando los lenguajes web: HTML, CSS y JavaScript. Por lo tanto, si se sabe cómo construir una aplicación web básica, se sabe cómo crear con Ionic.

Con Ionic se puede implementar una aplicación nativa de iOS o Android, una aplicación de escritorio nativa o una aplicación web. Todo desde una base de código compartida única. Cuando se ejecuta en dispositivos móviles, Ionic se ejecuta dentro de un contenedor nativo utilizando Cordova o, más recientemente, Capacitor. Permite el acceso completo a cualquier API o características del dispositivo nativo. La interfaz de usuario de la aplicación móvil hecha con Ionic se ejecuta en un sitio web. Se trata de un navegador que es “invisible” para el usuario. En una implementación de escritorio, Ionic se ejecuta dentro de un contenedor de escritorio nativo como Electron, o directamente en cualquier navegador móvil o de escritorio como una aplicación web progresiva.

Ionic utiliza el estándar de componentes web. Por lo que se ejecuta en cualquier navegador web y son compatibles con cualquier framework JS, incluidos React, Vue y Angular. Ionic proporciona una biblioteca de más de 100 componentes de interfaz de usuario que puede personalizar con CSS para adaptarse a las pautas de la marca. También puede usar Stencil. Un compilador de componentes web de código abierto del equipo de Ionic. Para crear una propia biblioteca de componentes web personalizados. De hecho, cualquier componente de interfaz de usuario basado en web o biblioteca web se ejecutará en Ionic. Lo que ofrece la libertad de aprovechar cualquier elemento de la web para el proyecto.

flutter o ionic
En el desarrollo de apps ¿Flutter o Ionic?

Es importante tener en cuenta los siguientes factores:

Rendimiento

Flutter podría ser una mejor opción en cuanto a rendimiento. Sin embargo, en muchos casos, Ionic da el mismo rendimiento si está escribiendo una aplicación para un consumidor más estándar o para el uso de empleados. Hay que tener en cuenta que el rendimiento casi siempre se reduce a cómo se escribe el código. No depende de la plataforma o framework que se elija.

Ionic utiliza el tiempo de ejecución y los recursos del navegador estándar. Por lo que el tamaño de la aplicación suele ser muy pequeño. Flutter requiere una gran cantidad de código para aplicaciones muy básicas, porque envia todo ese tiempo de ejecución a pesar de que el navegador ya tiene funciones disponibles para casi todo. Por lo tanto, si se está buscando alcanzar los estándares de rendimiento de Google para aplicaciones web progresivas (PWA) o ocupar un lugar destacado en las páginas de resultados del motor de búsqueda, resultará casi imposible con el rendimiento actual de Flutter en la web.

Portabilidad de código

Cuando se trata de implementar una aplicación en dispositivos móviles y de escritorio, tanto Ionic como Flutter aparecen uniformemente emparejados. Con Flutter puedes crear algunas aplicaciones de iOS y Android con un solo código. Se puede compilar la aplicación para ejecutarse de forma nativa en una serie de plataformas de escritorio.

La pregunta es si se desea implementar la aplicación a través de la web. Ya sea como una aplicación web de escritorio tradicional o como PWA. Las limitaciones inherentes de la implementación web de Flutter probablemente nunca funcionarán para aplicaciones que requieren tiempos de carga rápidos y un rendimiento ágil. Sin mencionar que su enfoque propietario limitará el número de bibliotecas web que se puede aprovechar. Dado que Ionic se basa en la web y se basa completamente en los estándares web, creemos que es justo darle a Ionic la ventaja cuando se trata de dispositivos móviles, equipos de escritorio y la web.

Look & feel nativo

Aunque ninguno de los frameworks utiliza los elementos de la interfaz de usuario nativos de cada plataforma. Flutter e Ionic actualizan automáticamente el diseño de sus elementos de la interfaz de usuario para que coincida con la plataforma en la que se ejecuta la aplicación: Material Design para Android y Cupertino para iOS.

Ambas soluciones le permiten acceder a los servicios de la plataforma y las API nativas a través de una biblioteca de complementos predefinidos, con un conjunto de herramientas para crear sus propios complementos personalizados según sea necesario.

Sin embargo, debe tenerse en cuenta cómo es la implementación móvil nativa de Flutter. Si se está haciendo un trabajo nativo personalizado con Flutter, se debe aprender la manera en que Flutter trabaja con iOS y Android.

Conocimientos y habilidades

Aquí es donde las distinciones entre Ionic y Flutter se hacen realmente evidentes.

Primero, a menos que seas uno de los 1.9% de los desarrolladores que ya conocen Dart, en comparación con el 70% que conoce JavaScript, tendrás que pensar que quieres aprender un nuevo idioma. JavaScript es, por supuesto, una apuesta bastante segura para cualquier desarrollador. La necesidad de los desarrolladores de aprender Dart dependerá únicamente del éxito o fracaso de Flutter como solución viable a largo plazo.

Segundo, debido a que Flutter opera en su propio ecosistema altamente personalizado. Hay que aprender la forma de Flutter de hacer las cosas. Por ejemplo, si está resolviendo problemas de interfaz de usuario. Se aprenderá y dominará el motor de renderizado personalizado de Flutter. No las aplicaciones web en general. Cuando se interactúe con plataformas de dispositivos nativos, se debe aprender la interpretación de Android y iOS de Flutter, no Android o iOS en general. Este factor es uno de los mayores a considerar, al saltar a un silo de desarrollo que no comparte estándares y herramientas con otras plataformas.

En contraste, cuando estás creando con Ionic, no necesariamente estás aprendiendo Ionic. Estás aprendiendo cómo construir aplicaciones web en general. Se aprende a escribir con JavaScript, con CSS y a crear interfaces de alto rendimiento con componentes web basados en estos estándares.

Oportunidades para el futuro

El último factor a considerar es la vida útil del proyecto, la libertad y flexibilidad que se tendrá a medida que la aplicación madure.

Con Ionic, se apuesta por el desarrollo en la web. Por lo que incluso si eliges construir en otras plataformas en el futuro, todo lo que construyas se basará en estándares web abiertos. Y, dado que Ionic se basa en componentes web, puede usarlo con cualquier framework JS. Con Ionic se tendrá la libertad de aprovechar lo que sea que traiga el mañana.

La tecnología está en constante evolución y cada vez más rápido. Por lo que es necesario seleccionar la tecnología más versátil en cada momento. Que permita crear productos digitales y soluciones reusables, modulares, que puedan acoplar y desacoplar componentes fácilmente sin tener que rehacer el producto.

 

Gráfica comparativa

Para ayudar a resumir las distinciones clave entre Flutter y Ionic, esta tabla de comparación proporciona un desglose de algunas de las dimensiones que se deben considerar.

 

flutter o ionic

 

El principio de Ionic es utilizar la plataforma web y adoptar estándares abiertos siempre que sea posible. Cuando se trabaja con Ionic, se aprende y aplica las herramientas y los lenguajes de la web. Utilizando un framework diseñado para ofrecer un gran rendimiento en dispositivos móviles, equipos de escritorio y, especialmente, en la web.

Flutter, en cambio, ha optado por hacerlo solo. Creando un ecosistema propio que está en desacuerdo con los lenguajes comunes, los conjuntos de herramientas y estándares que se encuentran en el mundo del desarrollo en general. Por lo tanto, si se elige Flutter, se debe aprender la forma de Flutter de hacer las cosas. Por supuesto, hay beneficios claros para una arquitectura personalizada.

La mejor manera de descubrir cuál es el adecuado para un desarrollo es comenzar a construir con ambos y luego comparar las experiencias.

Fuente:

syntonize.com

June 10th 2019

Node Sass does not yet support your current environment (macOS 10.12.1, Node 7.0.0)

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

Este error se lo resuelve de forma facil en macOS y se presenta a veces al compilar el webpack.
– Primero se debe borrar la carpeta “node_modules”

 rm -rf node_modules

– Luego ejecutar: “npm install”

 npm install

– Finalmente:

 npm rebuild node-sass

 

Fuente:
https://github.com/sass/node-sass/issues/1764

October 11th 2018

Crear alias para comandos en consola (Mac OSX)

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

Algo que suelo usar mucho en equipos Linux son los “alias”, de cara a acortar comandos que tecleo muy frecuentemente. Obviamente sólo es necesario cuando trabajamos con la consola / terminal.

Hoy estoy “plataformando” un iMac y quiero hacer lo mismo, y puesto que Mac OSX, o Darwin, está basado en Linux, realmente no difiere en nada de un sistema Linux tradicional (depende de la distribución usada).

Vamos a crear algunos alias de ejemplo. Para ello abriremos una consola de terminal y teclearemos los comandos siguientes:

cd ;
nano .bash_profile

Dentro del archivo .bash_profile (que por defecto no existe y por lo tanto estará vacío) introduciremos tres alias de ejemplo:

alias ll='ls -la'
alias duh='du -sh'
alias rmd='sudo find . -name ".DS_Store" -depth -exec rm {} \;'

Para salir pulsaremos CONTROL+X y confirmaremos los cambios.

Una vez estemos de nuevo en la consola, ejecutaremos el comando “source” para que se lea el archivo editado sin necesidad de reabrir la consola del terminal.

source .bash_profile

A partir de ahora, podemos teclear “ll” en una consola y se ejecutará el comando “ls -la” en su lugar.

Aunque son bastante auto-descriptivos, os comento lo que hace el último de ellos (“rmd”): borrar todos los dichosos .DS_Store de la carpeta en la que esté situado en adelante.

Podéis incluir tantos alias como necesitéis y estarán siempre disponibles cuando abráis una consola del terminal.

March 10th 2017

Los tipos de “Blue-Hacking”

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

Bluesnarfing

  • Cómo funciona: Para realizar un ataque Bluesnarfing se puede utilizar un ordenador portátil con una antena conectada que escanea la frecuencia que utiliza el sistema Bluetooh de los teléfonos móviles. El software necesario, que se ejecuta desde el ordenador, se encuentra disponible en Internet, según diferentes fuentes, junto con información para utilizarlo. En este tipo de ataque el phreaker (nombre que reciben los hacker telefónicos) necesita estar a un máximo de unos 15 metros de distancia de su objetivo, dado que ese es el rango mayor de transmisión de los dispositivos Bluetooh. Una distancia que sin embargo puede ser salvada utilizando Bluesniper.
  • Dónde: Un Bluesnarfer que salga simplemente a la caza, sin un objetivo concreto, puede por ejemplo colocarse discretamente en una cafetería, en centros comerciales, o en aeropuertos donde los pasajeros se apresuran usar sus teléfonos móviles en cuanto hacen su salida. También pueden camuflar su ordenador en un maletín y deambular hasta que encuentren teléfonos vulnerables. Sólo se precisan 15 segundos para identificar un móvil que puede ser atacado.
  • Qué se obtiene: Tras localizar un móvil desprotegido, bastan otros 15 segundos para descargar completamente la agenda telefónica de la víctima. Con el Bluesnarfer también se puede obtener el calendario con las citas anotadas, fotos, los e.mails recibidos, textos guardados en el móvil entre los que pueden haber PINS o mensajes confidenciales… y no queda ningún rastro del ataque.
  • Salvando las distancias con Bluesniping: Uno de los argumentos dados por las principales compañías de teléfonos móviles para restar importancia a estos ataques a móviles con Bluetooth es que el phreaker tiene que estar dentro del rango de cobertura de un máximo de 10 a 15 metros de los dispositivos Bluetooth para realizar su ataque y que eso limita su capacidad de acción. Pero algunos hackers se han encargado de demostrar que la distancia no es un problema gracias a un artilugio que han dado en llamar Bluesniper, una especie de rifle de francotirador (de ahí su nombre inglés) que en realidad está equipado con una antena capaz de captar la frecuencia Bluetooh desde larga distancia y así realizar un ataque Bluesnarfing o Bluebugging. Mediante el Bluesniping es posible atacar a un teléfono desde una distancia de hasta unos dos quilómetros, simplemente utilizando un ordenador portátil conectado a una antena con una ganancia de 19dbi. Los bluesnipers afirman que el material necesario para construir el rifle antena se puede encontrar en cualquier tienda de electrónica especializada.

Bluebugging
Al igual que con el Bluesnarfing, en principio el hacker precisa estar dentro del rango de comunicación de 10 a 15 metros en el que se mueven los dispositivos Bluetooth, pero ese radio de acción no constituye un problema para un bluesniper. Y también con un laptop y el software necesario el ataque se puede realizar en tan sólo unos segundos, sin que la víctima tenga conocimiento. Según Trinite.org, organización creada por Martin Herfurt, el bluebug permite a un phreaker un dominio casi absoluto de un móvil ajeno, desde realizar llamadas hasta cambiar a la compañía que provee el servicio y todo ello con graves consecuencias para el usuario atacado.

El Bluebug puede realizar los siguiente y producir estos perjuicios.
Realizar llamadas:
– Daño financiero: el hacker puede, por ejemplo, obligar al teléfono de su víctima a realizar llamadas a líneas de tarifación especial, ya sea por obtener interés económico propio o simplemente por gastar una broma muy pesada; la víctima no se daría cuenta hasta que le llegara la factura telefónica y tuviera que litigar para intentar demostrar que no realizó voluntariamente esas conexiones.
– Espionaje: Otro caso puede ser el que se obligue al teléfono secuestrado a realizar una llamada silenciosa al teléfono del hacker, con lo que éste podría escuchar lo que se dice en una conversación confidencial o en una importante reunión de negocios, hasta que la víctima cuelgue su teléfono tras tal vez pensar que marcó descuidadamente. La víctima podría también darse cuenta cuando recibiera una factura detallada de las llamadas realizadas pero tal vez le pasara desapercibida entre todos los números y, en cualquier caso, el hacker a buen seguro que habría utilizado un teléfono con tarjeta prepagada y desechable.

Enviar mensajes SMS a cualquier número:
– Conocer el número de teléfono: aunque el hacker haya secuestrado un teléfono, puede ser que no conozca el número. Para saberlo le bastará con hacer enviar un mensaje SMS desde el móvil de la víctima a su propio móvil.
– Daño financiero: mediante el bluebugging se puede obligar a enviar SMS como los que sirven para comprar nuevas sintonías o logos; el hacker podría convertirse en el beneficiario del pago de esos mensajes e, incluso, si el móvil atacado puede realizar micropagos podría ordenar transferencias a una cuenta propia.
– Localizar a la víctima: los servicios de localización vía GSM permiten encontrar a una persona mediante un identificador GSM global que incorporan algunos móviles. Pero para ello el usuario debe autorizarlo mediante el envío de un mensaje SMS. El hacker puede hacer que se produzca el envío de ese mensaje y a partir de ello hacer posible la localización en cualquier momento de esa persona.
– Descubrir secretos: la descarga y lectura de los mensajes SMS, enviados con la confianza de tratarse de una comunicación confidencial, puede revelar asuntos privados lo que en sus últimas instancias puede dar lugar a chantajes o cuanto menos a la divulgación de información no deseada.

Intervenir la agenda telefónica:
– Averiguar llamadas entrantes y salientes: las agendas teléfonicas de los móviles GSM también gestionan las listas de llamadas con lo cual su descarga por parte del hacker le permitiría conocer a quién ha llamado su víctima o quién ha llamado o intentado llamarla.
– Cambiar los números: es posible cambiar los números de teléfono asignados a las diferentes entradas, por ejemplo que cuando se ordene llamar a “casa” el número marcado sea el de un restaurante o cualquier otro. Según cómo se cambien los números esto puede llegar a poner en un serio compromiso a la víctima.

Otros:
– Cambiar el número de llamada saliente: si el hacker hace esto, alguien que llame al móvil verá en su identificador un número distinto de la persona con quien está conectando, lo cual cuanto menos puede crear una situación de confusión.
– Conectar a Internet: haciendo bluebugging, se puede establecer una conexión a Internet desde el teléfono de la víctima, lo cual el hacker puede utilizar, por ejemplo, para enviar virus de manera que nadie pueda hallar la auténtica fuente de origen.
– Cambiar la compañía de teléfono: un ataque bluebug puede registrar el teléfono con una compañía diferente de la que la víctima tiene contratado su servicio, con lo cual sus llamadas posteriores serían facturadas por la compañía elegida por el hacker.

Bluejacking
El Bluejacking puede parecer el más inofensivo de los hackings que aprovechan los fallos de seguridad de la tecnología Bluetooth. Más que de un ataque se trataría de una intromisión y sin duda está mucho más extendido que el Bluesnarfing o el Bluebugging hasta el punto de que ha llegado a convertirse en una especie de moda entre numerosos usuarios, que utilizan el Bluejacking para enviar mensajes SMS gratis. Mediante este sistema sólo es posible enviar SMS de manera anónima pero precisamente en ello también encuentran la gracia los bluejackers, que lo conciben como algo parecido a “hablar por hablar” o intentar descubrir quién ha podido enviar el mensaje.

  • Dónde: para hacer un bluejacking se debe estar igualmente en el ámbito de acción de los 10 metros de la tecnología Bluetooth. Un bluejacker preferirá un lugar muy concurrido, como un centro comercial, para que sus mensajes lleguen al mayor número de personas.
  • Cómo: desde un móvil con el Bluetooh activado se debe crear un nuevo contacto en la agenda de direcciones pero en el campo del nombre se introduce el mensaje que se quiere enviar, ya sea texto o multimedia, y entonces el teléfono envía ese mensaje vía SMS a otros terminales con Bluetooth que estén dentro del campo de acción.
  • Diversión o molestia: según foros de bluejackers en Internet, a veces se llegan a crear chats de mensajes en los que participan numerosas personas sin saber quién es quién. Aunque algunos bluejackers han llegado a crear un código ético, esta actuación que en el mejor de los casos puede ser interpretada como algo interesante en lo que participar, para otras personas puede resultar una broma divertida o pesada, una molesta situación o incluso una intromisión en la privacidad.

Fuente:

tonicarpio.com