viernes, 15 de febrero de 2013
VS & Nuget
NuGet es un add-in para Visual Studio 2010 y es un gestor de paquetes que permite instalar y configurar librerias y herramientas para utilizarlas dentro de nuestros proyecto
Información :
http://eduardosojo.com/2011/07/19/usuando-nuget-que-es-nuget/
http://docs.nuget.org/docs/start-here/using-the-package-manager-console
Cuando hay problemas que los tendremos
http://geeks.ms/blogs/fernandezja/archive/2012/05/22/vs2010-sp1-nuget-actualizaci-243-n-manual-de-nuget-copiando-y-pegando-archivos-cuando-tenemos-problemas-en-la-instalaci-243-n-actualizaci-243-n-en-vs2010-sp1.aspx
Muy útil para descargar el Sandcastle
La primera versión me instale el Sandcastle con el NutGet pero he querido hacer lo mismo en las máquinas de mis compañeros y fue imposible .. claro esto fue 3 años después
La buena noticia es que hay un msi
https://github.com/EWSoftware/SHFB/releases
1 el SandcastleHelpFileBuilder.msi
2 SHFBVisualStudioPackage.vsix
documentación : http://ewsoftware.github.io/SHFB/html/8c0c97d0-c968-4c15-9fe9-e8f3a443c50a.htm
Sinceramente, soy partidaria de hacer documentación, sobre todo para luego funcione el IntelliSense. Pero para que será útil, hay que hacerla según se hace el código. Pero si tu jefe quiere documentación para entregar esto es una buena solución
TFS - Team Foundation Sidekicks
viernes, 18 de enero de 2013
Super control de usuario
Hoy ha pasado una cosa curiosa, un compi había creado una control de usuario que en el load hacia una consulta a la base de datos. Hasta aquí todo parece normal. Lo que ya no lo era tanto era si:
- Compilabas el proyecto
- En el Designer del formulario que lo contenía, en modo diseño se ejecutaba la consulta!!!
.png)
lunes, 14 de enero de 2013
DateTime.Parse & Marzo
Resulta que en una aplicación
fecha = DateTime.Parse("20-JAN-09") funciona
fecha = DateTime.Parse("20-MAR-09") falla No se puede reconocer la cadena como valor DateTime válido.
El problema parece ser en que no sabe si “MAR” es Marzo o Martes y da un error que no puede convertir la fecha, puesto que nuestro sistema operativo está en español la referencia cultural que está usando es “es”
Solución , usar DateTime.Parse con referencia cultural o DateTime.ParseExact (incluye el formato)
https://connect.microsoft.com/VisualStudio/feedback/details/729674/datetime-parse-fails-to-parse-correct-dates-or-accepts-incorrect-dates
Por si aun tienes curiosidad
Dim fecha As DateTime
fecha = DateTime.Parse("20-JAN-09")
' falla ---> fecha = DateTime.Parse("20-MAR-09")
fecha = DateTime.ParseExact("20-MAR-09", "dd-MMM-yy", System.Globalization.CultureInfo.GetCultureInfo("en-US"), System.Globalization.DateTimeStyles.None)
fecha = DateTime.Parse("20-MAR-09", System.Globalization.CultureInfo.GetCultureInfo("en"), System.Globalization.DateTimeStyles.None)
fecha = DateTime.Parse("20-MAR-09", System.Globalization.CultureInfo.GetCultureInfo("en"))
fecha = DateTime.Parse("20-JAN-09", System.Globalization.CultureInfo.GetCultureInfo("es"))
' falla fecha = DateTime.Parse("20-MAR-09", System.Globalization.CultureInfo.GetCultureInfo("es"))
fecha = DateTime.ParseExact("20-MAR-09", "dd-MMM-yy", System.Globalization.CultureInfo.GetCultureInfo("es"), System.Globalization.DateTimeStyles.None)
fecha = DateTime.Parse("20-APR-09", System.Globalization.CultureInfo.GetCultureInfo("es"))
'falla --> fecha = DateTime.Parse("20-AVR.-09", System.Globalization.CultureInfo.GetCultureInfo("es"))
fecha = DateTime.Parse("20-APR-09", System.Globalization.CultureInfo.GetCultureInfo("fr"))
Catch ex As Exception
End Try
Me sorprendió que
fecha = DateTime.Parse("20-APR-09", System.Globalization.CultureInfo.GetCultureInfo("es"))
Funciona!!!!
El formato no es español, pero según la documentación“Este método intenta analizar s completamente para evitar que se produzca FormatException. Si es posible, omite los datos no reconocidos y rellena la información que falta acerca de mes, día y año con la hora actual. Si s contiene sólo una fecha y ninguna hora, este método supone que es medianoche (00:00). Se omiten los caracteres de espacio en blanco iniciales, centrales o finales que pueda haber en s. La fecha y la hora pueden ir entre corchetes con un par de caracteres NUMBER SIGN iniciales y finales ('#', U+0023) y pueden terminar con uno o más caracteres NULL (U+0000).”
Para evitar el FormatException, termina usando la InvariantCulture (que está en inglés) y por eso funciona
viernes, 11 de enero de 2013
sys.syscolumns o sys.columns parece lo mismo pero no lo es
Hoy he tenido un problema con sys.syscolumns, la primera vez que lo vi pensaba que era sys.columns (parecido pero no es lo mismo)
La documentación del msdn deja mucho que desear para el sys.syscolumns
xtype - tinyint - Physical storage type from sys.types.
type - tinyint - Physical storage type from sys.types
Con esa explicación parece que debería tener el mismo valor , pero no es cierto en la columna type del sys.syscolumns hay valores como 0 o 39 que no están en el sys.types, en realidad esta en el sys.systypes (otra vez parece lo mismo pero no lo és)
Después de dar unas vueltas encontré las diferencias y cual tenia que usar
Catalog View es lo que se debería usar
En sys.syscolumns (Transact-SQL)
Tenia la siguiente nota :
"This SQL Server 2000 system table is included as a view for backward compatibility. We recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see Mapping SQL Server 2000 System Tables to SQL Server 2005 System Views. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature."
viernes, 4 de enero de 2013
Documentar si o si
Para el que no sepa que es la documentación del código y para que vale, lee esto: MSDN
Depende de la versión del visual studio que tengas puede que tengas que instalar algún complemento para la documentación. La buena noticia es que las nuevas versiones del visual ya tiene la documentación para VB (antes solo estaba para C#)
Hasta el framework 3.5, prueba el NDoc, yo lo he usado y es fantástico. Super fácil de instalar y probar, con un montón de opciones para configurar.
También está disponible el Sandcastel (es válido para framework 4.0)
- Ayuda
- Instalarlo
Es útil, pero como todo si no lo has usado nunca vas a tardar un poco en verlo, para mi un pega es que es lento. Si no haces documentación empieza a escribirla según haces el código y prueba como sale la documentación para ver que sirve para algo y lo que puedes mejorar en tus comentarios.
jueves, 27 de diciembre de 2012
JS buenas prácticas
Que cosas hacer para mejorar nuestro código js
1. Comentarios de código
Los programadores tenemos tendencia a comentar poco el código, pero si lo haces en JS, una recomendación comenta siempre, en bloque.Puedes comentar una líena
// comentario de una línea
O un bloque
/* comentario de varias
líneas */
Hace algunos años, esto me dio un problema. El código estaba bien, sin problemas, pero ie6 en algunas ocasiones me daba un error “Error cargar” y por supuesto no cargaba la página. Lo recuerdo como una locura de error. El problema fue que había comentado el código con //, estaba dentro de un portlet (es equivalente a un modulo dotnetnuke), no era dueño de todos el contenido de la pagina, así que cuando la pagina se renderizaba, había parte quedaban comentadas. Esto producía un error de js.
2. Declara variables con “var”
Necesario declarar las variables en Javascript con el comando var para evitar así que sean inmediatamente globales.3. Separa el código
Intenta que el código este en js separados de tus asp, o jps.Es mucho más fácil de mantener. Si tienes que llamar a funciones, ponlo siempre en la parte final del fichero, para que se ejecuten una vez cargada la pagina.
4. Nada document.write
Esto está obseleto…document.write("hello world");Usa el DOM & innserHTML
document.getElementById('hello').innerHTML('hello world');