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');

5. Un Buena práctica 

Que tus ficheros js siempre comiencen con ; si haces esto, te aseguras que si alguno de los ficheros js cargados previamente no está bien formateado no te afecten a ti.

6. getElementById

Es mejor usar getElementById que mejor que getElementsByName

domingo, 16 de diciembre de 2012

Ajax . Net & Update panel


Update panel

ClientScript.RegisterStartupScript, pero si queremos mostrar un alert en un control dentro de un update panel, esto no funciona, hay que usar ScriptManager.RegisterStartupScript

When you use Update Panel dont use ClientScript.RegisterStartupScript
Use ScriptManager.RegisterStartupScript

Ver más http://forums.asp.net/t/1229586.aspx/1

miércoles, 12 de diciembre de 2012

Insertar/update fichero en BBDD

En SQL server para insertar un campo varbinary OPENROWSET
Documentación http://msdn.microsoft.com/es-es/library/ms190312.aspx

Puede no funcionar por problemas de permisos ( hay que ver como hacer que el sqlServer tenga acceso a la carpeta, sobre todo cuando el usuario de conexion no es un usuario windows)

When you use OPENROWSET, it is important to understand how SQL Server handles impersonation. For information about security considerations, see Import Bulk Data by Using BULK INSERT or OPENROWSET(BULK...) (SQL Server).

He compartido la carpeta \\mimaquina\SQLFICHERO en mi maquina dando permisos de lectura a todo el mundo-- >y asi funciona


INSERT INTO [dbo].[misficheros]
([id]
,[nombre]
,[adjunto])
VALUES
(9999999
,'Prueba'
,(SELECT * FROM OPENROWSET(BULK N'\\mimaquina\SQLFICHERO\untitled.png', SINGLE_BLOB ) as fichero ) )

Para leer es una historia, aun peor

Hay que usar la utilidad BCP

Información:
http://msdn.microsoft.com/es-es/library/ms162802.aspx
Ejemplo, el mejor con diferencia:
www.codeproject.com

Lo primero que tenemos que hacer es activarlo, (por defecto no está activo)
EXEC sp_configure 'show advanced options', 1; -- esta ya estaba en 1
GO
RECONFIGURE;
GO
EXEC sp_configure 'xp_cmdshell',1
GO
RECONFIGURE
La ruta del disco duro donde queremos guárdalo tiene que ser accesible.
En mi maquina he compartido la carpeta \\mimaquina\\SQLFICHERO dando permisos de lectura y escritura a todo el mundo

Declare @sql varchar(500)
set @sql = 'BCP "select adjunto from [dbo].[misficheros]where [id] =9999999" QUERYOUT \\mimaquina\SQLFICHERO\mio.png -T -f
C:\blob\testblob.fmt -S '
EXEC xp_CmdShell @sql
GO

C:\blob\testblob.fmt es un archivo de formato

En informix era mucho más facil porque tenemos el :

LOTOFILE y con FILETOBLOB



En realidad la manera más facil de todas es por código, sobre todo para un programador
Escribir

Leer





lunes, 26 de noviembre de 2012

Extraño error ( falla en debug no en release)

Tenía una aplicación que cuando compilaba en debug me daba el siguiente error

SGEN : error : No se puede cargar el archivo o ensamblado 'file:///C:\xxx\xxxxx\xxxx.dll' ni una de sus dependencias. Operación no admitida. (Excepción de HRESULT: 0x80131515)


Lo curioso es que en Release funcionaba...

En internet encontré algo pero que no me sirvió, pero lo dejo por si alguno le pasaba temas de seguridad en la librería

En mi caso era por un problema con la configuración avanzada. Con esta daba error


Con está funciona!!!!

miércoles, 3 de octubre de 2012

miércoles, 26 de septiembre de 2012

Agregar Numero de Fila en RowHeader del DatagridView

Agregar Numero de Fila en RowHeader del DatagridView


Super bien y funciona. Origen

Private Sub MiGrid_RowPostPaint(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowPostPaintEventArgs) Handles MiGrid.RowPostPaint

 Dim grid As DataGridView = DirectCast(sender, DataGridView)
        Dim strRowNumber As String = (e.RowIndex + 1).ToString
        While strRowNumber.Length < grid.RowCount.ToString.Length
            strRowNumber = "0" & strRowNumber
        End While
        Dim size As SizeF = e.Graphics.MeasureString(strRowNumber, Me.Font)
        If grid.RowHeadersWidth < CInt(size.Width + 20) Then
            grid.RowHeadersWidth = CInt(size.Width + 20)
        End If
        Dim bt As Brush = SystemBrushes.ControlText
        e.Graphics.DrawString(strRowNumber, Me.Font, bt, e.RowBounds.Location.X + 15, e.RowBounds.Location.Y + ((e.RowBounds.Height - size.Height) / 2))

    End Sub

martes, 25 de septiembre de 2012

Buscar dentro de archivos

Cuando teniamos el XP, para buscar un texto dentro de los archivos, habia una opcion bien visible. El vista y 7, aun está pero no esta a la vista. La solución:

http://geeks.ms/blogs/vista-tecnica/archive/2007/04/30/b-250-squedas-en-windows-vista-i-de-iv-por-alex-refojo.aspx

martes, 11 de septiembre de 2012

Se ha superado el número máximo de advertencias.

He heredado un código que en la ventana de errores sale el mensaje “Se ha superado el número máximo de advertencias.” ( aun me sorprende lo poco se preocupa la gente por tener un código sin advertencias de compilación)
 Casi todos las advertencias son por :
Advertencia    El tipo de parámetro ‘xxx’ no es conforme a CLS.
Hay una forma de evitar estas advertencias al compilar sin tocar nada de código  y consiste en poner en el Assembly. Info 


<Assembly: CLSCompliant(FALSE)>

 


viernes, 31 de agosto de 2012

Adiós a mi clase ComboBase.



Siempre suelo crear una clase para tener una lista de objeto de clave-valor (por lo general ambos de tipo string), por lo general para un control ComboBox. Esto se ha terminado tenemos el  NameValueCollection

martes, 21 de agosto de 2012


¿Tienes 1 min? Cuantas veces alguien en el trabajo nos hizo esa pregunta… ahora tengo unos cuantos libres (y nadie a quien ayudar) así que voy a probar a recopilar la información que encuentro por la red, principalmente de programación (.Net & Java)