lunes, 19 de enero de 2015

RaphaelJS

Algunos comentarios sobre Raphael JS


Publiqué esto en otro Blog, pero vale la pena dejarlo por aquí......


En algunos proyectos previos he tenido que trabajar con algunas librerías Javascript que permiten explotar el mítico SVG de HTML5..


Data Driven Documents o simplemente d3js

http://d3js.org/

Es una excelente opción, de propósito general, y esa es su gran fortaleza, pues se puede hacer de todo, además hace un perfecto "bind" entre datos y objetos en pantalla. Es definitivamente mi favorito y perfecto para crear charts desde cero, aunque hay mucha base por ahí en github, por eso nunca empieza uno desde cero realmente.

Funciona en todos los navegadores decentes, eso excluye versiones antiguas de Internet Explorer, es decir anteriores a la 9 no funciona,

D3js genera y envía SVG directamente al navegador y realmente IE8 para abajo no entiende SVG,

Aunque hay algunos workarounds para ello no creo que valga la pena hacerlo.

He leido comentarios de que D3js es difícil de aprender, en primera instancia,  pues si, puede ser necesario leer un poco mas si solo vienes de Javascript.

D3js viene lleno de algoritmos ya listos para usar, uno de los mas impresionantes es el Force Layout, basta ver los ejemplos para querer aprender a usarlo de inmediato.

Son fan de d3js y por eso aparece en este artículo dedicado a Raphael JS



Raphael JS

http://raphaeljs.com/

Algo que por un tiempo consideré una curiosidad nada mas, tal vez porque el nombre no es muy atractivo, jaja.
Además no había tenido la necesidad de hacer un UI en Web donde el usuario pudiera crear ciertos objetos gráficos, hacer "drag and drop" con ellos, ver propiedades de cada uno....un UI estilo graficación vectorial, pues.
Pues con Raphael JS fue muy rápido, tiene todas las herramientas para hacerlo.

Raphael JS genera y envía SVG o VML al navegador, esto provoca que también funcione en Internet Explorer 6, 7 y 8....mmmm....si funciona, lo probé, de verdad...si funciona...increíble pero cierto.

Si bien puse d3js antes que Raphael JS, este artículo es mas que nada acerca de Raphael, pero d3js es un excelente punto de referencia.

No creo que sirvan para lo mismo pues Raphael te ayuda más a "dibujar" elementos mientras que d3js te ayuda más a ligar datos con los elementos.

Al final lo que quiero expresar aquí es lo grandioso que Raphael JS es, y en mi caso específico en poco tiempo se pudo lograr el objetivo gracias a esta libreria.

Aquí un pequeño ejemplo


 
// creamos el "paper" o canvas principal, en donde el parámetro "canvas" es un simple
// 
dentro del código html
var paper = new Raphael("canvas", 800, 600); var circle = paper.circle(120, 120, 50).attr({ fill: "#e0e0e0", stroke: "#000", opacity: 1 }), // mas adelante puedes cambiar las propiedades de "circle" // por ejemplo, cambiar el radio circle.attr({r: 80 }); // o cambiarlo pero con una animacion fancy circle.animate({r:80},500,"elastic");



Conociendo un poco de Javascript y de se pueden hacer cosas impresionantes. Puedes ver los ejemplos en el link de Raphael JS para darte una idea.



Dificultad: Intermedio

Debes conocer: Javascript, HTML, SVG

Similares:  d3js, paper.js, processing.js

Calificación general: 8 de 10

Lo usaría de nuevo: Definitivamente si



Excelente libreria Javascript


Dificultad: Intermedio

Debes conocer: Javascript, HTML, SVG

Similares:  d3js, paper.js, processing.js

Calificación general: 8 de 10

Lo usaría de nuevo: Definitivamente si


lunes, 11 de febrero de 2013

Pense que ya se había cerrado, pero no....existe!!

Pues ahora es puro Azure......

Windows Azure
SQL Server Azure

Bueno, esta interesante el tema y Microsoft hizo algo bastante interesante cuando creó Azure....

jueves, 28 de enero de 2010

Hace tiempo...

Por falta de tiempo no he podido compartir mas cosas interesantes (al menos para mi) que me he ido encontrando...aquel hipotético lector autodidacta me comprenderà la emociòn de descubrir y aplicar algo nuevo...

Ultimamente muy inmerso en mi papel obligado de DBA....con SQL Server 2008, y con la pena de encontrarme algun feature que solamente existe en la version Enterprise y ohhhh, no tenemos esa...ni modo.

Mucho de jQuery, mucho de ASP.NET y C#....LinQ.

Pronto decidiré un tema y lo publicare solo por puro gusto.

miércoles, 9 de septiembre de 2009

