Translate

jueves, 4 de julio de 2019

Por qué aprender Python??


Las ventajas que presenta el uso de Python son las siguientes:

Lenguaje sencillo de aprender: Vamos a ver que Python presenta una sencillez tal que cualquier persona que realiza una pequeña inversión de tiempo puede comenzar a crear programas sencillos en este lenguaje. Esto se debe, entre muchas cosas, a la gestión automática de memoria o las operaciones sencillas de lectura y escritura, en las que se diferencia de otros lenguajes. Tal es el caso de C, en el cual tanto la asignación de memoria como otras características son mucho más engorrosas de programar. Todos los que nos hayamos enfrentado con el aprendizaje de un lenguaje nuevo de programación sabemos que, según como nos enfoquemos en esta tarea, puede resultar muy emocionante o terriblemente tediosa. Más aún si queremos aprender por nuestra cuenta. Sin embargo, Python fue desarrollado pensando en que su aprendizaje resultara sencillo, incluso como primer lenguaje de programación. ¿Por qué? Porque su sintaxis es muy sencilla. Como se utilizan expresiones comunes, se escribe menos código y se obtienen resultados más rápido. O sea, Python requiere menos líneas de código para realizar tareas básicas que si programáramos las mismas tareas en Java o C++. Otro plus que nos ofrece Python tiene que ver con su librería estándar, la cual permite ejecutar otras funciones y tareas más complejas con mayor facilidad que otros lenguajes.Por todo lo mencionado, vemos que Python es un lenguaje ideal si queremos encarar la tarea de aprendizaje por nuestra cuenta.

Sirve como base teórica de programación: Python es un lenguaje orientado a objetos, pero cuya versatilidad nos permite utilizarlo aplicando diferentes paradigmas de programación. Lo interesante de Python es que su sencillez nos permite tanto aprender a programar si recién nos iniciamos, como también aprender las bases de un paradigma de mayor complejidad, como es la programación orientada a objetos. De esta forma, si luego queremos migrar a otro lenguaje, como Java, C++, Ruby u otros, el paso nos resultará más sencillo que si quisiéramos aprender directamente el paradigma en estos lenguajes cuya sintaxis es más compleja. Es decir, Python puede ser el primer paso como programador ofreciéndonos una base sólida que nos ayudará en pasos siguientes.

La demanda del lenguaje es alta: Si queremos dedicarnos a la programación, es fundamental aprender Python, ya que grandes compañías multinacionales, como Google, Nokia e IBM, lo utilizan. Es decir, resulta sencillo entrar al mercado laboral sabiendo programar en Python. 

Se emplea en desarrollo web: Python se emplea en el desarrollo de aplicaciones y sitios web. En la actualidad, existen diversos frameworks para que el proceso de desarrollo sea más sencillo. Además de herramientas para el desarrollo web, Python puede usarse en el desarrollo de juegos y se utiliza ampliamente en el mundo científico, incluso la NASA aplica este lenguaje de programación

Integración con sistemas embebidos: Algunas plataformas, como Raspberry Pi, se basan en Python. También cabe mencionar al proyecto MicroPython. Esto representa una alternativa a plataformas tales como Arduino, con un gran potencial para proyectos de diferente índole, que facilita sustancialmente la programación y el testeo de sistemas con hardware integrado.

Facilidad de escritura de código para diferentes hilos: Los lenguajes diseñados antes de que se masificaran las plataformas multiprocesador o multinúcleo son muy complejos de programar para poder aprovechar el potencial de paralelizar tareas; en Python en cambio, el código asincrónico se gestiona de manera sencilla.

Muchas bibliotecas disponibles: Hay una gran variedad de bibliotecas disponibles en el mundo Python, desde manejo matemático hasta procesamiento de imagen y muchas funcionalidades más.

