¿Cómo encontrar tu pasión?

Hoy quiero comentarles acerca de cómo encontrar tu pasión, yo estoy en el punto más crítico de mi existencia donde ya sé que quiero pero no sé cual es mi pasión. Miren esto:
Debemos hacer lo siguiente:
  1. Escribe una lista de lo que tu creas ¿en qué eres bueno?, qué haces sin dificultad y es normal para ti.
  2. ¿Qué es lo que quisiste ser en secreto?, ¿Cuál era tu deseo?, a pesar de que ya no haya tiempo puedes empezar con cosas pequeñas.
  3. ¿Qué haces en tus tiempos libres? ¿Cuáles son aficiones y las haces cuando puedes? Es decir, cuando no tienes obligaciones ni responsabilidades.
  4. ¿Qué solías hacer y ya no haces? Puede ser por falta de tiempo o porque tu economía ahora no te lo permite, puedes retomar alguna buena práctica que te permita hacerlo.
  5. ¿En qué área o departamento has disfrutado trabajando o te gustaba más?
  6. ¿Qué te gusta hacer más, te entretiene más o en dónde el tiempo pasa más rápido?
  7. ¿Qué lees? ¿Hay temas que se repiten? Pueda que sepas algo que complemente o necesite algún nicho de mercado especializado.
Hay que escoger un camino que te permita ser más humano y vivo en la tierra. Uno que te permita hacer comunidad con corazón.

  1. La pasión es el primer paso para la realización personal
  2. La pasión aumenta tu fuerza de voluntad
  3. La pasión te cambia significativamente
  4. La pasión hace posible lo imposible

Por último y para no olvidar hay que:

  1. Regresar a nuestro primer amor.
  2. Relacionarse con gente apasionada y energizante.


Tomado del siguiente Podcast:


Y del siguiente Post:
http://prosperitgroup.org/2012/11/29/como-sentir-mas-pasion-por-lo-que-haces-para-que-seas-mas-exitoso/

ASP .NET - Validaciones

En la Vista .ascx
1. 
 <%: Html.TextBox("txtXX", Model.MetaGlobal, new
{ @class = "bordesControlesMuyPequenos", onblur="onXXXXBlur()" })%>

2. 


<a class="tooltipvalidador" href="#" id="aXXXX">*
    <span id="spanXXXX" class="custom info">
        <img src=" <%: Url.Content("~/Images/Info.png")%>" style="left: 20px; top: 2px;"
            alt="Informacion" height="30" width="30" />
        <em></em>&nbsp;&nbsp;
    </span>
</a>

En el JavaScript
3. 

