February 2009 - Artículos
No se si lo puede resolver bien, pero quedo resuelto. (Si alguien tiene otra opción que me avise, o lo postee como comentario del articulo)
Introducción
Luego de un corte de luz en una maquina (últimamente por esta zona la empresa de energía no se lleva bien con los usuarios) (si…! que no tiene UPS) queriendo levantar la DB nos encontramos con este error
Mensaje de Error:
The log scan number (22:160:1) passed to log scan in database 'model' is not valid. This error may indicate data corruption or that the log file (.ldf) does not match the data file (.mdf). If this error occurred during replication, re-create the publication. Otherwise, restore from backup if the problem results in a failure during startup.
En el registro de Eventos:
En el LOG del SQL Server
Ubicación: C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\LOG
The log scan number (22:160:1) passed to log scan in database 'model' is not valid. This error may indicate data corruption or that the log file (.ldf) does not match the data file (.mdf). If this error occurred during replication, re-create the publication. Otherwise, restore from backup if the problem results in a failure during startup
2009-02-19 13:25:36.34 spid9s SQL Trace was stopped due to server shutdown. Trace ID = '1'. This is an informational message only; no user action is required.
Cuando quise iniciar el servicio del SQL Server nos arrojaba estos errores…
Entonces?
Primera aproximación a la solución:
Iniciar el SQL Server cueste lo que cueste :)
Es decir con unos parámetros para que inicie con lo mínimo e indispensable (mas ayuda en Usar las opciones de inicio del servicio SQL Server)
Los dos que necesitaba eran
sqlservr.exe -sMSSQLSERVER -c –f
-c
Acorta el tiempo de inicio al iniciar SQL Server desde el símbolo del sistema. Normalmente, SQL Server Database Engine (Motor de base de datos de SQL Server) se inicia como un servicio llamando al Administrador de control de servicios. Dado que SQL Server Database Engine (Motor de base de datos de SQL Server) no se inicia como un servicio cuando se inicia desde el símbolo del sistema, use -c para omitir este paso.
-f
Inicia una instancia de SQL Server con la configuración mínima. Esta opción es útil si el valor de una opción de configuración (por ejemplo, la confirmación excesiva de memoria) ha impedido el inicio del servidor.
Por si no conocemos (como yo) cual era el ejecutable del SQL Server… podemos darnos una idea de donde inicia el servicio de windows:
C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe" -sMSSQLSERVER
TAMPOCO FUNCIONO :)
Me arrojo en la línea de comandos el mismo error.
Solución rápida, efectiva y duradera… (aquí el que conoce otra me avisa)
- Obtener un base de datos model del SQL 2005
- Copiarla al directorio del servidor que me esta dando dolores de cabeza
- Iniciar el SQL Server
- Tomar un Coca-Cola, Red-Bull o Cerveza Helada (este paso lo pueden obviar)
Enlaces
El equipo que testea la calidad de los productos liberados de ASP.NET (parece que es algo así…) comparte con nosotros su framework de test “liviano”, ya que es una simple componente que podemos agregar a nuestros proyectos y realizar los test, es decir podremos hacerlo con las versiones express de VS2005/VS2008
NOTA: Esto lo tengo desde hace “varias” semanas en el borrador (desde Octubre.2008 ) y justo ayer leo un post que salió una nueva release (4.Feb.2009) así que lo volví a sacar brillo y aquí esta.
Para lo que queremos ver inmediatamente la ayuda online, en este caso no la tenemos “todavía” pero tenemos la firme propuesta del equipo de ASP.NET QA Team en su Roadmap, por ahora solo podemos descargar un ejemplo sencillo para ir “previsualizando este framework”
Para descargar el ejemplo el enlace se encuentra al final del articulo.
Como utilizarlo?
Para poder utilizarlo simplemente hay que seguir 3 pasos para armarlo, y ejecutarlo (paso 4)
- Copiar la componente Microsoft.Web.Testing.Lightweight.dll en la carpeta Bin (donde si no?).
NOTA:Esta release es del Sep.2008, si van a Codeplex podrán descargar la nueva versión
- Copiar dos archivos Default.aspx y DriverPage.aspx en una carpeta, que por convención nos proponen en una carpeta Test
(en las versión definitiva no tendremos que copiar cosas extrañas a nuestro proyecto)
- Crear una/s clase/s Test
(Para aclarar un poco mas, si tenemos un Proyecto Website en la carpeta App_Code, en cambio en un Aplicación Web en cualquier lugar de nuestro proyecto)
Creamos la clase de test importando Microsoft.Web.Testing.Light con atributos especiales en la clase <WebTestClass()> y en los métodos <WebTestMethod()>
Como veran en el ejemplo es muy sencillo vamos a ir “escrudiñando” la pagina, en donde se encuentra una tabla de Productos que vamos a realizar un ordenamiento y luego un paginado. Se tiene que poder reproducir este test las veces que sea necesario por eso no nos sirve de mucho este ejemplo, solo quería ser eso un ejemplo de como utilizar incluso con postback, también podemos detectar y esperar un postback asincrónico con …Click(WaitFor.AsyncPostback)
En el ejemplo que se puede descargar de Codeplex contiene postback asincrónico, y edición de un gridview.
Ejemplo:
Imports Microsoft.VisualBasic
Imports Microsoft.Web.Testing.Light
<WebTestClass()> _
Public Class ProductListTests
<WebTestMethod()> _
Public Sub ProductosListadoOrdenamientoTest()
Dim pagina As HtmlPage = New HtmlPage
pagina.Navigate("/Products/ProductList.aspx")
Dim gvProduct As HtmlTableElement = CType(pagina.Elements.Find("gvProduct"), HtmlTableElement)
'Ordenando por la primer columna Name de Products
gvProduct.Rows(0).Cells(1).ChildElements(0).Click(WaitFor.Postback)
'Verificando la operacion de ordenamiento
Assert.AreEqual("AWC Logo Cap", gvProduct.Rows(3).Cells(1).GetInnerText())
End Sub
<WebTestMethod()> _
Public Sub ProductosListadoPaginadoTest()
Dim pagina As HtmlPage = New HtmlPage
pagina.Navigate("/Products/ProductList.aspx")
Dim gvProduct As HtmlTableElement = CType(pagina.Elements.Find("gvProduct"), HtmlTableElement)
'Verificando el ultimo registro de la pagina 1, columna 2 ("Product Number")
Assert.AreEqual("CN-6137", gvProduct.Rows(10).Cells(2).GetInnerText())
'Ir a Pagina 3
gvProduct.Rows(11).ChildElements.Find("a", 1).Click(WaitFor.Postback)
'Verificando el ultimo registro de la pagina 3, columna 2 ("Product Number")
Assert.AreEqual("FW-9160", gvProduct.Rows(10).Cells(2).GetInnerText())
End Sub
End Class
- Ejecutar los test
En la versión preliminar de este componente habia que ir a la carpeta Test (con unos archivos especiales) que nos ayudan a ejecutarlos (creo que en la beta que salió ya no es necesario, pero queda para otro post)
Por un lado el listado de Test que queremos correr y por el otro la pagina donde efectivamente se “ejecutara” esta navegación automática
Ejecutando los test
Si da un error el test obviamente el color de fondo será rojo :)
Demo
La demo las puedes descargar de aquí
Si no puedes visualizar click aquí
- Utilizo la DB: AdventureWork (para descargar por aqui).. esta vez no utilice AdventureWorkLT (para la próxima)
- Que tiene la demo?
Enlaces
Este post no tiene nada que ver con programación, ni con proyectos, ni con nada de lo que siempre escribo ni mi trabajo diario (eso mismo me dijo novia, ahora sos técnico de celulares/mobiles?) Pero me pareció interesante comentar el proceso y que quede documentado.
Como Raúl (un amigo de un amigo) me pidió el favor de cambiar su Samsung Omnia i900 a idioma español, antes estaba en Portugués, de donde lo habrá comprado ? :)
NOTA: No esta demás decir que esto puedo inutilizar el teléfono. Por suerte salió todo bien
Inicio…
Como no tenia ni idea de como hacerlo preguntando a San Google (Pienso, luego… ¡luego Googgle! // Filosofía y expresión urbana en grafitis)
Yo pensaba que Windows Mobile tenia algo de MUI del Windows XP, 2003, Vista… algo así como paquetes de idioma, pero NO LO TIENE…. y eso que lo lei por aquí…
NOTA: Si alguien conoce la implementación para Mobile de MUI me avisa como es el tema… :(
Encontré con varios post de varios ROM (ya que hay que actualizar la memoria Flash del dispositivo)
El post que me gusto y utilice fue este:
Otra forma de realizarlo es con un programa llamado: GRANDPRIX, pero en este caso no lo utilice.
Si quieres “cocinar” tu propia rom…
Síntesis de lo que leí
Según los comentarios esto se realiza en un XP, parece que nadie lo probo (satisfactoriamente en un Vista), así que yo no iba a ser el primero
Se conecta todo, se prueba la conectividad al teléfono, se reinicia el celular lo detecta el programa y luego click en el botón START y listo :)
Que necesitamos:
Mas Varias descargas para el i900 (aquí en Centro de Soporte de Samsung)
Pasos a seguir para comenzar
- Instalar el ActiveSync
- Luego instalar los drivers de Samsung
- Tener el celular/mobile cargado al 100%
- Apagar el celular/mobile
- Conectar al cable USB
- Encender el celular
- Tu computador lo detectara (idem a cuando introducimos un pendrive)
- Tu ActiveSync lo detectara
- … estamos listos para empezar
- Apagamos el celular/mobile
- Ejecutamos el programa i900DXHL3FRAN.exe
(se encuentra en la descarga de la rom, allí también con los drivers usb)
- cuando volvemos a prender el celular/mobile… esperamos que el programa lo detecte
- Cuando lo detecta presionamos el botón START
- Esperar hasta que el programa nos avise: JOB DONE.
Programa: i900DXHL3FRAN.exe
Una vez que reiniciamos el dispositivo lo detecta…
Mi espectacular imagen….
Empezando descargando la eboot (parece ser un sector de boteo, me hace acordar los router cisco… donde teniamos que botear en modo rom o algo parecido)
Luego de este paso empieza la carga
La primera descarga es de la imagen del PDA y luego del TELEFONO
En el teléfono vamos visualizando esta carga (por suerte porque no me daba señales de vida)
Finalizando el trabajo :)
Si vamos a ver al versión del teléfono
Espero que a alguien le sirva de ayuda o guia…
Aquí todo el log que iba arrojando el programa
-------------------------------------------------------------------------------------
PDA Device ready to download!
Please Press Start Button if You want to download image now...
-------------------------------------------------------------------------------------
PDA 1 starts downloading...
Don't plug it out until the label becomes blue!!!
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
Step 1. Eboot image Downloading
Downloading EBOOT...
EBOOT image downloaded.
PDA Reboot to download Eboot twice!!!
-------------------------------------------------------------------------------------
PDA Device Found!
-------------------------------------------------------------------------------------
PDA Device ready to download!
-------------------------------------------------------------------------------------
PDA 1 starts downloading...
Don't plug it out until the label becomes blue!!!
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
Step 1. Eboot image Downloading
Downloading EBOOT...
EBOOT image downloaded.
Step 2. PDA image Downloading
Downloading PDA region #1(DISKIMAGE)...
PDA Image Length : 119954067
PDA image downloaded.
Step 3. Customer image Downloading
Downloading CSC...
GetSize : 16832512
CSC finished.
Step 4. Phone image Downloading
Downloading PHONE...
Switch USB to Phone Success...
Port Open retry (25)
Port Open retry (24)
Port Open retry (23)
Port Open retry (22)
Port Open retry (21)
Port Open retry (20)
Port Open retry (19)
Port Open retry (18)
Port Open retry (17)
Port Open retry (16)
Port Open retry (15)
Port Open retry (14)
Port Open retry (13)
Port Open retry (12)
Port Open retry (11)
Port Open retry (10)
Port Open retry (9)
Port Open retry (8)
Port Open retry (7)
Port Open retry (6)
PHONE finished!
Utilizando la DB de ejemplo AdventureWorksLT (para SQL2005 SP3a) y trabajar sobre el Win Vista para un ejemplo me instala en modo Read-Only y Single User
AdventureWorksLT que te sucedió?
Tal vez con la imagen en gris podamos ver que “algo huele mal en Dinamarca…” :)
…y que hacemos para cambiar el estado?
USE master;
GO
EXEC sp_dboption 'AdventureWorksLT', 'read only', 'FALSE';
NOTA: Lo que estaba leyendo en la ayuda es que esta sp_dboption se quitará en la versión siguiente de Microsoft SQL Server..(from MSDN)
Ahora deberíamos utilizar ALTER DATABASE con la opción seteada en {READ_ONLY | READ_WRITE} según corresponda son las opciones db_update_option
ALTER DATABASE AdventureWorksLT SET READ_WRITE
Cambiando Single User
Para el cambiar el estado Single User las opcion de db_user_access_option son { SINGLE_USER | RESTRICTED_USER | MULTI_USER }
ALTER DATABASE AdventureWorksLT SET MULTI_USER
Y luego todo ok… a seguir con el ejemplo que estaba armando
Enlaces
- ALTER DATABASE (Transact-SQL)
Modifica una base de datos o los archivos y grupos de archivos asociados a la base de datos….
- Opciones de ALTER DATABASE SET
En este tema se describe la sintaxis de ALTER DATABASE, relacionada con la configuración de las opciones de las bases de datos.
Tenia un ejemplo de escribir dentro de una imagen en ASP.NET, así que aquí esta la demo :)
Además por una pregunta en los foros de MSDN me vi sanamente obligado a terminarlo y publicarlo.
El ejemplo lo pueden descargar desde aquí:
(si no lo puedes visualizar click aquí)
No es muy grande, pero es para reflejar como insertamos estos textos on-the-fly sobre las imágenes
| Desde este formulario… |
Generamos esto… (lindo “bicho” como dice mi novia…) |
|
|
Desde el formulario enviamos parámetros para el texto que se visualiza, el tipo de fuente (que es la que esta instalada en el servidor no en la maquina), el color que lo obtenemos desde el listado que nos brinda el framework, y luego opciones con respecto a la posición dentro de la imagen.
Escribiendo un Texto en un Grafico
Utilizaremos para escribir el método DrawString de un objeto Graphic.
Tiene 6 sobrecargas el método el que utilizare en el ejemplo es DrawString(String, Font, Brush, Single, Single) donde enviaremos el texto, la fuente (tipografía, tamaño, etc.) el pincel/brocha (donde coloremos el color de la fuente) y la posición dentro de la imagen donde queremos que se dibuje.
If _texto.Trim.Length > 0 Then
Dim marcaAguaFuente As Font = ObtenerFuente()
imagenGrap = Graphics.FromImage(miniatura)
imagenGrap.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
imagenGrap.DrawString(_texto, marcaAguaFuente, ObtenerColor(_fuenteColor), _fuentePosX, _fuentePosY)
End If
Si quieres mas de un frase o texto solo hay que repetir el método
Un ejemplo con sombra
A veces para lograr una sombra en una frase mediante la escritura de dos frases una un poco mas abajo de la otra y con el color de sombra correcto
(en este caso negro)
NOTA: En un examen de certificación de .NET una de las preguntas era esto :)
...
'Con Sombra muy basica
imagenGrap.DrawString(_texto, marcaAguaFuente, ObtenerColor("Black"), _fuentePosX + 2, _fuentePosY + 2)
imagenGrap.DrawString(_texto, marcaAguaFuente, ObtenerColor(_fuenteColor), _fuentePosX, _fuentePosY)
Tips
Este ejemplo solo quiere ser eso mismo… un simple ejemplo.
Hay que tener en cuenta que tener en la URL varios parámetros para formatear nuestra salida es un pequeño espacio para que alguien “juegue” con ello. Podrían tranquilamente encriptar nuestro querystring para esto mira el articulo:
Pero algunas sugerencias del Querystring, es decir de la URL
- Si necesitamos enviar algo por querystring:
-
- Tener en cuenta la seguridad, la URL es “muy sensible”. Podrías encriptarla (ver el articulo mas arriba)
Enlaces
- Graphics.DrawString (Método)
Dibuja la cadena de texto especificada en la ubicación especificada y con los objetos Brush y Font especificados.
Al fiel estilo de un articulo anterior
Aquí como obtener el listado de colores en una lista y enlazarlo a un dropdownlist
Dim listadoColores As New List(Of String)
For Each c As Drawing.Color In System.ComponentModel.TypeDescriptor.GetConverter(GetType(Drawing.Color)).GetStandardValues()
listadoColores.Add(c.ToString.Substring(7, (c.ToString.Length - 8)))
Next
cboFuenteColor.DataSource = listadoColores
cboFuenteColor.DataBind()
Espero que a alguien le sirva de ayuda o guía.
Enlaces