Tiene una gran comunidad que lo respalda: Una de las ventajas de aprender un lenguaje consolidado y de mucha popularidad como Python es la gran comunidad de usuarios que se consolidó a su alrededor. Recordemos que Python es una herramienta Open Source, lo que significa que a mayor comunidad, mayor desarrollo tendrá el lenguaje.Una gran comunidad de usuarios nos garantiza mucha información disponible, número de bibliotecas creciente, proyectos y código disponible si buscamos por internet, además de foros activos en donde podemos consultar y evacuar dudas. Esto hace que tanto el aprendizaje de proyectos como su ejecución sean muy dinámicos.


miércoles, 3 de julio de 2019

Laravel

Como ya sabemos, existen muchos frameworks PHP disponibles en el mercado, y Laravel es relativamente nuevo comparado con los principales.

Veamos un poco acerca de su historia. En el año 2011, uno de los frameworks PHP más populares era CodeIgniter. Sin embargo, muchas funcionalidades fundamentales para la creación de aplicaciones web, como la autenticación, no estaban incorporadas en él, motivo por el cual Taylor Otwell, un programador web, decidió crear un framework que las incluyera.

En un principio, Laravel no fue creado con el patrón de arquitectura MVC, y su foco estaba puesto principalmente en resolver problemas de autenticación. No obstante, la primera versión incorporaba funcionalidades que fueron bien recibidas, y de forma rápida, por la comunidad de desarrolladores. La segunda versión tardó menos de seis meses en salir al mercado. Laravel terminó de adoptar el patrón MVC para su arquitectura e incorporó el siguiente slogan: "Liberándote del código espagueti, Laravel te ayuda a crear aplicaciones maravillosas usando una sintaxis simple y expresiva. El desarrollo debe ser una experiencia creativa que disfrutes, no algo que sea doloroso. Disfruta del aire fresco"

Es de destacar que, a partir de junio de 2015, Laravel comenzó a distribuir versiones LTS (Long Term Support). ¿Por qué es importante esto? Las versiones LTS están diseñadas para ser soportadas durante un período más largo de lo normal, proveen corrección de errores durante dos años, y la aplicación de medidas de seguridad durante tres años. Considerando que hoy en día la tecnología avanza muy rápidamente, es importante contar con herramientas que garanticen un período de continuidad, sobre todo, teniendo en cuenta la creación de proyectos que se pueden desarrollar a mediano o largo plazo

Algunas de las características que podemos destacar de Laravel son las siguientes:

  • Posee una buena curva de aprendizaje.
  • Tiene una documentación muy completa, simple y gratuita.
  • Cuenta con una gran comunidad de desarrolladores, https://laravel.io.
  • Es el proyecto más popular en github desarrollado con PHP.
  • Utiliza muchos componentes de Symfony, el cual es el segundo proyecto PHP más popular en github.
  • Brinda un conjunto de servicios y herramientas de infraestructura que facilitan su puesta en funcionamiento en diferentes entornos, tales como Forge y Homestead.
  • Ofrece versiones LT S (Long Term Support). 
  • Su última versión LTS, la 5.5, fue lanzada en agosto de 2018 y tendrá actualizaciones de seguridad hasta 2020, lo cual la hace ideal para llevar a cabo proyectos de amplia longevidad.
  • Sigue el patrón de arquitectura Modelo-Vista-Controlador (MVC).
  • Provee un poderoso ORM, Eloquent, que está basado en el patrón active record.
  • Utiliza un sistema de plantillas con un sistema de caché que permite mejorar la performance de los sitios desarrollados con Laravel


Dejo link: https://laravel.io

martes, 2 de julio de 2019

Ahora podemos crear documentación con código ejecutable en .net core


Al mejor estilo Jupyter, Microsoft creo Try .NET, un generador de documentación interactivo para .NET Core.

Try .NET es una herramienta de .NET Core que permite la creación de documentación interactiva para C#. Al igual que las herramientas equivalentes dirigidas a diferentes lenguajes de programación, produce documentación que puede contener tanto texto explicativo como código ejecutable en tiempo real.

