Instalando SQL Server 2008 RTM + SP1

Hoy es tiempo de instalar SQL Server + SP1.

Después de no escribir por un tiempo jojo si que fue mucho, y por una petición antigua de un amigo escribo este post que espero que les sea de utilidad.

(Este post esta basado en la traducción de un post de Peter Saddow si quieres ver el post original haz click aqui)

Muchos se preguntarán porque hacer esto, seguro deben vender SQL Server 2008 con el SP1(Service Pack 1) eso yo pensaba; pero desafortunadamente no es asi. Asi que si quieres tener todo integrado debe realizar una instalación Slipstreamed.

OK y qué cosa es eso?? Con qué se come o en qué consiste??? Consiste en generar un source media para la instalación uniendo en este caso la RTM de SQL Server 2008 con el SP1 del mismo.

Y cómo se hace eso?? Primero como buena receta de cocina aqui van los ingredientes.

  • 1 Microsoft SQL Server 2008 RTM (En mi caso tengo la versión en inglés).
  • Service Pack 1 de Microsoft SQL Server 2008 para las tres arquitecturas (x86, x64 e IA64).

El SQL Server 2008 copialo al directorio C:\SQLServer2008_FullSP1.

Los service pack los puedes bajar de http://www.microsoft.com/downloads/details.aspx?FamilyID=66ab3dbb-bf3e-4f46-9559-ccc6a4f9dc19 y como resultado tendrás 3 paquetes mas o menos con los siguientes nombres:

  • SQLServer2008SP1-KB968369-IA64-ENU.exe
  • SQLServer2008SP1-KB968369-x64-ENU.exe
  • SQLServer2008SP1-KB968369-x86-ENU.exe

Luego extraes los paquete como se muestra a continuación:

  • SQLServer2008SP1-KB968369-IA64-ENU.exe /x:C:\SQLServer2008_FullSP1\PCU
  • SQLServer2008SP1-KB968369-x64-ENU.exe /x:C:\SQLServer2008_FullSP1\PCU
  • SQLServer2008SP1-KB968369-x86-ENU.exe /x:C:\SQLServer2008_FullSP1\PCU

Hazlo con los tres paquetes y asi te puedes asegurar que el source media te puede servir para las tres arquitecturas.

Ahora copia los archivos Setup.exe y Setup.rll del directorio PCU a el directorio donde esta el SQL Server original.

  • robocopy C:\SQLServer2008_FullSP1\PCU C:\SQLServer2008_FullSP1 Setup.exe
  • robocopy C:\SQLServer2008_FullSP1\PCU C:\SQLServer2008_FullSP1 Setup.rll

Copia todos los archivos y no las carpetas excepto el archivo Microsoft.SQL.Chainer.PackageData.dll, en C:\SQLServer2008_FullSP1\PCU\<arquitectura> a C:\SQLServer2008_FullSP1\<arquitectura> para actualizar los archivos originales.

  • robocopy C:\SQLServer2008_FullSP1\PCU\x86 C:\SQLServer2008_FullSP1\x86 /XF Microsoft.SQL.Chainer.PackageData.dll
  • robocopy C:\SQLServer2008_FullSP1\PCU\x64 C:\SQLServer2008_FullSP1\x64 /XF Microsoft.SQL.Chainer.PackageData.dll
  • robocopy C:\SQLServer2008_FullSP1\PCU\ia64 C:\SQLServer2008_FullSP1\ia64 /XF Microsoft.SQL.Chainer.PackageData.dll

Busca el archivo defaultsetup.ini en las siguientes rutas y si no se encuentra crealo.

  • C:\SQLServer2008_FullSP1\x86
  • C:\SQLServer2008_FullSP1\x64
  • C:\SQLServer2008_FullSP1\ia64

Si encuentras el archivo modifica la línea PCUSource como se muestra abajo.

PCUSOURCE="{Full path}\PCU"

Donde Full path lo reemplazarás por la ruta original de donde copiaste el SQL Server, en caso que lo quieras compartir por red, debes poner el nombre del servidor con la localización del recurso de red o por ejemplo \\MiServer\SQLServer2008_FullSP1