function onXXXXBlur()
{
    ValidaCamposGeneral($('#txtXXXX'), $('#aXXXX'), $('#spanXXXX'), 1,"<%= ViewData["msgCampoRequeridoTexto"] %>","<%= ViewData["msgFechaValida"] %>","<%= ViewData["msgSeleccionItem"] %>");
}



         $(document).ready(function () {  
         $('#aXXXXX').css("visibility", "hidden");
         $('#aXXXX').css("visibility", "hidden");  
         $('#aXXX').css("visibility", "hidden");  
         $('#aXX').css("visibility", "hidden");




Genéricos - Colecciones - Diccionario


GENERICOS
metodos o clases que ayudan a implementar y reutilizarlos con diferentes tipos de datos.

PAGINA 150
ARREGLOS UNIDIMENCIONALES UN ELEMENTO POR CADA INDEX

Diccionarios: Reciben dos parámetros, arreglos bidimensional, uno de ellos es una clave que permite identificar cada elemento.

Los genéricos se aplican sobre las colecciones.
Se pueden establecer genéricos para las pilas colas arreglos diccionarios.

Se reconoce que el método o la clase es un genérico con:
<>
List<T> La T es una representación del tipo de dato.

Cuando recibe dos parámetros <T,U> es un diccionario.

Ejemplo:
SortedList<string, int> sl = new SortedList<string,int>();

Si no se usara genéricos fuera:
sortlist sl = new SortedList();

sl.Add("One", 1);
sl.Add("Two", 2);
sl.Add("Three", 3);
foreach (int i in sl.Values)
Console.WriteLine(i.ToString());

sl.Values solo se aplica sobre los valores mas no para las claves string

ToString() Devuelve el nombre de la clase incluido el namespace del objeto

En un diccionario obliga a enviar una clave string

public class person : IComparable

la clase person hereda de la clase IComparable

DateTime.Compare (Método)

Compara dos instancias de DateTime y devuelve una indicación de sus valores relativos.


Parámetros
t1
Primer objeto DateTime.
t2
Segundo objeto DateTime.
Valor devuelto
Número con signo que indica los valores relativos de t1 y t2.

Tipo de valor
Condición
Menor que cero
t1 es menor que t2.
Cero
t1 es igual a t2.
Mayor que cero
t1 es mayor que t2.



var t1 : DateTime = new DateTime(100);
var t2 : DateTime = new DateTime(20);

if (DateTime.Compare(t1, t2) >  0) Console.WriteLine("t1 > t2"); 
if (DateTime.Compare(t1, t2) == 0) Console.WriteLine("t1 == t2"); 
if (DateTime.Compare(t1, t2) <  0) Console.WriteLine("t1 < t2");

DateTime t1 = new DateTime(100);
DateTime t2 = new DateTime(20);

if (DateTime.Compare(t1, t2) >  0) Console.WriteLine("t1 > t2"); 
if (DateTime.Compare(t1, t2) == 0) Console.WriteLine("t1 == t2"); 
if (DateTime.Compare(t1, t2) <  0) Console.WriteLine("t1 < t2");

Fuente
http://goo.gl/qByIE

Fechas en Javascript


Fecha básica con números

Podemos utilizar el siguiente script, para mostrar la fecha en español con números, es decir, en el formato como se escribe en nuestro idioma: dia/mes/año.
<script>
var f = new Date();
document.write(f.getDate() + "/" + (f.getMonth() +1) + "/" + f.getFullYear());
</script>
Este script de Javascript lo tenemos que colocar en el cuerpo de la página, en el lugar donde queremos que aparezca la fecha de hoy. Nosotros podremos colocar este script en cualquier contenedor donde queramos que aparezca, como un párrafo, una capa o división, una celda de una tabla, o donde deseemos.

Fecha con el nombre del mes

Podríamos desear poner la fecha escrita, donde aparezca el nombre del mes con letras, es decir, algo como "9 de noviembre de 2009". Esto quedaría bien si queremos darle un toque más prosaico a la visualización de la fecha actual. Se consigue con un script como este:
<script>
var meses = new Array ("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
var f=new Date();
document.write(f.getDate() + " de " + meses[f.getMonth()] + " de " + f.getFullYear());
</script>
Como habrás podido comprobar, no tiene ninguna dificultad, pero tenemos que crear un array con los nombres de los meses en español, puesto que en Javascript no tenemos ninguna manera de conseguir esos nombres en nuestro idioma. Nuevamente, colocaremos el script en el lugar donde deseamos que aparezca escrita la fecha.

Fecha con nombre de més y nombre de día de la semana

Ahora vamos a darle una vuelta de trueca al anterior script para generar el nombre del día de la semana. El esquema sigue siendo el mismo, pero ahora necesitaremos otro array con los nombres de los días de la semana. Con este script conseguiremos una fecha escrita que será parecida a esta: "Lunes, 9 de Noviembre de 2009".
<script>
var meses = new Array ("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
var diasSemana = new Array("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado");
var f=new Date();
document.write(diasSemana[f.getDay()] + ", " + f.getDate() + " de " + meses[f.getMonth()] + " de " + f.getFullYear());
</script>


Tomado de: desarrolloweb

¿Por qué fracasan los proyectos de software? - Diagrama de Gantt

¿Por qué fracasan los proyectos de software?

Aparte de las causas mencionadas en todos los sitios web se debe tomar en cuenta las siguientes:
  1. Tener Requerimientos Funcionales: Toma entre 8 horas de 15 días a 2 meses para definir qué es lo que quiere el usuario, este documento debe ser formal, emitido, aprobado y FIRMADO. Ahí se definen los alcances, objetivos, especificaciones. Sirve como check list para verificarlos al final del proyecto en las Pruebas. Los contratos se deben leer bien (Por ejemplo: El proyecto debe ser recibido en conformidad y a entera satisfacción del cliente).
  2. Existir un Líder de Proyecto que es el que Interactúa entre el cliente/usuario y el programador. Direcciona al equipo.
  3. Por la Mala Planificación
    1. Debe existir un Diagrama de Gantt, se lo describe acontinuación.
  4. Definir las Pruebas en el ciclo de vida del sistema.

Diagrama Gantt

Generalmente una cotización se la debe presentar realizando un diagrama de gantt, en este se especifica el tiempo estimado casi muy aproximado para el desarrollo de un sistema. Para este ejempleo se lo hará para una empresa farmacéutica con 10 años de información en FOX (Pharmacys) que necesita un sistema de facturación :
  • análisis de riesgo
  • definir los hitos o entregables
  • brechas: holguras para imprevistos, 
  • incluir los requerimientos funcionales en las actividades, 
  • migración de datos - 6 meses: reestructuración de base de datos, normalización de la base de datos se necesita un arquitecto de información o DBA. Analizar la experticia del equipo, si existe o no la documentación actualizada.
  • pruebas alfa (el programador), beta (los de QA), unitaria, sistema, regresión, paralela (operar el sistema antiguo y nuevo por lo mínimo 3 meses) - 2 meses.
  • pruebas de QA Aseguramiento de Calidad, prueba del equipo para asegurar que funcione. Antes de hacerle probar al usuario final - 1 mes
  • Documentación UML, según la metodología. Manual técnico, funcional, diccionario de datos, Entidad Relación.
  • Fase de implantación (luego de las pruebas)
    • Capacitación (2 semanas por módulos)
    • Suscripción de Acta E-R del documento
    • Otros
  • Fase de post implementación 
    • Afinamientos del sistema
    • Otros

Mínimo este proyecto toma un año en ser terminado por completo.
Lo siguiente por hacer es Analizar, Evaluar y Dimensionar las implicaciones adicionales del proyecto. Tomar en cuenta la competencia y el software pirata.

Finalmente, todos los proyectos de software deben tomar en cuenta los puntos mencionados así como la Tecnología que van a usar, el apoyo que se le brinda al equipo, el compromiso que adquieren los integrantes del staff de trabajo y por último los conocimientos y talentos que poseen las personas, sin este no es posible ni siquiera iniciar el proyecto.

Espero que esto ayude a generar y a fomentar nuevos y mejores equipos de trabajo a todos quienes leen este blog.
-   -    -


"Sólo cuando el último árbol esté muerto,
el último río envenenado y el último pez atrapado,
nos daremos cuenta que no se puede comer dinero"
¿Por dónde hay que empujar este país para llevarlo adelante? -Mafalda-
                                                     QUINO, Joaquín Salvador Lavado

Entendiendo las Expresiones Regulares


Esta es una explicación rápida de las expresiones regulares:


Los metacaracteres que preceden a un rango o carácter específico indican cuantas veces se va a repetir dicho/s caracter/es.

el ^ indica que desde ese punto se hará la validación de la expresión, será el inicio.
el $ indica que hasta ese punto se hará la validación de la expresión, será el tope.
el * indica que la expresión se repetirá 0 o exclusivamente n veces, es decir no podrá estar 1 vez.
el + indica que la expresión se repetirá 1 o n veces, es decir por lo menos debe estar 1 vez.
el ? indica que la expresión se repetirá 0 o exclusivamente 1 vez, es decir no podrá repetirse más de 1 vez.
{n} indica que la expresión se repetirá n veces exclusivamente, es decir ni más ni menos de n veces.
{n,} indica que la expresión se repetirá de n al infinito.
{n,m} indica que la expresión se repetirá entre n y m.

Para realizar una validación en JavaScript para que solo acepte decimales se puede usar lo siguiente:


function controlDosDecimales(el) {
        var ex = /^[0-9]+\.?[0-9] $/;
        if (ex.test(el.value) == false) {
            el.value = el.value.substring(0, el.value.length - 1);
        }
    }

Microsoft - Manejo de errores - Tratamiento de secciones

Para el tratamiento de errores se usa Exception, este permite manejar los errores macro, los más comunes son:
Tipo
Error
Numérico 
- Matemático
BDD
- SQL
Archivo
- I/O

En caso de que no se especifique el tipo de error trata cualquier tipo de error, en caso de que si se especifique uno y se genere otro tipo de error se cae la aplicación.

            try
            {
                //...
            }
            catch (Exception)
            {
                //...
            }
            finally
            {
                //...
            }

Ambos, (try y catch) siempre van juntos, mientras que finally siempre se ejecutará sea que haya o no error.

Un try puede tener varios tipos de catch. x Ej.
            try
            {
                //...
            }
            catch (IOException)
            {
                //...
            }
            catch (SQLException)
            {
                //...
            }
            catch (Exception)
            {
                //...
            }
Los errores van desde el específico a lo general. Por ejemplo el IOException es hijo del Exception por lo que si primero le pongo al Exception no entrará al IOException. No serviría de nada.

Para capturar el error se lo trata de la siguiente manera:
Luego del catch se agrega una variable como sigue:
            catch (Exception e)
            {
                MessageBox.Show(e);
            }

Cuando se dan los errres en las diferentes capas el error tratado se lo debe propagar, es decir enviar a la capa que lo llamó.


En caso de que el error se de en la capa de negocios, el error se puede tratar de la siguiente manera:
try
        { //////
            lstArchivos.Items.Clear();
            foreach (FileInfo fi in dir.GetFiles())
                lstArchivos.Items.Add(fi.Name);
        }
        catch (Exception ex)
        {
            MessageBox.Show("No hay archivos en la carpeta seleccionada.");
            throw ex;
        }

No es bueno arrojar muchos Throws entre capas al usuario:
En un inicio las al pasar el error entre capas se perdía el detalle de los errores en VS2003 y VS2005.
Cuando se hace una llamada se envían a la pila de llamadas, por lo que se sobrecarga la memoria.

Si da error en la capa de datos es porque se llamó desde el negocio, y esta fue llamado en UI, Por efecto dominó se cae el método en datos luego en el negocio y luego en la UI, por lo tanto se recomienda agregar un try catch en la de datos (se tienen los errores reales de la BD).
Analizar en qué capas colocar los try catch y throw, según el número de capas.
Deber: Implementar try catch en cada método aplicado hasta ahora.

Método String.Format - (String, Object[])



// This code example demonstrates the String.Format() method.
// Formatting for this example uses the "en-US" culture.

using System;
class Sample 
{
    enum Color {Yellow = 1, Blue, Green};
    static DateTime thisDate = DateTime.Now;

    public static void Main() 
    {
// Store the output of the String.Format method in a string.
    string s = "";

    Console.Clear();

// Format a negative integer or floating-point number in various ways.
    Console.WriteLine("Standard Numeric Format Specifiers");
    s = String.Format(
        "(C) Currency: . . . . . . . . {0:C}\n" +
        "(D) Decimal:. . . . . . . . . {0:D}\n" +
        "(E) Scientific: . . . . . . . {1:E}\n" +
        "(F) Fixed point:. . . . . . . {1:F}\n" +
        "(G) General:. . . . . . . . . {0:G}\n" +
        "    (default):. . . . . . . . {0} (default = 'G')\n" +
        "(N) Number: . . . . . . . . . {0:N}\n" +
        "(P) Percent:. . . . . . . . . {1:P}\n" +
        "(R) Round-trip: . . . . . . . {1:R}\n" +
        "(X) Hexadecimal:. . . . . . . {0:X}\n",
        -123, -123.45f); 
    Console.WriteLine(s);

// Format the current date in various ways.
    Console.WriteLine("Standard DateTime Format Specifiers");
    s = String.Format(
        "(d) Short date: . . . . . . . {0:d}\n" +
        "(D) Long date:. . . . . . . . {0:D}\n" +
        "(t) Short time: . . . . . . . {0:t}\n" +
        "(T) Long time:. . . . . . . . {0:T}\n" +
        "(f) Full date/short time: . . {0:f}\n" +
        "(F) Full date/long time:. . . {0:F}\n" +
        "(g) General date/short time:. {0:g}\n" +
        "(G) General date/long time: . {0:G}\n" +
        "    (default):. . . . . . . . {0} (default = 'G')\n" +
        "(M) Month:. . . . . . . . . . {0:M}\n" +
        "(R) RFC1123:. . . . . . . . . {0:R}\n" +
        "(s) Sortable: . . . . . . . . {0:s}\n" +
        "(u) Universal sortable: . . . {0:u} (invariant)\n" +
        "(U) Universal sortable: . . . {0:U}\n" +
        "(Y) Year: . . . . . . . . . . {0:Y}\n", 
        thisDate);
    Console.WriteLine(s);

// Format a Color enumeration value in various ways.
    Console.WriteLine("Standard Enumeration Format Specifiers");
    s = String.Format(
        "(G) General:. . . . . . . . . {0:G}\n" +
        "    (default):. . . . . . . . {0} (default = 'G')\n" +
        "(F) Flags:. . . . . . . . . . {0:F} (flags or integer)\n" +
        "(D) Decimal number: . . . . . {0:D}\n" +
        "(X) Hexadecimal:. . . . . . . {0:X}\n", 
        Color.Green);       
    Console.WriteLine(s);
    }
}
/*
This code example produces the following results:

Standard Numeric Format Specifiers
(C) Currency: . . . . . . . . ($123.00)
(D) Decimal:. . . . . . . . . -123
(E) Scientific: . . . . . . . -1.234500E+002
(F) Fixed point:. . . . . . . -123.45
(G) General:. . . . . . . . . -123
    (default):. . . . . . . . -123 (default = 'G')
(N) Number: . . . . . . . . . -123.00
(P) Percent:. . . . . . . . . -12,345.00 %
(R) Round-trip: . . . . . . . -123.45
(X) Hexadecimal:. . . . . . . FFFFFF85

Standard DateTime Format Specifiers
(d) Short date: . . . . . . . 6/26/2004
(D) Long date:. . . . . . . . Saturday, June 26, 2004
(t) Short time: . . . . . . . 8:11 PM
(T) Long time:. . . . . . . . 8:11:04 PM
(f) Full date/short time: . . Saturday, June 26, 2004 8:11 PM
(F) Full date/long time:. . . Saturday, June 26, 2004 8:11:04 PM
(g) General date/short time:. 6/26/2004 8:11 PM
(G) General date/long time: . 6/26/2004 8:11:04 PM
    (default):. . . . . . . . 6/26/2004 8:11:04 PM (default = 'G')
(M) Month:. . . . . . . . . . June 26
(R) RFC1123:. . . . . . . . . Sat, 26 Jun 2004 20:11:04 GMT
(s) Sortable: . . . . . . . . 2004-06-26T20:11:04
(u) Universal sortable: . . . 2004-06-26 20:11:04Z (invariant)
(U) Universal sortable: . . . Sunday, June 27, 2004 3:11:04 AM
(Y) Year: . . . . . . . . . . June, 2004

Standard Enumeration Format Specifiers
(G) General:. . . . . . . . . Green
    (default):. . . . . . . . Green (default = 'G')
(F) Flags:. . . . . . . . . . Green (flags or integer)
(D) Decimal number: . . . . . 3
(X) Hexadecimal:. . . . . . . 00000003

*/
Fuente:

ABD - Modelo Entidad Relación

Tarea: Realizar los puntos 1, 2 y 3 con el ejercicio 6 descrito más abajo.

  1. Realizar el Modelo Entidad - Relación, Modelo Conceptual. - AR
  2. Grafo relacional - Restricciones del FK. - LN
    • DC | UC
    • DNA | UNA
    • DSN | USN
    • DSD | USD
  3. Planificación de capacidad de la Base de Datos actual y futura. - AR y LN
    • sql-server-2008-administration-instant-reference - Perform Capacity Planning (pag. 76 – 82). (Disk and the I/O subsystem, Memory, CPU, Network, Data Growth) En la planificación de crecimiento debemos escoger solo un tipo de crecimiento (lineal, compuesto a, compuesto b).
    • GESTION BD  -Para calcular el tamaño de la bd actual (pag. 31) y un ejemplo del grafo (pag. 30) buscar más referencias y/o formas de hacer el grafo.
Lo Verde significan las iniciales de los responsables de cada item.

Ejercicio 6. Biblioteca v2
  • Almacenaremos el DNI, nombre, apellidos, código de socio, dirección y teléfonos (pueden ser varios, pero al menos uno)
  • La biblioteca presta libros, CDs y películas. De todos ellos se almacena un código de artículo distinto para cada pieza en la biblioteca. Es decir si tenemos tres libros del Quijote, los tres tendrán un número distinto de artículo.
  • Además almacenamos el nombre de cada artículo, el año en el que se hizo la obra (sea del tipo que sea) un resumen de la obra y los datos de los autores del mismo. Se considera autor de la película al director, de la música al intérprete y del libro al escritor. Pero de todos ellos se guarda la misma información: nombre y país.
  • De los libros además se guarda el número de páginas, de los CDs el número de canciones y de la película la duración
  • Anotamos si un artículo concreto está deteriorado y un comentario sobre el posible deterioro
  • Cuando se presta un artículo, se anota fecha en la que se presta y la fecha tope para devolverle. Cuando el socio le devuelve, se anota la fecha de devolución.
  • No hay tope sobre el número de artículos que puede prestarse a un socio e incluso el socio podría llevarse varias veces el mismo artículo en distintos préstamos
Se trata de crear una base de datos sobre el funcionamiento de una biblioteca.
Solución

NOTA:
El ejercicio que se entregó en clase está en el siguiente documento (Descargar y abrirlo en Word + Google Cloud Connect).


Referencias MER: 
Página 9: http://dis.um.es/~jfernand/0708/fbd/tema3.pdf
Leer: http://www.slideshare.net/oswchavez/clase-3-modelo-entidad-relacion
Leer: http://gpd.sip.ucm.es/yolanda/BDSI0708/BDSI%201011/Tema%202II.pdf

Microsoft .NET - Tipos de datos - Casting - Estructuras

Declarar una variable se establece el tipo y el nombre.

Tipo de datos primitivos
son tipos de dato nativos.

Los dos son clases: string y String (es una clase que tiene métodos y propiedades sobre el valor que guarda esa variable.)

CASTEO

1. poner Convert al inicio de una sentencia.
2. poner al final del nombre de la clase "parse"
3. poner entre parentesis el tipo de dato antes de la variable.

CASTEO EXPLÍCITO:
Se está citándo cual se va a cambiar.

CASTEO IMPLÍSITO:
Se obvia el casteo. Entre datos que son compatibles.
Ej. Char a entero y visceversa.

ESTRUCTURA DE DATOS
Conjunto de datos relacionados.
Dentro del Bash Class Library

---
Agregar una nueva forma para agregar dos datos X, Y con un botón guardar en una estructura de datos POINT y un botòn desplegar en un richtextbox

Tipos de datos y Variables
Casting explícito e implícito
Estructuras de datos definidas por el usuario y predefinidas.

Todas las clases tienen el método toSting() y lo que hace es desplegar el nombre de la clase.
Con la sentencia override se sobreescribe el método.

public static Cycle operator +
operator + sobrecarga el operador, indica lo que va a hacer cuando

Estático un solo valor de memoria para esa variable, método o clase.
Si la clase es estática, no se va a poder instanciar nuevamente, siempre va a contener el mismo espacio de memoria para esa variable y puede ser accedida por cualquier clase.

Deber:
Tarea realizar el ejemplo de la página 8 del libro MCTS http://sdrv.ms/15wRdsc
No datos quemados sino desde el formulario

Proyecto:
http://sdrv.ms/15wR0VX
Leer:
http://goo.gl/0qAQ1

ABD - Consideraciones para la instalación de un DBMS

Establecer diferentes carpetas y lugares (discos duros) para guardar los logs, data y backups la base de datos. Esto permite determinar una buena gestión de respaldo y restauración de la base de datos.

Se debe considerar también lo siguiente:
LAS PEORES PRÁCTICAS DE UN DBA (Autores: Christian Ríos, María José Bravo)
Las peores prácticas más importantes que un DBA debe considerar son las siguientes:
1. Definición de desastre demasiado restrictivo y no practicar una recuperación de desastres.
2. Instalación de Service Pack, actualizaciones acumulativas o revisiones sin leer las notas de la versión y no instalarlos en un entorno de prueba en primer lugar.
3. Instalación de todas las características de SQL Server en la remota posibilidad de que puede ser necesario en algún momento en el futuro. Además, aumenta el área de superficie de ataque y los resultados en la gestión de servicios innecesarios que pueden reducir el rendimiento.
4. No tener en cuenta los acuerdos de nivel de servicio (SLA) en el diseño de un entorno de base de datos y no tener en cuenta la necesidad del tiempo de inactividad programado para varias actividades de mantenimiento, tales como la instalación de los Service Pack.
5. La falta de seguimiento de alineación de las particiones de disco y formatear los mismos con el tamaño predeterminado de la unidad de asignación (4K).
6. Virtualización/Consolidación de instancias de SQL Server y bases de datos sin tener en cuenta la escalabilidad, la concesión de licencias, soporte, administración, y las implicaciones de rendimiento de perfiles.
7. Crear logins/puestos de trabajo con privilegios elevados. Implementación de privilegios mínimos puede ser un trabajo duro, pero es esencial bloquear un sistema para máxima seguridad.  
8. Ubicación de datos y registros de transacciones en el mismo disco físico.
9. Almacenamiento de copias de seguridad en el mismo disco que los archivos de base de datos.
10. Instalación de grupos de instancias múltiples sin tener en cuenta las consecuencias financieras de las situaciones de conmutación por error.
11. No hacer copias de seguridad, no comprobar su validez, no practicar y documentar las diversas situaciones de recuperación.
12. Confiar en el crecimiento automático del tamaño de archivos, y dejar los temporales de la base de datos en su tamaño por defecto.
13. Realizar la administración manual con SQL Server Management Studio. Para una máxima eficiencia y un mínimo de errores, las tareas deben ser programadas y automáticas, y usted debe emplear un adecuado seguimiento y mecanismos de alerta, como MOM u operadores del Agente SQL y alertas.


Microsoft .NET - Componentes y propiedades mas usadas en C#

ComboBox - DropDownStyle > DropDownList (No se puede modificar el texto de los combos)

Panel - BorderStyle (Agregar un borde al panel para visualizarlo)

Form - MinSize (Tamaño mínimo para reducir el tamaño de la ventana)

Form - Paddin (Borde del Form)

Controladores - Anchor (Permite redistribuir los controladores respecto al contenedor principal. Cambia la relación de aspecto izquierdo, derecho, superior e inferior.)

NumericUpDown - Increment (Cada incremento de cuanto se va a hacer)

Que control se puede usar para distancias es decir con decimales y en qué evento se debe aplicar la validación para no ingresar letras.

http://sdrv.ms/14m2yK1

Microsoft .NET - Solución VS - Proyecto CS - Componentes CS

Componentes de una solución VS. 
Puede estar compuesta de diferentes proyectos con diferentes lenguajes. Cada uno sirve para diferentes fines!
Properties:
- Resource.resx: Recursos externos que puede utilizar la aplicación.
- AssemblyInfo.cs: Metadata de la aplicación.
- Settings.settings: Configuraciones que se pueden recuperar en la siguiente sesión.
Program.cs: Punto de entrada principal para la aplicación.
References: Librerías o namespaces que usa la aplicación.

El proyecto que se establece como proyecto de inicio se denota por la negrita que lo resalta.
Las dependencias de un proyecto se aplican cuando un proyecto está compuesto por n-capas
Ubicación de las librerías que se están usando para el código fuente.
En las propiedades de la configuración se puede cambiar las opciones de inicialización de un proyecto:
- Debug (Depuración): Permite parar, dar seguimiento, buscar errores de sintaxis, lógica, es decir permite probar la aplicación. Esta configuración es pesada.
- Release: Esta configuración no permite probar la aplicación o darle seguimiento, esta se la usa para ya generar una aplicación probada. Es mas liviana y rápida.
La plataforma permite configurar la compatibilidad de las arquitecturas.


Nombres que se manejan en VS.
Solución: Nombre de la solución o del conjunto de proyectos. "SoluciónGlobalAplicación"
Ensablado: Nombre del archivo físico ejecutable o release. "Aplicación.dll"
Namespace: Nombre lógico o de las bibliotecas, para acceder a las diferentes clases que están dentro del proyecto. "Aplicación"
Proyecto: Nombre físico de lo que estamos desarrollando. "Aplicación.csproj"

El tipo de resultado depende de los proyectos agregados en la solución.
Archivo de recursos son los recursos que el exclusivamente proyecto va a usar.

En Generar:
- Símbolos de compilación condicional permite agregar librerías o web services adicionales.
- Resultado:
- Generar ensamblados de serialización: Mediante un algoritmo de encriptación permite compactar y poder transmitirlo por la red.

En Depurar:
- Argumentos de la linea de comando: son variables que necesita para continuar con la ejecución.

En Rutas de acceso de referencia:
- Direccionar la ubicación de los componentes que permiten enlazar diferentes plataformas. ver: http://goo.gl/I2zGb

La diferencia entre Build y Rebuild: 
Al inicio ambos hacen lo mismo.
Rebuild: Genera o compila desde cero.
Build: Compila desde el anterior build. Menos pesado. Compila las modificaciones anteriores.
Limpiar/Clean: Borra completamente de la memoria el proyecto en cuestión y hace Rebuild.

Otra opción es borrar el bin y el debug pero previo al cierre de la solución o proyecto para que el VS al iniciar lo reconstruya.

- Las dependencias y el orden solo brindan información.
- En agregar referencia permite agregar las dll de otros componentes a usar en el proyecto: .NET, COM, Proyectos (proyectos adicionales), Examinar (dll, tlb, olb, ocx, exe, manifest).
- Agregar referencia de servicio: Web services externos.
- Ver diagrama de clases permite ver las clases y componentes que componen el proyecto.

Convenciones / Standares en el nombre de los componentes, variables y métodos:
Las tres primeras consonantes del control más el nombre de la clase a la que representa con la inicial en mayúscula.
Componentes (en singular):
- Form: frmCliente
- Button: btnGrabar
- Combobox: cmbSemestre

Variables:
- int: intEdad;
- string: strNombre;
- boolean blnValidar;

Métodos:
- validarCedula
- guardarFactura
- buscarCliente

Trabajando en un Formulario de Windows:
*.resx Archivo recurso del formulario.
*.Designer.cs Propiedades de inicio del formulario.
*.cs Programación de la clase.

Propiedades de los controles de CS
El name es el nombre al que se va a referir en la programación, mientras que el text es el nombre que se va a desplegar.

A partir de 2005 se generan en clases parciales, se dividen en la parte de diseño (Designer) y programación (cs), físicamente las clases están dividas en varias pero lógicamente son una sola (un solo Form).

ControlBox permite determinar si el formualrio tiene un cuadro de menú control o de sistema
Las propiedades mas usadas en un formulario son: WindowsState, StartPosition, ControlBox, Location.

Las propiedades más usadas en el txtBox son: Text, Name, textAlign, ReadOnly, Enabled, PasswordChar, Multiline (varias lineas de texto), MaxLength (tamaño máximo permitido), Location (Cordenadas de la ubicación actual del componente sobre el contenedor form), Size.



Realizar un informe que contenga: Título, nombre, desarrollo, comentario, recomendaciones.
Código: http://sdrv.ms/XokI9L
Proyecto Fuente: http://sdrv.ms/XokI9L
Corrida:



Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace PART
{
    static class Program
    {
        /// <summary>
        /// Punto de entrada principal para la aplicación.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new frmSitioTuristico());
        }
    }
}

frmSitioTuristico.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace PART
{
    public partial class frmSitioTuristico : Form
    {
        public frmSitioTuristico()
        {
            InitializeComponent();
        }
        private void btnGuardar_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Quiero visitar " + txtNombre.Text);
        }
    }
}
frmSitioTuristico.Designer.cs
namespace PART
{
    partial class frmSitioTuristico
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.txtNombre = new System.Windows.Forms.TextBox();
            this.lblNombre = new System.Windows.Forms.Label();
            this.lblProvincia = new System.Windows.Forms.Label();
            this.lblCanton = new System.Windows.Forms.Label();
            this.txtProvincia = new System.Windows.Forms.TextBox();
            this.txtCanton = new System.Windows.Forms.TextBox();
            this.btnGuardar = new System.Windows.Forms.Button();
            this.SuspendLayout();
            //
            // txtNombre
            //
            this.txtNombre.Location = new System.Drawing.Point(128, 75);
            this.txtNombre.Name = "txtNombre";
            this.txtNombre.Size = new System.Drawing.Size(100, 20);
            this.txtNombre.TabIndex = 0;
            //
            // lblNombre
            //
            this.lblNombre.AutoSize = true;
            this.lblNombre.Location = new System.Drawing.Point(53, 78);
            this.lblNombre.Name = "lblNombre";
            this.lblNombre.Size = new System.Drawing.Size(47, 13);
            this.lblNombre.TabIndex = 1;
            this.lblNombre.Text = "Nombre:";
            //
            // lblProvincia
            //
            this.lblProvincia.AutoSize = true;
            this.lblProvincia.Location = new System.Drawing.Point(65, 110);
            this.lblProvincia.Name = "lblProvincia";
            this.lblProvincia.Size = new System.Drawing.Size(54, 13);
            this.lblProvincia.TabIndex = 2;
            this.lblProvincia.Text = "Provincia:";
            //
            // lblCanton
            //
            this.lblCanton.AutoSize = true;
            this.lblCanton.Location = new System.Drawing.Point(65, 144);
            this.lblCanton.Name = "lblCanton";
            this.lblCanton.Size = new System.Drawing.Size(44, 13);
            this.lblCanton.TabIndex = 3;
            this.lblCanton.Text = "Cantón:";
            //
            // txtProvincia
            //
            this.txtProvincia.Location = new System.Drawing.Point(128, 107);
            this.txtProvincia.Name = "txtProvincia";
            this.txtProvincia.Size = new System.Drawing.Size(100, 20);
            this.txtProvincia.TabIndex = 4;
            //
            // txtCanton
            //
            this.txtCanton.Location = new System.Drawing.Point(128, 141);
            this.txtCanton.Name = "txtCanton";
            this.txtCanton.Size = new System.Drawing.Size(100, 20);
            this.txtCanton.TabIndex = 5;
            //
            // btnGuardar
            //
            this.btnGuardar.Location = new System.Drawing.Point(97, 190);
            this.btnGuardar.Name = "btnGuardar";
            this.btnGuardar.Size = new System.Drawing.Size(75, 23);
            this.btnGuardar.TabIndex = 6;
            this.btnGuardar.Text = "Guardar";
            this.btnGuardar.UseVisualStyleBackColor = true;
            this.btnGuardar.Click += new System.EventHandler(this.btnGuardar_Click);
            //
            // frmSitioTuristico
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(292, 266);
            this.Controls.Add(this.btnGuardar);
            this.Controls.Add(this.txtCanton);
            this.Controls.Add(this.txtProvincia);
            this.Controls.Add(this.lblCanton);
            this.Controls.Add(this.lblProvincia);
            this.Controls.Add(this.lblNombre);
            this.Controls.Add(this.txtNombre);
            this.Name = "frmSitioTuristico";
            this.Text = "Sitio Turístico";
            this.ResumeLayout(false);
            this.PerformLayout();
        }
        #endregion
        private System.Windows.Forms.TextBox txtNombre;
        private System.Windows.Forms.Label lblNombre;
        private System.Windows.Forms.Label lblProvincia;
        private System.Windows.Forms.Label lblCanton;
        private System.Windows.Forms.TextBox txtProvincia;
        private System.Windows.Forms.TextBox txtCanton;
        private System.Windows.Forms.Button btnGuardar;
    }
}