Toda la documentación se compone de archivos que contienen un conjunto de instrucciones y fragmentos de código. Además, Try .NET utiliza una notación extendida de reducción de código para los bloques de código que permite hacer referencia a una región específica dentro de un archivo de código fuente. De esta manera, en lugar de escribir una muestra de código dentro de un bloque de código, el programador puede simplemente hacer referencia a una región C # definida en otro archivo de código.

Dejo link: https://devblogs.microsoft.com/dotnet/creating-interactive-net-documentation/

lunes, 1 de julio de 2019

Flutter en español

Quiero compartir la siguiente página de flutter en español, que es igual a la página oficial de Flutter

Dejo el link : https://flutter-es.io

Flutter, la nueva forma de hacer applicaciones mobiles



Flutter es el nuevo kit para desarrollo (SDK) de aplicaciones móviles multiplataforma, creado por Google. Se puede utilizar para desarrollar aplicaciones para Android y iOS con un solo code-base. Además admite también web y escritorio (preview). Desde ya el método primario recomendado para crear aplicaciones para Google Fuchsia (el futuro sucesor de Android).

Esta entre el top 20 repositorios más activos en GIT. Y finalizo periodo BETA en diciembre (V1.0 official release) y ya tiene 250.000 desarrolladores activos. Además tiene mucho soporte y movimiento de parte de Google. Anunciado por Google como plataforma preferida de desarrollo para el futuro sucesor de Android (Fuschia)

Futter es un SDK completo con rendering engine propio. Al renderizar sus propios widgets, copias exactas de los originales usando API gráfica de bajo nivel OpenGL (permite uso de, por ejemplo, widgets Android de API 26+ en cualquier versión de Android, ya que no depende de los widgets OEM)

Características : 
  • Open-source y gratuito.
  • Desarrollo rápido, gran librería de widgets material design “out of the box” listos para usar.
  • No requiere conocimiento de plataformas especificas en lo absoluto.
  • No necesita XML (o ningún otro mark-up) para vistas
  • Compilación a código ARM, por lo tanto cuenta con performance nativa
  • Stateful Hot Reload
  • Compatibilidad con IDEs existentes VS Code, Android Studio, IntelliJ, etc..
  • Portable
  • Lenguaje DART, no muy popular pero fácil de aprender.
  • Curva de aprendizaje para desarrollo declarativo, sin mark-up para vistas.
  • Ecosistema de librerías de terceros ya es muy bueno.

Flutter no utiliza los widgets de sistema, renderiza sus propios widgets usando las api gráficas de bajo nivel.  Flutter ya viene con un kit completo de Widgets, que son la copia exacta (“pixel perfect”) de los widgets Material Design (Android) y Cupertino (IOS), pero si deseamos tener un look diferente en IOS, aun debemos “decidir” en runtime mostrar un widget u otro basado en la plataforma.

Dejo un video:



Dejo link: https://flutter.dev
https://flutter.dev/docs/get-started/install

jueves, 27 de junio de 2019

Libro Java Code Geeks