En caso que no tengas el archivo y lo hayas creado debes poner el siguiente contenido:

;SQLSERVER2008 Configuration File
[SQLSERVER2008]
PCUSOURCE="{full path}\PCU"

Finalmente ejecuta el archivo Setup y listo. He alli una instalación de Server 2008 con SP1.

Espero les haya servido y cualquier duda me la pueden hacer llegar. Saludos y Happy Installing!!!

Extreme UX – It’s awesome

Hoy es tiempo de … un poco de UX.

Después de un largo tiempo sin escribir, por lo cual me disculpo si sigues este blog. Vuelvo a las andadas; pero sólo por lo impresionante de este video es que dejo de lado un poco el código habitual que suelo publicar.

Bueno este video lo vi al revisar el blog del MVP Juan Pablo Schmiede. El video corresponde al Xbox – Project Natal, muestran características como:

  • No tiene controles!!!!!!
  • El control es tu cuerpo entero, capurando todo el movimiento del mismo.
  • Puedes personalizar tu equipo dentro del juego.
  • Posee reconocimiento facial y de voz.
  • Tiene conexión con Internet puedes compartir elementos con otra persona como se ve en el video o simplemente juegar.
  • Puedes utilizarlo también para otras actividades de entretenimiento como reproducir películas o música.

En resumen, es una gran mejora en la experiencia de usuario. Seria muy interesante desarrollar aplicaciones con esa base … jeje. Pero en fin veremos como sigue el proyecto y haber si alguien se anima ha armar una aplicación.

Si no me crees mira el video.

Espero se entretengan. Saludos y Happy Coding!!!

3 Layers Applications with Java & MySQL

Hoy es tiempo de … 3 Layers Applications with Java & MySQL.

Bueno a petición de un amigo, habia creado estas guía en el formato pdf. En este post les comparto estas guías. El objetivo de las mismas es darles una perspectiva de como se arma una aplicación en tres capas utilizando Java y MySQL. Tenga en cuenta que esta no es la única forma, como dice el dicho existen muchos caminos para llegar a Roma; pero al menos se puede formar una idea.

La aplicación trata de un mantenimiento medio aburridito sobre una tabla cliente. Se trabaja como IDE Eclipse SDK 3.4, motor de base de datos MySQL 5.1 con su conector de Java. Se utiliza Java Swing, ODBC y Stored Procedure.

Espero sea de su agrado .. Saludos y Happy Coding!!!

WPF – Controls Part 2

Hola a todos, hoy es tiempo de …Controles WPF.

De nuevo vuelvo a escribir al tiempo, esto es porque de nuevo tuve algunos problemas con mi research. Bueno, continuando con la serie de post sobre controles de WPF hoy veremos 3 controles: Expander, ListBox y ComboBox.

Expander

En lo personal me agrada mucho este control puesto que nos brinda una experiencia bastante interesante y atractiva, oculta y muestra controles o información sin tener que hacer grandes roturas de cabezas para crearlo.

A continuación un fragmento de un expander.

   1: <Expander Header="This is a Expander" 
   2:     Name="ExpanderFirst" Padding="3" Margin="15,22,0,96" 
   3:     HorizontalAlignment="Left" Width="129" 
   4:     Collapsed="Expander_Collapsed" Expanded="ExpanderFirst_Expanded">
   5: </Expander>

En el código anterior podemos ver que posee propiedades comunes que ya comentamos en el anterior post. Una propiedad caracteristica de este control es “Header”, la cual contiene la información que se mostrará en la cabecera del control. Collapsed y Expanded hacen referencia a los eventos que manejará este control.

El resultado del anterior código es el siguiente.

expander



ListBox

Otro sobreviviente de los windows form. Según creo yo este control esta muy bueno y esta en su version mejorada y aumentada.

