Translate

domingo, 7 de agosto de 2016

Recursos sobre Pharo, un IDE para programar en Smalltalk


Pharo es una Ide para programar en smalltalk, es muy usada y se puede instalar en linux muy fácilmente.

Para instalarla en linux debes bajarla e instalar unas librerìas 32 bit, si lo se es feo, pero bue. Les dejo el link: http://pharo.org/gnu-linux-installation

Bueno, tambien se puede ejecutar en window o Mac (que nadie es perfecto) http://pharo.org/download

Además pueden obtener muchos recursos de la pagina de Pharo:  http://pharo.org/documentation

Y Aprovecho para dejarles un video de una persona programando en pharo con metodología TDD :


Que es smalltalk? Parte 2


Viene por parte la cosa... Si no leiste la parte 1...

Es muy difícil explicar, a personas que no lo conozcan, que es Smalltalk y porque es tan diferente a otras herramientas más populares.

El origen de ese des-entendimiento viene a razón de que el proyecto Smalltalk estuvo - y sigue estando - regido por una concepción diferente de como debieran usarse las computadoras:

Las computadoras deben ser herramientas que sirvan como amplificadores del espíritu creativo de las personas.

Eso implica, entre otras cosas, que:

  • Todo el sistema tiene que ser entendible, y por ende modificable, por una sola persona.
  • El sistema tiene que estar construido con un mínimo juego de partes intercambiables.  Cada parte puede ser cambiada sin que el resto del sistema se modifique.
  • Todo el sistema tiene que estar construido basado en una metáfora que pueda ser aplicada en todas las partes.
  • Cada componente del sistema tiene que poder ser inspeccionado y cambiado.


Smalltalk es un ambiente de objetos. Los objetos interactúan enviándose mensajes entre si.

Smalltalk incluye un lenguaje de programación y este fue desarrollado usando los principios que ya se enumeraron.  Esto quiere decir, por ejemplo, que el lenguaje Smalltalk puede ser cambiado - como cualquier otra parte - y reemplazado por otro; o que pueden convivir diferentes lenguajes de programación en el mismo ambientes, etc.

Un ambiente de Smalltalk típico también incluye muchas herramientas que asisten en la tarea de programación. Pero estas, como todo, también pueden ser modificadas o reemplazadas por otras.

A su vez, un ambiente de Smalltalk, incluye objetos para crear interfaces de usuarios gráficas.  Todo escrito en Smalltalk, todo a la vista y todo modificable.

Centrándonos en el punto de vista de meros programadores mortales, podemos decir que Smalltalk:

  • Incluye un lenguaje de programación.
  • Incluye una librería de clases
  • Incluye un entorno de desarrollo


Tanto el lenguaje, como la librería de clases y el entorno de desarrollo llevan más de 30 años de uso y depuración.  No en vano Smalltalk ha sido la referencia para el desarrollo de lenguajes y entornos de desarrollo.

Que es smalltalk?


Smalltalk es mucho más que un lenguaje de computación.

Smalltalk es uno de los productos de un proceso de investigación y desarrollo, liderado por Alan Kay, que ya lleva más de 30 años tratando de inventar la computadora personal.  Smalltalk, además de ser un lenguaje de computación muy poderoso y versátil, es una interpretación de como debieran utilizarse las computadoras:  Las computadoras deberían ser herramientas que sirvan para amplificar el espíritu creativo de las personas.

Smalltalk no es la culminación de esa visión, es sólo un paso. Si Smalltalk tiene un objetivo en si mismo, ese es el de servir de herramienta para crear el producto que vuelva obsoleto al mismo Smalltalk.

Lamentablemente las ideas detrás de Smalltalk no son las más extendidas en el mundo de la informática, y aunque muchas innovaciones del proyecto llegaron a nuestros días, estas llegaron despojadas de lo fundamental y sólo se copió la cascara de las ideas.

Eso hace que la primera experiencia con Smalltalk, para una persona acostumbrada a usar computadoras o incluso a programarlas, sea desconcertante por lo distinto que resulta.

De todas formas, el esfuerzo de entrar en un área desconocido tiene sus recompensas. Muchos somos los que sentimos que Smalltalk nos devolvió la fascinación que nos produjo usar una computadora por primera vez. No es raro ver como gente que comienza a programar, con Smalltalk, cambia su concepción de los porqués de las computadoras.  Prácticamente todos los programadores de Smalltalk que yo conozco utilizan el ambiente, no sólo para trabajar y producir software, sino que también lo utilizan como una herramienta de investigación. Es muy común encontrarse con proyectos muy “raros” e innovadores desarrollados con Smalltalk, porque justamente, Smalltalk sirve como amplificador del espíritu creativo que todos llevamos dentro.

