¿Es legal usar SQL server express en entornos de producción?


mucha gente tiende a pensar que la versión xpress es sólo para desarrollo pero en realidad puedes usarla en cualquier entorno siempre y cuanto no tengas problemas de tamaño, con SQL server xpress 2012 estás limitado a:
  • 1 Cpu (cuatro cores)
  • 1 GB de memoria ram
  • 10 GB de espacio por cada base de datos
No importa si tu servidor tiene más recursos, simplemente SQL server sólo usará esos como máximo.
Así mismo tampoco hay ningún problema en usar integration services o reporting services con la versión express (unicamente en  que ese caso necesitamos la versión express with advanced services)
Eso si, hay que tener en cuenta que  con la versión xpress tenemos las herramientas para ejecutar reportes y paquetes ssis de integration pero no las herramientas para crearlos ni para automatizarlos

Es decir: si, es completamente legal usar SQL server versión  express en entornos de producción
Para más información sobre licencias podéis consultar en:
Y para descargar la versión express podéis descargarla aquí:

Saludos!

Visto | Devjoker

Enumerados en Java




Una de las características que personalmente me agradan más en Java que en C# son los enumerados, los enumerados son una lista de ítems que son establecidos en algún momento en el código y después de haberse declarado son constantes.

Supongamos que tenemos una pizzería donde tenemos diferentes especialidades y tamaños, para ejemplificar nos enfocaremos en el tamaño de la pizza, se ofrecen 3 tamaños de pizza en la pizzería que son: personal, mediana, grande. Ahora crearemos la clase encargada de esta tarea.

package EnumTest;

public class PizzaEnum
{
 private String size;
 
 public PizzaEnum(String size)
 {
  this.size = size;
 }
 
 public String getSize()
 {
  return this.size;
 }
}

Y la clase encargada de ordenar una pizza

package EnumTest;

public class OrderPizza
{
 public static void main(String[] args)
 {
  PizzaEnum pizza = new PizzaEnum("Large");
  System.out.println("The pizza size is " + pizza.getSize());
 }
}


Este código funciona para nuestros propósitos, alguien ordena una pizza Grande, así que se crea el objeto pizza con el parámetro "Large" y obtenemos la pizza del tamaño que se ordeno. Sin embargo el código es propenso a errores debido a que nunca es validado el parámetro de entrada, con lo que se podría pedir una pizza de tamaño miniatura sin que esta existiera en nuestro menú.

En este caso podemos recurrir a los enumerados, establecer un número determinado de ítems (tamaños) y solo permitir la utilización de esos ítems en la creación de los objetos (pizzas). Cambiaremos la clase PizzaEnum para funcionar con un enumerado.

package EnumTest;

public class PizzaEnum
{
 private PizzaSize size;
 
 public PizzaEnum(PizzaSize size)
 {
  this.size = size;
 }
 
 public PizzaSize getSize()
 {
  return this.size;
 }
}

enum PizzaSize
{
 Personal,
 Medium,
 Large
}

Ahora al momento de ordenar una pizza, solo podemos utilizar los 3 tamaños de pizza declarados en nuestro enumerado, así evitaremos que se intente ordenar algún otro que no exista en el menú.

Hemos resuelto de forma elegante el problema, pero ahora tenemos otra dificultad se ordenan las pizzas de tamaños existentes pero cuando se cortan nunca se hacen con el mismo número de rebanadas, probablemente podríamos resolverlo con otro enumerado y una serie de validaciones extras para vincular el tamaño de la pizza con el número de rebanadas en que se corta, pero Java permite hacerlo de una forma más interesante.

Pensemos en el enumerado como si fuera una clase, entonces tenemos un constructor, atributos y métodos, pues es de esta manera como lo maneja Java, esto nos permite resolver el problema de una forma sencilla, en el constructor pasaremos como parámetro el número de rebanadas y expondremos este atributo para obtenerlo cuando sea necesario.

package EnumTest;

public class PizzaEnum
{
 private PizzaSize size;
 
 public PizzaEnum(PizzaSize size)
 {
  this.size = size;
 }
 
 public PizzaSize getSize()
 {
  return this.size;
 }
}

enum PizzaSize
{
 Personal(4), Medium(8), Large(16);
 
 PizzaSize(int slices)
 {
  this.slices = slices;
 }
 
 private int slices;
 public int getSlices()
 {
  return this.slices;
 }
}

El enumerado ha cambiado ahora además de los tres tamaños de pizza declarados anteriormente, hemos agregado dos paréntesis y un numero, un constructor con un parámetro de entrada, una variable "slices" de tipo entero y un método "getSlices". Ahora ordenemos una pizza mediana.

package EnumTest;

public class OrderPizza
{
 public static void main(String[] args)
 {
  PizzaEnum pizza = new PizzaEnum(PizzaSize.Medium);
  System.out.println("The pizza size is " + pizza.getSize());
  System.out.println("The number of slices cut is " + pizza.getSize().getSlices());
 }
} 

Como es que funciona, bueno primero que nada creamos una Pizza de tamaño mediano, es decir creamos un PizzaEnum con el parámetro de entrada PizzaSize.Medium, lo que sucede internamente al hacer esto es que se ejecuta el constructor del enumerado con el parámetro de entrada de PizzaSize.Medium es decir "8", y este asigna el valor pasado a la variable slices, ahora cuando se obtenga el numero de rebanadas siempre será el mismo para cada tamaño de pizza.




Ahora solo falta seguir jugando con los enumerados, por ejemplo intenta agregar siempre el mismo número de sobres de cátsup por cada pizza ordenada.

Happy Coding :D

Instalar cinnamon en OpenSUSE 12.2


Cinnamon el shell de Gnome 3 desarrollado por Linux Mint que ofrece una experiencia de usuario tradicional similar a Gnome 2 con panel inferior, menú principal, indicador de espacio de trabajo etc..cada vez

Tips SQLeros: KeyCodes en JavaScript


Aquí muestro una tabla con los códigos que tienen cada tecla del teclado cuando la pulsamos. Esto nos sirve cuando queremos programar una función en nuestra página que responde a una determinada tecla para realizar una determinada acción:
Los los KeyCodes de los eventos de Windows.
Keyboard
key Pressed
IE JavaScript
Key Code value
Firefox JavaScript
Key Code value
backspace88
tab99
enter1313
shift1616
ctrl1717
alt1818
pause/break1919
caps lock2020
escape2727
page up3333
Space3232
page down3434
end3535
home3636
arrow left3737
arrow up3838
arrow right3939
arrow down4040
print screen4444
insert4545
delete4646
04848
14949
25050
35151
45252
55353
65454
75555
85656
95757
a6565
b6666
c6767
d6868
e6969
f7070
g7171
h7272
i7373
j7474
k7575
l7676
m7777
n7878
o7979
p8080
q8181
r8282
s8383
t8484
u8585
v8686
w8787
x8888
y8989
z9090
left window key9191
right window key9292
select key9393
numpad 09696
numpad 19797
numpad 29898
numpad 39999
numpad 4100100
numpad 5101101
numpad 6102102
numpad 7103103
numpad 8104104
numpad 9105105
multiply106106
add107107
subtract109109
decimal point110110
divide111111
f1112112
f2113113
f3114114
f4115115
f5116116
f6117117
f7118118
f8119119
f9120120
f10121121
f11122122
f12123123
num lock144144
scroll lock145145
My Computer (multimedia keyboard)182182
My Calculator (multimedia keyboard)183183
semi-colon186186
equal sign187107
comma188188
dash189189
period190190
forward slash191191
open bracket219219
back slash220220
close bracket221221
single quote222222

Espero les sirva!