He acontinuación otro fragmento de código de este control.

   1: <ListBox Height="68" Name="listBox1" Width="120" 
   2:     Background="Silver" SelectionChanged="listBox1_SelectionChanged">
   3:     <ListBoxItem>Item1</ListBoxItem>
   4:     <ListBoxItem Background="Silver" BorderBrush="AliceBlue" Foreground="Azure">Item 1.5</ListBoxItem>
   5:     <ListBoxItem Foreground="Blue">Item2</ListBoxItem>
   6: </ListBox>

Bueno que se puede comentar aca … sigue con las propiedades comunes de los controles anteriores.

El resultado es mas o menos el siguiente.

listbox



ComboBox

Si he tenido un control que ha sido mi amigo fiel en los windows form, este sería uno de ellos. Otro sobreviviente también mejorado para WPF.

Seguidamente un pedazo de código correspondiente a este control.

   1: <ComboBox Name="comboBox1" Height="23" VerticalAlignment="Top" />

Si se preguntarán … qué frustrante es una línea? y qué hace esa línea? Bueno básicamente esa línea sólo muestra el combo vacío. Pero la aplicación que escribí rellena el combo en base a al ítem seleccionado de un ListBox.

El resultado de todo eso sería algo asi.

comboboxbefore

Antes


comboboxlater Después


Bueno el resultado de todo esto se puede aplicar de la siguiente manera.

wpfcontrol2

Espero les sea útil como referencia. Saludos y Happy Coding!!

Encapsulamiento en Java & C#

El día de hoy es tiempo de Encapsulamiento.

Bueno el encapsulamiento para los que no saben es un concepto de la OOP, el cual permite ocultar los campos mediante estructuras de datos, métodos u operaciones, haciendo asi que el usuario no tenga que preocuparse mucho en la implementación interna del mismo y en el caso de los campos permitiendo que sus valores no se alteren tan ”facilmente” aunque esta última parte es un poco susceptible dependiendo de como implementes tu software, sistema o lo que quieras desarrollar.

A mi me sirve mucho cuando trabajo con acceso a datos porque me permite organizar mejor mis clases de negocios para después persistirlas; pero bueno baste de palabrería, a continuación les dejaré la sintaxis de las formas que conozco en las que pueden encapsular campos utilizando Java y C#.

Para Java:

   1: // Para asignar un valor a un campo.
   2: public void set[Campo]([Tipo_Dato) value){
   3:     [Campo] = value;
   4: }
   5:  
   6: // Para retornar un valor de un campo.
   7: public [Tipo_Dato] get[Campo](){
   8:     return [Campo];
   9: }

Es decir si tuviesemos un campo Name de tipo String el código mas o menos sería el siguiente:

   1: public void setName(String value){
   2:     Name = value;
   3: }
   4:  
   5: public String getName(){
   6:     return Name;
   7: }

Para C#

   1: // Forma 1. Con metodos
   2: // Para asignar a un valor a un campo.
   3: public void [NombreMetodo]([Tipo_Dato] value)
   4: {
   5:     [Campo] = value;
   6: }
   7:  
   8: // Para retornar el valor de un campo.
   9: public [Tipo_Dato] [NombreMetodo]()
  10: {
  11:     return [Campo];
  12: }
   1: // Forma 2. Con propiedades
   2:  
   3: public [Tipo_Dato] [Nombre_Propiedad]
   4: {
   5:     get
   6:     {
   7:         return [Campo];
   8:     }
   9:  
  10:     set
  11:     {
  12:         [Campo] = value;
  13:     }
  14: }

Imaginando de nuevo que tenemos un campo Name de tipo string (noten que en .NET el tipo de dato es string, en Java es String …. les debo un post de comparación de tipo de datos) el encapsulamiento podría ser el siguiente:

   1: public void assignName(string value)
   2: {
   3:     Name = value;
   4: }
   5:  
   6: public string returnName()
   7: {
   8:     return Name;
   9: }

   1: public string name
   2: {
   3:     get
   4:     {
   5:         return Name;
   6:     }
   7:  
   8:     set
   9:     {
  10:         Name = value;
  11:     }
  12: }

