Este mes de diciembre me toca impartir otro curso de Introducción a Asp.net 4 y SQL Server 2008 en la Facultad de Informática de la Universidad de Murcia .
El curso es presencial, dura 30 horas y está dividido en dos partes 15 horas de SQL Server y 15 horas de Asp.net y se impartirá en la Facultad por las tardes de Lunes a Jueves del 3 de Diciembre al 19 de Diciembre en horario de 16.30h a 19.30h siendo convalidable por 3 créditos de Libre configuración.
Este curso surge por la escasez de profesionales de asp.net y Sql Server en Murcia dado que no se imparte esta materia en la facultad y está orientado a estudiantes y titulados con el perfil de diseñadores o programadores que quieran iniciarse en SQL Server y la plataforma .NET para desarrollo web.
El plazo de inscripción acaba el Vienes 30 de Noviembre.
Aqui podéis ver el temario resumido con los contenidos del curso:
Parte 1 Sql Server 2008
1 Vista general del servidor SQL
2 Administración de ficheros de la base de datos
3 Gestión de seguridad
4 Trabajo con tablas
5 Mantenimiento de Bases de datos
Parte 2 ASP.NET 4
1 Introduccion a Asp.net 4 y Visual Studio 2010.
2 WebForms y navegacion por nuestra web.
3 Controles de validación y captura de errores
4 Controles de usuario
5 Acceso a datos: Databinding y ADO.net
6 Gestión del estado
7 AJAX
Tras el curso se expedirá a todos los alumnos un diploma de formación por parte de la Facultad de informática.
Abajo os dejo el enlace al PDF con el temario detallado y el enlace a la matrícula del curso en CASIOPEA.
Cualquier duda podeís escribirme por email a sergiopangea@hotmail.com o contactarme por el formulario de contacto de este blog.
Saludos
Muchos desarolladores y amigos me preguntan como acelerar su pc pues todos sabemos que con el paso del tiempo nuestro sistema operativo, si no somos cuidadosos, puede ir cada vez mas lento conforme vamos instalando programas hasta que llega un momento que se ralentiza demasiado y tenemos que limpiarlo si no queremos formatear como ultimo recurso porque tardamos más en reinstalar todo de nuevo.
He ido recolectando una serie de trucos y herramientas gratuitas que espero os sean de utilidad. En primer lugar
hay que asegurarse que el sistema esta libre de virus e spyware con un buen antivirus actualizado, desinstalar los programas
innecesarios o que ya no usamos reiniciando correctamente, eliminar los
archivos temporales que dejan las instalaciones , limpiar el registro y despues de reiniciar , desfragmentar
los discos duros. Para ello podemos usar las siguientes herramientas:
1) Antivirus gratuito: AVG http://www.avg.com. No se te ocurra instalar dos antivirus a la vez que se pelearan ;-) y actualizalo
con frecuencia.
2) Limpiador de sistema y de registro: Ccleaner http://www.ccleaner.com. Te limpia los archivos temporales, el sistema y te repara las
entradas incorrectas del registro que dejan algunas desinstalaciones mal hechas.
3) Desfragmentador de disco duro: Defraggler .
Tiene una opcion de desgragmentación rápida interesante. Lo puedes descargar e instalar desde http://www.piriform.com
Otros consejos a tener en cuenta son:
-Si vas a hacer pruebas de software es mejor que te bajes e instales una maquina virtual con Virtual PC para no ensuciar tu sistema operativo. Puedes descargarlo gratuitamente desde la web de Microsoft.
- Actualiza tu sistema operativo con Windows Update para mantenerlo al dia y seguro e Instala los Service Packs.
El ultimo de Windows XP es el servide Pack 3.
-El sistema operativo suele sufrir fugas de memoria RAM conforme lo vamos usando por lo que es recomendable reiniciarlo y no tener el pc encendido todo el dia para liberar recursos. Si no quieres reiniciar puedes cerrar la sesion de usuario y abrir una nueva para liberar procesos.
-En windows XP, que es el sistema operativo más usado actualmente, tiene una pega importante y es que
se abusa del archivo de paginación pagefile.sys para usarlo como si fuera RAM, ralentizando el disco duro. Si tienes
mas de 512 mb de ram, puedes seguir una serie de pasos para hacer que tu sistema use toda la RAM en vez de dicho archivo de intercambio
que es recomendable tener en un segundo disco:
1) Ir a inicio-Ejecutar: msconfig.exe
2) Pestaña SYSTEM.INI
3) click en 386ehn en +
4) Introduce una nueva entrada con este valor ConservativeSwapfileUsage=1
5) Acepta y reinicia
- Si usas el equipo para ejecutar programas y no como servidor, puedes indicarselo a windows asi:
1) MI pc- Propiedades
2) Opciones avanzadas
3) Rendimiento-Configuracion
4) Opciones avanzadas- Ajustar para el mejor rendimiento de programas para uso de memoria y progreamacion del procesador
Como ultimo recurso puedes añadir mas ram al sistema (El coste de la ram ha bajado mucho) para poder cargar mejor o ejecutar mas programas o
bien formatear y reinstalar el sistema operativo.
Espero que os gusten y si quereis compartir alguna idea más por favor dejad algun comentario que será bienvenido y podemos aprender todos ;-)
Nos vemos.
Sergio.
El pasado Viernes 20 y sábado 21 de Noviembre tuve la
ocasión de realizar un excelente curso de peritación avanzada y análisis
forense organizado por el Colegio de Ingenieros
en Informática de la Región de Murcia e impartido en la Facultad de Informática de la Universidad
de Murcia por una autoridad a nivel nacional por su dilatada experiencia como
es Javier Pagés donde aprendimos las
fases de un análisis forense para juicios civiles, penales y laborales y los
principales principios forenses que hay que seguir para hacer correctamente una
peritación.
Opino que es una parte de la informática poco conocida por
los Ingenieros en informática que obliga a estar al día por la constante
actualización de herramientas y sistemas. También suelen darse defectos de
forma por no seguir correctamente una metodología que pueden invalidar una
prueba clave en un juicio.
Aquí os dejo una lista imprescindible de recursos de
análisis forense en entornos Windows para aprender:
Libro:
-
Libro análisis forense digital en entornos Windows de
Informatica 64 de Juan Garrido Caballero alias Silverhack cuyo Indice se puede ver en http://www.informatica64.com/RecursosLibros/IndiceAnalisisforense.pdf
Herramientas:
-
Herramientas gratuitas Sysinternals de Mark Russinovich.
-
Herramientas gratuitas Foundstone
De pago:
-
Helix 1.9: http://www.e-fense.com/products.php
-
XWay Forensics en http://www.x-ways.net/index-e.html
Enlaces:
http://www.informatica-forense.es
http://www.javierpages.com
http://www.infoperitos.com
http://www.issa.org
Espero que os sean de utilidad e interés
Nos vemos
Sergio
Como suelo decir en mis charlas y ya comentaba nuestro amigo J.M.Alarcón en el primer capítulo de su excelente nuevo libro de ASP.NET 4.0 muchos desarrolladores web aún desconocen que existen varias formas de desarrollar aplicaciones web gratuitas al igual que con PHP tanto a nivel de estudiante, aficionado como a nivel profesional y empresarial con herramientas Microsoft que antes no existían. Os las enumero:
- Para estudiantes y aficionados:
Versiones Express de las herramientas de desarrollo en http://www.microsoft.com/Express que vienen acompañados de excelentes recursos de formación y auto aprendizaje y código fuente gratuito en http://www.codeplex.com. . Podeis aprender y desarrollar en casa con visual studio 2008 Express para hacer prácticas y administrar bases de datos SQL Server 2008 de hasta 4GB de tamaño, más que suficiente para empezar.
- Para Profesionales emprendedores:
Si quieres emprender un negocio tecnológico o acelerar el proceso de éxito de tu negocio desde su comienzo puedes conseguir software, soporte y visibilidad con el nuevo programa Microsoft BizSpark. La inscripción a este programa y los requisitos los puedes ver en http://www.microsoft.com/bizspark/. Creo que es la forma más sencilla para emprender tu negocio innovador sin costes de este tipo. También puedes visitar Microsoft Startup Zone en http://www.microsoftstartupzone.com.
Podemos conseguir software, soporte, formación, acciones de marketing y networking en el nuevo programa Microsoft WebSiteSpark. Tendremos acceso gratuito de manera inmediata a las herramientas de diseño y desarrollo web tanto para desarrollo como para producción de las aplicaciones que desarrollemos con estas herramientas siguientes:
- Visual Studio 2008 profesional (3 Licencias)
- Expression Studio (1 Licencia)
- Expression Web (2 Licencias)
- Windows Web Server 2008 (3 Licencias)
- Sql Server 2008 web (3 Licencias)
aunque te adelanto que suele ser suficiente con ser una empresa privada que esté creando un negocio o servicio en base a un software, lleves menos de 3 años y tienes menos de un millón de dólares en ingresos.Con esto podeis formar un equipo formado por uno o dos diseñadores web, 3 desarrolladores y 1 administrador de sistemas para alojar aplicaciones web de tipo comercio electrónico por ejemplo.
Mas info en http://www.microsoft.com/web/websitespark
Espero que os sea util e interesante.
Saludos
Este viernes 27 por la tarde a las 16.30 tenemos nuevo Evento del Gusenet en Facultad de Informatica de Murcia para los interesados que puedan venir. Este es el link de registro que acabamos de publicar en la web de Microsoft para registrarnos al evento en la siguiente dirección web:
http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032409964&Culture=es-ES
Os pongo la informacion del evento para los interesados:
GUSENET: Migración De SQL 2000 a 2008 y Windows 7
Día : 27/03/2009
Agenda:
16:30 : Planifica y vencerás: Migrando de SQL Server 2000 a SQL Server 2008
Rubén Garrigós y Enrique Catalá de SolidQ
17:30: Preguntas.
18:00: Descanso.
18:30: Un acercamiento a Windows 7.
Javier Yagüe (coordinador dotnetclub de UA).
Y Oscar Montesinos de JPA,sl
19:30: Ofertas de empleo y debate del grupo.
Lugar:
Universidad de Murcia.
Aula 0.01 de la Facultad de Informática del Campus de Espinardo
(Murcia)
Saludos
Hay veces que tenemos una aplicacion web ASP.NET que está alojada en un Proveedor de Internet o ISP y se instala en una granja de servidores web o "WebFarm" que no es ni más ni menos que varios servidores en paralelo que actúan como si fuera uno solo por si se cae uno y responda a las peticiones web otro servidor de la granja de forma transparente al usuario. En esos casos a veces despues de entrar en un area privada de nuestra aplicacion web que usa variables de sesion inexplicablemente nos sale un error parecido a esto y nos dice que debemos tocar el Machine.config pero el servidor no es nuestro!:
Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.
Esto está muy bien para conseguir Redundancia y alta disponibilidad mediante los servicios de Clustering de Windows 2003 pero tiene una pega para nuestros compañeros los desarrolladores web. ¿Cual? Pues que cuando usamos variables de sesión en nuestra aplicación web , estas quedan almacenadas por defecto en el servidor web que estaba ejecutando la aplicación y si este cae por un fallo hardware o de comunicación por ejemplo entonces otro servidor web que no tiene tus variables de sesion recogerá las peticiones http a tu web y no sabrá quien eres si identificabas a tu visitante con un Session("idusuario") recogido por ejemplo al autentificarse en la web.
Para esto veo 2 soluciones posibles :
1- Poner esto en el web.config <pages enableViewStateMac="false" /> como sugieren algunos ISP. Ojo, esto debe ponerse dentro de <system.web></system.web>
Esta propiedad tambien puede aplicarse a paginas web aspx individuales en la directiva <@Page %> y por defecto suele ser false. Aqui teneis mas informacion sobre la propiedad en la MSDN. Para el que no lo sepa , esta directiva se usa para evitar la corrupxion o alteración de los datos conforme se envían a una pagina web.
2- Habilitar el estado de las sesiones en SQL Server. Al estar las sesiones en el servidor de base de datos, es independiente de que se caiga el servidor web, pues podrá recuperar las sesiones de una base de datos externa al servidor web. En este articulo podeis ver como configurar sql server para ello, pero tened en cuenta que debéis ser administradores del servidor y no servirá en un alojamiento compartido a no ser que seais "amigo" del propietario del servidor :-)
http://support.microsoft.com/kb/317604/es
NOTA: Por defecto en el web config que se genera en Visual Studio el estado de sesion se guarda asi:
<sessionState
mode="InProc"
stateCon蠌ectionString="tcpip=127.0.0.1:42424"
sqlConnectio蚼String="data source=127.0.0.1;Trusted_Connection=yes"cookieless="false"
timeout="20" />
AVISO IMPORTANTE:
No olvideis nunca cuando paséis a produccion vuesrtas web asp.net generar los ensamblados en modo Release y no Debug y cambiar estas lineas en el web.config para que queden así
<
compilation defaultLanguage="vb" debug="false" />
¿Acaso vais a depurar la aplicacion en el servidor web de desarrollo? Con esto no teneis que subir a bin el fichero .pdb que se genera en asp.nett 1.x sino solo los ensamblados .dll
<
customErrors mode="RemoteOnly" /> Para que los errores asp.net no aparezcan a usuarios que no estén en el servidor local y no puedan recopilar información para un ataque ;-)
Saludos
Sergio
Hay veces que me encuentro a desarrolladores escribiendo codigo para calcular los tiempos de carga de una página o ver el valor de una variable de sesion sin saber que existe una atributo de la directiva Page que nos obtiene esta información sin programar una sola línea de codigo.
Se trata del atributo Trace de la directiva Page. Para verlo funcionando solo tenéis que dejarlo así en una pagina aspx 2.0 de Visual Studio 2005 aunque este atributo tambien se puede poner en Visual Studio 2003 y es valido para asp.net 1.x
<%
@ Page Language="VB" trace="true" AutoEventWireup="false" CodeFile="prueba.aspx.vb" Inherits="prueba" %>
Con esto podreis ver al cargarse la pagina informacion como:
- El tipo de peticion GET o POST , el codigo de estado tal como 200 Ok o los errores que empiezan por 400
- La colección de Headers o encabezados de la petticion http actual con sus cookies
- El Arbol de controles de la pagina con su Id y tamaño
- Las variables del servidor tales como PATH_INFO, REQUEST_METHOD, SERVER_SOFTWARE...
- Las variables de sesion y su estado.
- Los tiempos de carga de cada uno de los metodos de servidor tales como Page_Load, Page Prerender en el orden exacto en que ocurren
Esta información os puede servir para analizar errores que ocurren con frecuencia como por ejemplo cuando terminais de desarrollar una pagina web en vuestro equipo de desarrrollo y luego la publicais en el servidor de producción o de un ISP de Internet.
Espero os sea de utilidad
Sergio
El pasado miércoles 20 de Febrero me tocó presentar el Curso de ASP.NET 2.0 y SQL server 2005 de 40 h que impartiremos en Mayo de 2008 un servidor la parte de ASP.NET y un colega Salva Ramos, MVP de SQL Server la parte de SQL.
Para los interesados en el curso dirigido tanto a profesionales como a alumnos de la universidad os dejo el enlace
http://dis.um.es/~jfernand/facultad/promocioneducativa.html#net
en el cual podréis ver los precios, horarios, fechas y plazos de inscripcion y descargaros un triptico en papel para imprimirlo y apuntarse aqui :
http://dis.um.es/~jfernand/facultad/promoedu/folletopreinscripcion2008dotNET.pdf
Si teneis cualquier duda,sugerencia o pregunta sobre el curso podéis enviarmela usando el formulario de contacto del blog.
Esperamos veros por el curso y os animéis a conocer .NET!!
Saludos
En una aplicación web desarrollada en asp.net de importacion de 24000 registros en una base de datos después de unos minutos insertando filas en la base de datos a partir de un fichero de texto convenientemente formateado nos lanzaba la siguiente excepcion [HttpException (0x80004005): Tiempo de espera agotado para esta solicitud.]. Esta aplicacion estaba alojada en un servidor web compartido en un ISP y funcionaba correctamente en nuestros servidores de desarrollo.
Despues de un rato pensando te das cuenta de que tu aplicacion no termina de ejecutarse porque vence algun time-out
o tiempo de espera que impide acabar la operacion sobre la base de datos .Si mirais aqui la solución es aumentar el TimeOut en el web.config em el directorio raiz de la aplicación
http://msdn2.microsoft.com/en-us/library/e1f13641.aspx
Por lo tanto las lineas que tienes que escribir al principio de tu web.config para aumentar el tiempo de espera a 36000 segundos son:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<httpRuntime
maxRequestLength="10240"
executionTimeout="36000"
/>
Espero que os sea de utilidad si os da este error alguna vez en vuestra aplicacion
Saludos
Recuerdo Cuando fui a publicar una de mis primeras aplicaciones web ASP.NET 2.0 con VS2005 con la opcion publicar de Visual Studio 2005 al querer acceder a mi aplicacion usando por ejemplo http://localhost/miaplicacionnet2 encontré el siguiente error en el navegador:
No se pudo acceder a la metabase de IIS
System.Web.Hosting.HostingEnvironmentException: Failed to access IIS metabase. The process account used to run ASP.NET must have read access to the IIS metabase (e.g. IIS://servername/W3SVC).
Lo que ocurre es que la cuenta ASPNET no puede acceder a la metabase para poder publicar el sitio web y ejecutar la aplicacion en el servidor web IIS.Lo que tenemos que hacer es simplemente ejecutar esta linea desde la consola de MS-DOS aspnet_regiis -ga ASPNET para dar permisos de acceso a la cuenta ASPNET del sistema operativo a la metabase de IIS.
Por si las moscas os recomiendo antes hacer una copia de seguridad de la metabase (fichero del cual heredan configuraciones los web.config de cada aplicacion web) de IIS que esta en la siguiente carpeta por defecto
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config
Podéis encontrar más información sobre los permisos de la metabase en este enlace http://support.microsoft.com/?kbid=267904
Aprovecho para comunicaros que la nueva dirección de mi sitio web ha cambiado a http://www.pangeaes.com/mutisdotnet/ que proximamente actualizaré.
Saludos
Sergio
Hola de nuevo a todos, tras una temporada sin escribir por vacaciones, pereza y cambio de domicilio vuelvo a las andadas en mi blog para contaros experiencias que os puedan servir a otros en nuestro divertido trabajo diario. Aprovecho también para agradecer los ánimos de algunos lectores de mi blog que echaban de menos que les diera la lata con algún artículo interesante J para la comunidad. Y es que particularmente creo que es mejor hacer de Homo Sapiens que de Neanderthal como menciona David en su Blog.
En esta ocasión, en medio de un hermoso SP (No , no hablo de un Stored Procedure sino de un hermoso Síndrome Post Vacacional! J) me encontré un error en una aplicación Web asp.net que me dejó algo extrañado pues mi aplicación Web funcionaba correctamente en asp.net 1.1 en servidores de desarrollo y producción pero no cuando la alojaba en un conocido ISP Decía así al intentar cargar una página aspx :"el compilador falló con código de error 128” Y al mostrar los errores del compilador detallados salia una línea muy larga que empezaba por:
c:\windows\system32\inetsrv> "c:\windows\microsoft.net\framework\v1.1.4322
\vbc.exe" /t:library /utf8output /R:"c:\windows\microsoft.net\framework\v1.1.4322\temporary asp.net files\root\0c1c7a12\a8dd6495\assembly\dl2
\852a5f9e\0b42d1d6_a988c701\componentart.web.ui.dll" /R:"c:\windows\microsoft.net\framework\v1.1.4322\temporary asp.net files\root\0c1c7a12
\a8dd6495\assembly\dl2\483641e1\a9101cc6_2788c701
\busyboxdotnet.dll" /R:"c:\windows\assembly\gac\system.web.services\1.0.5000.0__b03f5f7f11d50a3a\system.web.services.dll" /R:"c:\windows\assembly\gac\system\1.0.5000.0__b77a5c561934e089
\system.dll" /R:"c:\windows\assembly\gac\system.web\1.0.5000.0__b03f5f7f11d50a3a\system.web.dll"
Aquí se ve como la compilación falla al intentar cargar y ejecutar los ensamblados de la Web y se produce cuando usamos un componente de terceros como por ejemplo Busyboxdotnet que se ejecuta en el proceso W3wp.exe
Este error es un bug del framework 1.1 y 1.0 que se subsana con el SP1 de W2003 o bien como dice en el siguiente artículo de la KB de Microsoft con un par de métodos: http://support.microsoft.com/kb/919085/es
Evidentemente le tuve que advertír al ISP que “Algo pasaba con Mary” (Su servidor IIS que alojaba mi aplicación Web) y lo subsanaron sin problema :-)
Se acerca la primavera que, como muchos sabéis, la sangre altera y puede producir errores en nuestro código con más frecuencia de la habitual :-). Hay veces que queremos personalizar los mensajes de error en tiempo de ejecución que arroja nuestra aplicación cuando se produce una excepción en nuestro código porque no está disponible la base de datos o cuando no se encuentra una página de nuestro sitio web. Para ello veo tres opciones muy claras y habituales:
1- Configurar la web para que no de información detallada del error que pueda servir a un atacante
Esto se hace desde el web.config. Unas líneas de código creo que valen mas que mil palabras y muchos conocemos codigos http 404 de pagina no encontrada y 403 de acceso no permitido para redirigirlos a una página .aspx hecha por nosotros:
<customErrors mode="RemoteOnly" defaultRedirect="AppErrors.aspx">
<error statusCode="404" redirect="NoSuchPage.aspx"/>
<error statusCode="403" redirect="NoAccessAllowed.aspx"/>
</customErrors>
2.- Control estructurado de excepciones con Try.Catch. Aquí tenéis otro ejemplo sencillo de captura de error en la conexion a una base de datos donde la propiedad Message de la excepcion ex guarda el error producido. Recordar que el bloque finally siempre se ejecuta
Try
SqlConnection1.Open()
SqlDataAdapter1.Fill(Me.DsPubs1)
Catch ex As Exception
If HttpContext.Current.Request.UserHostAddress = "127.0.0.1" Then
Session("CurrentError") = ex.Message
Else
Session("CurrentError") = "Error processing page."
End If
Server.Transfer("ApplicationError.aspx")
Finally
SqlConnection1.Close()
End Try
3.- Crear un manejador global de errores en el global.asax.
Hay un evento en el global.asax que nos permite capturar el error y redirigir a otra página como se ve en estas líneas de código en el que se guarda en Server.GetLastError.Message el último error producido en la aplicacion:
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
Session("CurrentError") = "Global: " & Server.GetLastError.Message
Server.Transfer("lasterr.aspx")
End Sub
Espero os sean de utilidad para vuestras aplicaciones web ASP.NET como lo son para mi en mi trabajo diario.
Saludos
Sergio Vázquez
En ASP.NET 1.x existen en el ciclo de vida de una página los eventos Init, Load, Prerender y Unload que se disparaban en este orden y podiamos escribir código asociado a dichos eventos para poder modificar la salida de la página y el estado de los controles que la constituían.
La nueva versión de ASP.NET añade nuevos eventos para seguir el procesamiento de las peticiones de forma más precisa. Estos nuevos eventos son:
PreInit Ocurre antes de que la página empiece a inicializarse y es el primer evento en el ciclo de vida de una página ASP.NET 2.0
Initcomplete Tiene lugar cuando se completa la inicialización de una página
PreLoad Ocurre después de la inicialización y antes de que la página empiece a cargar la información del estado.
LoadComplete Ocurre despues de cargarse la página
PreRenderComplete Tiene lugar cuando la fase de Prerender esta acabada y todos los controles han sido creados. Despues de este evento el ViewState es guardado y se genera el HTML de la página.
ASP.NET 1.x soporta compilación dinamica de los ficheros (.aspx), (.asmx), (.ascx), (.ashx), y global.asax. Estos tipos de ficheros son compilados automáticamente bajo demanda cuando se solicitan por primera vez en una aplicación web. La copia compilada es invalidada tan pronto como se detecta un cambio en el código fuente mientras que en ASP.NET 2.0 la característica de compilación bajo demanda se extiende a otros tipos de ficheros como los (.vb and .cs), (.resx), (.wsdl), (.xsd). Despues de cambiar estos ficheros no es necesario forzar una compilación en VS.
Mediante la siguiente tabla trato de reflejar las principales diferencias entre el famoso Code -Behind (usa el atributo Codebehind) de las paginas ASP.NET 1.x y el Code-Separation de las paginas ASP.NET 2.0 en las dos versiones de Visual Studio que mas se usan hoy en día. El nuevo modelo de código se implementa usando clases parciales usando el atributo CodeFile.
| Modelo Code-Behind en Visual Studio .NET 2003. |
Modelo clases parciales en Visual Studio 2005. |
|
Necesita un directorio virtual IIS. |
Puede acceder directamente a la instalación local de IIS. |
|
Carece de soporte FTP, acceso al sistema de archivos e IIS. |
Tiene varias formas de abrir sitios web. |
|
Necesita IIS en el pc de desarrollo. |
Tiene su propio servidor web Cassini. |
|
No permite abrir páginas individuales fuera de un proyecto. |
No necesita abrir el proyecto entero; las páginas idividuales puede ser abiertas sin ser compiladas. |
|
Necesita añadir explícitamente los ficheros al proyecto, |
Elimina la necesidad de añadir explícitamente ficheros al proyecto. |
Saludos
Sergio
Hay veces que en vez de instalar un certificado digital SSL en el servidor web IIS, tal y como expliqué en el número 19 de Dotnetmania hace algún tiempo (próximamente estará disponible para su descarga gratuita en PDF), tenemos que leer un certificado digital de cliente que se instala en Internet Explorer para asegurarnos la identidad del visitante leyendo su nombre y DNI. Estos certificados los puede expedir una Entidad emisora de certificados como puede ser la Fábrica nacional de Moneda FNMT. Si lo que quieres es obtener la firma digital como ciudaddno puedes hacerlo en esta url donde están todas las intrucciones detalladas. Ya sabéis que estos certificados se renuevan periódicamente como los SSL de servidor (puede no ser válido si ha caducado) y se pueden exportar en formato pfx de un pc a otro e incluso ponerle una clave o PIN.
Aqui os copio un código sencillo en ASP.NET que os lee las características del certificado del cliente en una petición http a través del famoso objeto Request que os puede ser de utilidad a más de uno:
Dim cert As HttpClientCertificate = Request.ClientCertificate
If cert.IsPresent Then
'Get the Organization (O) field from the Subject section.
' certData.Text = cert.Get("Subject O")
Response.Write("ServerSubject = " & cert.ServerSubject & "<br>")
Response.Write("Subject = " & cert.Subject & "<br>")
Response.Write("issuer = " & cert.Issuer & "<br>")
Response.Write("Valido desde = " & cert.ValidFrom & "<br>")
Response.Write("valido hasta = " & cert.ValidUntil & "<br>")
Response.Write("valido ? = " & cert.IsValid & "<br>")
Response.Write("tamaño de la clave secreta = " & cert.SecretKeySize & "<br>")
Response.Write("Server issuer = " & cert.ServerIssuer & "<br>")
Response.Write("Serial number hasta = " & cert.SerialNumber & "<br>")
Response.Write("Codificacion = " & cert.CertEncoding & "<br>")
ElseIf Not cert.IsValid Then
Response.Write("el certificado no es valido")
Else
Response.Write("No se ha encontrado certificado")
End If
Dim desc As New X509Certificate(cert.Certificate)
Dim resultsTrue As String = desc.ToString(True)
Response.Write("<br>despues de sacar flujo de bytes : " & resultsTrue)
Response.Write("<br>Hash string : " & desc.GetCertHashString)
Response.Write("<br>Algoritmo (parametros): " & desc.GetKeyAlgorithmParametersString)
Response.Write("<br>Clave publica: " & desc.GetPublicKeyString)
Saludos
Sergio Vázquez
Viernes 23 de febrero: “dotNet day”
- 16:00 / 16:30: Bienvenida y registro
- 16:30 / 17:30: La platorma .Net, overview y evolución hasta 3.0. Sergio Vázquez
- 17:30 / 18:15: Descanso
- 18:15 / 19:00: Windows Presentation Fundation (WPF): Diseñas o Desarrollas ? Óscar Montesinos
- 19:00 / 19:30: Organización de LABs en próximos eventos, ofertas de empleo, y otros
Lugar: Universidad de Murcia
Campus de Espinardo
Aula A.04 bis
Aulario Norte
Plano del lugar: (es en el edificio nº 6 del plano)
http://www.um.es/universidad/planos/plano-espinardo/espinardo.php
Saludos
Como es habitual en nosotros el último viernes de cada mes celebramos el evento mensual del Grupo de Usuarios de .NET del Sureste Español, del cual , como algunos lectores saben , formo parte de la directiva. Esta vez el evento pretende dar una introducción a .net y a WPF(Windows Presentation Foundation). La agenda del evento es la siguiente y tendrá lugar en las instalaciones de Clave Informatica en Elche
Agenda:
- 16:00 / 16:30: Bienvenida y registro
- 16:30 / 18:00: Windows Presentation Fundation (WPF) y .Net Framework 3.0
- 18:00 / 18:15: Descanso
- 18:15 / 19:00: .Net - vision general
- 19:00 / 19:30: cuestiones técnicas, ofertas de empleo, y otros
Se repartirán CD de versiones Express de Visual Studio para los principiantes que deseen iniciarse en .NET por lo que será una buena ocasión para asistir los que desconocen esta tecnología .
La URL de registro del evento está publicada en la web de la MSDN y esta vez me toca a mi dar la charla de Vision General de .NET
http://www.microsoft.com/spanish/msdn/spain/eventos/comunidad.mspx#uno
Esperamos veros por allí y pasar otro rato agradable con Murphy como no! :-)
Saludos
Sergio Vázquez
Todos necesitamos alguna vez una "chuleta" por si se nos olvida de memoria algún comando en una profesión donde abundan siglas, comandos, instrucciones etc.. Os copio una esperando que le sea útil a más de uno como "regalo de reyes majos" como a mi me lo fue en su día :-)
Los procedimientos almacenados de sistema siguientes permiten ver estadísticas o información en tiempo real acerca de la base de datos o el servidor.
sp_who
Usuarios y procesos actuales de SQL Server
sp_lock
Bloqueos activos, así como información de bloqueos e interbloqueos
sp_spaceused
Espacio en disco que utiliza una tabla o base de datos
sp_helpdb
Bases de datos y sus objetos
sp_monitor
Estadísticas de SQL Server, como el tiempo total de procesamiento, el número de lecturas y escrituras, y las conexiones
sp_helpindex
Índices de una tabla
sp_statistics
Todos los índices de una tabla específica
Variables global Objetivo
@@connections
Contiene el número de inicios de sesión o intentos de inicio de sesión desde la última vez que se inició SQL Server.
@@error
Contiene el número de error de la última instrucción de Transact-SQL ejecutada.
@@spid
Contiene el identificador de proceso de servidor del proceso de usuario actual. Puede usar este valor para identificar el proceso de usuario actual en la salida de sp_who.
@@procid
Contiene el identificador de procedimiento almacenado del procedimiento actual.Instrucciones T-SQL
set statistics IO
Muestra información acerca del volumen de actividad de disco que generan las instrucciones de Transact-SQL. Útil para afinar índices junto con los planes de ejecución.
set statistics time
Muestra el número de milisegundos necesarios para analizar, compilar y ejecutar cada instrucción.
set statistics profile
Muestra un conjunto de resultados después de cada consulta ejecutada que represente un perfil de ejecución de la consulta.
set showplan_text
on/off Hace que SQL Server no ejecute la consulta y que, en su lugar, muestre información detallada acerca del modo en que se ejecutan las instrucciones.
Instrucciones DBCC
SQLPERF Estadísticas desde la última vez que se inició el servidor. Puede establecerlas para reunir información acerca del uso del espacio del registro de transacciones en todas las bases de datos (LOGSPACE), la entrada y salida de disco (IOSTATS), el uso de memoria y caché (LRUSTATS), o la actividad de red (NETSTATS).
OPENTRAN
La transacción activa más antigua, así como las transacciones duplicadas distribuida y no distribuida más antiguas, si las hay, en la base de datos especificada.Los resultados sólo se muestran si hay una transacción activa o si la base de datos contiene información de duplicación.
SHOW_STATISTICS
Selectividad de un índice, lo que supone la base para determinar si un índice es útil para el optimizador de consultas.
CHECKDB
Asignación e integridad estructural de todos los objetos de una base de datos.
CHECKFILEGROUP
Asignación e integridad estructural de todas las tablas delgrupo de archivos.
CHECKTABLE
Integridad de las páginas de datos, índice o de datos de tipo text, ntext o image de la base de datos especificada.
Saludos
Sergio Vázquez
http://www.pangeaes.com/mutisdotnet
Gracias a mi amiga Ethel de MS no me queda mas remedio que confesaros algunas intimidades:
1.- De peque lo mío eran los Pokes del spectrum 48K y juegos que reventaba conun amigo como el Fernando Martín de Dynamic. Seguro que a mas de uno le habrá pasado :-) Evidentemente ya os podéis imaginar como acabé de viciado , y eso que ahora me gusta menos programar. Serán los años? Tambien empece con Internet por el 1994 con el flamante modem de 9600 baudios y el NEtscape 1.0, Eudora, Gopher, IRC. Ha llovido mucho desde entonces y he pasado por unos 20-30 lenguajes de programación de los cuales no soportaba LISP.
2.- Suelo comprar la ropa nueva a golpes en verano y en Invierno en tiendas conocidas como Springfield,Zara, Pull and Bear y no suelo lucir marcas en la ropa porque no me considero "hombre anuncio". Es una de mis manías.
3.- Mi padre era un hombre aficionado a los dichos y suelo recurrir mucho a ellos. Soy un tio de pocas palabras por eso me llamaban Mutis antes. Sinceramente no me suelo enrollar como las persianas. Algunos de los dichos los suelto en clases que doy y no puedo evitarlo e incluso podeis ver algunos en este blog
4.- Una vez me enteré que fui el primer ingeniero informático sordo profundo de la historia de la Universidad. E incluso os puedo contar como anécdota que llegué a hacer unas prácticas de la carrera con un compa ciego. Aquello era como la peli "No me chilles que no te veo!" XDD. Me leia todos los libros de la biblioteca y hasta el bibliotecario el muy !"·$%$·& me llegaba a preguntar si sabia si estaba disponible un libro jeje , lo mandaba al carajo de vez en cuando. Y pasaba por todos los despachos de la facultad uno a uno a preguntar dudas pues no me enteraa de mucho en clase y llegué a hacer amistad con algún profesor pues los había de todos los tipos como os podéis imaginar. Incluso algunos compas son profesores.
5.- Soy un fanático de la ACB y del tenis, no suelo perderme un partido del equipo de Murcia de baloncesto Polaris desde que está un colega de tercer entrenador e incluso le doy consejos y le paso dvds de .NET porque hizo parte de la carrera conmigo (hay que evangelizar a los colegas jeje xDD). Si alguno/a quiere echar un partido de tenis que me lo diga! La verdad es que me gusta la vida sana para poder soportar el stress de la profesión.
Bueno a ver... a quien mando el TAG, a algun lector: a ver a ver: Vargas,Jorge Serrano,Spakinz, Miguel Llopis, Salva Ramos y Óscar Montesinos alias XINO, tenéis que seguir la cadena chicos!
Más artículos
Página siguiente >