miércoles, 28 de mayo de 2008

Humor - Una nueva etiqueta html

¿Estas cansado de programar en html? ¿Ves etiquetas html por todas partes? Tranquilo, con la nueva revisión de Html, y esta nueva etiqueta que van a incorporar, seguro que te relajas...

martes, 27 de mayo de 2008

La función isnull en Sql

La función isnull es una de las que más suelo utilizar a menudo. ¿Para que sirve? Para reemplazar los valores nulos por uno que nosotros digamos. Por ejemplo, vamos a imaginar que tenemos una tabla que se llama facturas y un campo que se llama valor. Y queremos una sencilla consulta que nos diga la suma de estas facturas. Aquí haríamos algo así:

select sum(valor) from facturas

Pero claro ¿y que ocurre si ese campo valor tiene nulos? Pues que tendremos problemas... pero para evitarlos tenemos el isnull. Lo que vamos a hacer es decirle que si el campo valor es nulo, lo reemplazaremos por un cero ¿como? así de facil

isnull(valor,0)

Es decir, le ponemos el nombre del campo y el valor por el que se van a reemplazar los nulos. Con esto, nuestra consulta quedaría:

select sum(isnull(valor,0)) from facturas

Lo bueno del isnull es que se puede emplear casi en cualquier sitio, como por ejemplo en la parte where de la consulta. Por ejemplo, ahora vamos a sacar las facturas que no tengan valor o sea cero:

select * where isnull(valor,0)=0

Así de sencillo. Con isnull podrás evitar el problemático uso de los nulos que tantos dolores de cabeza suelen producir.

lunes, 26 de mayo de 2008

Perl y la encriptación

"Perl: el único lenguaje cuyo código es prácticamente igual antes y después de someterlo a una encriptación RSA."

Y es que si alguna vez habeis trabajo con Perl, habréis comprobado lo sencillo que es hacer que tu código sea un infierno, algo similar a lo que nos muestra Obras de arte en Perl Ofuscado.

Lo más impresionante es que funciona (si queréis ver el resultado, o lo ejecutais con vuestro intérprete de Perl o pasaros por el enlace).

Via http://hanzcocchi.net/perl-y-la-encriptacion/

viernes, 23 de mayo de 2008

Diagrama general para la resolución de problemas

¿Tienes algún problema con tu programa? ¿Hay algo que no termina de funcionar? Pues aplica este sencillo diagrama y verás como todo parace verse de otro color...

miércoles, 21 de mayo de 2008

Devoler la intercalación de una base de datos de Sql Server

Alguna vez me ha ocurrido que he tenido problemas con alguna base de datos de que tiene una intercalación diferente de la que tengo en el servidor de Sql Server. El famoso collate da algún que otro dolor de cabeza, y al final, siempre intento que todas las bases de datos tengan Modern_Spanish_CI_AS para evitar problemas. Pero ¿como podemos saber con una consulta Sql la intercalación de una base de datos?. Utilizando la siguiente consulta vamos a ver la intercalación de la base de datos Northwind:

SELECT DATABASEPROPERTYEX('Northwind','Collation') AS Database_Default_Collation

Para sacar la intercalación de cualquier otra base de datos sólo necesitas cambiar Northwind por el nombre de la que te interese.

Más información sobre la intercalación en Msdn

domingo, 18 de mayo de 2008

Atajos de Windows


Conocer los tajos de Windows puede resultar muy útil, en especial cuando quieres trabajar más rápido. Aquí tenemos la lista completa de atajos con la tecla de Windows:

Win+M: Minimiza todas las pantallas y muestra el escritorio.
Win+F: Inicia una búsqueda con el buscador del sistema.
Win+L: Sale al inicio de Windows dejando abierta la sesión actual (cambio de usuario).
Win+U: Abre el administrador de utilidades.
Win+R: Ejecutar una aplicación o comando. (Inicio-> Ejecutar).
Win+E: Abre el explorador de Windows
Win+Pausa: Muestra las propiedades del sistema. (Clic derecho en Mi PC->Propiedades).

sábado, 17 de mayo de 2008

Saber la versión de un archivo exe y otras cuestiones

Estaba haciendo un pequeño ejemplito de un progrmaa actualizador en red local cuando de pronto ¿como puedo saber la versión de exe cualquiera?. Como tantas veces, el Framework me proporciona una serie de clases que siempre vienen bien; esta vez, la solcuión es FileVersionInfo. Con unas sencillas propiedades, podemos conocer la información de un fichero (no solo un exe, sino también un dll por ejemplo) que obtenemos al hacer click con el botón derecho del ratón y seleccionar propiedades:

FileDescription - Recupera la descripción del archivo especificado.
FileVersion - Recupera el número de versión del archivo especificado.
InternalName - Recupera el nombre interno del archivo especificado. (No todos los archivos tienen un nombre interno asociado.)
OriginalFilename - Recupera el nombre original del archivo especificado cuando se creó por primera vez.
ProductName - Recupera el nombre de producto del archivo especificado. Éste es el nombre del producto con el que se distribuye el archivo.
ProductVersion - Recupera la versión del producto del archivo especificado.
Language - Recupera el identificador de idioma de Microsoft (como una cadena) del recurso de versión correspondiente al archivo especificado.
Comments - Comentarios del fichero
FileMajorPart - Recupera el número major de la versión
FileMinorPart - Recupera el número minor de la versión
FileBuildPart - Recupera el número build de la versión

Y como siempre en estos casos, lo mejor es tener un pequeño ejemplo para probarlo:

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim cadena As String
Dim FileProperties As FileVersionInfo = FileVersionInfo.GetVersionInfo("c:\windows\notepad.exe")

cadena = "FileDescription: " & FileProperties.FileDescription & ControlChars.CrLf
cadena = cadena & "FileVersion: " & FileProperties.FileVersion & ControlChars.CrLf
cadena = cadena & "InternalName: " & FileProperties.InternalName & ControlChars.CrLf
cadena = cadena & "OriginalFilename: " & FileProperties.OriginalFilename & ControlChars.CrLf
cadena = cadena & "ProductName: " & FileProperties.ProductName & ControlChars.CrLf
cadena = cadena & "ProductVersion: " & FileProperties.ProductVersion & ControlChars.CrLf
cadena = cadena & "Language: " & FileProperties.Language & ControlChars.CrLf
cadena = cadena & "Comments: " & FileProperties.Comments & ControlChars.CrLf
cadena = cadena & "FileMajorPart: " & FileProperties.FileMajorPart & ControlChars.CrLf
cadena = cadena & "FileMinorPart: " & FileProperties.FileMinorPart & ControlChars.CrLf
cadena = cadena & "FileBuildPart: " & FileProperties.FileBuildPart & ControlChars.CrLf

MessageBox.Show(cadena)

End Sub
End Class

viernes, 16 de mayo de 2008

Ver los logs de una base de datos en Sql Server

¿Tienes algún problema con tu base de datos y necesitas revisar los logs? Pues lo tienes sencillo. Ejecuta:

SELECT * FROM ::fn_dblog(NULL, NULL)

y te aparecerán todos los logs de tu base de datos. Eso sí, seguir los logs ya no será tan sencillo como esto ;-)

jueves, 15 de mayo de 2008

Borland C++ Builder 1.0


Mucho ha llovido desde la aparición de esta versión 1.0 de Borland C++ Builder. Sin embargo, con un poco de nostalgia, podemos descargar esta versión completa desde la página de bcb-tools, aunque sólo sea para recordar viejos tiempos, aunque, quien sabe, quizás tengas por ahí algún que otro trocito de código que desees volver a compilar.

miércoles, 14 de mayo de 2008

Fecha juliana en Visual Basic .Net

¿Que es la fecha Juliana? Pues la fecha juliana es el número de dia del año. Por ejemplo, el 1 de enero seria el dia 1, el 1 de Febrero el 32... y así sucesivamente (para más información podéis ir al enlace de la Wikipedia para concer más acerca de la fecha Juliana).

En Visual Basic .Net su cálculo es muy sencillo (en el ejemplo mostramos la fecha juliana de la fecha actual que tengamos en el sistema):

Public Class Form1

Public Function DevolverDiaJuliano(ByVal dtFecha As Date) As Integer

Dim dtPrimeroEnero As Date
Dim dtDiaActual As Date

dtPrimeroEnero = DateSerial(Year(dtFecha), 1, 1)
dtDiaActual = dtFecha
Return CInt(DateDiff(DateInterval.Day, dtPrimeroEnero, dtDiaActual)) + 1

End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

MessageBox.Show(DevolverDiaJuliano(Now.Date))

End Sub
End Class


Enlaces: Wikipedia

martes, 13 de mayo de 2008

Reducir los logs de una base de datos en Sql Server

Comienzas a trabajar con una base de datos y claro, crece, crece, crece... y cuando te quieres dar cuenta, los logs ocupan varios gigas en tu disco duro. Y claro, ¿hay alguna manera de reducir esos logs y recuperar ese espacio en disco? La respuesta es ejecutar la siguiente consulta sql:

CHECKPOINT
BACKUP LOG NORTHWIND WITH TRUNCATE_ONLY
DBCC SHRINKDATABASE (NORTHWIND, TRUNCATEONLY )

Lo que hacemos primero es un checkpoint, es decir, terminamos todo lo que tengamos pendiente para no dejar información colgada. Luego, ejecutamos el backup y el dbcc shrinkdatabase, que será el encargado de reducir esos logs y recuperar esos gigas de tu disco duro.

lunes, 12 de mayo de 2008

Tutorial de Visual Basic 6


Aunque Visual Basic 6 ya ha pasado a la historia, siempre viene bien tener a mano algún manual para que podamos lidiar con las miles y miles de líneas de código que existen en este lenguaje. Y es que todavía me sigo encontrando con muchísimo código escrito en Visual Basic 6, e incluso, con muchas personas que se siguen negando a utilizar .Net y prefieren escribir su código en Visual Basic 6. En este tutorial se tocan prácticamente todos los temas necesarios, algo bastante imprescindible para lidiar con este lenguaje:

I.- ELEMENTOS BASICOS

1.- INTRODUCCION
2.- MODELO DE SOLUCION
3.- VARIABLES
4.- DECLARACION Y TIPOS DE DATOS
5.- OPERADORES ARITMETICOS
6.- JERARQUIA DE OPERACIONES
7.- CONCEPTOS BASICOS DE OOP
8.- AMBIENTE VISUAL DE DESARROLLO
9.- FORM1, ACTIVA O PRINCIPAL
10.- PROGRAMAS, FORMAS Y COMPONENTES
11.- CONTROL LABEL
12.- CONTROL TEXTBOX
13.- CONTROL COMMANDBUTTON
14.- PRESENTACION Y FORMATO DE DATOS
15.- CONTROL COMBOBOX
16.- CONTROLES DE AGRUPAMIENTO
17.- CONTROL FRAME
18.- VENTANAS EN VISUAL BASIC
19.- CONTROLES GRAFICOS PICTUREBOX IMAGE
20.- CONTROL ANIMATION

II.- INSTRUCCIONES DE CONTROL DE PROGRAMA

1.- INTRODUCCION
2.- INSTRUCCIONES DE CONTROL DE PROGRAMA
3.- INSTRUCCIONES CONDICIONALES
4.- CONDICIONES SIMPLES
5.- OPERADORES RELACIONALES
6.- INSTRUCCION IF
7.- CONDICIONES COMPUESTAS
8.- INSTRUCCION SELECT CASE
9.- COMPONENTES VISUALES DE SELECCION Y DESICION
10.- COMPONENTE CHECKBOX
11.- COMPONENTE OPTIONBUTTON
12.- MENUS VISUALES
13.- EDITOR DE MENUS
14.- POPUPMENU
15.- CICLO FOR
16.- CICLO DO WHILE LOOP
17.- CICLO DO LOOP WHILE
18.- CONCLUSIONES ACERCA DE CICLOS
19.- ETIQUETAS Y GOTO

III.- ARREGLOS

1.- INTRODUCCION
2.- ARREGLOS TRADICIONALES
3.- ARREGLOS TIPO LISTAS
4.- SORTEOS U ORDENAMIENTOS
5.- ARREGLOS TIPO TABLA
6.- ARREGLOS DINAMICOS
7.- CONTROLES VISUALES TIPO ARREGLO
8.- CONTROL MSFLEXGRID

IV.- INTRODUCCION A LAS BASES DE DATOS

1.- INTRODUCCION
2.- MODELOS DE ALMACENAMIENTO DE DATOS
3.- TABLAS
4.- TABLAS(CONTINUACION)
5.- VISUAL DATA MANAGER
6.- APLICACIONES CON TABLAS
7.- APLICACIONES POR RENGLON
8.- APLICACIONES POR TABLA
9.- PROCESOS BASICOS
10.- OPERACIONES CON CAMPOS
11.- BUSQUEDAS
12.- FILTROS
13.- GRAFICOS O IMAGENES
14.- IMPRESION

V.- MODELO RELACIONAL DE DATOS

1.- INTRODUCCION
2.- TIPOS DE RELACIONES
3.- MODELO RELACIONAL Y VDM
4.- APLICACIONES CON TABLA DE RELACION

Eso sí, si eres nuevo en este mundillo y quieres aprender un lenguaje te recomiendo que comiences con Visual basic .Net y no leas nada de este curso. No tiene sentido comenzar con algo viejo ¿no?

