lunes, 27 de diciembre de 2010

Menus en ASP Net

Hola, hoy aprenderemos como utilizar el control Menu de ASP Net para configurar menues dinámicos, ligandolos a datos de archivos XML.

Pues bien, el control menu de asp net puede ser ligado a los archivos XML mediante una XMLDataSource y a este control se le puede configurar una ruta a un archivo XML.

Realizaremos un ejemplo sencillo con un par de menues y un par de items para cada uno.

Comenzaremos escribiendo la estructura básica en XML:

<?xml version="1.0" encoding="utf-8" ?>
<Menus>
<Menu> <!-- Menu 1 -->
<MenuItem /> <!-- Menu Item 1 -->
<MenuItem /> <!-- Menu Item 2 -->
</Menu>
<Menu> <!-- Menu 1 -->
<MenuItem /> <!-- Menu Item 1 -->
<MenuItem /> <!-- Menu Item 2 -->
</Menu>
</Menus>
Como pueden observar, solamente declaramos una serie de nodos, "Menus", un par de nodos "Menu" y un par de nodos "MenuItem" para cada uno.

Ahora procederemos a completar la información de la estructura con datos, por medio de atributos. Antes, una breve explicación:

Un menú en asp net necesitará, básicamente de:
  • Texto que desplegar.
  • Url a la cual hacer un hipervínculo.
Además se le pueden configurar, entre otras cosas:
  • Un valor para el control.
  • Un "ToolTip", para indicaciones cuando se haga "hover" sobre el control.
  • Un "Target" para indicar si debe abrir una nueva ventana o actuar sobre la actual, tal y como un hipervínculo normal.

La mayoría de estas opciones son opcionales. En este ejemplo, procederemos a configurarlas de la siguiente manera: Los contenedores no expecificarán url (solo se utilizarán para contener a los items) y los items de los menus contendrán los atributos para el hipervínculo como la url y el "target". Esta información la aplicaremos a la estructura anterior mediante atributos, de la siguiente manera:

<?xml version="1.0" encoding="utf-8" ?>
<Menus>
<Menu MenuID="Menu 1" Text="Menu 1">
<MenuItem MenuItemID="Menu Item 1" Text="Ir a google"
Url="http://www.google.com"
Target="_self" />
<MenuItem MenuItemID="Menu Item 2" Text="Ir a yahoo"
Url="http://www.yahoo.com"
Target="_self" />
</Menu>
<Menu MenuID="Menu 2" Text="Menu 2">
<MenuItem MenuItemID="Menu Item 1" Text="Ir a bing"
Url="http://www.bing.com"
Target="_blank" />
<MenuItem MenuItemID="Menu Item 2" Text="Ir a altavista"
Url="http://www.altavista.com"
Target="_blank" />
</Menu>
</Menus>
Pues bien, tenemos nuestro archivo XML listo, ahoro procederemos con la programación de los componentes de servidor ASP Net.
Necesitaremos de un control Menu y de un control XMLDataSource.

Lo primero que configuraremos será el XmlDataSource. Podemos efectuarlo desde el "wizard" o directamente desde la declaración del control, como en este ejemplo:

<asp:XmlDataSource ID="MyXmlDataSource" runat="server" DataFile="~/xml/myxmlfile.xml"
XPath="/Menus/*"><asp:XmlDataSource>

Donde indicamos mediante el atributo "DataFile" la ruta relativa al archivo xml que acabamos de crear, y con el atributo "XPath" el filtro necesario para obtener la lista de nodos "Menu" que nos interesa, es como un "Select" de SQL en el que indicamos que obtenga el listado de todos los nodos contenidos en "Menus".

Ahora, procedemos a configurar el control asp Menu. Primero declararemos el control e indicaremos que utilizará el data source previamente configurado:

<asp:Menu ID="MyMenu" runat="server" DataSourceID="MyXmlDataSource">
</asp:Menu>
Luego, procederemos a "mapear" los atributos del archivo XML con las diferentes opciones para cada control. Para ello utilizaremos la propiedad "DataBindings" y la subpropiedad "MenuItemBinding", de la siguiente manera: Se abrirá "DataBindings" y dentro se declarará un "MenuItemBinding" para cada tipo de nodo declarado en el archivo xml, especificando este tipo mediante el atributo "DataMember", ejemplo:

<asp:Menu ID="MyMenu" runat="server" DataSourceID="MyXmlDataSource">
<DataBindings>
<asp:MenuItemBinding DataMember="Menu" />
<asp:MenuItemBinding DataMember="MenuItem" />
</DataBindings>
</asp:Menu>
Como podemos apreciar, le hemos indicado que existen dos tipos de nodos que contendrán información a "renderear". Como existen nodos "Menu", le asignamos un "MenuItemBinding", y como existirán nodos "MenuItem", le asignamos un "MenuItemBinding" para el mismo. Procederemos ahora a efectuar el mapeo enlazando los atributos, es decir, utilizaremos atributos del "MenuItemBinding" para especificarle al control que atributos del archivo XML tienen la información requerida.

