Mi Sistema Web
Blog

\\ Inicio

Ligas
 
30/12/2011 - Música, Mixes y Remixes - Nuevos lanzamientos de música

Blog
 
Por Admin (el 26/01/2012 @ 13:32:35, en Programación ASP 3.0, votado 5 veces)

Uno de los datos por los cuales podemos identificar a un usuario es mediante su ID de sesión. Una sesión se establece por el usuario cada vez que este utiliza un navegador nuevo para acceder a nuestra web. El valor del ID de sesión es asignado automáticamente por el servidor web.

Si queremos acceder al ID de sesión dentro de nuestro programa ASP tenemos que utilizar el objeto Session, en concreto el campo SessionID. Lo podemos visualizar de la siguiente forma:


Response.Write(Session.SessionID)

Hay que tener especial cuidado con este identificativo, que aunque nos puede servir para muchas cosas, podría repetirse en el tiempo. Ya que ante una eventual caída o reinicio del servidor web, este, puede volver a generar ID repetidos. Si bien, tiene una gran utilidad a la hora de saber como el usuario ha ido navegando por nuestro website.

 
Por Admin (el 26/01/2012 @ 13:04:03, en Programación ASP 3.0, votado 13 veces)
Lo primero que debemos de hacer es recoger la fecha del servidor. En este caso utilizamos la función Now() de ASP para que nos de la fecha actual del servidor.

Lo siguiente será el pasar esa fecha a una rutina Javascript. Para ello lo que hacemos es montar la rutina Javascript "al vuelo". Es decir, el código de la rutina Javascript que se ejecutará en el cliente llevará parte de código de servidor. El servidor antes de devolver la página al cliente tendrá ya una rutina pura y dura Javascript.

Veamos como quedaría:


 <script type="text/javascript">
// Recogemos la fecha del servidor.
var fecha = "<%=Now()%>";
// Pasamos la fecha a javascript
var fecha_js = new Date(fecha);
script>

El ejemplo de crear un reloj en javascript lo que hacía era poner un Timer que lanzaba cada segundo una función, la cual, solicitaba la fecha actualizada. Si hicieramos eso volveríamos a tener la fecha del cliente y no la del servidor. Es por ello que lo que tendremos que hacer es el control manual de la fecha, es decir, incrementar nosotros mismos la fecha, segundo a segundo.

Para incrementar la fecha lo primero que tenemos que hacer es obtener los segundos con getSeconds(), minutos con getMinutes() y hora del servidor con getHours().


var segundos = fecha_js.getSeconds();
var hora = fecha_js.getHours();
var minutos = fecha_js.getMinutes();

Y en la función que se ejecute cada segundo (mejor dicho, cada 1000 milésimas) deberemos de seguir el siguiente algoritmo:


segundos++;
if (segundos == 60) {
segundos = 0;
minutos++;
if (minutos == 60) {
minutos = 0;
hora++;
if (hora == 24) {
hora = 0;
}
}
}

Es sencillo. Si llegamos a 60 segundos es que ha pasado un minuto. Incrementamos el minuto y ponemos el segundero a 0. Cuando lleguemos a 60 minutos es que ha pasado una hora. Incrementamos la hora y ponemos el minutero a 0. Y por último, cuando lleguemos a 24 horas, ponemos estas a 0.

Lo último del script será poner los datos en un campo input de un formulario. Como siempre, con getElementById()


document.getElementById("hora").value = " " + hora + ":" + minutos + ":" + segundos;


Y volver a ejecutar la función de paso de un segundo:


window.setTimeout("mostrar()",1000);



Ya tenemos el reloj de nuestro servidor.

 
Por Admin (el 10/01/2012 @ 10:25:47, en HTML, votado 32 veces)
Lo que necesitamos hacer definir estos elementos como parte del documento y la única forma de lograrlo es con JavaScript, apoyado del famoso comentario condicionado <!--[if lt IE 9 ]>. Para esto, solo tenemos que colocar el siguiente código, dentro de la etiqueta <head>

Código :

 <!--[if lt IE 9]> <script type="text/javascript">    document.createElement("nav");    document.createElement("header");    document.createElement("footer");    document.createElement("section");    document.createElement("article");    document.createElement("aside");    document.createElement("hgroup"); </script> <![endif]-->

¿Qué hace este código Javascript por HTML5 en IE?