jueves, 4 de agosto de 2016

Modern Java EE Design Patterns By O'Reilly, Gratis !!!

Me llego un super mail de infoQ, al parecer esta gente junto con los amigos de red hat regalan un libro y yo lo tengo que compartir con ustedes.

August 2016
 
Sent on behalf of Red Hat to InfoQ Industry Email Notices Subscribers
 
With the ascent of DevOps, microservices, containers, and cloud-based development platforms, the gap between state-of-the-art solutions and the technology that enterprises typically support has greatly increased. But as explained in this O’Reilly report, some enterprises are now looking to bridge that gap by building microservice-based architectures on top of Java EE. 

Download this report to explore best practices for automation, high availability, data separation, and performance while inspecting design patterns such as aggregator, proxy, pipeline, and shared resources to model service interactions.
Download Now

Try Django

Code scholl se viene con todo, ahora nos presenta un curso de django.

Bueno, les dejo un poco de publicidad:

Code School
 
Try Django
Get started with this Python-based web application framework and build your first Django app.
Start Level 1
What you will learn:
Level 1
 
Getting Started
Explore how a Django app works and get your first page up and running.
Level 2
 
Templates
Sift through templates, which will help you render HTML with dynamic data.
Level 3
 
Models
Discover models, the blueprints for your data, and trace them back to the database.
“What is Django?”
You may be wondering if Django is right for you. In her new blog post, “Why Django”, Course Instructor Sarah Holderness compares Django to another popular framework: Ruby on Rails.
 
Twitter IconFacebook IconYoutube IconGoogle+ Icon
 
FAQ

lunes, 1 de agosto de 2016

domingo, 31 de julio de 2016

ChakraCore funciona en Linux y Mac OS


ChakraCore funciona en Linux y Mac OS!!!

Microsoft ha demostrado ChakraCore que se ejecuta en Linux y Mac OS X, y Node.js / ChakraCore en Linux.

ChakraCore es el motor de javascript de Edge que desde hace tiempo es open source dado que Microsoft tiene la intención de portarlo a otras plataformas y ejecutar Node.js en él.

Microsoft demostró ChakraCore correr tanto en x64 Linux y Mac OS X 10.9+ y que todavía experimentales que se ejecuta en ChakraCore en x64 Linux junto con Node.js.

Dejo link: https://www.infoq.com/news/2016/07/chakracore-linux-mac
https://github.com/Microsoft/ChakraCore

miércoles, 27 de julio de 2016

Apache Spark 2.0.0 esta con nosotros!!


Se ha lanzado la versión 2.0.0 de Apache Spark con muchas mejoras, entre las que podemos nombrar:

  • Soporte a SQL 2003 
  • Mejora de performance
  • Soporte para uso de R
  • Streaming
  • Y más!!


Dejo link: http://spark.apache.org/releases/spark-release-2-0-0.html

lunes, 25 de julio de 2016

Elixir 1.3



Que tarde, que tarde!! Se me repaso, la nueva versión de Elixir, que trae cosas interesantes.

Como los seguidores más atentos del blog recordaran Elixir es un lenguaje funcional que corre sobre la maquina virtual de Erlang, y tiene como objetivo hacer más fácil el desarrollo en la tecnología de Erlang.

Elixir 1.3, fue anunciado por José Valim. La nueva versión depreca (se dice así?) tareas imperativas y añade nuevos tipos y métodos de acceso, mejora su herramienta de Mixing y mejora el framework de pruebas unitarias ExUnit.

Para mayor información dejo el release note: https://github.com/elixir-lang/elixir/releases/tag/v1.3.0

domingo, 24 de julio de 2016

Spring Statemachine Framework


Nunca les paso que deben diseñar una maquina de estados, pero utilizar un framework de bpm es muchisimo pero hacerlo a mano es un trabajo muy arduo.

Por eso spring diseño, Spring Statemachine Framework.

La idea es simple, es un framework que permite diseñar maquinas de estados de forma muy fácil. Como cualquier maquina de estados tenemos estados y eventos que permiten cambiar de estado:

 static enum States {
    STATE1, STATE2
}

static enum Events {
    EVENT1, EVENT2
}

Con esto tenemos los estados y los eventos, pero falta algo muy importante, definir los caminos o transiciones para esto utilizamos un objeto de configuración:

@Configuration
@EnableStateMachine
static class Config1 extends EnumStateMachineConfigurerAdapter<States, Events> {

    @Override
    public void configure(StateMachineStateConfigurer<States, Events> states)
            throws Exception {
        states
            .withStates()
                .initial(States.STATE1)
                .states(EnumSet.allOf(States.class));
    }

    @Override
    public void configure(StateMachineTransitionConfigurer<States, Events> transitions)
            throws Exception {
        transitions
            .withExternal()
                .source(States.STATE1).target(States.STATE2)
                .event(Events.EVENT1)
                .and()
            .withExternal()
                .source(States.STATE2).target(States.STATE1)
                .event(Events.EVENT2);
    }
}

Luego definimos el bean que va ser utilizado en esta maquina de estado:

@WithStateMachine
static class MyBean {

    @OnTransition(target = "STATE1")
    void toState1() {
    }

    @OnTransition(target = "STATE2")
    void toState2() {
    }
}

Finalmente podemos utilizar esta maquina:

static class MyApp {

    @Autowired
    StateMachine<States, Events> stateMachine;

    void doSignals() {
        stateMachine.start();
        stateMachine.sendEvent(Events.EVENT1);
        stateMachine.sendEvent(Events.EVENT2);
    }
}

Y listo!

Dejo link: http://projects.spring.io/spring-statemachine/

miércoles, 20 de julio de 2016

Try .net mvc

La gente de codescholl me invito a cursar su nuevo curso gratuito sobre .net mvc. Este curso pertenece a la colección "try" que son muy buenos para tener contacto por primera vez con una tecnología, les dejo el mail que me enviaron:



Code School
{alt}
Learn the basics of building web applications with ASP.NET MVC.
VIEW COURSE CONTENT
Twitter IconFacebook IconYoutube IconGoogle+ Icon
Have questions or need assistance?

FAQ
© 2016 Code School LLC. Crafted lovingly in Orlando, Florida.
Code School 618 E South Street Suite 620 Orlando, FL 32801 USA

domingo, 17 de julio de 2016

Que es una Sequence en Oracle?


En mysql tenemos los valores autoincrementales, que están muy buenos pero siendo realistas tenemos poco control de la secuencia que llena el valor autoincremental.

En oracle en cambio tenemos objetos secuencia que nos permiten tener más control de los valores autoincrementales. Ojo! la secuencia es un objeto independiente del campo que deba llenar. Es decir podemos tener una secuencia para todos nuestros campos autoincrementales o una secuencia para cada uno de ellos. Como ven, tenemos mucha más libertad.

Como creo una secuencia? Asì:


Aja... claro! Mejor veamos un ejemplo, no?


CREATE SEQUENCE customers_seq
 START WITH     1000
 INCREMENT BY   1
 NOCACHE
 NOCYCLE;

Con estas sentencias estamos creando una secuencia que comienza en 1000 y va de 1 en 1.

Ahora bien, como la usamos?

por ejemplo con el metodo nextval podemos acceder al proximo valor.

Select customers_seq.NEXTVAL from dual;

Por lo tanto podemos utilizarla en un insert:


INSERT INTO customers_tab (id, name)
    VALUES (customers_seq.NEXTVAL, 'Acme');

También podemos saber el valor actual con CURRVAL

INSERT INTO Line_items_tab (Orderno, Partno, Quantity)
    VALUES (Order_seq.CURRVAL, 29374, 1);

Ojo al piojo, se puede usar CURRVAL solo luego de ejecutar NEXTVAL, es decir si no ejecutaste NEXTVAL, CURRVAL va dar error.

Podemos alterar la secuencia, pero nunca reiniciarla. Para reiniciarla tenemos que eliminarla y crearla nuevamente.

ALTER SEQUENCE emp_sequence
    INCREMENT BY 10
    MAXVALUE 10000
    CYCLE
    CACHE 20;

Dejo link: https://docs.oracle.com/cd/B28359_01/server.111/b28310/views002.htm




sábado, 16 de julio de 2016

domingo, 10 de julio de 2016

Don Electron

Electron permite construir aplicaciones nativas de la misma forma que construimos una web. Utilizando tecnologías javascript, html y css con electrón podemos construir aplicaciones nativas.

Entre sus características podemos nombrar:

  • Tecnología web: Utiliza HTML, CSS, javascript y tecnologías node.js
  • Open Source: Es totalmente libre y esta alojado en github
  • Cross Platform: compatible con Linux, Windows y OsX


Dejo un video:


y un poco de música tipo rock and roll:


Dejo link: http://electron.atom.io/