Deserializar imagen de Base64 y desplegarla

Recientemente publiqué una sencilla entrada en donde explicaba cómo guardar imágenes en un campo BLOB/VARBINARY(MAX) y luego cómo leer la imagen.
Aquí :
Guardar Imagen en BLOB/VARBINARY(MAX)

Resulta que la idea principal de esto era leer dicha imagen del campo VARBINARY(MAX), serializarlo a Base64 y exponerlo en un método de un Web Service. Hasta ahí llegaba la funcionalidad de lo que estabamos haciendo. Sin embargo la parte que iba consumir el Web Service nos preguntó cómo hacerle para deserializar dicho string y mostrar la imagen en pantalla sin pasar por guardar los bytes en un archivo y abrirlo con un Image.

Parece bastante obvio y seguramente para muchos lo será pero no está demás exponer lo siguiente:

C#

1:        // Convertimos el string codificado en base64 a bytes  
2:        byte[] bytFoto = Convert.FromBase64String(strFoto);         
3:    
4:        // Y creamos un stream en memoria que accedera los bytes  
5:        MemoryStream msFoto = new MemoryStream(bytFoto, 0, bytFoto.Length);  
6:    
7:        // De esta manera podemos crear una imagen a partir de los bytes  
8:        Image imgFoto = Image.FromStream(msFoto);  
9:    
10:        // Y desplegarla en la pantalla en hipotético picturebox   
11:        pictureBox1.Image = imgFoto;  
12:    
13:        // o grabarla en disco con:  
14:        //imgFoto.Save("C:\temp\foto_ws.jpg", ImageFormat.Jpeg);  
15:    
16:        msFoto.Close();  
17:    


Sencillo tal vez, pero se me hizo interesante hacerlo y quise exponerlo aquí.

martes, 8 de septiembre de 2009

Guardar Imágen/BLOB en SQL Server

Recientemente tuve la necesidad de insertar imágenes en un campo VARBINARY(MAX) de SQL Server 2008.

No me interesaba tanto la funcionalidad de realizar la insercción desde mi pequeño proyectito de C#, me quería enfocar a leer dicho dato para luego serializarlo y exponerlo en un Web Service.

Esto fue lo que me encontré por ahi:

T-SQL
1:  CREATE TABLE MiTabla   
2:    (id int, image varbinary(max))  
3:  INSERT INTO MiTabla  
4:    SELECT   1 as id  
5:      ,(SELECT * FROM OPENROWSET(  
6:        BULK 'C:\popita.jpg', SINGLE_BLOB) as image )  

Recordar, estamos guardando la imagen como bytes no un objeto Image ó Bitmap.

Para leer este desde C# es bastante sencillo:
(Ustedes hagan todo su rollo de la conección a la base de datos...pondré solo lo sustancial...)

C#
1:  SqlDataReader rdrGetData=(new SqlCommand("SELECT * FROM MiTabla WHERE id=1",miSQLConn)).ExecuteReader();  
2:  if(rdrGetData.HasRows)  
3:  {  
4:    rdrGetData.Read();  
5:    if (!rdrGetData.IsDBNull(1))  
6:    {  
7:      SqlBytes bytes = rdrGetData.GetSqlBytes(1);  
8:      FileStream fs = new FileStream("g:\\popis.jpg", FileMode.OpenOrCreate, FileAccess.Write);  
9:      byte[] byteImage = new byte[bytes.Length];  
10:     int readedBytes=bytes.Stream.Read(byteImage, 0, Convert.ToInt32(bytes.Length));  
11:     fs.Write(byteImage, 0, byteImage.Length);                 
12:     fs.Close();                        
13:  }  

No olviden cerrar el DataReader

lunes, 7 de septiembre de 2009

IT Cartoons

Me encontré por ahi estos "cartoons" que me causaron mucha gracia.
Los comparto para sacarles al menos una sonrisa:

Uno de apuntadores:





Uno de programadores:



 
Este está genial:
 
 
 
Este me recuerda a alguien:
 
 

 
Me los encontré en StackOverflow excelente sitio....pasen por ahi de vez en cuando....

lunes, 18 de junio de 2007

Continuamos...

Si, este es mi primer post en mi pequeño blog de cosas que voy aprendiendo.

Probablemente ya mucha gente conozca lo que aquí publicaré sin embargo lo hago solo por gusto, no para impresionar a nadie.

Y de que hablaré....bueno, basicamente de cosas que estoy desarrollando en conjunto con mi equipo de trabajo o de manera personal.

Basicamente hablaremos de ASP.NET, C#.NET, C, C++, SQL Server, Java, WebLogic, IIS, Windows, Linux, algunas herramientas de desarrollo y muchas otras cosas con las que trabajamos día con día.