Translate
jueves, 21 de septiembre de 2017
Cómo proteger la base de datos de MongoDB?
Me llego el siguiente correo y quería compartirlo con ustedes:
| ||||||||||||||||||
MongoDB Inc., 2017. Todos los derechos reservados. Palacio de Miraflores, Suite 219 & 220, Carrera de San Jerónimo 15 - 2, Madrid 28014, Spain Para darse de baja de futuros mensajes de MongoDB o para actualizar sus preferencias de correo electrónico haga clic aquí. | |||||
Para ver la versión en línea haga clic aquí. |
Cómo diseñar una newsletter?
Si bien estos temas no son muy comunes en este blog, pero les cuento tuve que hacer un newsletter de las novedades del proyecto, como un release note pero con formato newsletter. Y por lo tanto me puse a investigar. Parece fácil pero lo fácil es hacer un newletter que no agrade, que no informe de un modo adecuado y lo difícil es hacerlo bien.
Vamos de a poco, que es un newsletter? Si buscamos en la wikipedia podemos encontrar:
"Un boletín informativo es una publicación distribuida de forma regular, centrada en un tema principal. Muchos boletines son publicados por clubes, sociedades, asociaciones y negocios para proporcionar información de interés a sus miembros o empleados del mismo plantel. Su extensión es variable y puede tener varias funciones."
Por lo tanto el newsletter o boletín informativo es una publicación digital informativa que se distribuye a través de email y con cierta periodicidad (diaria, semanal, mensual, bimensual o trimestral). Normalmente contienen artículos de interés sobre la marca y del ámbito en que la misma se desenvuelve. Los que reciben este tipo de comunicaciones son suscriptores que previamente han mostrado interés en la marca y han solicitado recibir información por correo.
En resumen es un email con las novedades y artículos relacionados que se envían a un conjunto de personas que se han subscrito a este newsletter.
Puede que tengamos un blog en nuestro sitio web, en cuyo caso podemos pensar que ya lo tenemos todo hecho, porque tendremos contenido para ir enviando en los mailings. O puede que no generemos contenido de forma asidua, y debamos comenzar ahora.
Pero volvamos al tema principal: Cómo diseñar una newsletter de manera efectiva y elegante? Y como pueden concluir estos son los principales objetivos de tu estrategia de email marketing. Y de marketing en general.
Las newsletters son herramientas muy poderosas, por esa razón las empresas más grandes los utilizan. A la hora de mantener una comunicación fluida, directa y personalizada con los lectores esta herramienta es muy eficiente. Pero, más allá de factores básicos como los contenidos, los asuntos, el horario o la frecuencia de envío, se encuentra un elemento que resulta determinante. Aunque son pocos los que se atreven a innovar en él. Se trata del diseño.
Los beneficios que aporta a tu negocio enviar comunicaciones periódicas en formato newsletter se fundamentan en una idea clave:
Este boletín de noticias sirve para comunicarte con tus clientes específicos, con tu comunidad de fans que dan un valor único a tu marca.
Por tanto, una buena segmentación de la base de datos de emails es clave para asegurarte que la comunicación es la adecuada y acorde con los intereses de tu audiencia.
Teniendo esto claro, siempre me gusta destacar 3 ventajas principales de enviar una newsletter regularmente y seguir una estrategia de email marketing sólida:
No obstante, debes tener muy en cuenta que los beneficios de enviar una newsletter no son inmediatos, sino que deberás realizar ciertas acciones para lograr conversiones (clics, suscripciones, ventas, etc.).
Por ejemplo, para atraer a los usuarios y lograr que se materialicen en conversiones, tendrás que implementar banners, botones promocionales o sorteos, servicios de prueba gratuitos o contenidos descargables tipo ebook.
La última opción (ofrecer ebooks y otros materiales), combinada con cualquier otra, es una de las vía que más ventajas puede aportar a tu negocio a la hora de dar una imagen de marca única y distintiva, y por ello es de la que quiero hablarte para que tú también puedas sacar el máximo provecho.
Puff, con los newsletter tenemos trabajo!!
Vamos de a poco, que es un newsletter? Si buscamos en la wikipedia podemos encontrar:
"Un boletín informativo es una publicación distribuida de forma regular, centrada en un tema principal. Muchos boletines son publicados por clubes, sociedades, asociaciones y negocios para proporcionar información de interés a sus miembros o empleados del mismo plantel. Su extensión es variable y puede tener varias funciones."
Por lo tanto el newsletter o boletín informativo es una publicación digital informativa que se distribuye a través de email y con cierta periodicidad (diaria, semanal, mensual, bimensual o trimestral). Normalmente contienen artículos de interés sobre la marca y del ámbito en que la misma se desenvuelve. Los que reciben este tipo de comunicaciones son suscriptores que previamente han mostrado interés en la marca y han solicitado recibir información por correo.
En resumen es un email con las novedades y artículos relacionados que se envían a un conjunto de personas que se han subscrito a este newsletter.
Puede que tengamos un blog en nuestro sitio web, en cuyo caso podemos pensar que ya lo tenemos todo hecho, porque tendremos contenido para ir enviando en los mailings. O puede que no generemos contenido de forma asidua, y debamos comenzar ahora.
Pero volvamos al tema principal: Cómo diseñar una newsletter de manera efectiva y elegante? Y como pueden concluir estos son los principales objetivos de tu estrategia de email marketing. Y de marketing en general.
Las newsletters son herramientas muy poderosas, por esa razón las empresas más grandes los utilizan. A la hora de mantener una comunicación fluida, directa y personalizada con los lectores esta herramienta es muy eficiente. Pero, más allá de factores básicos como los contenidos, los asuntos, el horario o la frecuencia de envío, se encuentra un elemento que resulta determinante. Aunque son pocos los que se atreven a innovar en él. Se trata del diseño.
Los beneficios que aporta a tu negocio enviar comunicaciones periódicas en formato newsletter se fundamentan en una idea clave:
Este boletín de noticias sirve para comunicarte con tus clientes específicos, con tu comunidad de fans que dan un valor único a tu marca.
Por tanto, una buena segmentación de la base de datos de emails es clave para asegurarte que la comunicación es la adecuada y acorde con los intereses de tu audiencia.
Teniendo esto claro, siempre me gusta destacar 3 ventajas principales de enviar una newsletter regularmente y seguir una estrategia de email marketing sólida:
- Es una vía promocional económica y de venta indirecta.
- Incrementa la credibilidad de una marca.
- Fideliza a la audiencia a través de la comunicación personalizada.
No obstante, debes tener muy en cuenta que los beneficios de enviar una newsletter no son inmediatos, sino que deberás realizar ciertas acciones para lograr conversiones (clics, suscripciones, ventas, etc.).
Por ejemplo, para atraer a los usuarios y lograr que se materialicen en conversiones, tendrás que implementar banners, botones promocionales o sorteos, servicios de prueba gratuitos o contenidos descargables tipo ebook.
La última opción (ofrecer ebooks y otros materiales), combinada con cualquier otra, es una de las vía que más ventajas puede aportar a tu negocio a la hora de dar una imagen de marca única y distintiva, y por ello es de la que quiero hablarte para que tú también puedas sacar el máximo provecho.
Puff, con los newsletter tenemos trabajo!!
domingo, 17 de septiembre de 2017
Elixir 1.5 fue liberado!
Elixir 1.5 trae muchas mejoras a la experiencia y calidad de vida del desarrollador. Es decir esta versión se centro que mejorar la interactividad con el desarrollador.
Entre las mejoras que tenemos podemos nombrar:
UTF-8 para atoms, nombres de funciones y variables, por ejemplo :
test "こんにちは世界" do
assert :こんにちは世界
end
o
saudação = "Bom dia!"
Elixir 1.5 es más accesible a otros idiomas y comunidades. Los identificadores deben seguir siendo una secuencia de letras, seguida de dígitos y combinar marcas. Esto significa que los símbolos, como las notaciones matemáticas y emojis, no están permitidos en los identificadores.
IEx obtuvo muchas mejoras en la experiencia del desarrollador. En primer lugar, el sistema de autocompletado es ahora capaz de autocompletar variables y imports.
IEx también obtuvo nuevas funciones, como listar todas las funciones y macros en un módulo.
Por último, IEx también cuenta con un sistema de punto de interrupción para la depuración de código cuando se ejecuta en Erlang / OTP 20
Exception.blame/3 es una nueva función de Elixir que es capaz de adjuntar información de depuración a ciertas excepciones. Actualmente se utiliza para aumentar FunctionClauseErrors con un resumen de todas las cláusulas y qué partes de la cláusula coinciden y cuáles no.
Elixir v1.5 simplifica la forma en que los supervisores se definen y utilizan en Elixir. Elixir ahora permite especificaciones hijas, que especifican cómo se supervisará un proceso hijo, que se definirá en módulos.
Esta versión incluye muchas mejoras en funciones de calendario, como Date.range/2 y la posibilidad de convertir entre diferentes calendarios.
Estas son algunas mejoras que vienen en esta nueva versión.
Dejo link: https://elixir-lang.org/blog/2017/07/25/elixir-v1-5-0-released/
Entre las mejoras que tenemos podemos nombrar:
UTF-8 para atoms, nombres de funciones y variables, por ejemplo :
test "こんにちは世界" do
assert :こんにちは世界
end
o
saudação = "Bom dia!"
Elixir 1.5 es más accesible a otros idiomas y comunidades. Los identificadores deben seguir siendo una secuencia de letras, seguida de dígitos y combinar marcas. Esto significa que los símbolos, como las notaciones matemáticas y emojis, no están permitidos en los identificadores.
IEx obtuvo muchas mejoras en la experiencia del desarrollador. En primer lugar, el sistema de autocompletado es ahora capaz de autocompletar variables y imports.
IEx también obtuvo nuevas funciones, como listar todas las funciones y macros en un módulo.
Por último, IEx también cuenta con un sistema de punto de interrupción para la depuración de código cuando se ejecuta en Erlang / OTP 20
Exception.blame/3 es una nueva función de Elixir que es capaz de adjuntar información de depuración a ciertas excepciones. Actualmente se utiliza para aumentar FunctionClauseErrors con un resumen de todas las cláusulas y qué partes de la cláusula coinciden y cuáles no.
Elixir v1.5 simplifica la forma en que los supervisores se definen y utilizan en Elixir. Elixir ahora permite especificaciones hijas, que especifican cómo se supervisará un proceso hijo, que se definirá en módulos.
Esta versión incluye muchas mejoras en funciones de calendario, como Date.range/2 y la posibilidad de convertir entre diferentes calendarios.
Estas son algunas mejoras que vienen en esta nueva versión.
Dejo link: https://elixir-lang.org/blog/2017/07/25/elixir-v1-5-0-released/
Blog de angular
Quiero recomendarles un excelente blog de angular y javascript de Todd Motto que es un Developer Expert de google. Este desarrollador abrió una empresa de cursos de angular "Ultimate Angular".
El blog esta muy completo como para tenerlo de referencia.
Dejo link: https://toddmotto.com
jueves, 14 de septiembre de 2017
Cómo utilizar el conector de BI con MongoDb?
Me llego el siguiente correo y quería compartirlo con ustedes:
| ||||||||||||||||||
MongoDB Inc., 2017. Todos los derechos reservados. Palacio de Miraflores, Suite 219 & 220, Carrera de San Jerónimo 15 - 2, Madrid 28014, Spain Para darse de baja de futuros mensajes de MongoDB o para actualizar sus preferencias de correo electrónico haga clic aquí. |
|||||
Para ver la versión en línea haga clic aquí. |
miércoles, 13 de septiembre de 2017
Java EE se mueve a la organización eclipse
Como habíamos dicho en otro post: https://emanuelpeg.blogspot.com.ar/2017/08/java-ee-bajo-una-organizacion-open.html
Según lo que han publicado en el blog de la empresa Oracle, se quiere que el proceso de desarrollo de la especificación Java enterprise edition sea más ágil y responsivo. Por lo tanto se sugiere que sea parte de un fundación open source.
Bueno la Fundación Eclipse resultó seleccionada para albergar el proyecto y plataforma Java EE. La verdad que es una buenisima noticia.
Java EE en las manos de eclipse no creo que gane mayor agilidad pero sin duda va ser más abierto y comunitario.
Github de Java EE : https://github.com/javaee
Dejo link: https://blogs.oracle.com/theaquarium/opening-up-ee-update
http://middlewareblog.redhat.com/2017/09/12/java-ee-moves-to-eclipse/
https://mmilinkov.wordpress.com/2017/09/12/java-ee-moves-to-the-eclipse-foundation/
martes, 12 de septiembre de 2017
Blog sobre c++
Quiero recomendarles un blog sobre c++ para los que empiezan con el lenguaje.
Dejo link: http://www.freewebmentor.com/
domingo, 10 de septiembre de 2017
Empezando con Elixir 9
Composición
Ahora que sabemos cómo crear módulos y estructuras vamos a aprender cómo agregar la funcionalidad existente a ellos a través de la composición. Elixir nos proporciona una variedad de formas diferentes de interactuar con otros módulos.
alias
Nos permite alias nombres de módulo; utilizado con bastante frecuencia en código Elixir:
defmodule Sayings.Greetings do
def basic(name), do: "Hi, #{name}"
end
defmodule Example do
alias Sayings.Greetings
def greeting(name), do: Greetings.basic(name)
end
# Without alias
defmodule Example do
def greeting(name), do: Sayings.Greetings.basic(name)
end
Si hay un conflicto entre dos alias o simplemente deseamos alias a un nombre diferente por completo, podemos usar la opción: ":as"
defmodule Example do
alias Sayings.Greetings, as: Hi
def print_message(name), do: Hi.basic(name)
end
Incluso es posible alias múltiples módulos a la vez:
defmodule Example do
alias Sayings.{Greetings, Farewells}
end
import
Si queremos importar funciones y macros en lugar de usar alias, podemos usar import/:
iex> last([1, 2, 3])
** (CompileError) iex:9: undefined function last/1
iex> import List
nil
iex> last([1, 2, 3])
3
Filtración
De forma predeterminada, todas las funciones y macros se importan, pero podemos filtrarlas mediante las opciones :only y :except.
Para importar funciones y macros específicas, debemos especificar los pares nombre de función y numero de parámetros a: only y :except. Comencemos importando sólo la función last/1 :
iex> import List, only: [last: 1]
iex> first([1, 2, 3])
** (CompileError) iex:13: undefined function first/1
iex> last([1, 2, 3])
3
Si importamos todo excepto last/1 e intentamos usar las mismas funciones que antes:
iex> import List, except: [last: 1]
nil
iex> first([1, 2, 3])
1
iex> last([1, 2, 3])
** (CompileError) iex:3: undefined function last/1
Hay dos átomos especiales, :functions y :macros, que importan sólo funciones y macros respectivamente:
import List, only: :functions
import List, only: :macros
require
Aunque se utiliza menos frecuentemente require/2 es importante. Requerir un módulo asegura que está compilado y cargado. Esto es muy útil cuando necesitamos acceder a las macros de un módulo:
defmodule Example do
require SuperMacros
SuperMacros.do_stuff
end
Si tratamos de llamar a una macro que aún no está cargada Elixir generará un error.
use
La macro "use" invoca una macro especial, llamada __using __/1, del módulo especificado. He aquí un ejemplo:
# lib/use_import_require/use_me.ex
defmodule UseImportRequire.UseMe do
defmacro __using__(_) do
quote do
def use_test do
IO.puts "use_test"
end
end
end
end
y agregamos esta línea a UseImportRequire:
use UseImportRequire.UseMe
El uso de UseImportRequire.UseMe define una función use_test/0 mediante la invocación de la macro __using __/1.
Esto es todo lo que hace el uso. Sin embargo, es común que la macro __using__, a su vez, llame alias, require, o import. Esto a su vez creará alias o importaciones en el módulo de uso. Esto permite que el módulo que se utiliza para definir una política de cómo sus funciones y macros deben ser referenciados. Esto puede ser bastante flexible en que __using __/1 puede establecer referencias a otros módulos, especialmente submódulos.
El marco de Phoenix utiliza el use y __using __/1 para reducir la necesidad de alias repetitivas e import llamadas en módulos definidos por el usuario.
He aquí un ejemplo del módulo Ecto.Migration:
defmacro __using__(_) do
quote location: :keep do
import Ecto.Migration
@disable_ddl_transaction false
@before_compile Ecto.Migration
end
end
La macro Ecto.Migration .__ using__/1 incluye una llamada de importación para que cuando utilice Ecto.Migration también importe Ecto.Migration. También configura una propiedad de módulo que asumimos que controla el comportamiento de Ecto.
Para recapitular: la macro de uso simplemente invoca la macro __using __/1 del módulo especificado. Para entender realmente qué es lo que necesita para leer la macro __using __/1.
Dejo link: https://elixirschool.com/en/lessons/basics/modules/
Empezando con Elixir 8
Estructuras
Una estructura puede verse como un mapa es decir como una estructura clave/valor. Una estructura debe definirse dentro de un módulo, del cual toma su nombre. Es común que una estructura sea la única cosa definida dentro de un módulo.
Para una estructura debemos utilizar la palabra clave defstruct y luego debemos definir los campos y los valores:
defmodule Example.User do
defstruct name: "Sean", roles: []
end
Vamos a crear algunas estructuras:
iex> %Example.User{}
%Example.User{name: "Sean", roles: []}
iex> %Example.User{name: "Steve"}
%Example.User{name: "Steve", roles: []}
iex> %Example.User{name: "Steve", roles: [:admin, :owner]}
%Example.User{name: "Steve", roles: [:admin, :owner]}
Podemos actualizar nuestra estructura como si fuera un mapa:
iex> steve = %Example.User{name: "Steve", roles: [:admin, :owner]}
%Example.User{name: "Steve", roles: [:admin, :owner]}
iex> sean = %{steve | name: "Sean"}
%Example.User{name: "Sean", roles: [:admin, :owner]}
Lo más importante, puede combinar estructuras con mapas:
iex> %{name: "Sean"} = sean
%Example.User{name: "Sean", roles: [:admin, :owner]}
Dejo link: https://elixirschool.com/en/lessons/basics/modules/
Una estructura puede verse como un mapa es decir como una estructura clave/valor. Una estructura debe definirse dentro de un módulo, del cual toma su nombre. Es común que una estructura sea la única cosa definida dentro de un módulo.
Para una estructura debemos utilizar la palabra clave defstruct y luego debemos definir los campos y los valores:
defmodule Example.User do
defstruct name: "Sean", roles: []
end
Vamos a crear algunas estructuras:
iex> %Example.User{}
%Example.User{name: "Sean", roles: []}
iex> %Example.User{name: "Steve"}
%Example.User{name: "Steve", roles: []}
iex> %Example.User{name: "Steve", roles: [:admin, :owner]}
%Example.User{name: "Steve", roles: [:admin, :owner]}
Podemos actualizar nuestra estructura como si fuera un mapa:
iex> steve = %Example.User{name: "Steve", roles: [:admin, :owner]}
%Example.User{name: "Steve", roles: [:admin, :owner]}
iex> sean = %{steve | name: "Sean"}
%Example.User{name: "Sean", roles: [:admin, :owner]}
Lo más importante, puede combinar estructuras con mapas:
iex> %{name: "Sean"} = sean
%Example.User{name: "Sean", roles: [:admin, :owner]}
Dejo link: https://elixirschool.com/en/lessons/basics/modules/
Empezando con Elixir 7
Modulos
Todos sabemos que tener todas las funciones en un mismo archivo sin nin gun scope o orden es muy propicio al caos general. Por esta razón Elixir nos brinda el concepto de modulo.
Un Modulo nos permite organizar nuestras funciones dentro de un espacio de nombre. Además de agrupar las funciones, nos permiten definir funciones nombradas y privadas.
Definamos un modulo de ejemplo:
defmodule Example do
def greeting(name) do
"Hello #{name}."
end
end
iex> Example.greeting "Sean"
"Hello Sean."
Es posible anidar módulos en Elixir, lo que le permite ampliar el espacio de nombres de su funcionalidad:
defmodule Example.Greetings do
def morning(name) do
"Good morning #{name}."
end
def evening(name) do
"Good night #{name}."
end
end
iex> Example.Greetings.morning "Sean"
"Good morning Sean."
Atributos de los Modulos
Los atributos de los modulos pueden ser vistos como constantes. Veamos un ejemplo:
defmodule Example do
@greeting "Hello"
def greeting(name) do
~s(#{@greeting} #{name}.)
end
end
Es importante observar que hay atributos reservados en Elixir. Los tres más comunes son:
- moduledoc - Documentos del módulo actual.
- doc - Documentación para funciones y macros.
- behaviour - Usado en OTP o un comportamiento definido por el usuario.
Top 5 de nuevas características de Entity Framework Core 1.0
.net core viene tomando cada vez más relevancia en el mundo del desarrollo y como era de pensar cada vez se nutre más de sus frameworks por esta razón vamos a analizar 5 características de Entity Framework Core 1.0
Entity Framework Core es un mapeador relacional de objetos (ORM) que permite a los desarrolladores de .NET trabajar con una base de datos utilizando objetos .NET. Elimina la necesidad de la mayor parte del código de acceso a datos que los desarrolladores normalmente necesitan escribir. Hablando mal y pronto un hibernate de .net y microsoft
1. Cross plataforma, de igual manera que .net core su mayor fortaleza es que corre en cualquier plataforma como Windows, Mac, y mi amado Linux. A la vez permite conectarse a diferentes bases de datos como SQL Server, SQLite, Postgres, MySQL y pronto va estar desarrollo la conexión a bases nosql
2.Liviano, modular y extensible: Entity Framework Core se ha descompuesto en paquetes / componentes manejables más pequeños, por lo tanto podemos utilizar los que sean útiles para el proyecto. Estos componentes también se pueden ampliar para agregar funcionalidad adicional.
3.In-Memory Provider: Se puede utilizar un almacén de datos en memoria, puede ejercitar su código de acceso de datos contra una base de datos real que sólo existe en la memoria. Facilitando las pruebas.
4.Propiedades ocultas o Shadow: Podemos modificar campos que solo existen en la base que se denominan shadow:
public class CoursesContext : DbContext
{
public DbSet<Course> Courses { get; set; }
public DbSet<Student> Students { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Course>()
.Property<DateTimeOffset>("LastUpdated");
}
}
context.Entry(myCourse).Property("LastUpdated").CurrentValue = DateTimeOffset.Now;
5.Evaluación mixta cliente/servidor: La evaluación mixta cliente/servidor permite que las consultas contengan una lógica que se pueda evaluar en el cliente.
Por ejemplo tenemos un método así:
public static string AddTitle(string strFirstName)
{
if (!strFirstName.ToLower().StartsWith("Mr"))
{
strFirstName = string.Concat("Mr.", strFirstName);
}
return strFirstName;
}
Podemos hacer la siguiente consulta:
var emp = context.Employee
.Where(emp => emp.Gender == "M")
.Select(employee => new
{
FirstName = AddTitle(employee.FirstName),
LastName = employee.LastName
})
.ToList();
Donde llamamos a la función AddTitle que se ejecutará en memoria.
Que piensan? es acertado este Top 5?
Dejo link: http://www.csharpstar.com/new-features-of-entity-framework-core/
jueves, 7 de septiembre de 2017
Python supera a R, se convierte en el lenguaje más utilizado para procesamiento de datos en ciencia y Machine Learning
Python supera a R, se convierte en el lenguaje más utilizado para procesamiento de datos en ciencia y Machine Learning (me quedo largo el titulo). Es así, según kdnuggets que dice algo así:
"Python no "tragó" R, pero los resultados, basados en 954 votantes, muestran que en 2017 el ecosistema de Python superó a R como la plataforma líder de Analytics, Data Science, Machine Learning.
Mientras que en 2016 Python estaba en segundo lugar ("Mainly Python" tenía 34% de participación vs 42% para "Mainly R"), en 2017 Python tiene 41% vs 36% para R.
La proporción de lectores de KDnuggets que usaron tanto R como Python de manera significativa también aumentó del 8,5% al 12% en 2017, mientras que la participación que utilizó principalmente otras herramientas cayó de 16% a 11%."
Es decir que Python se afianza como lenguaje para las ciencias y Machine Learning, veamos unos gráficos que muestran su evolución:
El futuro parece brillante para los usuarios de Python, pero R y otras plataformas se mantendrán dado que ya ganaron mucho terreno.
Dejo link: http://www.kdnuggets.com/2017/08/python-overtakes-r-leader-analytics-data-science.html
martes, 5 de septiembre de 2017
Linux supera el 3% de cuota de mercado por primera vez en el escritorio
Según las estadísticas de NetMarketShare para el mes de agosto de 2017, Linux supera el 3% de cuota de mercado por primera vez en el escritorio.
Si bien 3% suena a poco es un gran avance y lo mejor es que la cosa viene mejorando. En lo personal veo a casa vez más gente usando linux.
El crecimiento que ha ido subiendo progresivamente desde junio de 2016, cuando alcanzó el 2%, ha dado un salto bastante significativo este agosto. NetMarketShare sitúa a Linux con un 3,37% de la cuota de mercado de sistemas operativos de escritorio.
Según mi parecer debemos agradecerlo a Ubuntu y Mint, que han llevado el escritorio más cerca del usuario común.
Dejo link: https://www.netmarketshare.com/operating-system-market-share.aspx?qprid=9&qpcustomb=0&qpcd=1&qpct=2
domingo, 3 de septiembre de 2017
Que es Apache Kafka?
Apache Kafka se ha vuelto cada vez más popular, pero porque utilizar kafka?
Apache Kafka es generalmente utilizado en arquitecturas real-time que utilizan Stream de datos, para proporcionar análisis en tiempo real. Kafka es un sistema de mensajería publicación-suscripción rápido, escalable, duradero y tolerante a fallos.
Kafka se usa en casos de uso donde JMS, RabbitMQ y AMQP no pueden ni siquiera ser considerados debido al volumen y a la capacidad de respuesta. Kafka tiene mayor rendimiento, fiabilidad y características de replicación, lo que hace que sea aplicable para cosas como el seguimiento de las llamadas de servicio (rastrea cada llamada) o el seguimiento de los datos de sensores IoT donde una MOM tradicional puede no ser considerada.
Kafka puede trabajar con Flume / Flafka, Spark Streaming, Storm, HBase, Flink y Spark para la consumo, análisis y procesamiento en tiempo real de los datos de transmisión. Kafka es un flujo de datos utilizado para alimentar bases que utiliza Hadoop para análisis BigData. Además, Kafka Streaming (un subproyecto) se puede utilizar para análisis en tiempo real.
Kafka se utiliza para procesamiento de secuencias, seguimiento de actividades de sitios web, recopilación y monitoreo de métricas, agregación de registros, análisis en tiempo real, CEP, carga de datos en Spark, administración de datos en Hadoop, CQRS, computación en memoria (microservicios).
Kafka es una plataforma de streaming distribuida que se utiliza para sistemas stream publicar-suscribirse. Kafka se utiliza para el almacenamiento tolerante a fallos. Kafka replica particiones de registro de temas en varios servidores. Kafka está diseñado para permitir que tus aplicaciones procesen registros a medida que ocurren. Kafka es rápido y utiliza IO de forma eficiente mediante el batching y la compresión de registros. Kafka se utiliza para desacoplar flujos de datos. Kafka se utiliza para transmitir datos en lagos de datos, aplicaciones y sistemas de análisis de flujo en tiempo real.
Y para colmo es compatible para varios lenguajes como C#, Java, C, Python, Ruby (entre otros)...
Kafka permite construir en tiempo real de flujo de tuberías de datos. Kafka habilita micro-servicios en memoria (es decir actores, Akka, Baratine.io, QBit, reactores, reactivos, Vert.x, RxJava, Spring Reactor). Kafka le permite crear aplicaciones de streaming en tiempo real que reaccionan a los flujos para hacer análisis de datos en tiempo real, transformar, reaccionar, agregar, unir flujos de datos en tiempo real y realizar procesamiento de eventos complejos (CEP).
Puede utilizar Kafka para ayudar en la recopilación de métricas / KPIs, agregando estadísticas de muchas fuentes e implementando la generación de eventos. Puede utilizarlo con microservices (en memoria) y sistemas de actor para implementar servicios en memoria (log de confirmación externa para sistemas distribuidos).
Puede utilizar Kafka para replicar datos entre nodos, volver a sincronizar para nodos y restaurar estado. Aunque Kafka se utiliza principalmente para el análisis de datos en tiempo real y el procesamiento de secuencias, también puede utilizarse para la agregación de registros, mensajería, seguimiento de clics, pistas de auditoría y mucho más.
En un mundo donde la ciencia de los datos y el análisis es cada vez mas utilizado, la captura de datos para alimentar las bases de datos y sistemas de análisis en tiempo real también es un gran problema. Y aqu{i es donde Kafka se vuelve muy relevante.
Dejo link: https://dzone.com/articles/what-is-kafka?edition=316422&utm_source=Zone%20Newsletter&utm_medium=email&utm_campaign=big%20data%202017-08-17
https://kafka.apache.org/
Apache Kafka es generalmente utilizado en arquitecturas real-time que utilizan Stream de datos, para proporcionar análisis en tiempo real. Kafka es un sistema de mensajería publicación-suscripción rápido, escalable, duradero y tolerante a fallos.
Kafka se usa en casos de uso donde JMS, RabbitMQ y AMQP no pueden ni siquiera ser considerados debido al volumen y a la capacidad de respuesta. Kafka tiene mayor rendimiento, fiabilidad y características de replicación, lo que hace que sea aplicable para cosas como el seguimiento de las llamadas de servicio (rastrea cada llamada) o el seguimiento de los datos de sensores IoT donde una MOM tradicional puede no ser considerada.
Kafka puede trabajar con Flume / Flafka, Spark Streaming, Storm, HBase, Flink y Spark para la consumo, análisis y procesamiento en tiempo real de los datos de transmisión. Kafka es un flujo de datos utilizado para alimentar bases que utiliza Hadoop para análisis BigData. Además, Kafka Streaming (un subproyecto) se puede utilizar para análisis en tiempo real.
Kafka se utiliza para procesamiento de secuencias, seguimiento de actividades de sitios web, recopilación y monitoreo de métricas, agregación de registros, análisis en tiempo real, CEP, carga de datos en Spark, administración de datos en Hadoop, CQRS, computación en memoria (microservicios).
Kafka es una plataforma de streaming distribuida que se utiliza para sistemas stream publicar-suscribirse. Kafka se utiliza para el almacenamiento tolerante a fallos. Kafka replica particiones de registro de temas en varios servidores. Kafka está diseñado para permitir que tus aplicaciones procesen registros a medida que ocurren. Kafka es rápido y utiliza IO de forma eficiente mediante el batching y la compresión de registros. Kafka se utiliza para desacoplar flujos de datos. Kafka se utiliza para transmitir datos en lagos de datos, aplicaciones y sistemas de análisis de flujo en tiempo real.
Y para colmo es compatible para varios lenguajes como C#, Java, C, Python, Ruby (entre otros)...
Kafka permite construir en tiempo real de flujo de tuberías de datos. Kafka habilita micro-servicios en memoria (es decir actores, Akka, Baratine.io, QBit, reactores, reactivos, Vert.x, RxJava, Spring Reactor). Kafka le permite crear aplicaciones de streaming en tiempo real que reaccionan a los flujos para hacer análisis de datos en tiempo real, transformar, reaccionar, agregar, unir flujos de datos en tiempo real y realizar procesamiento de eventos complejos (CEP).
Puede utilizar Kafka para ayudar en la recopilación de métricas / KPIs, agregando estadísticas de muchas fuentes e implementando la generación de eventos. Puede utilizarlo con microservices (en memoria) y sistemas de actor para implementar servicios en memoria (log de confirmación externa para sistemas distribuidos).
Puede utilizar Kafka para replicar datos entre nodos, volver a sincronizar para nodos y restaurar estado. Aunque Kafka se utiliza principalmente para el análisis de datos en tiempo real y el procesamiento de secuencias, también puede utilizarse para la agregación de registros, mensajería, seguimiento de clics, pistas de auditoría y mucho más.
En un mundo donde la ciencia de los datos y el análisis es cada vez mas utilizado, la captura de datos para alimentar las bases de datos y sistemas de análisis en tiempo real también es un gran problema. Y aqu{i es donde Kafka se vuelve muy relevante.
Dejo link: https://dzone.com/articles/what-is-kafka?edition=316422&utm_source=Zone%20Newsletter&utm_medium=email&utm_campaign=big%20data%202017-08-17
https://kafka.apache.org/
Suscribirse a:
Entradas (Atom)