Download IT Guides!

 
Elasticsearch is a search engine based on Lucene. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents. Elasticsearch is developed in Java and is released as open source under the terms of the Apache License. Elasticsearch is the most popular enterprise search engine followed by Apache Solr, also based on Lucene. Elasticsearch can be used to search all kinds of documents. It provides scalable search, has near real-time search, and supports multitenancy. Elasticsearch is distributed, which means that indices can be divided into shards and each shard can have zero or more replicas. Each node hosts one or more shards, and acts as a coordinator to delegate operations to the correct shard(s). Rebalancing and routing are done automatically.
 
 
Docker is the world's leading software containerization platform. Docker containers wrap a piece of software in a complete filesystem that contains everything needed to run: code, runtime, system tools, system libraries ? anything that can be installed on a server. This guarantees that the software will always run the same, regardless of its environment. Docker provides an additional layer of abstraction and automation of operating-system-level virtualization on Linux. Docker uses the resource isolation features of the Linux kernel such as cgroups and kernel namespaces, and a union-capable file system such as OverlayFS and others to allow independent "containers" to run within a single Linux instance, avoiding the overhead of starting and maintaining virtual machines.
 
 
Delve into the world of Git version source control with this compact guide that discusses the features of this popular control system! Git is, without any doubt, the most popular version control system. Ironically, there are other version control systems easier to learn and to use, but, despite that, Git is the favorite option for developers, which is quite clarifying about the powerfulness of Git. In this guide, we will cover all the topics needed to know in order to use Git properly, from explaining what is it and how it differs from other tools, to its usage, covering also advanced topics and practices that can suppose an added value to the process of version controlling.
 
 
The Spring Framework is an open-source application framework and inversion of control container for the Java platform. The framework's core features can be used by any Java application, but there are extensions for building web applications on top of the Java EE platform. Although the framework does not impose any specific programming model, it has become popular in the Java community as an alternative to, replacement for, or even addition to the Enterprise JavaBeans (EJB) model. In this 200 page ebook, we provide a compilation of Spring Framework tutorials that will help you kick-start your own programming projects. 
 

martes, 25 de junio de 2019

Primer proyecto con Haskell y cabal.


Antes que nada vamos a instalar cabal, como uso linux (derivado de debian) lo puedo instalar con apt :

sudo add-apt-repository -y ppa:hvr/ghc
sudo apt-get update
sudo apt-get install -y cabal-install ghc

Probamos cabal :

$ cabal --version

Hacemos un Proyecto:

$ cabal init

Este comando nos preguntará datos de forma interactiva, como nombre de proyecto, versión, autor, etc ...

Si deseamos hacer un proyecto haskell ejecutable:

$ cabal init -n --is-executable
$ cabal run

Dejo link: https://www.haskell.org/cabal/



INFRAESTRUCTURA DEFINIDA POR SOFTWARE PARA DUMMIES


Con la aceleración de la transformación digital en todos los sectores, prácticamente toda iniciativa empresarial moderna se ha convertido en un proyecto de TI, y la TI es ahora más crucial que nunca para el éxito de la empresa. Las empresas deben sacar al mercado productos y servicios innovadores con mayor rapidez que la competencia, lo que a su vez significa que la TI debe proporcionar, de forma rápida y continuada, aplicaciones y servicios que fomenten la productividad y la eficiencia.

Dejo link: https://www.vmware.com/es/learn/48842_DCMA-0468_REG.html?src=sp_5cd9beaede079&cid=7012H000001dBV2QAM&fbclid=IwAR18r3jzCVFvX64Q8YpFPk6P8tPiXT_HwJAXIrsesrAmAD6cl7ujSqdLKZs

domingo, 23 de junio de 2019

Tipos en Cassandra


Veamos los distintos tipos que tenemos disponibles para nuestros valores. Como hemos visto en nuestra exploración hasta ahora, cada columna de nuestra tabla es de un tipo específico.

CQL admite un conjunto flexible de tipos de datos, incluidos tipos de caracteres y numéricos simples, colecciones y tipos definidos por el usuario. Describiremos estos tipos de datos y proporcionaremos algunos ejemplos de cómo podrían usarse para aprender a tomar la decisión correcta para los diferentes modelos de datos.

int: 32-bit entero con signo como java.
bigint: 64-bit entero grande con signo equivalente a long de Java
smallint: 16-bit entero con signo equivalente a short de Java
tinyint: 8-bit entero con signo
varint: A variable precision signed integer (equivalent to java.math.BigInteger )
float: 32-bit IEEE-754 equivalente a float de java
double: 64-bit IEEE-754 equivalente a double de Java
decimal: equivalente a java.math.BigDecimal

Si bien los tipos enumerados son comunes en muchos lenguajes, no hay un equivalente directo en CQL. Una práctica común es almacenar valores enumerados como cadenas. Por ejemplo, usando el método Enum.name() para convertir un valor enumerado en una Cadena para escribir en Cassandra como texto, y el método Enum.valueOf() para volver a convertir el texto al valor enumerado.

