sábado, 8 de agosto de 2009

Search Engine Optimization (SEO)

Internet es la calle más transitada del mundo, pero el trafico en cada pagina depende principalmente del posicionamiento en los buscadores como Google. Al arte de colocarse en los primeros lugares de los listados se le conoce como Search Engine Optimization (SEO).


Google mantiene como secreto la mecánica de asignación de lugares, que además cambia de manera continúa. Es un proceso bastante errático, y los que logran colocarse en la primera pagina para la lista de búsqueda de un conjunto de palabras, tenderán a mantenerse ahí hagan lo que hagan, tengan el contenido que tengan, siempre y cuando Google no los vete, por razones también erráticas y misteriosas. Es decir, el SEO es un deporte extremo.


Referencias, recursos, y ejemplos

miércoles, 5 de agosto de 2009

Desarrollo con Microsoft

Recursos para desarrolladores:



http://www.microsoft.com/click/thrivedev/

http://www.msdnevents.com/thrivedev/

http://msdn.microsoft.com/en-us/rampup/default.aspx


viernes, 31 de julio de 2009

Eclipse C/C++ Development Toolkit (CDT)

C/C++ development with the Eclipse Platform

HOW TO: Use CDT and MinGW for Eclipse (i.e. develop C/C++ applications in windows)


Paso 1:


Bajar de mingw.org lo siguiente:

Paso 2:

Extraer los archivos al directorio c:\mingw\ y instalar mingw32-make-3.80.0-3.exe en c:\mingw\.

Paso 3:

Agregar c:\mingw\bin a la variable de ambiente de sistema Paths. Verificar con el comando gcc -v .



Paso 4:


Descargar Eclipse e instalarlo.

Paso 5:


Instalar C/C++ Development Toolkit (CDT) usando el menú de actualización Help-> Software Updates -> Find and Install -> Search for new Features to Install.

Paso 6:

Crear un proyecto nuevo file->new ->Managed Make C Project.

Paso 7:


Agregar el archivo main.cc con el siguiente código (para probar la instalación):

#include
#include
using namespace std;

int main()
{
string yourName;

cout << "Enter your name: ";
cin >> yourName;
cout << "Hello " + yourName << endl;
return 0;
}




GnuWin32

Win32 (MS Windows 95 / 98 / ME / NT / 2000 / XP / 2003 / Vista) ports de utilerías GNU o similares.

GnuWin32 esta compuesto por implementaciones nativas que no funcionan cuando se requiere un shell tipo unix. Hay que tener cuidado con los paths pues hay conflicto con mingw o cygwin

miércoles, 29 de julio de 2009

Control de versión

Los repositorios administrados de documentos son importantes en el trabajo en equipo cuando varios miembros deben trabajar de manera simultánea o coordinada sobre los mismos documentos, pero también es útil en el caso de lobos solitarios. Control de versión es el arte de administrar cambios. Es una herramienta crítica en el desarrollo de software.



Algunos sistemas de control de versión son administradores de software (Software Configuration Management). Estos sistemas están especí­ficamente diseñados para administrar árboles de código fuente y soportan el ciclo de vida de aplicaciones. Otros sistemas son repositorios generales de documentos.

Un repositorio de información para control de versión guarda un registro de los cambios hechos tanto a los datos como a la estructura misma de archivos. Un cliente puede no solo ver la última versión de los documentos guardados, sino también estados previos del sistema de archivos. Por ejemplo un cliente puede hacer consultas del tipo ¿Qué cambios se hicieron en un documento en la última semana?

El problema fundamental es por un lado ¿Cómo compartir información y coordinar modificaciones concurrentes a un grupo de documentos? Y complementariamente ¿Cómo recuperar estados anteriores de los documentos cuando una serie de cambios resultan inapropiados o se requieren variaciones de base común?

Un enfoque para evitar conflictos es reservar-modificar-cambiar (lock-modify-unlock). Este enfoque no siempre garantiza la integridad o coherencia de un sistema cuando se trabaja con múltiples documentos y serializa el trabajo innecesariamente cuando se pudiera hacer cambios independientes. Otro enfoque es copiar-modificar-integrar (copy-modify-merge). El repositorio puede asistir en el manejo de documentos y sus cambios, pero una persona necesita hacer el análisis de si un conjunto de cambios es valido y los miembros de un equipo deben mantener una buena comunicación.

En el caso particular del software algunas de las áreas que soporta un SCM son:



    • Administración de versiones múltiples, permitiendo a usuarios y desarrolladores reportas defectos y cambios con relación a versiones históricas.

    • Administración de equipos de desarrollo, permitiendo que varios programadores trabajen en un mismo archivo e integrando los cambios.

    • Auditorias de cambios.




Los sistemas de control de versión trabajan con dos elementos base: áreas de trabajo y repositorios. Las áreas de trabajo es donde se hacen cambios y el repositorio es el lugar donde se guardan los documentos de referencia que sincronizan el trabajo de todos y define el estado de la información. El repositorio guarda metadata que permite rastrear cambios y versiones.
El paradigma central de control de versión es Pedir/Aplicar (check out/commit). Todos los documentos se almacenan en el repositorio. El programador registra una copia en su área de trabajo y procede a aplicar cambios a su copia. Cuando los cambios son estables, se aplican al repositorio de acuerdo a polí­ticas de administración de cambios y resolución de conflictos.

Dos conceptos importantes en la administración de cambios son ramas (branches) y etiquetas (tags). La ramificación del código permite mantener el desarrollo del sistema y liberar versiones de acuerdo a plataformas, características y pruebas; O para pruebas de código experimental. Etiquetas son similares a ramas pero puntos de referencia en la misma línea de desarrollo, no a una variante del mismo.

El abuelito y punto de referencia de los sistemas de control de versión es CVS, referenciado a scripts escritos por Dick Grune y publicados en comp.sources.unix en diciembre de 1986.

Sistemas de control de versión:
CVS
Subversion
Perforce (p4)
BitKeeper
VOODOO Server
ClearCase
RCS (Revision Control System)

Herramientas gratuitas para UML

Existen herramientas gratuitas de buena caliadad para UML. Tanto Netbeans como Eclipse soportan esta funcionalidad con el ciclo completo de desarrollo desde generación de código hasta reingenieria. Esto, claro, si se quiere trabajar en Java. En .Net no he encontrado este grado de funcionalidad en herramientas Open Source. Una opción de bajo costo, relativo a RUP y similares, es Visual UML. Visual Paradigm tiene una edición limitada sin costo, Smart Development Environment Community Edition for Visual Studio.

UML, ejemplo sencillo sobre Modelado de un Proyecto Introducción a UML

Captura de pantalla para Pocket PC

Fann Software ofrece un utileria gartuita para captura de pantallas de Pocket PC Otra opción es Ilium Software Screen Capture, también gratis. HauteCapture es un programa comercial para Windows CE y Windows Mobile. Tiene la ventaja de que las imágenes se guardan directamente en la PC y tiene un modo continuo de captura para presentaciones. Requiere ActiveSync.