domingo, 11 de mayo de 2008

Top lenguajes de programación


Via CyberHades me encuentro con un post sobre los mejores lenguajes de programación, a raiz de un artículo en barrapunto y el popular ranking de lenguajes de programación de tiobe.

La primera posición la ocupa Java, seguido de C (que experimenta un pequeño bajón) y en tercera posición Visual Basic, con la mayor subida que el resto de lenguajes. Poco a poco Visual Basic va subiendo en el ranking, y ya adelanta a lenguajes como PHP o C++. ¿Llegará algún día a ser el número uno?


Enlaces:

Ranking de lenguajes de programación de tiobe

viernes, 9 de mayo de 2008

Consulta Sql para conocer las tablas y vistas de una base de datos

En Sql Server tenemos una sencilla consulta que nos devolverá las tablas y vistas de una base de datos:

SELECT * from Information_Schema.Tables

De aquí nos interesa el campo table_name (nombre de la tabla) y table_type (nos dice si es una tabla o una vista). Por tanto, filtrar por tablas o vistas es bastante sencillo (con el campo table_type).

Para saber si existe una tabla en la base de datos (también nos sirve para las vistas) podemos utilizar la siguiente consulta (vamos a consultar si en Northwind existe la tabla 'Customers'):

SELECT * from Information_Schema.Tables where table_name='Customers'

Si esta consulta nos devuelve registros es que existe la tabla (o vista) y si nos devuelve vacío, es que no existe.

jueves, 8 de mayo de 2008

Que ocurre si borramos la carpeta de Windows

¿Alguna vez te has preguntado que ocurriría si borrásemos la carpeta de Windows? Pues aquí puedes ver el resultado de hacerlo (en una máquina virtual):


Killing windows XP from Polimalo on Vimeo.

miércoles, 7 de mayo de 2008

Top 6 extensiones para Internet Explorer


Si eres desarrollador Web y tienes que utilizar Internet Explorer puede que te vengan muy bien algunas de estas extensiones:

- Internet Explorer Developer Toolbar
- Web Accesibility Toolbar
- HttpWatch
- WebCollect
- Fiddler2
- Web Development Helper

De todas ellas he utilizado Internet Explorer Developer Toolbar, y la verdad, ahorra mucho esfuerzo y trabajo.

Enlace: Top 6 Internet Explorer Extensions Addons Web Developers

martes, 6 de mayo de 2008

Google como diccionario


Google es mucho más que un buscador. También se puede utilizar como diccionario. ¿Como? Escribiendo la palbara clave "define" seguido de dos puntos y lo que queremos buscar. Por ejemplo, si queremos buscar la definición de informártica escribiremos define: informática.

lunes, 5 de mayo de 2008

Linux, el sistema operativo de la Fórmula 1


Linux es el sistema operatido de la Fórmula 1. ¿Por que? Pues más allá de los típicos problemas de Windows (cuelgues y problemas diversos) la cuestión se torna más sencilla: es el sistema operativo con el que están acostumbrados los ingenieros a trabajar: “es mucho más fácil moverse, compilar el código fuente, modificar el código y recompilarlo. Esto es lo que atrae a la gente en este tipo de escenarios”.

McLaren utiliza el análisis de dinámica de fluidos computacional (CFD) que se ejecuta en Linux sobre SGI Altix, ordenadores de alto rendimiento para simular y predecir el comportamiento del coche.

El equipo de carreras de Renault, por ejemplo, empezó a experimentar con clusters Linux en 1998, y han utilizado los sistemas de IBM Linux para ejecutar la base de datos críticas y las aplicaciones de telemetría desde el año 2001.

Incluso es una cuestión monetaria: según Christophe Verdier, del Renault F1 Team, al utilizar Linux les permitió reducir el tiempo de análisis en un 90%. Por tanto, los factores en los que Linux aparece como claro vencedor son coste, rendimiento y flexibilidad.

Fuentes:
xkod.com
linux.adslzone.net
lwn.net
meneame.net

domingo, 4 de mayo de 2008

Descarga Windows Me de forma legal


Según aparece en la bitácora de Javier Guiterrez Chamorro es posible descargar el Windows Millenium, una de las peores versiones de Windows junto con el Windows Vista.

Todavía sigo viendo muy de vez en cuando Windows Millenium, aunque es cierto que aparecen más Windows 98 que Millenium. Peronsalmente no me duró más de 3 meses, antes de que lo reemplazase por un Windows 2000 que me funcionó a las mil maravillas (hasta que el ordenador murió por viejito).