CQL proporciona dos tipos de datos para representar texto, uno de los cuales ya hemos utilizado bastante :

text , varchar : cadena de caracteres UTF-8
ascii : una cadena de ascii

UTF-8 es el estándar de texto más reciente y más utilizado y es compatible con la internacionalización, por lo que recomendamos utilizar texto sobre ascii al crear tablas para nuevos datos. El tipo de ascii es más útil si está tratando con datos heredados que están en formato ASCII.

Cassandra nos provee tipos para representar el tiempo :

timestamp : Si bien señalamos anteriormente que cada columna tiene una marca de tiempo que indica cuándo se modificó por última vez, también puede usar una marca de tiempo como el valor de una columna en sí. El tiempo se puede codificar como un entero con signo de 64 bits, pero normalmente es mucho más útil ingresar una marca de tiempo utilizando uno de los varios formatos de fecha ISO 8601 compatibles.

date, time : hasta Cassandra 2.1 solo tenían el tipo timestamp para representar los tiempos, que incluía tanto una fecha como una hora del día. La versión 2.2 introdujo los tipos de fecha y hora que permitieron que estos se representaran de forma independiente; es decir, una fecha sin una hora y una hora del día sin referencia a una fecha específica. Al igual que con ltimestamp, estos tipos admiten formatos ISO 8601.
Aunque hay nuevos tipos de java.time disponibles en Java 8, el tipo de fecha se asigna a un tipo personalizado en Cassandra para preservar la compatibilidad con JDK más antiguos. El tipo de tiempo se asigna a una Java long que representa el número de nanosegundos desde la medianoche.

Veamos el tipo de datos para las claves:

uuid : El identificador único universal (UUID) de RA es un valor de 128 bits en el que los bits se ajustan a uno de varios tipos, de los cuales los más utilizados comúnmente se conocen como Tipo 1 y Tipo 4. El tipo de uuid CQL es un UUID de Tipo 4, que se basa enteramente en números aleatorios. Los UUID se representan normalmente como secuencias separadas por guiones de dígitos hexadecimales. El tipo uuid se usa a menudo como una clave sustituta, ya sea por sí misma o en combinación con otros valores. Debido a que los UUID son de una longitud finita, no están absolutamente garantizados para ser únicos. Sin embargo, la mayoría de los sistemas operativos y lenguajes de programación proporcionan utilidades para generar ID que proporcionan una singularidad adecuada, y cqlsh también lo hace. Puede obtener un valor UUID de Tipo 4 a través de la función uuid () y usar este valor en INSERT o UPDATE.

timeuuid : Este es un UUID de Tipo 1, que se basa en la dirección MAC de la computadora, la hora del sistema y un número de secuencia utilizado para evitar duplicados. Este tipo se usa frecuentemente como una marca de tiempo libre de conflictos. cqlsh proporciona varias funciones convenientes para interactuar con el tipo de timeuuid: now (), dateOf () y unixTimestampOf (). La disponibilidad de estas funciones de conveniencia es una de las razones por las que timeuuid tiende a usarse con más frecuencia que uuid.

Para terminar veamos otros tipos que no se donde agruparlos :

boolean : Este es un simple valor verdadero / falso. El cqlsh no distingue entre mayúsculas y minúsculas en la aceptación de estos valores, pero da como resultado True o False.

blob : Un objeto grande binario (blob) es un término informático coloquial para una matriz arbitraria de bytes. El tipo de blob CQL es útil para almacenar medios u otros tipos de archivos binarios. Cassandra no valida ni examina los bytes en un blob. CQL representa los datos como dígitos hexadecimales, por ejemplo, 0x00000ab83cf0. Si desea codificar datos textuales arbitrarios en el blob, puede usar la función textAsBlob() para especificar valores para la entrada.