Espero que les sirva este pequeño concepto ya que a mi me sirve mucho en la implementación de muchos programas. Saludos y hasta la próxima.

Happy Coding!

WPF – Controls Part 1

El día de hoy es tiempo de … Controles WPF.

Si como se podrán imaginar no voy a hablar sobre todos los controles, ni sobre todas las propiedades o características que estos poseen ya que tendría que publicar un libro y este es un blog; pero trataré de referirme ha algunos …. Let´s go.

Nota: Estoy publicando el código XAML sólo por motivos demostrativos ya que en verdad si desean insertar estos controles basta con el designer de Visual Studio o con Expresion para insertar y modificar propiedades de los mismo.

Label

Si como lo escuchan o perdón como lo leen, el control label sobrevivió a la generación del .NET 3.0. Posee todas las caracteristicas básicas de los nuevos controles de WPF. He aquí un ejemplo.

   1: <Label Name="label1" Margin="18,51,0,0" Height="30" 
   2:     HorizontalAlignment="Left" VerticalAlignment="Top" Width="98.103">
   3:     This is a Label.
   4: </Label>
Como se puede observar posee un nombre expresado en la propiedad Name, la propiedad Margin permite posicionar el control dentro de una grilla y posee el siguiente formato: (left, top, right, bottom) traduciendo esto (izquierda, arriba, derecha, abajo). HorizantalAlignment indica el alineamiento horizontal, en este caso hacia la izquierda. VerticalAlignment expresa el alineamiento vertical, en este caso arriba. Las propiedades Height y Width indican el alto y el ancho del control. El texto encontrado entre los tags Label marcan lo que se va mostrar en el control. Como resultado tendremos algo así.

Label Sample

TextBlock

Según Josh Smith, en lo personal es un experto en WPF, el TextBlock no es un control. Si coexiste en el namespace System.Windows.Controls pero deriva de la clase FrameworkElement. Esta y otras razones quedan claramente expuestas en uno de sus artículos. En el artículo se muestran las diferencias esta muy bueno.

Bueno aparte de todo lo anterior he aquí un ejemplo.
   1: <TextBlock Height="15.96" HorizontalAlignment="Left" 
   2:  Margin="18,17,0,0" VerticalAlignment="Top" Width="98.103">
   3:  This is a TextBlock.
   4: </TextBlock>

En este caso tiene las mismas propiedades que el control Label, y como resultado tendremos lo siguiente.

TextBlock


TextBox

Este control es un viejo amigo sobreviviente, me da mucha alegría presentarlo y que siga en el Framework, solo que ahora con características de WPF. Es decir mejorado y aumentado.

Un ejemplo chico de código XAML.

   1: <TextBox Height="21.96" Margin="144,14,0,0" 
   2:  VerticalAlignment="Top" HorizontalAlignment="Left" 
   3:  Width="148" Background="Silver" BorderBrush="DarkGray" 
   4:  GotFocus="TextBox_GotFocus" Name="TextBox1" LostFocus="TextBox1_LostFocus">
   5:   This is a TextBox.
   6: </TextBox>

Aparte de las propiedades habituales que ya vimos se encuentra el fondo o Background, el color del Borde o BorderBrush. Además se encuentras las referencias a los eventos los cuales serán codificados en el code behind file.

Después de esto tendremos como resultado … lo siguiente.

TextBoxControl

Bueno creo que por hoy es suficiente. Si además me estoy cayendo de sueño asi que nos vemos y Happy Coding!!

Para adelantar la aplicación final de controles será la siguiente ventana mas o menos.

Window

Java – Just Beginners and me ;)

El día de hoy es tiempo de … Java Just for Beginners and Me.

Ayer estuve hablando con un amigo y me pidió que lanzara una serie de posts sobre Java así que con el transcurrir del tiempo voy a escribir sobre el actual lenguaje y WPF. Pero volvamos a un principio.