Los atributos comunes (y que utilizaremos en este ejemplo, en su mayoría) del "MenuItemBinding" son:
  • DataMember = Elemento nodo xml que contiene toda la información.
  • TextField = Atributo del elemento nodo xml que se utilizará como texto del menú.
  • ValueField = Atributo del elemento nodo xml que se utilizará como valor del menú.
  • NavigateUrlField = Atributo del elemento nodo xml que se utilizará como url del link del menú.
  • ToolTipField = Atributo del elemento nodo xml que se utilizará como "ToolTip" (ó "alt" en html) para el link del menú.
  • TargetField = Atributo del elemento nodo xml que se utilizará para configurar el target (_blank, _self. etc.) del vínculo del menú.

Ahora procederemos a efectuar el "mapeo":

<asp:Menu ID="MyMenu" runat="server" DataSourceID="MyXmlDataSource">
<DataBindings>
<asp:MenuItemBinding DataMember="Menu" TextField="Text"
ValueField="MenuID" />
<asp:MenuItemBinding DataMember="MenuItem" NavigateUrlField="Url"
TextField="Text" ValueField="MenuItemID" />
</DataBindings>
</asp:Menu>
Como notarán, le indicamos mediante sus atributos, de que atributos del archivo XML obtendrá la información requerida. Importante, todos los campos configurados en el MenuItemBinding deberán utlizarse en el archivo XML que se utilice como DataSource para el control.

Con ello terminamos las configuraciones necesarias, el control Menu efectuará las operaciones necesarias y producirá el código HTML necesario para que los menues se visualicen correctamente.

Como consejos extra, podemos manejar por separado el control Menu en un archivo *.ascx para manejarlo como un Web Control y poderlo ingresar de mejor manera en las paginas necesarias.

Además, si necesitan implementarle mayor dinamismo, mediante este método es posible configurar dinámicamente el archivo XML al DataSource, y, por ende, al control Menu. En el evento "Page_Load", configurar la ruta dle archivo xml.

protected void Page_Load(object sender, EventArgs e)
{
this.MyXMLDataSource.DataFile = "~/xml/anotherxmlfile.xml";
}
De esta manera, mediante flujo de desiciones puedes programar disitintos archivos bajos condiciones determinadas, bastante util en el caso de que tengas que programar distintos permisos a diversas clases de usuarios, por ejemplo.

viernes, 24 de diciembre de 2010

Servidores vinculados en SQL Server

Aplica a:

  • SQL Server 2008.

Es necesario:

  • Contar con credenciales de inicio de sesión (usuario y contraseña) tanto para el servidor local como para el servidor remoto.
  • Contar con direccionamiento correcto al servidor remoto probado, es decir, que se pueda acceder a el por nombre de host, ip, nombre de instancia o cualquier direccionamiento que utilices y te permita conectarte desde un cliente SQL, como aplicaciones .Net o el mismo Management Studio.

Pasos:

  1. Para vincular un servidor SQL con otro servidor SQL desde Sql Server Management Studio, expande el nodo “Objetos de Servidor” en el “Explorador de Objetos”.

  2. Posteriormente, sobre la carpeta “Servidores vinculados” haz clic derecho y selecciona “Nuevo servidor vinculado…”.
  3. Acto seguido, se mostrará una pantalla de configuración de opciones.

  4. En la opción “Servidor vinculado” escribe el nombre con el que desees referirte al servidor (un “alias”),
  5. En la opción “Tipo de Servidor” elige “Otro tipo de servidor”.
  6. Como proveedor elije “SQL Server Native Client 10.0”.
  7. En nombre de producto escribe “sql_server”
  8. En origen de datos escribe el nombre de host, instancia o ip del servidor al cual quieras conectarte (previamente deberás haber efectuada una prueba de conexión desde el mismo Management Studio, para asegurarte de que el origen de datos es correcto).
  9. Posteriormente, selecciona la página “Seguridad” del menú izquierdo.

  10. En la opción “Asignaciones entre inicios de sesión de servidor local y de servidor remoto”, haz clic en “Agregar”.
  11. Elije un inicio de sesión local. Puedes elegir “Suplantar”, para suplantar al inicio de sesión remoto o declararlos directamente en las opciones “Usuario remoto” y “Contraseña remota”.
  12. En la opción “Para un inicio de sesión no definido en la lista anterior” elige “Se establecerán usando este contexto de seguridad” y repite el usuario y contraseña remotos en las cajas de texto “Inicio de sesión remoto” y “Con la contraseña”, respectivamente.
  13. Elije ahora del menú de la izquierda “Opciones de Servidor”.
  14. Configura a verdadero o “true” las opciones “Acceso a Datos”, “RPC”, “Salida RPC” y a falso la opción “Usar intercalación remota”.
  15. Hacer clic en “Aceptar”.
  16. El servidor vinculado deberá agregarse al listado de “Servidores vinculados”.
  17. Selecciónalo, haz clic derecho sobre él y elige del menú contextual “Probar conexión”.
  18. Si todo ha sido configurado correctamente, la conexión será exitosa y ahora podras acceder a datos del servidor vinculado desde el servidor local, especificando la sintaxis [Servidor].[Catalogo].[Esquema].[Tabla], por ejemplo: SucuarlaSrv.Erp.dbo.Ventas.

