September 28th, 2008 — 11:41pm
Entre viernes y sábado gané mis primeras estrellitas del Desarrollador Cinco Estrellas. Pude sacar el tiempo para presentar los siguientes exámenes.
Estrella #0:
Fundamentos de la programación.
Estrella #1:
.NET Framework.
C#.
Estrella #2:
Aplicaciones web con ASP.NET.
Aplicaciones Windows con WinForms.

Mi segunda estrellita.
Esta semana va a estar un poco difícil que vuelva a dedicar un tiempo a estas labores astronómicas, sin embargo voy a hacer mi mejor esfuerzo.
VN:F [1.8.5_1061]
1 comment » | Desarrollo de software, Web, Windows
September 27th, 2008 — 11:05pm
Winforms: .NET Framework Class Library -> aplicaciones de escritorio.
Diseñador de formularios:
- Genera el código del formulario diseñado y de los componentes incluídos en él.
- Partial Class permite separar la implementación de una clase en varios archivos fuente -> separar la lógica de la aplicación (organización).
Objeto Form:
- Opacity: transparencia (int 0 – 1).
- Size: tamaño (Size).
- Location: ubicación (Location).
- Show(): mostrar. Permite especificar su propietario.
- ShowDialog(): permite mostrar un diálogo de su propiedad, incluyendo uno modal (no permite tomar el foco por otro formulario mientras se esté mostrando).
Manejo de eventos:
- Por cada evento generado es posible implementar varios métodos manejadores.
- Un método manejador de eventos puede recibir notificaciones de eventos generados en varios objetos.
- Es posible cancelar el tratamiento por defecto del evento manejado con e.Handled = true.
Eventos del Form: ciclo de vida.
- Load: se encuentra recién cargado, aún no se muestra al usuario.
- Paint: es dibujado incluyendo a sus controles recursivamente.
- Activated: recibe foco.
- FormClosing: el proceso de cierre a sido iniciado. En este punto es posible manipularlo y si es necesario, cancelar el cierre.
- FormClosed: ha sido cerrado.
- Disposed: ha sido destruído.
Eventos del ratón:
- MouseClick: se hizo click con el ratón.
- MouseEnter: el puntero del ratón entró a un componente.
- MouseMove: el puntero del ratón ha sido movido dentro del componente.
Eventos de teclado:
- KeyPress: tecla presionada. Representa una pareja de eventos Up y Down sucesivos. e.KeyChar especifica cual.
- KeyDown: tecla hundida.
- KeyUp: tecla liberada.
- HelpRequested: se presionó F1.
Manipulación del foco:
- CanFocus: (true/false) puede el control tomar el foco ?
- Focused: (true/false) tiene el control el foco ?
- Focus(int): asigna el foco al componente especificado.
- TabIndex: especifica el órden de movimiento del foco.
Controles WinForms:
- MaskedEdit: máscaras para la entrada de datos.
- Textbox: cuadro de texto con facilidad para autocompletar.
- Label: etiqueta de texto.
- Datagrid: tabla de datos. Permite enlazar información de una base de datos de manera dinámica.
- TreeView: estructura tipo árbol.
Controles contenedores:
- Pueden contener a otros controles a su vez.
- Heredan de ContainerControl.
- Tienen acceso directo a los controles de primer nivel unicamente (acceso recursivo).
- Ejemplo: Form, Panel, GroupBox.
Menús de un Form.
- MenuStrip: es un contenedor de otros objetos: ToolStripMenuItem, ToolStripComboBox, ToolStripSeparator, ToolStripTextBox.
- ContextMenuStrip: menú contextual (botón derecho del ratón). Se puede componer de igual manera que el MenuStrip.
- MergeAction/MergeIndex del ToolStripItem controlan la forma como se mezclarán las opciones del menú de dos ventanas.
Snaplines: líneas imaginarias que el diseñador de formularios muestra para ayudar con el diseño de los formularios.
Document Outline: permite visualizar la jerarquía de componentes del formulario.
Layout Panels: controla la disposición de elementos sobre el formulario.
- TableLayoutPanel: ubica elementos al estilo tabla. Redimensionable.
- FlowLayoutPanel: los controles fluyen a medida que se van agregando.
Anchor: propiedad que permite ‘anclar’ a un componente a uno o varios bordes del formulario para modificar su presentación de acuerdo con el redimensionamiento de este último.
Dock: permite fijar un componente a uno de los bordes de la ventana para modificar su ubicación de acuerdo con el redimensionamiento de este último.
Controles ExtenderProviders: agregan nuevas propiedades a los componentes del formulario.
- ErrorProvider: asocia un error a un componente -> ícono que parpadea.
- HelpProvider: asocia una cadena de texto de ayuda a un componente -> presión de F1.
- ToolTip: asocia un tip a un componente que se muestra cuando tenga el puntero del ratón encima.
Propiedades dinámicas:
- Variables de configuración asociadas a la aplicación.
- Incluyen nombre, tipo de datos, alcance (usuario/aplicación) y valor.
- Se pueden relacionar (binding) con un componente.
Diálogos comúnes:
- Tipos:
- ColorDialog
- PrintDialog
- SaveDialog
- OpenDialog
- Permiten interactuar con el usuario para realizar acciones comúnes.
- Basados en el sistema operativo.
- Facilidad para el desarrollador: evita que deba desarrollarlos él mismo.
- Facilidad para el usuario: acostumbrado a las interfaces del OS.
Enlace a datos:
- El atributo DataSource define el orígen de una fuente de datos para un componente.
- El objeto BindingSource permite el enlace con fuentes de tres tipos.
- DataBase.
- WebService.
- Object: clase de negocio.
- Trabajan muy bien en conjunto con DataBindingNavigator y DataGridView.
- También es posible enlazar datos con ADO.NET.
ClickOnce: incorporado por .NET 2.0.
- Distribución de la aplicación.
- Instalación.
- Actualización.
- Versionado.
- Rollback de la instalación.
VN:F [1.8.5_1061]
Comment » | Desarrollo de software, Windows
September 27th, 2008 — 9:34pm
Aplicación web es un conjunto de páginas HTML transmitidas por HTTP.
ASP.NET es un framework/ambiente para el desarrollo de aplicaciones web de manera similar a las aplicaciones de escritorio.
IIS: FTP, SMTP, NNTP, HTTP/HTTPS.
HTML Forms -> <form></form>
Submit ->
Postback
Method: {post, get}
Web Form componente fundamental de ASP.NET. (
.aspx)
- Es una página en lenguaje de marcas.
- Indenpendencia del cliente.
- Permite utilizar cualquier lenguaje .NET.
- Permite desarrollar servicios web XML.
- Es compilado.
- Actualizado sin reiniciar.
Code Behind: asociados a las Web Forms con la implementación del comportamiento del lado del servidor. Se enrriquece con el aprovechamiento de Partial Class.
Archivos de configuración en XML.
- web.config: información común a toda la aplicación.
- machine.config: por servidor.
- global.asax: eventos a nivel aplicación: {Application_Start, Application_End, Session_Start, Session_End}
Controles de servidor HTML: componentes que se ejecutan del lado del servidor.
- Encapsulan parte de la interfaz de usuario.
- runat=”server”.
- Mantienen su estado (Viewstate): a nivel de control, página o aplicación.
- Atributos Id, Text.
El ViewState por defecto viene activo para formularios, puede activarse con la propiedad EnableViewState.
Controles de servidor Web: Web Controls.
- Sólo accesibles desde el servidor.
- No corresponden únicamente con los HTML.
- Utilizan un namespace XML diferente del por defecto.
Validadores: validan el contenido de campos del usuario:
- Validadores mas utilizados.
- RequiredFieldValidator.
- CompareValidator.
- RangeValidator.
- RegularExpressionValidator.
- CustomValidator.
- ValidationSummary.
- Page.IsValid -> verifica si se cumplieron todas las validaciones.
- No disponible en Init ni Load.
Controles de servidor: UI rica encapsulada.
Controles de usuario:
- Reutilización de código y componentes UI.
- Extensión .ascx.
- Escritos en HTML y código xxx.NET.
- <%@ Control Language=”xxx” %>
- Autocontenidos.
- Escritos en diversos lenguajes.
- Se deben registrar.
<%@Register TagPrefix=”MiPrefix” TagName=”MiEtiqueta” Src=”header.ascx” %>
- Para ser utilizados.
<MiPrefix:MiEtiqueta id=“MiId” runat=“server”> </MiPrefix:MiEtiqueta>
- Se convierten en un objeto.
Eventos de un Web Form:
- Evento en el cliente.
- Envío de mensaje.
- Procesamiento del mensaje.
- Ejecución del manejador adecuado.
- Envío de respuesta al cliente (Post Back).
Manejo de eventos:
- Cliente: en el componente se especifica su manejador: onClick=’botonClick’
- Servidor: un método Code Behind maneja el evento: protected void botonClick(object sender, EventArgs e).
Ciclo de vida de una página:
- Inicialización de objetos
- Carga View State
- Procesa datos del post
- Carga de la página
- Eventos Post Back
- Graba View State
- Render
- UnLoad
Autenticación de usuario:
- Windows.
- Formularios (personalizado).
- MS Passport.
Utiliza un ticket de autenticación -> cookie.
Mecanismos para
mantener el estado:
- Application state: global, accesible desde toda la aplicación. Objeto Application.
- Session state: limitado a la sesión del navegador. Objeto Session.
- View state: entre las solicitudes de la misma página (campos de formulario). Implementado mediante un campo oculto del formulario.
Master Pages: plantillas generales.
- Directiva @Master en lugar de @Page: <%@ Master Language=”C#” CodeFile=”MasterPage.master.cs” Inherits=”MasterPage” %>
Las páginas de contenido seleccionan su Master Page con el atributo MasterPageFile de la directiva @Page.
Skin: definiciones de formato y estilo para los controles de servidor. Archivos .skin.
Themes: paquetes de skins. Incluyen recursos: CSS, imágenes, etc. Carpeta APP_Themes.
Son configurables a nivel de máquina (Machine.config), aplicación (web.config) o página (@Page).
Enlace de datos: relaciona a un control que despliega datos con el objeto que administra su fuente.
- ObjectDataSource: control -> capa del negocio.
- SqlDataSource: control -> base de datos relacional.
- XmlDataSource: control -> fuente XML.
Controles visualizadores: DataGridView, DetailsView, FormView.
Compilación de sitios ASP.NET:
- La compilación se realiza de manera automática según es solicitada por request del cliente.
- Es posible realizar la pre-compilación del sitio con el comando Aspnet_compiler.exe para su distribución binaria.
VN:F [1.8.5_1061]
1 comment » | Desarrollo de software, Web
September 25th, 2008 — 11:25am
Aparentemente la versión actual de Kohana (2.2) aún no cuenta con soporte para transacciones en su clase Database.
Buscando entre los foros encontré una solución sencilla, rápida y elegante, sin embargo me preocupa que, a pesar de que utiliza la sintaxis de CodeIgniter, no vaya a ser compatible con la siguiente liberación de Kohana de la cual no encontré documentación.
Así que por ahora voy a establecer las transacciones de manera manual y -espero- compatible con las bases de datos y futuras liberaciones de Kohana.
Iniciar la transacción.
$this -> db -> query('SET AUTOCOMMIT=0');
$this -> db -> query('BEGIN');
Aceptar/ejecutar la transacción.
$this -> db -> query('COMMIT');
$this -> db -> query('SET AUTOCOMMIT=1');
Cancelar/devolver la transacción.
$this -> db -> query('ROLLBACK');
$this -> db -> query('SET AUTOCOMMIT=1');
Nota: para Microsoft SQL Server los comandos deberán ser BEGIN TRANSACTION, COMMIT TRANSACTION y ROLLBACK TRANSACTION. Las modificaciones al AUTOCOMMIT no son válidas para este motor de base de datos.
Enlaces:
VN:F [1.8.5_1061]
Comment » | Desarrollo de software, Móvil, Software, Web
September 24th, 2008 — 1:42pm
Con lo económicas que están hoy en día las cámaras digitales, es importante contar con un buen servicio de referencia de especificaciones técnicas que permita comparar las características de las candidatas para elegir la mejor opción.
Este servicio lo encontré con LetsGoDigital quienes permiten realizar la comparación de características técnicas entre cuatro cámaras digitales diferentes.
Por ejemplo, me permitió comparar a los modelos C713, C813 y M853 de Kodak contra el ya conocido DSC-S600 de Sony: ver reporte.
Enlace: LetsGoDigital comparación de cámaras.
VN:F [1.8.5_1061]
Comment » | Web
September 23rd, 2008 — 10:09pm
Ultimamente se han convertido en moda los virus que se transportan en las memorias USB. Esos molestos virus que no dejan a las personas abrir las unidades dándoles doble click desde la ventana de Equipo, crean un archivo autorun.ini para perpetrarse y ponen por allí un archivo .exe o un .com con su información virulenta, probablemente bajo \RECYLER como los últimos que he tenido la oportunidad de eliminar.
Lo bueno es que remover estos viruses es sencillo, el procedimiento acostumbra a limitarse a la eliminación de los archivos mencionados y listo. Lo malo es que algunos dejan modificaciones indeseadas en el registro. Uno de estos molestos cambios deja una imposibilidad crónica de ver los archivos ocultos a través del Explorer a pesar de que uno lo instruya para ello. Por suerte nuevamente, la solución a esta consecuencia del virus es muy sencilla.
- Abra regedit.exe.
- Navegue por las ramas del árbol de llaves a través de la siguiente ruta.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\Advanced\Folder\Hidden\SHOWALL
- Elija la llave CheckedValue haciendo doble click sobre ella.
- Asígnele el valor de 1.
- Cierre el regedit.exe y reinicie al sistema operativo.