Este script crea soporte para las etiquetas <nav>, <header>, <footer>, <section>, <article>, <aside> (Que NO es para sidebars, es para contenidos relacionados de los articles) y <hgroup>. Las cuales ahora podrán ser renderizadas (por IE) en el Mark-up de nuestro sitio como cualquier navegador decente.

Seguimos teniendo otras limitaciones, podemos asegurar 2 cosas:
  • Cada sección de nuestro sitio estará en su lugar para los usuarios de IE.
  • Podremos beneficiarnos de las bondades SEO del Mark-up de HTML5 sin perder usuarios "vintage".
 
Por Admin (el 04/01/2012 @ 12:34:04, en SQL Server, votado 24 veces)
Veamos cómo optimizar el procedimiento almacenado con simples cambios en el código.

Incluir SET NOCOUNT ON:
Con cada
sentencia SELECT y DML, el servidor SQL devuelve un mensaje que indica el número de filas afectadas por esa declaración. Esta información es sobre todo útil para depurar el código, pero es inútil después de eso. Mediante el establecimiento de SET NOCOUNT ON, se puede desactivar la función de devolución de esta información adicional. Para los procedimientos almacenados que contienen varias declaraciones o contener Transact-SQL lazos, establecer SET NOCOUNT en ON puede proporcionar un aumento de rendimiento significativo, porque el tráfico de red se reduce considerablemente.

CREATE PROC dbo.ProcName
AS
SET
NOCOUNT ON;
--Procedure code here
SELECT column1 FROM dbo.TblTable1
-- Reset SET NOCOUNT to OFF
SET NOCOUNT OFF;
GO

Use el nombre de esquema con el nombre del objeto:
El nombre del objeto
está calificado si se utiliza con el nombre de esquema. Nombre de esquema debe ser utilizado con el nombre del procedimiento almacenado y con todos los objetos de referencia dentro del procedimiento almacenado. Esta ayuda directa en encontrar el plan de cumplimiento en lugar de buscar los objetos en el esquema de otras posibles antes de decidirse a utilizar un plan almacenado en caché, si está disponible. Este proceso de búsqueda y decidir un esquema de un objeto conduce a compilar el procedimiento almacenado de bloqueo y disminuye el rendimiento del procedimiento almacenado. Por lo tanto, siempre se refieren los objetos con nombre completo en el procedimiento almacenado como

SELECT * FROM dbo.MyTable -- Preferred method
-- Instead of
SELECT * FROM MyTable -- Avoid this method
--And finally call the stored procedure with qualified name like:
EXEC dbo.MyProc -- Preferred method
--Instead of
EXEC MyProc -- Avoid this method

No utilice el prefijo "sp_" en el nombre del procedimiento almacenado:
Si un nombre de procedimiento almacenado comienza con "sp_", a continuación, busca el servidor SQL por primera vez en la base de datos maestra y luego en la base de datos actual período de sesiones. Búsqueda en la base de datos principal causa sobrecarga adicional e incluso un mal resultado si otro procedimiento almacenado con el mismo nombre se encuentra en la base de datos maestra.

Use IF EXISTS (SELECT 1) en lugar de (SELECT *):
Para comprobar
la existencia de un registro de otra tabla, se utiliza la cláusula IF EXISTS. La cláusula IF EXISTS devuelve verdadero si se devuelve el valor de una declaración interna, ya sea un único valor "1" o todas las columnas de un registro o registros completos. La salida del comando interno no se utiliza. Por lo tanto, para reducir al mínimo los datos para el procesamiento y transferencia de la red, debemos utilizar "1" en la cláusula SELECT de una declaración interna, como se muestra a continuación:


IF EXISTS (SELECT 1 FROM sysobjects
WHERE name = 'MyTable' AND type = 'U')

Utilice el procedimiento almacenado sp_executesql en lugar de la instrucción EXECUTE:
El procedimiento almacenado sp_executesql admite parámetros. Por lo tanto, utilizando el procedimiento almacenado sp_executesql en lugar de la instrucción EXECUTE mejorar la reutilización de código. El plan de ejecución de una instrucción dinámica puede ser reutilizado sólo si todos y cada personaje, incluido el caso, el espacio, los comentarios y los parámetros, es el mismo para dos estados. Por ejemplo, si ejecuta el lote a continuación:


DECLARE @Query VARCHAR(100)
DECLARE @Age INT
SET
@Age = 25
SET @Query = 'SELECT * FROM dbo.tblPerson WHERE Age = ' + CONVERT(VARCHAR(3),@Age)
EXEC (@Query)