miércoles, 22 de diciembre de 2010

Como reconocer a un experto

Los expertos son fáciles de reconocer, siempre van un paso adelante.
Comúnmente los expertos se adelantan, tienen suficiente experiencia para guiarte aunque aun no sepas bien hacia adónde, a veces a tal grado que parece que te estan leyendo la mente y exclamas "Brujo! ¿Cómo lo supo?"

No es magia, no hay truco, es camino ya recorrido, como cuando conoces tu barrio de toda la vida, sabes donde hay baches, topes, donde no sirve el semáforo, los atajos, en fin.

Otra cosa que distingue a los expertos es que no pierden del tiempo, no dan rodeos, no te embaucan en limbos ni te adormecen con rollos verbales interminables. Los expertos van al grano, directo al punto principal, no tienen el tiempo para estarlo perdiendo.

Los expertos son honestos, te hablan con la verdad, sin tapujos y si excusas y no temen decir "No puedo". A los expertos no les importa mucho lo que piensen de ellos, les importan los resultados.

Antes de embarcarte por los terrenos inhospitos de la consultoría (o cualquier otra rama, medicina y leyes por ejemplo, son vitales) asegurate de que tratas con un experto.

lunes, 20 de diciembre de 2010

Moprosoft - ¿Por donde comenzar?

Algunos consultores prefieren empezar por proyectos, otros por procesos, algunos otros directamente sobre desarrollo. Mi opinión es que lo mejor es comenzar desde arriba, por Gestión de Negocios. De la gestión de negocios dependen las directivas de todos los demás procesos, por tanto, es vital determinar el Plan Estratégico antes que otra cosa.

Además, comunmente es la parte que se posterga más en las implementaciones, y esto se debe a que las personas encargadas de la gestión de negocio tiene agendas muy apretadas o no delegan las responsabilidades correctamente. Su cooperación en el proceso de implementación es escencial y mandatori.

Opino que se debe atacar de manera directa, elaborando el Plan Estratégico como listado para poder consultarlo y afinar detalles más cómodamente. En mi opinión puede hacerse como una entrevista, con los puntos más importantes atacados primero y en "jerga local" de negocios, para posteriomente plasmarse en documentos formales, y no viceversa.

Por ejemplo, se puede comenzar con simples preguntas al administrador, gerente general o directivo:
  • ¿Cómo anda el mercado?
  • ¿Cómo anda la organización?
  • ¿Cuáles son los objetivos para este año?
  • ¿Cómo piensas lograrlos?
  • ¿Que necesitas para alcanzar los objetivos?
  • ¿Cuales son los proyectos de este año?
  • ¿Tienes organigrama de la institución?
  • ¿Cómo haces para comunicarte eficientemente con los clientes?
  • ¿Que necesitas tu para hacer tu trabajo eficientemente?

Un inicio como este, en lugar de comenzar con el clásico "Propósito, misión, visión, valores" es mucho más enfocado y útil. Ya con esta información se puede integrar un documento borrador de plan estratégico y la misión, visión, objetivos se obtendrán mucho más fácilmente.

viernes, 17 de diciembre de 2010

Cobian Backup: Solución en respaldos


Cobian Backup

Del software de libre distribución que actualmente utilizo, Cobian Backup es sin duda uno de los más utiles. Proporciona una solución de respaldos robusta, fácil de usar y altamente configurable.

Tiene todo lo necesario para armar tu solución de respaldos: Calendarizador de tareas,
compresión de archivos, permite configurar sitios ftp como origen o destino, de manera anonima o con autenticación, multiples origenes y destino, corre como aplicación o servicio y permite cambiar esta configuración desde la interfaz de usuario.

Presenta opciones avanzadas como seleccion a detalle de archivos a respaldar u omitir del respaldo, correr aplicaciones o scripts antes o despues del respaldo o simplemente utilizarlo como administrador de tareas.

Una maravilla, ¿no? Pues en realidad si es un software muy completo pero para sacarle todo el provecho e implementar soluciones robustas de respaldo, desde caseras hasta empresariales, requiere de correcta administración y mantenimiento.

Si andan en busca de una solución de respaldos gratuita, eficiente y fácil de usar, echénle una mirada a Cobian Backup: http://www.cobian.se/cobianbackup.htm