Captura de regedit.exe modificando la llave necesaria
VN:F [1.8.5_1061]
Comment » | Software, Windows
September 22nd, 2008 — 9:01am

Alfabeto Griego
Tomado de Wikipedia.
VN:F [1.8.5_1061]
Comment » | Personal
September 22nd, 2008 — 12:49am
Dando una vuelta por Navegapolis encontré un artículo interesante acerca de los perfiles de tecnología mas solicitados en CarreerBuilder.
Según esto los lenguajes de programación mas apetecidos fueron en orden: Java, VB, Perl, C#, PHP, C++, Cobol y Ruby.

Lenguajes de programación mas solicitados
En cuanto a metodologías de trabajo ágiles, las mas solicitadas fueron XP y Scrum mientras que figuraron en muy bajas proporciones FDD y DSDM.

Metodologías ágiles mas solicitadas
Las proporciones serán similares en Colombia ?
Enlace: Los conocimientos que andan buscando las empresas TIC.
VN:F [1.8.5_1061]
Comment » | Desarrollo de software
September 21st, 2008 — 12:37am
Estos estudiosos del tema prueban si una buena diversidad de elementos cotidianos pasan o no la prueba de la licuadora. Se dejarán licuar ? Cómo le irá al iPhone 3G ?
Para su documentación, las pruebas se encuentran registradas en video y separadas en dos grupos: las pruebas que puedes realizar de manera segura en casa y las que no debes nunca intentar.
Enlace: Will it blend ?
VN:F [1.8.5_1061]
Comment » | Humor
September 21st, 2008 — 12:21am
Comment » | Humor