inet : Este tipo representa las direcciones de Internet IPv4 o IPv6. cqlsh acepta cualquier formato legal para definir direcciones IPv4, incluidas representaciones con puntos o sin puntos que contengan valores decimales, octales o hexadecimales. Sin embargo, los valores se representan utilizando el formato decimal punteado en la salida cqlsh, por ejemplo, 192.0.2.235.
Las direcciones IPv6 se representan como ocho grupos de cuatro dígitos hexadecimales, separados por dos puntos, por ejemplo, 2001: 0db8: 85a3: 0000: 0000: 8a2e: 0370: 7334. La especificación de IPv6 permite el colapso de valores hexadecimales cero consecutivos, por lo que el valor anterior se representa de la siguiente manera cuando se lee con SELECT: 2001: db8: 85a3: a :: 8a2e: 370: 7334.

counter : El tipo de datos de contador proporciona un entero con signo de 64 bits, cuyo valor no se puede establecer directamente, sino que solo se puede incrementar o disminuir. Los contadores se utilizan con frecuencia para el seguimiento de estadísticas, como el número de páginas vistas, tweets, mensajes de registro, etc. El tipo de contador tiene algunas restricciones especiales. No se puede utilizar como parte de una clave principal. Si se usa un contador, todas las columnas que no sean columnas de clave primaria deben ser contadores.

En proximos post hablaremos de tipos de datos compuestos como las colecciones y en la capacidad de crear nuestros propios tipos de datos.


jueves, 20 de junio de 2019

C# 8 mejoras en Pattern Matching


Con C# 7 tuvimos Pattern Matching y con C# 8 tenemos mejoras!!!

Todo el mundo esta hablando de C# 8 y porque va salir C# 8, pues claro! Entre otras mejoras, han mejorado el Pattern Matching:

Ajuste posicional
En C# 7 hacíamos :

case Rectangle r when r.Length == 10 && r.Width == 10: return "Found 10x10 rectangle"

Y ahora :

case Rectangle (10, 10): return "Found 10x10 rectangle";

Propiedades
Con ajuste posicional el pattern matching es conciso, pero solo funciona si tiene un método Deconstruct adecuado. Cuando no lo tienes puedes usar un patrón de propiedad en su lugar.

case Rectangle {Width : 10 }: return "Found a rectangle with a width of 10"

Mejoras del deconstructor
Otra idea que se está considerando en el tema Abrir LDM en el ticket de coincidencia de patrones es permitir múltiples métodos Deconstruct con el mismo número de parámetros. Además de tener diferentes tipos, los parámetros deben tener un nombre diferente.

ITuple
La interfaz de ITuple, introducida en .NET 4.7.1 y .NET Core 2.0, plantea varias preguntas en C# 8. La idea básica es que si un objeto implementa esta interfaz, entonces puede participar en la comparación de patrones. Se están considerando tres escenarios con respecto a cuándo entrará en vigencia.

if (x is ITuple(3, 4)) // (1) permitted?
if (x is object(3, 4)) // (2) permitted?
if (x is SomeTypeThatImplementsITuple(3, 4)) // (3) permitted?

Una pregunta relacionada es si una clase implementa ITuple y hay un método de extensión Deconstruct, ¿cuál tiene prioridad? Idealmente, devolverían los mismos valores, pero se necesita un desempate si ese no es el caso.

martes, 18 de junio de 2019

Probando Linux Deepin

Este es mi primer post con Deepin y en lineas generales estoy muy contento, tuve algunos problemas.

Sobretodo con algunas instalaciones. Me sorprendio que el market no traiga algunas aplicaciones que son historicas de linux.

Y por lo demás todo muy bien samba se configuro casi solo. 

La interfaz es muy cuidada y las aplicaciones que trae son muy utilies.

En fin, muy bueno...

Dejo link : https://www.deepin.org/es/

domingo, 16 de junio de 2019

Tiempo de vida en las columnas en Apache Cassandra


Una característica muy poderosa que tiene apache Cassandra es la capacidad de expirar datos que no necesita por mucho tiempo. Esta característica es muy flexible y trabaja a nivel individual de cada valor de una columna. El tiempo de vida (TTL) es el tiempo que Cassandra persiste un campo y se indica a nivel de columna.