Si volvemos a ejecutar el lote anterior con un valor diferente edad @, entonces el plan de ejecución de sentencia SELECT creado por @ Edad = 25 no se pueden reutilizar. Sin embargo, si escribimos el lote de arriba como se indica a continuación,

DECLARE @Query NVARCHAR(100)
SET @Query = N'SELECT * FROM dbo.tblPerson WHERE Age = @Age'
EXECUTE sp_executesql @Query, N'@Age int', @Age = 25

el plan compilado de esta sentencia SELECT se puede reutilizar para diferentes valores del parámetro @ Edad. La reutilización del plan existente cumplimiento dará lugar a un mejor desempeño.

Trate de evitar el uso de cursores de SQL Server siempre que sea posible:
El cursor
utiliza una gran cantidad de recursos para la carga de procesamiento para mantener la posición del registro actual en un conjunto de registros y esto disminuye el rendimiento. Si tenemos que procesar los registros uno por uno en un bucle, entonces debemos utilizar la cláusula WHILE. Siempre que sea posible, se debe reemplazar el enfoque basado en cursor con SET enfoque. Debido a que el motor de SQL Server está diseñada y optimizada para llevar a cabo basado en conjuntos operación muy rápida. Una vez más, por favor, tenga en cuenta el cursor es también una especie de bucle while.

Mantenga la transacción lo más corta posible:
La duración de la transacción afecta el bloqueo y los interbloqueos. Bloqueo exclusivo no se libera hasta el final de la transacción. En el nivel superior de aislamiento, los bloqueos compartidos también son mayores con la transacción. Por lo tanto, las transacciones largas medios seguros durante más tiempo y cerraduras para las vueltas más tiempo en el bloqueo. En algunos casos, el bloqueo también se convierte en callejones sin salida. Por lo tanto, para una ejecución más rápida y menos bloqueo, la transacción debe ser lo más corto posible.

Utilice try-catch para el manejo de errores:
Antes de
códigos de SQL Server versión 2005 para el tratamiento de errores, hubo una gran porción de código en sí, porque una declaración de comprobación de errores fue escrito después de cada sentencia T-SQL. Más código siempre consume más recursos y tiempo. En SQL Server 2005, una manera sencilla se introduce una nueva con el mismo propósito. La sintaxis es la siguiente:


BEGIN TRY
--Your t-sql code goes here
END TRY
BEGIN CATCH
--Your error handling code goes here
END CATCH


 
Por Admin (el 04/01/2012 @ 08:30:31, en Programación ASP 3.0, votado 8 veces)
Siempre he tenido problemas con las fechas en asp y access.
he visto muchas formas de arreglarlo, por ejemplo separando dia-mes-año, pero hasta hace poco no había encontrado ninguna que funcionara SIEMPRE en CUALQUIER servidor, con cualquier versión de access.

el problema es al ingresar la fecha en access.
Access configura las fechas según la configuración regional de donde esta instalado.
ejemplo : access en español.
si le introduces la fecha 3/15/2003. esta fecha en español no existe, por lo tanto lo más logico sería que devuelva un error. Pero el access al ver que esta fecha no existe deduce que no hemos equivocado y la corige sin avisar en 15/03/2003.

por lo tanto funciona a veces bien (2 numero<12) pero a veces mal.

la solución a eso es usar un formato de fecha UNICO que el access no puede interpretar.
ese formato es AAAA/MM/DD.
si pasamos la fecha en ese formato nunca la podrá modificar.. si es correcta la ingresa en la base, y sino sale error.

para hacer eso aqui teneís un función en VBscript.

<%
Function FechaGenerica(fecha)
    If IsDate(fecha) = True Then
       DIM dteDay, dteMonth, dteYear
       dia = Day(fecha)
       mes = Month(fecha)
       ano = Year(fecha)
       FechaGenerica = ano & "/" & Right(Cstr(mes + 100),2) & "/" & Right(Cstr(dia + 100),2)
    Else
       FechaGenerica = Null
    End If
End Function
%>

Una última cosa. En sentencias SQL que actualizan bases Access, las fechas se pasan entre # #.
Por ejemplo: INSERT INTO tabla(fecha) VALUE(#"& var_fecha &"#)
 

© 2012 Derechos reservados. Mi Sistema Web
Hay  personas en linea

Palabras clave de busqueda
 


Titolo
¿Que lenguaje prefiere usar?

 ASP
 PHP
 ASP.NET
 JAVA


22/02/2012 @ 06:49:55 p.m.
Ejecutado en 2672 ms