Me llegaron ests libros de java geeks :
Translate
viernes, 6 de abril de 2018
miércoles, 4 de abril de 2018
Spark web console
Cuando corres spark
en cualquier modo, se pueden ver los jobs y otras estadísticas en la
consola web que se encuentra en : localhost:4040
Esta consola tiene
los siguientes tabs: Jobs, Stages, Storage, Environment y Executors.
lunes, 2 de abril de 2018
Ur, un lenguaje funcional puro
Ur es un lenguaje de programación similar a ML y Haskell, pero presenta un sistema de tipos significativamente más rico. Ur es funcional puro, estáticamente tipado y estricto. Ur soporta metaprogramación basada en el sitema de row types.
Ur/Web es Ur más una biblioteca estándar especial y reglas asociadas para el análisis sintáctico y la optimización web. Ur/Web admite la construcción de aplicaciones web dinámicas respaldadas por bases de datos SQL. Ur/Web utiliza el tipado estatioco de tal manera que las paginas generadas no pueden :
Este tipo de seguridad es solo la base de la metodología Ur/Web. También es posible usar la metaprogramación para construir piezas de aplicación significativas mediante el análisis de la estructura de tipos. Por ejemplo, la demostración incluye un functor estilo ML para construir una interfaz de administración para una tabla SQL arbitraria. El sistema de tipo garantiza que la sub-aplicación de interfaz siempre estará libre de los errores mencionados anteriormente, sin importar qué descripción de tabla bien tipada.
El compilador de Ur/Web también produce código de objeto muy eficiente que no utiliza la recolección de elementos no utilizados. Estos programas compilados a menudo serán incluso más eficientes de lo que la mayoría de los programadores se tomarían la molestia de escribir en C. Por ejemplo, el servidor web independiente generado para la demostración utiliza menos memoria RAM que el shell bash. El compilador también genera versiones JavaScript del código del lado del cliente, sin necesidad de escribir esas partes de las aplicaciones en un lenguaje diferente.
Y como esto furra poco la implementación de todo esto es de código abierto.
Dejo link: http://www.impredicative.com/ur/
Ur/Web es Ur más una biblioteca estándar especial y reglas asociadas para el análisis sintáctico y la optimización web. Ur/Web admite la construcción de aplicaciones web dinámicas respaldadas por bases de datos SQL. Ur/Web utiliza el tipado estatioco de tal manera que las paginas generadas no pueden :
- Sufrir cualquier tipo de ataque de inyección de código
- Retornar HTML no válido
- Contiener enlaces muertos o invalidos dentro de la aplicación
- Tener desajustes entre formularios HTML y los campos esperados por sus controladores
- Incluir el código del lado del cliente que hace suposiciones incorrectas sobre los servicios de estilo "AJAX" que proporciona el servidor web remoto
- Intentar consultas SQL no válidas
- Usar referencias o bases de datos impropias en la comunicación con bases de datos SQL o entre navegadores y servidores web
Este tipo de seguridad es solo la base de la metodología Ur/Web. También es posible usar la metaprogramación para construir piezas de aplicación significativas mediante el análisis de la estructura de tipos. Por ejemplo, la demostración incluye un functor estilo ML para construir una interfaz de administración para una tabla SQL arbitraria. El sistema de tipo garantiza que la sub-aplicación de interfaz siempre estará libre de los errores mencionados anteriormente, sin importar qué descripción de tabla bien tipada.
El compilador de Ur/Web también produce código de objeto muy eficiente que no utiliza la recolección de elementos no utilizados. Estos programas compilados a menudo serán incluso más eficientes de lo que la mayoría de los programadores se tomarían la molestia de escribir en C. Por ejemplo, el servidor web independiente generado para la demostración utiliza menos memoria RAM que el shell bash. El compilador también genera versiones JavaScript del código del lado del cliente, sin necesidad de escribir esas partes de las aplicaciones en un lenguaje diferente.
Y como esto furra poco la implementación de todo esto es de código abierto.
Dejo link: http://www.impredicative.com/ur/
jueves, 29 de marzo de 2018
Como instalar y correr Apache Spark?
Hay varias formas diferentes de instalar y usar Spark. Podemos instalarlo en una máquina como una aplicación stand-alone o usar una de las imágenes de máquinas virtuales Spark disponibles de proveedores como Cloudera, Hortonworks o MapR. También podemos usar Spark instalado y configurado en la nube (por ejemplo, en Databricks Community Edition).
Cuando instalamos Spark en una máquina local o usamos una instalación basada en la nube, podemos usar algunos modos diferentes para conectarnos al motor Spark.
La siguiente tabla muestra los parámetros principales de URL para los diferentes modos de ejecutar Spark:
- Local: Corre Spark de forma local con un worker
- local[k]: Corre Spark de forma local con k workers (lo ideal es que k sea numero de micros)
- local[*]: Corre Spark de forma local y corre con un numero de workers que se asigna de forma lógica.
- spark://HOST:PORT: Conecta con un spark standalone cluster master. El puerto debe ser cualquiera que haya sido configurado en el master. Por defecto es 7077.
- meso://HOST:PORT: Conecta con un Mesos cluster. E El puerto debe ser cualquiera que haya sido configurado en el master. Por defecto es 5050.
- yarn-client: conecta con clusters YARD en modo cliente, la ubicación del clúster se encontrará en función de la variable HADOOP_CONF_DIR.
- yarn-cluster: conecta con clusters YARD en modo cluster, la ubicación del clúster se encontrará en función de la variable HADOOP_CONF_DIR.
Una vez que Spark este funcionando, nosotros podemos connectar usando Spark shell para analisis interactivo de datos. El shell Spark está disponible en los lenguajes Scala y Python. Java no era compatible con un shell interactivo anteriormente, pero está disponible en JDK 9. La herramienta REPL (read-eval-print loop) en Java se llama Jshell.
Se puede utilizar spark-shell para Scala y pyspark para Python.
sábado, 24 de marzo de 2018
Java 10 fue liberado
Si! vamos por java 10, oracle tomo el control de java y no para de sacar versiones. Esta versión fue 6 meses despues de java 9.
El lanzamiento de Java 10 vuelve obsoleto a Java 9 y no se ofrecerán más versiones gratuitas de Java 9. A partir del 20 de marzo, las únicas versiones de Java con soporte gratuito de Oracle son Java 8 y Java 10. La próxima versión con soporte a largo plazo disponible va ser Java 11, que se lanzará en septiembre de 2018.
La versión final prácticamente no ha cambiado desde el candidato RC1 y no se han agregado características significativas.
La documentación completa de esta versión está disponible, así como el release note.
Entre las características más importantes se encuentra la palabra "var" que permite la inferencia de tipos:
var foo = new ArrayList<String>();
Además de los casos simples, esto realmente permite construcciones de programación que no eran posibles antes:
public class Test {
public static void main(String[] args) {
(new Object() {
public void bar() {
System.out.println("bar!");
}
}).bar();
}
}
Y gracias a la palabra var y la inferencia de tipos podemos hacer lo siguiente:
var o = new Object() {
public void bar() {
System.out.println("bar!");
}
};
o.bar();
Todavia tengo post sobre java 8 y 9 y oracle lanza Java 10!! En un futuro no muy lejano seguiré escribiendo sobre las nuevas características de java 10.
Dejo link: http://jdk.java.net/10/
https://docs.oracle.com/javase/10/
¿Cómo logra una empresa argentina figurar entre las mejores 100 compañías de outsourcing del mundo?
Como sabrán algunos trabajo en una empresa que se llama hexacta. Esta empresa se encuentra entre las mejores 100 compañías de outsourcing del mundo dado esto la revista digital insider hizo el siguiente reportaje a un socio de hexacta:
http://insiderlatam.com/como-logra-una-empresa-argentina-figurar-entre-las-mejores-100-companias-de-outsourcing-del-mundo
http://insiderlatam.com/como-logra-una-empresa-argentina-figurar-entre-las-mejores-100-companias-de-outsourcing-del-mundo
miércoles, 21 de marzo de 2018
Conjuntos de datos distribuidos resistentes en Spark
Conjuntos de datos distribuidos resistentes o Resilient distributed datasets (RDD) esta basado en Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing” (Matei et al 2012) este es el concepto base de Apache Spark.
RDD es como una tabla en una base de datos, la cual puede guardar datos de cualquier tipo. Spark guarda datos en RDD en diferentes particiones.
RDD ayudan a reorganizar los cálculos y a optimizar el procesamiento de datos. También son tolerantes a fallas porque el RDD sabe cómo recrear y volver a calcular los conjuntos de datos.
RDDs son inmutables (podemos ver la programación funcional de scala en este aspecto). Es decir se puede procesar un RDD pero esto retornara un nuevo RDD con el resultado de la transformación.
RDD soporta 2 tipos de acciones:
- Transformaciones: esto no retorna un valor pero retorna un nuevo RDD. Algunas funciones de transformación: map , filter , flatMap , groupByKey , reduceByKey , aggregateByKey , pipe y coalesce.
- Acciones: operaciones que retornan un valor. Cuando una acción es llamada los datos son procesados y un valor es retornado. Algunas funciones de acción: reduce , collect , count , first , take , countByKey y foreach.
martes, 20 de marzo de 2018
Cursos Gugler
El Laboratorio de Investigación Gugler de la Facultad de Ciencia y Tecnología (U.A.D.E.R) tiene como Misión: "Promover, capacitar y difundir el uso del Software Libre en la región".
Algo muy importante es que los cursos se pueden hacer presenciales o a distancia.
Acá les dejo más info:
Y el link:
https://inscripciones.gugler.com.ar/
https://www.gugler.com.ar/
domingo, 18 de marzo de 2018
Arquitectura de Apache Spark
Apache Spark esta
compuesto por tres componentes:
- Data store
- API
- Framework de gestion de recursos
Data store: Apache
Spark utiliza el sistema de archivos de hadoop, es decir utiliza
hdfs. Por lo tanto es compatible con almacenamiento de hadoop y
framework que utilizan este almacenamiento como hbase, casandra, etc.
API: La API permite
crear aplicaciones basadas en Spark, utilizando una interfaz
estandar. Spark provee esta API para java, scala, python y R.
Gestion de recursos:
Spark puede ser deployado en un servidor stand-alone o sobre una
infraestructura distribuida sobre frameworks como Mesos o YARD
Ecosistema Spark
Como hemos dicho
anteriormente un ecosistema big data cuenta normalmente con varios
productos, los cuales proveen diferentes funcionalidades.
En el caso de spark, no es una excepción. Apache Spark incluye:
Spark Streaming, Se utiliza para procesar información en tiempo real. Esto apoyados en un pequeño sistema micro-batch. A la vez esto usa Dstream que es una serie de RDDs que se procesan en tiempo real. Y para él que no sabe que es RDD (como yo) RDD es Resilient Distributed Dataset (RDD), la abstracción básica en Spark. Representa una colección de elementos inmutables y divididos que se pueden operar en paralelo.
Spark SQL permite exponer datos de dataset de spark bajo una API Jdbs y permite ejecutar consultas SQL-like con datos de Spark. Tambie permite estraer datos en diferentes formatos.
Spark MLlib : es una librería de maching learning de spark. Esta consiste en los algoritmos comunes de maching learning y utilidades.
Spark GraphX : Es la
API de Grafos y procesamiento de grafos en paralelo. GraphX amplía a
Spark RDD al introducir las propiedades de gráfos distribuidos
resistente: un multi-grafo dirigido con propiedades asociadas a cada
vértice y borde. Para admitir el cálculo de grafos, GraphX expone
un conjunto de operadores fundamentales (por ejemplo, subgraph,
joinVertices y aggregateMessages) y una variante optimizada de Pregel
API. Además, GraphX incluye una creciente colección de algoritmos y
constructores de grafos para simplificar el análisis de grafos.
Aparte de estas
librerías, hay otros framework que se integran muy bien con Spark:
Alluxio
(anteriormente conocido como Tachyon) es un sistema de archivos
distribuidos centrado en memoria, que permite compartir archivos de
forma segura en un cluster basado en Spark y mapReduce. Este
framework cachea un conjunto de datos en memoria, evitando ir a disco
a buscar los conjunto de datos frecuentes. Esto permite acelerar el
trabajo con Spark.
BlinkDb: es un motor
de consulta aproximada para ejecutar consultas SQL interactivas en
grandes volúmenes de datos. Permite a los usuarios intercambiar la
precisión de la consulta por el tiempo de respuesta. Funciona en
grandes conjuntos de datos ejecutando consultas en muestras de datos
y presentando resultados con un rango de error significativas. Las
versiones posteriores de BlinkDB se mantienen bajo un nuevo proyecto
llamado iOLAP.
viernes, 16 de marzo de 2018
Replicas en Oracle 10g con streams parte 2
Continuemos con la captura y replicación de flujos de datos.
En un entorno Streams podemos capturar los eventos de la siguiente manera: Proceso de captura o aplicación personalizada.
Los cambios de objetos de la base son escritos en el area de redologs, dado que ante un error oracle puede volver a una versión consistente y estable. Un proceso de captura es un proceso en segundo plano de Oracle que lee el registro de redolog de la base de datos para capturar los cambios de DML y DDL realizados a los objetos de la base de datos. La base de datos de origen es la base de datos donde se generó el cambio en el registro de redolog. Un proceso de captura formatea estos cambios en mensajes llamados LCR y los envía a una cola. Como un proceso de captura en ejecución captura automáticamente los cambios en función de sus reglas, la captura de cambios mediante un proceso de captura a veces se denomina captura implícita.
Hay dos tipos de LCR: una LCR de fila contiene información sobre un cambio en una fila de una tabla resultante de una operación de DML, y una LCR de DDL contiene información sobre un cambio de DDL en un objeto de base de datos. Se debe utiliza reglas para especificar qué cambios se capturan. Una sola operación DML puede cambiar más de una fila en una tabla. Por lo tanto, una sola operación DML puede generar más de una LCR de fila, y una sola transacción puede consistir en múltiples operaciones DML.
Los cambios son capturados por capture user o usuario de captura, el capture user captura todos los cambios que cumplan con el conjunto de reglas (DML o DDL)
Un proceso de captura de procesos, puede capturar cambios de una base local o de una base remota.
Downstream capture significa que un proceso de captura se ejecuta en una base de datos que no sea la base de datos de origen. Se pueden configurar de la siguiente manera :
- Una configuración Downstream capture en tiempo real, significa que los servicios de transporte redolog utilizan el log writer process (LGWR) o proceso de escritura de redolog como origen para enviar datos desde el registro de redolog en línea a la base de datos downstream. En la base de datos downstream, un proceso de servidor de archivos remoto (RFS) recibe los datos de redolog y los almacena en el registro de redolog como en espera, y el archivador en la base de datos descendente archiva los datos de redolog en el registro de redolog en espera. El proceso Downstream en tiempo real captura los cambios desde el registro de redolog en espera siempre que sea posible y desde el registro de redolog archivado siempre que sea necesario.
- Una configuración archived-log downstream capture, significa que los archivos de redolog archivados de la base de datos de origen se copian en la base de datos Downstream. Puede copiar los archivos de redolog archivados en la base de datos downstream utilizando los servicios de transporte de redolog, el paquete DBMS_FILE_TRANSFER, el protocolo de transferencia de archivos (FTP) o algún otro mecanismo.
Un proceso de captura Downstream en tiempo real lee el registro de redolog en espera siempre que sea posible y, de lo contrario, los redologs archivados
La otra manera de capturar datos es con una aplicación personalizada. Esta aplicacion puede capturar los datos desde los logs de transacciones, triggers o otros metodos. La aplicacion debe capturar el cambio y debe convertir este cambio a LCR y luego debe encolar este LCR en la cola de la base destino para hacer esto se pueden utilizar los paquetes DBMS_STREAMS_MESSAGING o DBMS_AQ. La aplicación debe commitiar despues de encolar los LCRs de cada transacción.
Una vez capturados los cambios debemos propagarlos.
En un entorno de replicación de Streams, los procesos de propagacion propagan los cambios capturados. Las propagaciones permiten propagar los LCR origen a las bases de datos destinos.
Las siguientes secciones describen la puesta en escena y la propagación en un entorno de replicación de Streams:
LCR Staging : Los LCR capturados se organizan en un área de preparación. En Streams, el área de preparación es una cola que puede almacenar LCR y DDL LCR, así como otros tipos de mensajes. Los LCR capturados se organizan en una cola, que es la System Global Area (SGA) asciada con una cola.
Los LCR pueden propagarse mediante una propagación o aplicarse mediante un proceso de aplicación, y un LCR Staging determinado puede propagarse y aplicarse. Una propagación en ejecución propaga automáticamente las LCR basadas en las reglas de sus conjuntos de reglas, y un proceso de aplicación en ejecución aplica LCR automáticamente .
LCR Propagation:En un entorno de replicación de Streams, una propagación normalmente propaga LCR desde una cola en la base de datos local a una cola en una base de datos remota. La cola a partir de la cual se propagan los LCR se denomina cola de origen, y la cola que recibe los LCR se denomina cola de destino. Puede haber una relación de uno a muchos, muchos a uno o muchos a muchos entre las colas de origen y destino.
Incluso después de que un LCR se propaga por una propagación o se aplica mediante un proceso de solicitud, puede permanecer en la cola de origen si también ha configurado Flujos para propagar el LCR a una o más colas diferentes. Además, observe que una cola ANYDATA puede almacenar mensajes de usuario que no sean LCR. Normalmente, los mensajes de usuario que no son de LCR se utilizan para aplicaciones de mensajería, no para la replicación.
Puede configurar un entorno de replicación de Streams para propagar LCR a través de una o más bases de datos intermedias antes de llegar a una base de datos de destino. Tal entorno de propagación se llama red dirigida. Un LCR puede o no ser procesado por un proceso de solicitud en una base de datos intermedia. Las reglas determinan qué LCR se propagan a cada base de datos de destino y puede especificar la ruta que recorrerán los LCR en su camino hacia una base de datos destino.
La ventaja de usar una red dirigida es que una base de datos de origen no necesita tener una conexión de red física con la base de datos de destino. Entonces, si desea que los LCR se propaguen de una base de datos a otra, pero no hay conexión de red directa entre las computadoras que ejecutan estas bases de datos, puede propagar los LCR sin reconfigurar su red, siempre que una o más bases de datos intermedias conecten el base de datos de origen a la base de datos de destino. Si usa redes dirigidas, y un sitio intermedio se apaga durante un período de tiempo prolongado o si se elimina, entonces es posible que necesite reconfigurar la red y el entorno de Streams.
Dejo link: https://docs.oracle.com/cd/B19306_01/server.102/b14228/gen_rep.htm
martes, 13 de marzo de 2018
Características de Apache Spark
Spark mejora MapReduce con menos costos de procesamiento de datos.
Con capacidades como el almacenamiento de datos en memoria y el procesamiento casi en tiempo real, puede ejecutarse varias veces más rápido que otras tecnologías de big data.
Spark también soporta evaluación perezosa de consulta big-data, lo que ayuda a optimizar los pasos en los flujos de trabajo de procesamiento de datos. Proporciona una API de nivel superior para mejorar la productividad del desarrollador y una arquitectura coherente para soluciones de big-data.
Spark guarda los resultados intermedios en memoria en lugar de escribirlos en el disco, lo que es eficiente, especialmente cuando tenemos que trabajar en el mismo conjunto de datos varias veces. Está diseñado para ser un motor de ejecución que funciona tanto en la memoria como en el disco. Los operadores de Spark realizan operaciones externas cuando los datos no entran en la memoria. Spark se puede usar para procesar conjuntos de datos que exceden la memoria agregada en un cluster.
Spark intentará almacenar tantos datos en la memoria como sea posible y luego guardara en disco. Puede almacenar parte de un conjunto de datos en la memoria y los datos restantes en el disco. Con este almacenamiento de datos en memoria luego en disco, Spark consigue la ventaja de rendimiento.
Otras características incluyen:
- Soporta más que las funciones map y reduce
- La Api soporta Scala, Java y Python
- La consola interactiva soporta Scala y Python.
Spark fue escrito en Scala por lo que corre en la JVM y actualmente soporta para el desarrollo:
- Scala
- Java
- Python
- R
- Clojure y los lenguajes soportados por la Jvm
lunes, 12 de marzo de 2018
Replicas en Oracle 10g con streams
La replicación es el proceso de compartir objetos y datos de bases de datos en múltiples bases de datos. Los datos y los objetos de la base de datos se mantienen sincronizados en todas las bases de datos en el entorno de replicación. En un entorno de replicación de Streams, la base de datos donde se origina un cambio se denomina base de datos fuente, y una base de datos donde se comparte un cambio se denomina base de datos de destino.
Podemos replicar DDL y/o DML, para esto necesitamos hacer los siguientes pasos:
1.Capturar un cambio o un conjunto de cambios (logical change records o LCRs) y encolarlo en la cola dentro de la cola de cambios. Un LCR es mensaje con un formato determinado que especifica un cambio. EL LCR encapsula los cambios a realizar.
2.Propagar el LRC a otras colas, es decir a otras base de datos.
3.Aplicar el LRC a la base destino, esto se puede hacer desde la cola o de forma directa tambien.
Por lo tanto los pasos 1 y 3 son obligatorios y el 2 es opcional dado que se puede aplicar el LRC de forma directa.
A la vez tenemos reglas de replicación, una regla indica una acción cuando ocurre un evento y si se cumple una condición. Las reglas son evaluadas por el motor de reglas de oracle. Cada uno de los siguientes pasos son ejecutados por un motor de reglas:
- Captura de proceso
- Propagación
- Aplicar proceso
Se puede tener control del comportamiento de los clientes Streams usando reglas. Un conjunto o set de reglas es una colección de reglas. En un entorno de replicación, un clinte hace una acción si el LCR sateface el conjunto de reglas.
En general, un cambio satisface los conjuntos de reglas para un cliente de Streams si ninguna regla en el conjunto de reglas negativas se evalúa como TRUE para el LCR, y al menos una regla en el conjunto de reglas positivas se evalúa como TRUE para el LCR. Si un cliente de Streams está asociado con un conjunto de reglas positivas y negativas, entonces el conjunto de reglas negativas siempre se ejecutara antes.
Específicamente, podemos controlar el flujo de información en un entorno de replicación de Streams de las siguientes maneras:
- Especifique los cambios que se deben capturar desde el area de redolog. Si hay un cambio en el area de redolog que aplica el conjunto de reglas este sera capturado.
- Especifique los LCR una propagación debe propagar.
- Especifique las LCR se deben aplicar o descarta en una cola destino.
Debemos utilizar el paquete de pl/sql DBMS_STREAMS_ADM para crear reglas de replicación. Podemos crear reglas en los siguientes niveles:
- Tabla: Contiene reglas para el cambio de una tabla en particular
- Esquema: Contiene reglas para el cambio de un esquema en particular
- Global: Se aplica a toda la base de datos.
A la vez, podemos discriminar las reglas en las que aplican DML o DDL pero no las 2 al mismo tiempo.
Streams replication soporta que se repliquen objetos que no tengan la misma estructura. Es decir en la base destino puede cambiar su estructura. Para esto es necesario utilizar una lregla de transformación, la cual lleve al cambio al formato destino.
Hay 2 tipos de reglas de transformación: declarativas o personalizadas. Las reglas declarativas de transformación o Declarative rule-based transformations (en ingles) permiten cambios en un conjunto de tablas o esquemas. Podemos cambiar el esquema o nombre de tabla o agregar una columna o eliminarla, etc.
En cambio las reglas personalizadas o custom, llaman a una función pl/sql que hace la transformación.
Streams también admite subconjuntos de datos de tablas mediante el uso de reglas de subconjuntos. Si una tabla compartida en una base de datos en un entorno de replicación de Streams contiene solo un subconjunto de datos, entonces puede configurar Flujos para administrar los cambios en una tabla, de modo que solo el subconjunto de datos apropiado se comparta con la tabla de subconjuntos. Por ejemplo, una base de datos particular puede mantener datos para los empleados en un departamento particular solamente. En este caso, puede usar reglas de subconjunto para compartir cambios en los datos para los empleados en ese departamento con la tabla de subconjuntos, pero no para los empleados de otros departamentos.
La subconjunto puede realizarse en cualquier punto del flujo de información de flujos. Es decir, un proceso de captura puede usar una regla de subconjunto para capturar un subconjunto de cambios en una tabla particular, una propagación puede usar una regla de subconjunto para propagar un subconjunto de cambios a una tabla particular y un proceso de aplicación puede usar una regla de subconjunto para aplicar solo un subconjunto de cambios a una tabla en particular.
Por ahora esta la idea general, en proximos post seguiremos en más detalle.
Dejo link: https://docs.oracle.com/cd/B19306_01/server.102/b14228/gen_rep.htm
domingo, 11 de marzo de 2018
Linux esta disponible en la Microsoft Store
Ya esta, lo he visto todo... Puedo morir en paz.
Si si, Linux esta disponible en la Microsoft Store. Es decir podemos instalar virtuales de linux desde el Microsoft Store. En realidad no son virtuales, son como virtuales. Internamente usa el sistema WSL (windows subsystem for Linux)
WSL proporciona una interfaz de kernel compatible con Linux desarrollada por Microsoft (que no contiene ningún código de kernel de Linux), que luego puede ejecutar un sistema operativo Linux.
Actualmente podemos instalar :
- Ubuntu
- Debian
- SUSE Linux Enterprise Servers
- OpenSUSE
- Kali Linux
Igualmente es mejor instalar Linux y listo!!
jueves, 8 de marzo de 2018
Java EE se transforma en Jakarta EE
Me hago eco de esta noticia (medio tarde)
Dado que oracle quiere soltar Java EE pero no quiere soltar el nombre Java por lo tanto ahora se va a llamar Jakarta EE.
Y varios proyectos han cambiado nombres dado este cambio. Ahora que Java EE es Jakarta EE, Glassfish pasa a ser Eclipse Glassfish, Java Community Process (JCP) pasa a llamarse Eclipse EE.next Working Group (EE.next), y Oracle development management ahora es Eclipse Enterprise for Java (EE4J) y Project Management Committee (PMC).
Y eso es toda la noticia, bien no se como estirar más ...
Dejo link:
Suscribirse a:
Entradas (Atom)