El TTL por defecto es null y esto significa que el dato escrito no espira. Con la funcion TTL() podemos ver el tiempo de vida de un campo determinado :

cqlsh:my_keyspace> SELECT first_name, last_name, TTL(last_name) FROM user WHERE first_name = 'Mary';

first_name | last_name | ttl(last_name)
-------------+-------------+----------------
Mary          | Boateng   | null

(1 rows)

Ahora vamos a modificar esto:

cqlsh:my_keyspace> UPDATE user USING TTL 3600 SET last_name ='McDonald' WHERE first_name = 'Mary' ;

cqlsh:my_keyspace> SELECT first_name, last_name, TTL(last_name) FROM user WHERE first_name = 'Mary';

first_name | last_name | ttl(last_name)
-------------+-------------+---------------
Mary         | McDonald |  3588

(1 rows)

En este caso modificamos el TTL con update pero también podemos utilizar insert con el comando USING TTL.

El TTL es por columnas, no tenemos un mecanismo para settear el TTL a nivel de fila directamente.  Y esto es setteado cuando proveemos un valor a una columna. Si queremos settear el TTL a nivel de fila, debemos proveer un valor para la primary key en el update o insert.

sábado, 15 de junio de 2019

Apache Ambari parte 2

Continuamos descubriendo Apache Ambari.

Se puede integrar fácilmente las capacidades de aprovisionamiento, gestión y supervisión de Hadoop en sus propias aplicaciones con las API REST de Ambari.

Ambari simplifica la administración de Hadoop al proporcionar una plataforma consistente y segura para el control operativo. Ambari proporciona una interfaz de usuario web intuitiva, así como una API REST robusta, que es particularmente útil para automatizar las operaciones de clúster. Con Ambari, los operadores de Hadoop obtienen los siguientes beneficios principales:

  • Instalación, configuración y gestión simplificadas. Se puede crear, administrar y supervisar los clusters de forma fácil y eficiente a escala. Elimina las conjeturas de la configuración con Smart Configs y las recomendaciones de cluster. Permite la creación repetida y automatizada de clústeres con Ambari Blueprints.
  • Configuración de seguridad centralizada. Reduce la complejidad para administrar y configurar la seguridad del clúster en toda la plataforma. Ayuda a automatizar la configuración y configuración de las capacidades avanzadas de seguridad de clúster, como Kerberos y Apache Ranger.
  • Visibilidad completa en la salud del clúster. Asegurará de que su grupo sea saludable y esté disponible con un enfoque holístico para el monitoreo. Se puede configurar alertas predefinidas, basadas en las mejores prácticas operativas, para la supervisión de clústeres. Captura y visualiza métricas operacionales críticas, utilizando Grafana, para el análisis y la resolución de problemas. Integrado con Hortonworks SmartSense para la prevención y resolución proactiva de problemas.
  • Altamente extensible y personalizable. Ajuste Hadoop a la perfección en su entorno empresarial. Altamente extensible con Ambari Stacks para administrar servicios personalizados bajo administración, y con Ambari Views para personalizar la interfaz de usuario web de Ambari.

Ambari permite a los administradores de sistemas:
  • Aprovisionar un clúster de Hadoop
    • Ambari proporciona un asistente paso a paso para instalar los servicios de Hadoop en cualquier número de hosts.
    • Ambari maneja la configuración de los servicios de Hadoop para el cluster.
  • Administrar un clúster de Hadoop
    • Ambari proporciona administración central para iniciar, detener y reconfigurar los servicios de Hadoop en todo el clúster.
  • Monitorear un clúster de Hadoop
    • Ambari proporciona un panel de control para monitorear la salud y el estado del clúster de Hadoop.
    • Ambari aprovecha el sistema de métricas de Ambari para la recopilación de métricas.
    • Ambari aprovecha Ambari Alert Framework para alertar al sistema y le notificará cuando necesite atención (por ejemplo, un nodo se apaga, el espacio restante en el disco es bajo, etc.).