Asumiré que instalaron el JDK y que tienen un IDE o un simple editor de texto. Después de crear un archivo para java (Los archivos que contienen source code de Java poseen la extensión .java, es decir si queremos una clase Alumno el nombre de archivo será Alumno.java). Pasaremos a lo nuestro ..... código!!! He aquí un ejemplo que voy a explicar.

   1: package javaapplication1;
   2:  
   3: /**
   4:  *
   5:  * @author Roberto Honores
   6:  */
   7: public class Main {
   8:  
   9:     /**
  10:      * @param args the command line arguments
  11:      */
  12:     public static void main(String[] args) {
  13:         System.out.println("Person to Show:");
  14:         if(args.length == 0){
  15:             Person oPerson = new Person("Roberto", "Honores");
  16:             Print(oPerson);
  17:         }
  18:         else if(args.length == 1){
  19:             Person oPerson = new Person(args[0],"");
  20:             Print(oPerson);
  21:         }
  22:         else{
  23:             Person oPerson = new Person(args[0],args[1]);
  24:             Print(oPerson);
  25:         }
  26:     }
  27:  
  28:     public static void Print(Person sender){
  29:         System.out.println(sender.ToString());
  30:     }
  31: }

Al igual que en todos los lenguajes derivados de C. Al final de cada línea se termina con el caracter “;”.

En la primera línea se ve la palabra package, la cual refleja que este archivo pertenece a un paquete. Un paquete es una forma de organizar las clases en un namespace.

La palabra public indica la visibilidad del elemento que sigue en este caso la clase Main.

Ahora, para que cada clase pueda ejecutarse se necesita del método main. Por convención los parametros de inicio de este método son “String[] args”. Esto indica que se esta pasando un arreglo de parámetros. Eso sucede en usualmente en aplicaciones UNIX en donde se pasan parámetros para invocar un programa.

Luego vemos la instrucción System.out.println en las líneas 13 y 29. Esta instrucción es un método para imprimir en consola el contenido de todo lo que se encuentra entre paréntesis.

Bueno sin otra cosa que explicar por ahora me despido, nada más recordarles cualquier duda o sugerencia la pueden comentar.

Happy Coding!!!

WPF – A Simple Window

El día de hoy es tiempo de ... Windows Presentation Foundation o como es más conocido WPF.

Bueno después de mucho tiempo empiezo a retomar mis actividades, leer, escribir otra cosa diferente y ver otro horizontes de desarrollo entre otras cosas.... hasta que desde el día anterior a este decidí aprender un poco de WPF para poder mejorar mis conocimientos en User Experience (Si tengo que admitirlo hasta el momento antes de escribir mi última tool mi conocimiento en UX era casi nulo).

Es por eso que a continuación les compartiré algunas cosas que aprendí con la poco experiencia que acabo de adquirir.

Primero el código que se utiliza es XAML, el cual es para mi opinión XML con otras cosas que felizmente el IntelliSense ayuda y mucho si utilizan el ReSharper :-)

   1: <Window x:Class="Practice5.Window1"
   2:     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   3:     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   4:     xmlns:s="clr-namespace:Practice5"
   5:     WindowStartupLocation="CenterScreen"
   6:     Title="Practice 5" Height="550" Width="750" Background="Black">
   7:  
   8:     <Grid>
   9:     </Grid>
  10: </Window>
Los tags Window como indica su nombre hacen referencia a una ventana. En la línea 1, podemos observar que existe un attributo x:Class, este atributo permite hacer referencia a la clase que pertenece esta ventana.

Luego en las líneas 2, 3 y 4 aparece el atributo xmlns, el cual hace referencia a namespaces, vale recalcar que el namespace de la línea 4 hace referencia al proyecto.

El atributo WindowStartupLocation establece cual va hacer la posición inicial de la ventana con respecto a la pantalla, en mi caso esta centrada.

Después están atributos a los que estamos acostumbrados como el título de la ventana, la altura y el ancho y para finalizar el fondo.

El resultado final será el siguiente.

Window Result

Bueno no es algo super espectacular; pero en los siguientes post mostraré más controles y otras cosas interesantes.

Bueno nos vemos … See ya 01010101.