miércoles, 12 de junio de 2019

Libro Java Code Geeks

Download IT Guides!

 
Amazon S3 (Simple Storage Service) is a web service offered by Amazon Web Services. Amazon S3 provides storage through web services interfaces (REST, SOAP, and BitTorrent). Amazon does not make details of S3's design public, though it clearly manages data with an object storage architecture. According to Amazon, S3's design aims to provide scalability, high availability, and low latency at commodity costs.
 
 
JUnit is a unit testing framework to write repeatable tests. JUnit has been important in the development of test-driven development, and is one of a family of unit testing frameworks which is collectively known as xUnit that originated with SUnit. A research survey performed in 2013 across 10,000 Java projects hosted on GitHub found that JUnit, (in a tie with slf4j-api), was the most commonly included external library.
 
 
JMeter is an application that offers several possibilities to configure and execute load, performance and stress tests using different technologies and protocols. It allows simulating different type of requests against all kind of databases, FTP, HTTP, HTTPS or other kind of servers. Originally JMeter was designed to test web applications, but its functionality has expanded and nowadays allows testing against almost any kind of program and can be used to perform functional tests in your applications..
 
 
A design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. A design pattern is not a finished design that can be transformed directly into source or machine code. It is a description or template for how to solve a problem that can be used in many different situations. Patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.
 

Apache Dumbo


Apache Software Foundation anunció recientemente que Apache Dubbo es un proyecto Top level. Apache Dubbo es framework RPC de código abierto basado en Java. Originalmente fue desarrollado en Alibaba, fue de código abierto en 2011 e ingresó a la Incubadora de Apache en febrero de 2018. Dubbo trae funcionalidades clave como llamadas remotas basadas en interfaz, tolerancia a fallas y balanceo de carga, y registro y descubrimiento automáticos de servicios.

Veamos como funciona:


  1. Container es responsable de iniciar, cargar y ejecutar el proveedor de servicios
  2. Provider registra sus servicios en el Register durante su inicialización.
  3. Consumer suscribe los servicios que necesita en el Register cuando comienza
  4. Register devuelve la lista de Providers a los Consumer y, cuando se produce un cambio, el Register envía los datos modificados al Consumer
  5. Sobre la base de un algoritmo de equilibrio de carga flexible, el Consumer seleccionará uno de los Provider y ejecutará la invocación, seleccionará automáticamente otro Provider cuando ocurra una falla.
  6. Tanto el Consumer como el Provider contarán las invocaciones de servicio y el tiempo que lleva en la memoria, y enviarán las estadísticas a Monitorear cada minuto.


Las características de Apache Dubbo incluyen:

  • Una interfaz transparente basada en RPC.
  • Balanceo de carga inteligente, que soporta múltiples estrategias de balanceo de carga listas para usar
  • Registro de servicio automático y descubrimiento.
  • Alta extensibilidad, diseño de micro-kernel y plugin que asegura que puede ser fácilmente extendido por la implementación de terceros a través de características principales como protocolo, transporte y serialización.
  • Enrutamiento del tráfico en tiempo de ejecución, que se puede configurar en tiempo de ejecución para que el tráfico se pueda enrutar de acuerdo con diferentes reglas, lo que facilita la compatibilidad con características como la implementación azul-verde, el enrutamiento que reconoce el centro de datos, etc.
  • Gobierno visualizado del servicio, que proporciona herramientas completas para el gobierno y el mantenimiento del servicio, como la consulta de metadatos del servicio, el estado de mantenimiento y las estadísticas
Para comenzar a usar Dubbo, primero agregue la dependencia de Maven:

<dependencies> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>2.7.2<</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-dependencies-zookeeper</artifactId> <version>2.7.2<</version> <type>pom</type> </dependency> </dependencies>



Dejo link: https://dubbo.apache.org/