jueves, noviembre 13, 2008

Notas Innovation Tour 08 en Veracruz

Generalmente este tipo de posts lo hago en realidad con una libreta de notas al lado, siempre en estos eventos de Microsoft, dan algo y siempre los aprovecho para ir colocando las cosas interesantes o por lo menos que yo no sabia sobre los eventos.


El dia de hoy no tengo esta libreta a mi lado, simple y sencillamente porque no dieron en esta ocasion, no se si se debio a que era la ultima presentacion del Innovation Tour, o a que casi no se realiza en el puerto el evento.


Lo unico que tengo a mi lado son un par de postales publicitarios, uno sobre el Innovation Tour con las direcciones de algunos de los blogs de gente de Microsoft Mexico, los cuales ya tengo instalados en mi Google Reader; y el otro sobe InnovateOn.En este ultimo, tengo anotado mis notas sobre el evento:



  • www.thirteen23.com

  • Asahiyama Zoo y

  • Channer 9 WPF.


¡Y eso es todo lo que tengo!. Caray, muy mal de verdad. Fueron 3 presentaciones, la primera de Omar Aviles, hablando sobre Open Source, PHP y FastCGI. Crei que al mencionar PHP en windows hablariamos sobre Phalanger, pero no simplemente se hablo sobre como configurar PHP en Windows Server. Y eso fue todo. Honestamente un poco aburrido, lo unico rescatable fue la presentacion de Bizpark, del cual yo no tenia datos.


En la siguiente platica hablamos sobre WPF con Roman Lozano. Me parece que presentar Tafiti, Contoso y Family.Show, como demostraciones, no se hace atractivo en lo mas minimo, solo por el echo de que tienen mucho tiempo en linea, o en el mercado como se guste decir.


Por qué? si es desarrollador Roman, no prosento algo desarrolla en la emprea  Intellekt, algo que actualmente funcione y que tengo ya en produccion.. Eso hubiera estamos mas interesante, el final.


El final de la platica termino con una rifas, por lo moenos me llevo un llaverito con el logo del evento, algo es mejor que nada.


Lo que mas me sorprende es la gente que asistio al evento, creo que no fue las mas pobre, seguramente el evento anterior de presentacion de SQL 2008, fue el de menos asistencia.


Pero en esta ocasion el problema fue la asistencia de alumnos de la universidad, como si estubieran siendo regañados para que fieran al evento.


Aplaudo el interes de la Universidad Villa Rica, pero que pena los alumnos que no aprovecha no solo no aprovechan estos eventos, si no que tambien lo toman a broma, Yo  recuerdo haber realizado un poco de bromas en su momento, pero si vas a entrar a un evento solo para bromar con lo amigos y jugar por red WarCraft.... mejor hubiera valido la pena quedarse en el salon.


Por otra partte, creo que los regalos que ganaron los chicos de la univerdad, en espeacial el de software gratuito, seran muy desaprovechados, espero alguien le puege codigo para que no sea un desperdicio.


Listo!


martes, septiembre 23, 2008

Guardar errores en un archivo de texto de forma encriptada

Siempre es buena practica llevar un registro de los errores que se presentan en cualquier aplicacion, creo que lo mas comun es colocar los errores en un archivo de texto, como una especie de log, o en su caso dentro de una base de datos para llevar un registro. Los habra mas sofisticados que pondra la informacion como un evento de windows.

Pero si no queremos que los usuarios de la aplicacion que estan de curiosos, vean y lean los errores que se producen en nuestra aplicacion, una forma practica es la de encriptar el archivo. El problema con esto es que si el archivo de texto se vuelve muy grande la encriptacion puede hacer lenta la aplicacion, ya que tienes que abrir el archivo desencriptar, colocar un mensaje, y volver a encriptar el archivo.

Siendo lo anterior un poco impractico decidi mejor colocar los mensajes encriptados dentro del archivo. Para lo cual modifique la clase que estoy utilizando para guardar los mensajes:

   1:      Public Shared Sub WriteError(ByVal errorMessage As String)
   2:          Try
   3:              Dim path As String = "error.txt"
   4:              If (Not File.Exists(System.Web.HttpContext.Current.Server.MapPath(path))) Then
   5:                  File.Create(System.Web.HttpContext.Current.Server.MapPath(path)).Close()
   6:              End If
   7:              Using w As StreamWriter = File.AppendText(System.Web.HttpContext.Current.Server.MapPath(path))
   8:                  w.WriteLine(Constants.vbCrLf & "Error : ")
   9:                  w.WriteLine("{0}", DateTime.Now.ToString(CultureInfo.InvariantCulture))
  10:                  Dim err As String = "En linea: " & System.Web.HttpContext.Current.Request.Url.ToString() & ". Mensaje:" & errorMessage
  11:                  w.WriteLine(Encrypt(err, True))
  12:                  w.WriteLine("__________________________")
  13:                  w.Flush()
  14:                  w.Close()
  15:              End Using
  16:          Catch ex As Exception
  17:              WriteError(ex.Message)
  18:          End Try
  19:      End Sub


Si observan en la linea 11 puse la palabra Encrypt, es ahi donde estoy haciendo llamar otra funcion, importando en el archivo la libreria de .net de criptografia:

Imports System.Security.Cryptography


    Public Function Encrypt(ByVal toEncrypt As String, ByVal useHashing As Boolean) As String
        Dim keyArray As Byte()
        Dim toEncryptArray As Byte() = UTF8Encoding.UTF8.GetBytes(toEncrypt)
        Dim key As String = "MyKEY"
        If useHashing Then
            Dim hashmd5 As New MD5CryptoServiceProvider()
            keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key))
            hashmd5.Clear()
        Else
            keyArray = UTF8Encoding.UTF8.GetBytes(key)
        End If
        Dim tdes As New TripleDESCryptoServiceProvider()
        tdes.Key = keyArray
        tdes.Mode = CipherMode.ECB
        tdes.Padding = PaddingMode.PKCS7
        Dim cTransform As ICryptoTransform = tdes.CreateEncryptor()
        Dim resultArray As Byte() = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length)
        tdes.Clear()
        Return Convert.ToBase64String(resultArray, 0, resultArray.Length)
    End Function


Ahora ya tendremos nuestros mensajes encriptados. Si queremos desencriptar los mensajes solo tendremos que usar la siguiente funcion en algun lugar y hacerla llamar:



    Public Shared Function Decrypt(ByVal cipherString As String, ByVal useHashing As Boolean) As String
       Dim keyArray As Byte()
        Dim toEncryptArray As Byte() = Convert.FromBase64String(cipherString)
        Dim key As String = "MyKEY"
        If useHashing Then
            Dim hashmd5 As New MD5CryptoServiceProvider()
            keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key))
            hashmd5.Clear()
        Else
            keyArray = UTF8Encoding.UTF8.GetBytes(key)
        End If
        Dim tdes As New TripleDESCryptoServiceProvider()
        tdes.Key = keyArray
        tdes.Mode = CipherMode.ECB
        tdes.Padding = PaddingMode.PKCS7
        Dim cTransform As ICryptoTransform = tdes.CreateDecryptor()
        Dim resultArray As Byte() = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length)
        tdes.Clear()
        Return UTF8Encoding.UTF8.GetString(resultArray)
    End Function

Tal vez usar una forma de aspx que reciba el codigo encriptado:


<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="Bintech.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        Forma de desencriptacion:<br />
        <asp:TextBox ID="TextBoxEncriptado" runat="server" Height="173px" TextMode="MultiLine" Width="308px"></asp:TextBox>
        <br />
        <asp:Button ID="Button1"
            runat="server" Text="Button" />
        <br />
        <asp:Label ID="LabelResult" runat="server"></asp:Label></div>
    </form>
</body>
</html>

Y agregar un evento al boton:







    Protected Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       LabelResult.Text = Decrypt(TextBoxEncriptado.Text, False)
    End Sub


Listo!

¿Donde desea publicar su sitio web?

Aqui dejo un extraño error que me tope con Visual Studio 2005 a la hora de publicar un sitio web. Primero un poco de antecedentes, generalmente publico los sitios web a niver raiz del servidor, es asi,  que siempre modifico las preferencias de publicacion del proyecto en el cual estoy trabajando y elimino la carpeta virtual que coloca por defecto visual studio:

 

20080917z

De esta manera siempre que pruebo un sitio solo tengo que colocar el url http://localhost, en ocasiones coloco un puerto especifico para el servidor de desarrollo y el de publicacion se queda con el estandar 80.

Esto siempre me ha resultado. El detalle fue que en esta ocasion el servidor de publicacion debe llevar una carpeta virtual.

Para empezar la talacha de apuntar a una carpeta virtual en el codigo, particularmente para los archivos de javascript y de estilos. Y realizar cambios no esperados. En fin que regrese la configuracion a la anterior:

20080917c

Con lo anterior pude seguir trabajando sin problemas para hacer depuracion del sitio. Una vez que habia terminado se me ocurrio publica la aplicacion al servidor local:

 

20080917b

¿Donde deseo publicar? en localhost por supuesto. Le di “publish” y:

 

20080917a

Que, ¿Que?. Como que no puedo publicar mi sitio de forma local.

Si analizamos el mensaje, me esta diciendo que debo publicar en un sitio diferente al de la aplicacion web, pero lo cierto es que en ningun momento coloque que localhost es donde se encuentra mi aplicacion web, es mas en realidad, siendo estricto se encuentra en una carpeta llamada d:\dev.

Por otra parte cuando se depura la aplicacion y se lanza el servidor de pruebas de visual studio, en ningun momento se coloca localhost, solo se coloca la carpeta virtual y a lo mas un puerto , que en mi caso era diferente al 80.

Sin embargo, al parecer se guarda algun registro en algun lugar y se conserva localhost, donde se guarda el registro, no lo investigue, la verdad es que me apuraba, poder publicar el sitio para demostrarlo.

Una busqueda rapida por Google, mencionaban que ese error se debia colocar a que yo estaba colocando el sitio en el mismo url, que lo cambiara por el de un sitio remoto, gran ayuda. Le di vueltas al asunto, y se me ocurrio prender la paloma de IIS Server como servidor de publicacion y colocar cualquier cosa que no fuera localhost:

 

20080917d

Cambie de nuevo la opcion de usar Visual Studio Dev Server para seguir trabajando como normalmente lo hago,:

 

20080917e

Como pueden apreciar el servidor de IIS no lo estoy utilizando, pero sin embargo si parece haber sido cambiado el parametro en algun lugar.

Vuelvo a intentar publicar:

 

20080917b

Y esta vez sin errores!

Listo!

lunes, septiembre 22, 2008

Monitoreo de los Salarios en IT en Mexico

La revista Software Guru esta invitando a todo programador, desarrollador, administrador o cualquiera que sea el ambito, pero involucrado en el area de la industria del software a participar en su encuesta de este 2008, los resultados apareceran en la revista en la edicion de noviembre.

Ademas de ser una muy buena revista de software, me parece muy interesante conocer este tipo de indicadores.

Puedes llenar la encuesta en:

www.sg.com.mx/component/option,com_trivia/task,view/trivia_id,3.

Listo!

martes, septiembre 02, 2008

Google chrome: La solución para Ajax?

Google anunció el lanzamiento de un nuevo browser, el cual esta destinado a solucionar, por sobretodo los problemas de memoria para las aplicaciones web que usan de forma extensiva ajax.

download-google-chrome

Aqui en llanura.com, creemos que viene a refrescar el nicho de mercado de los navegadores de forma muy positiva. Sí, como se comenta en el webcomic de presentacion, este nuevo navegador permitira tener una maquina virtual de Javascript, las posibilidades para tener mejores aplicaciones web son muchas.

Por lo menos para el desarrollador promedio, tener la ventaja de no estarse preocupando por apuntadores de memoria y cosas por el estilo.

Me parece muy interesante que esten usando Webkit para el core de desarrollo del navegador, y V8 para la maquina virtual.

Recomiendo mucho la revision de la informacion que se presenta en la pagina oficial del blog de google, y esperar el lanzamiento de la pagina de descarga, que al parecer sera www.gchrome.com www.google.com/chrome .

Listo!

viernes, agosto 22, 2008

Detectar si SQL Server esta instalado en un equipo

Estoy tratando de crear un sencillo script en Asp.net, emulando la simplicidad de WordPress, para instalar un aplicacion web en cualquier equipo.

Como estoy usando SQL Server como base de datos, necesito que antes de instalar el esquema de la aplicacion en sql server, verificar que SQL server este instalado en el equipo.

Windows 2000 en adelante (XP, 2003, etc) trae en el core WMI el cual permite revisar, y hacer acciones sobre los servicios de windows.

Una herramienta muy util para esto es WMI Code Creator disponible en Microsoft, el cual me ayudo a crear la consulta destinada a descubrir los servicios del equipo.

Sin mas rollo el codigo:


Imports System
Imports System.Management
 Private Function isServerInstalled(ByVal servername As String) As Boolean


        Try
            Dim searcher As New ManagementObjectSearcher( _
                "root\CIMV2", _
                "SELECT * FROM Win32_Service WHERE Name = '" & servername.ToUpper & "'")
            If searcher.Get.Count = 0 Then
                Return False
            End If
 
            For Each queryObj As ManagementObject In searcher.Get()
                If queryObj("Name").ToString.Equals(servername.ToUpper) Then
                    Return True
                Else
                    Return False
                End If
            Next
        Catch err As ManagementException
            Return False
        End Try
    End Function

Y para usarla dentro de la pagina:




    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not (isServerInstalled("MSSQLSERVER") OrElse isServerInstalled("MSSQL$SQLEXPRESS")) Then
            Response.Redirect("nosqlserver.aspx")
        End If
    End Sub

Listo!

jueves, agosto 14, 2008

Función para ejecutar un procedimiento almacenado

Continuando un poco con SQL Server y el post anterior sobre procedimientos almacenados, ahora dejo una pequeña funcion que permite recibir como parametros una cadena de textos para el nombre del procedimiento y un objeto hashtable para los parametros.

La idea es que esta funcion se guarde como un metodo dentro una clase para el proyecto que estamos realizando.

Actualmente esta clase ya cuenta con metodos para obtener un datareader, un escalar, una consulta non-query, etc. Ahora la idea es que acepte procedimientos almacenados.

    Public Function ExecuteStoreProcedure(ByVal spname As String, ByVal params As Hashtable) As SqlDataReader
        If connString.State = ConnectionState.Closed Then
            connString.Open()
        End If
        Dim cmd As New SqlCommand(spname, connString)
        cmd.CommandType = CommandType.StoredProcedure
        For Each param As DictionaryEntry In params
            cmd.Parameters.AddWithValue(param.Key, param.Value)
        Next
 
        Return cmd.ExecuteReader
    End Function 'ExecuteDataSet


De esta manera creamos un objeto de la clase, mediante:


        Dim db As New AccessDatabase
        Dim oreader As SqlClient.SqlDataReader
        Dim hashParams As New Hashtable
        hashParams.Add("@page", 3)
        hashParams.Add("@pagesize", 50)
         oreader = db.ExecuteStoreProcedure("usp_getdestiniesbypage", hashParams)


Si lo deseamos podemos colocar un grid en nuestra pagina y vincular directamente el objeto datareader.

        GridView1.DataSource = oreader
        GridView1.DataBind()

Listo!

Notas del Seminario Tecnologico 2008 en Veracruz

Generalmente voy colocando una serie de notas en los cuadernillos que dan para estos eventos, pero en esta ocasion, lo unico que llegue a apuntar fue la direccion del blog de Oscar Correas (http://ocorreas.spaces.live.com), quien fue el expositor de la primera parte SQL 2008. Y algunas preguntas que le hice a él mismo. De las cuales me gusto cuales fueron las respuestas.

Honestamente muchas cosas fueron nuevas para mi, o por lo menos porque no las uso. El esquema de seguridad y de planes de mantenimiento suena tremendo. Asi tambien el asunto de poder realizar reporting services sin necesidad de un IIS. Lo cual puede ser practico pues en Vista Home no se instala el IIS7. Amplio conocimiento del expositor la segunda parte, caray me dieron ganas de tomar un curso con el. No asiste al evento de Vista, porque a diferencia de mucha gente, lo uso, funciona bien, y no quiero complicarme. Sobretodo que ahora, no tengo que administrar tantos equipos. Espero empezar a usar SQL 2008 lo antes posible.

Pero en esta ocasion, mis notas mas bien estan efocadas al evento mismo, y no tanto a lo nuevo que trae el producto. De entrada, como mencione muy bien los expositores, Oscar y Miguel Angel Garcia de Compueducacion (http://www.compueducacion.com.mx) dieron de manera rapida y concisa las nuevas funcionalidades del producto. Lo malo, pues la poca publicidad que dieron al evento los de Microsoft. El anterior evento fue de aproximadamente 60-70 personas, ahora solo asisitimos por ahi de 10. Pregunte por la gente de Microsoft, y nadie venia con ellos, en realidad Oscar trabaja en bSide un partner de MS, caray ni siquiera Humberto Aguirre que esta situado en Veracruz, estuvo durante todo el evento, llego y se fue. Algunos participantes felices porque se llevaron un paquete de cuadernillos o de plumas que al final regalaron, asi como  los libros, que solo porque no eran de herramientas de desarrollo o de servidores, no me puse a pelearlos. :D

Espero que la poca asistencia no provoque que de repente no vengan a impartir estas platicas.

Listo!

pd. Oscar Correas y yo estuvimos de acuedo que el evento de blogit.ms estuvo muy chafa… que casualidad que el ganador de un dia para otro tuvo como 800 votos… mmmm

viernes, agosto 01, 2008

Calcular pago del recibo de honorarios en linea

En ocasiones tengo que dar recibos de honorarios por algun trabajo realizado. Por lo cual tengo un archivo de excel para esto. Con la migracion a mi nueva laptop, no encuentro el CD donde respalde el archivo, el dia menos pensado aparece.

Creo que ya era oportuno tener el archivo de excel, en Google Apps o algo por el estilo. No hace mucho lei en la revista de Software Guru, sobre un caso en el cual lograron mediante Zoho tener una pequeña aplicacion que funcionaba como un webservice.

Me parecio interesante el asunto de poder colocar un webservice para el calculo, en realidad no toma, mucho y seria practico colocarlo en otras aplicaciones. Igual ya me estoy ideando una aplicacion completa para facturacion (mensaje para el Robert y SICFE.Net).

Busque en Zoho, y despues de una pequeña batalla con mi usuario y contraseña, experimente colocar mi primera “Aplicacion” con Zoho Creator.

Al principio no entendi muy bien en que estaba programando, pense por un instante que era Javascript, pero no es algo diferente, una especie de JSON, sin serlo. Diferente.

El entorno es bastante amigable, logre entender el lenguaje y despues de 30-40 minutos, tengo el resultado:

http://creator.zoho.com/vgarcias21/form/1/

El resultado no es totalmente un servicio web, pero funciona bastante bien y es lo que andaba buscando hacer. El codigo del script es el siguiente:



form Recibo_de_Honorario 
{ 
    displayname = "Recibo de Honorario" 
    Cantidad_a_recibir 
    ( 
        displayname = "Cantidad a recibir" 
        type = MXN 
        width = 20 
    ) 
 
    Monto_en_recibo 
    ( 
        type = formula 
        value = (Cantidad_a_recibir / 0.95) 
    ) 
 
    IVA_15 
    ( 
        type = formula 
        value = (Cantidad_a_recibir / 0.95 * 0.15) 
    ) 
 
    Valor_total 
    ( 
        type = formula 
        value = (Cantidad_a_recibir / 0.95 * 1.15) 
    ) 
 
    Ret_10_ISR 
    ( 
        type = formula 
        value = (Cantidad_a_recibir / 0.95 * 0.1) 
    ) 
 
    Ret_10_IVA 
    ( 
        type = formula 
        value = (Cantidad_a_recibir / 0.95 * 0.1) 
    ) 
 
    Valor_neto 
    ( 
        type = formula 
        value = (Cantidad_a_recibir / 0.95 * 1.15 - Cantidad_a_recibir / 0.95 * 0.2) 
    ) 
 
    plain 
    ( 
        type = plaintext 
        value = "&lt;DIV id=ted&gt;Consulta el resultado en: &lt;A href=\"http://creator.zoho.com/vgarcias21/view/1//%22&gt;http://creator.zoho.com/vgarcias21/view/1/&lt;/A&gt; &lt;/DIV&gt;" 
    ) 
 
}

Listo!

Comunidad IT Pros y MS Innovation Tour 2008 en Veracruz

La comunidad de IT Pros Mexico esta invitando a unos seminarios que se realizaran sobre Windows Vista y Microsoft SQL, se llevaran a cabo en distintas ciudades de la republica, y entre ellas incluiran Veracruz, el Martes, 12 de agosto de 2008.

Además el próximo 27 de Agosto de 2008 andaran por aqui los de Microsoft con algunos temas interesantes:

10:00 - 11:00 Technology Business Preview
11:00 - 12:00 Aceleración de Negocio
12:00 - 12:30 Break (Café, Galletas) - 30 personas
12:30 - 13:30 Programas para Empresas de Microsoft
13:30 - 15:00 Networking
Track de Tecnología
15:00 - 16:00 Enterprise 2.0 Blogs, Wikis, Mashups, RSS, redes sociales y bancos de ideas, se han convertido en uno de los mejores métodos para compartir información no estructurada dentro de las organizaciones, aprende como integrar ésta información con los datos estructurados de las organizaciones para agilizar y mejorar los procesos de negocio. OBA y Sharepoint
16:00 - 17:00 Aprovechando el poder de Windows. Windows Presentation Foundation, WorkFlow Foundation, Communication Foundation, son de los principales avances que el framework tiene para el desarrollo de aplicaciones. Aprende como generar aplicaciones altamente confiables y de alto rendimiento, ASI COMO Las consideraciones que debes de tener en cuanto a compatibilidad con Windows Vista
17:00 - 17:30 Break
17:30 - 18:30 Web 2.0 y Servicios de Datos. La integración de los servicios de internet que ofrecen Windows Live nos permiten crear la nueva generación de aplicaciones interactivas en conjunto con el poder de Visual Studio y las nuevas funcionalidades de SQL 2008 descubre las nuevas posibilidades que tienes
18:30 - 19:30 Interoperabilidad MySQL, PHP, SQL Express, hay muchas inversiones que se han hecho en estas tecnologías. Descrubre como sacarle el máximo a estos desarrollos y como lograr lo mejor de estos mundos.
19:30 - 20:00 Enthusiasts Talk

Me interesa mucho ver qué presentan con PHP, seguro harán el comparativo de SQL Express y MySQL. Espero este interesante.

Al parecer el evento se realizará en el Fiesta Americana. No he visto todavia la forma de registro para el evento toda la informacion la esta publicando Jaime Sanchez, lo curioso es que al parecer no tiene una pagina en el sitio de Microsoft. La informacion ha sido lanzada en Facebook, Hi5 y en Blogs MSDN. Pareciera que quieren que la noticia del evento sea un tanto viral, y no tan formal.

Listo!

jueves, julio 31, 2008

Mojave: 18 meses tarde.

No me gusta hablar sobre una noticia que todo el mundo esta reportando, es más este blog, se ha vuelto casi personal, una especie de guia de tips para el día a día de programación que voy descubriendo segun necesito. Pero existe tanto comentario sobre “El Experimento Mojave”, que me decidi a poner mi reflexion personal sobre el asunto.

Creo que como puntualiza Héctor Obregón, en su blog, “Sin el hardware adecuado Vista funciona mucho peor que XP.”, y creo que lo mas curioso es que la gente mas critica sobre el sistema operativo es gente del medio de la informatica. Yo en particular no he oido a alguien fuera de este cerrado ambito de geek, nerds o como se le quiera llamar, que critique tanto Vista. Seguro, todo el mundo quiere mas velocidad, muchas mas velocidad, pero lo cierto tambien que el usuario final reconoce que entre mas memoria, entre mas velocidad mejor la experiencia en cualquier computadora, sea Windows XP o sea Vista, MacOS, Ubuntu o lo que sea.

El lanzamiento de Vista fue en Enero del 2007, hace 18 meses (a fecha de este post). En el mercado todavia habia maquinas en venta con 512 Mb, ¿De verdad alguien con un poco de experiencia en sistemas, pensó que era suficiente para Vista?.

Personalmente no sali corriendo ese enero, ni en febrero, ni agosto, ni en diciembre a comprar windows vista. Espere 17 meses a compra una maquina que realmente soportara el nuevo SO (ver mi post anterior) .

Francamente trabaja de maravilla. La nueva laptop es familiar, es decir cualquier persona en la casa tiene acceso a esa maquina, y antes de la compra comente que tendria Vista, me preguntaron “¡solo quiero que sea mas rapida que mi laptop!”.

Sabia, que no era una cuestion de sistema operativo, es una cuestion de hardware. Javier Matuk comenta en su blog “Quizás el público esperaba otra cosa, sobre todo por las necesidades de hardware que exige el producto…”, yo replanteo el asunto a una cuestion de economia, la nueva laptop me costo mucho menos que la anterior y es muy superior a la que tenia, claro que hace 18 meses, pensar en comprar una PC con 4Gb en RAM por menos de $1,500 usd, era impensable, pero era cuestion de esperar, ahora es mas que accesible.

Si yo le pusiera Windows XP a esta nueva laptop, creo que si funcionaria mucho mas rapida, pero el usuario en la familia usa la computadora para ver videos de internet, para ver las fotos de la familia y amigos, para escribir un archivo de word, crear una hoja de calculo y para esto Vista es indudablemente mas facil de usar.

Pero… UAC, que con UAC, he usado MacOS Tiger por mas de 4 años, y ubuntu desde la version 5, es lo mismo. Prefieren perder un dia entero por algun virus, que estar apretando un par de boton alla cada que se instala alguna aplicacion.

Es el mejor sistema operativo? Puede ser que no, pero honestamente mas sencillo de usar que muchos anteriores (incluyendo algunas versiones de Mac). ¿Se puede mejorar? Claro que si, para empezar el SP1.

Como desarrollador, espero que eventualmente desaparezcan las maquinas, no que tienen Windows XP, sino las que tienen 1Gb no importa que SO tengan… ;)

Listo!

jueves, julio 17, 2008

Virtualización en Windows Vista Home

Antecedentes

Hace unas semanas recibí mi nueva laptop, es una Dell Vostro 1510, con 4gb en ram, un procesador de 2.0Ghz y un disco duro de 250 Gb. Me parece que valió la pena la compra.

puntuacion

A diferencia de las compras anteriores, en esta ocasión, decidí comprar algo no tan exagerado, que cubriera un poco mas de las expectativas del sistema operativo, y listo.

Pude haberle comprado, una tarjeta gráfica mejor o en su caso un mejor procesador, pero la idea es compra una nueva laptop en dos años aproximadamente y no como antes que me esperaba casi 5 años en una nueva compra.

Problema

Ahora bien, en esta ocasión la computadora es para la casa, es decir no seré el único usuario de ella, por lo que estoy tratando de tomar algunas precauciones, una de ellas no quiero tener una máquina con varias versiones de visualstudio, varias versiones de apache, varias versiones php, etc. Y después de un tiempo y con varias versiones de todo, borrado cosas indebidas, visitados blogs con virus, y un largo etc. Siempre siento que la velocidad de la computadoras, empieza a sufrir, independiente de otros aspectos, como uso de disco, etc.

Solución

Tomando la información de Ruben Colomo sobre la virtualizacion, se me ocurrió que podría utilizar Virtual PC 2007 y tener en la misma máquina dos sistemas operativos, ya que en realidad mucho de lo que todavía hago es es windows xp.

Si bien podría haberlo instalado con VPC 2007, me mando un mensaje de que el sistema no es el adecuado para ejecutar VPC 2007, supongo que requiere tal vez un Windows Vista Ultimate, (cosa que por precio decidí no tener) o yo que se, total que no quería empezar con ese tipo de mensajes en esta nueva laptop.

Cuando me llego un DVD de Sun, hace un mes, instalé en la vieja máquina VirtualBox, pero la verdad fue un fraude, por mi antigua laptop, no por la aplicación, cuando quería crear un máquina virtual, casi me quedaba sin RAM.

Instale en esta nueva computadora, VirtualBox que además es opensource, y funciona muy, pero muy bien. Y puedo instalar no solo sistemas operativos de Microsoft, sino que inclusive puedo colocar otros como linux y próximamente MacOS.

virtualbox

¿Por qué hacer esto Windows en Windows?... ya imagino alguno que otro criticando por el asunto, y comentando que mejor linux... mejor una partición, etc.

Bueno, la idea es instalar todo los programas beta que se me ocurra y no tener conflictos, por otra parte es mas fácil realizar un respaldo de una máquina virtual que de toda la laptop, la otra es seguridad, espero que los muchos problemas que todavía tiene windows xp de virus, no los sufra en vista, pero no quiero que se contaminen las dos cosas al mismo tiempo, luego tengo que sufrir un par de días por diferentes virus.

Pero sobretodo, como mencione poder realizar pruebas y mas pruebas con diferentes versiones de aplicaciones desde alpha, beta, rc, etc.

El proceso es muy sencillo, eso si debes tener listo tu disco de instalación de Windows XP, o del sistema operativo a instalar. Solo es crear la máquina virtual, seleccionar el espacio en disco duro que se quiera utilizar, asignar la memoria RAM que en este caso estoy poniendo 512 Mb para WinXP que debe ser suficiente, si requiero mas, puede ser que le suba a 1Gb. Y finalmente montar el CD para la instalación.

Windows Vista Home quedará como una herramienta casera, de vídeos, de fotografías, y edición de imágenes, es decir las cosas realmente importantes, mientras que para Windows XP, seguiré con la labor de programación bajando y quitando componentes para VS2008SP1 Beta, MVC Preview 4, AppEngine Pre-Alpha, Cake 1.2b, etc... ;)

WinxpVirtual

Listo!

martes, mayo 27, 2008

Top Blogger Microsoft

Con motivo del concurso de Top Blogger Microsoft, en esta ocasion, empiezo una serie en la cual estare presentando como usar la herramienta de Expression Studio para realizar una aplicacion web. En este caso la idea es lograr una aplicacion que utilice las ultimas tecnologias de microsoft, y algunas experimentales, para lograr una aplicacion que nos permita llevar un registro medico personal, aun cuando el clasico ejemplo es crear un blog, creo que es mas interesante algo que pueda ser util, ademas hay muchos ejemplos de crear un blog.

Cualquiera puede registrarse en http://www.blogit.ms/, debes seleccionar una de las categorias del concurso de Microsoft son:

  • Windows: XP  y Vista
  • Seguridad: Forefront, ISA Server y OneCare
  • Management: System Center
  • Windows Server: 2003, 2003 R2 y 2008
  • Comunicaciones unificadas: Exchange, Office Server
  • Microsoft SQL Server
  • Microsoft Sharepoint server
  • Microsoft Expression

Supongo que no incluyen Visual Studio, porque mucha gente lo usa, y me parece que el objetivo es descubrir  las otras herramientas.

En mi caso la categoria seleccionada es Microsoft Expression, lo mas cercano a programacion.

Si gustan de este blog, no duden en participar eviando sus votos, dar un click no perjudica la salud.

Listo!

lunes, mayo 12, 2008

sábado, mayo 10, 2008

En Veracruz se cumplen los sueños

En el post Notas del Tour Tecnológico de Microsoft en Veracruz de noviembre exponia que las soluciones de telefonia que proponia Microsoft eran de sueño, ¿Por qué?, por la simple razon que el omnipresente proveedor de internet en México, Telmex, no da conexion sincrona en el servicio, es decir se pueden obtener velocidades de 1Mb, 2Mb o mas de bajada, pero para la subida, se conmuta a la velocidad de 128kbps. Lo cual no permite algunas de las propuestas que en su momento platicaba Ruben Colomo, es asi, que me quede con un sentimiento de ensoñación, lo cual no es malo, no hay como la esperanza.

Pero por lo menos en Veracruz, el sueño se cumple. IntraNetworks es una compañia veracruzana, que esta llevando WiFi a toda la ciudad, desde hace un mes. Usa anchos de banda de hasta 4Mb... SINCRONOS!..

Y entonces si se puede lograr algunos de los servicios de Microsoft Unified Communications.

Si se puede, si se puede.

Listo!

viernes, abril 18, 2008

¡Mañana perdida, gracias Microsoft!

De verdad que nunca le echo la culpa a Microsoft por el tiempo que se puede llegar a perder en la computadora, desde el asunto de estar buscando la documentacion apropiada para algun control de VS o para algun problema ocasionado por un virus, etc.

De verdad muchas veces pierdo el tiempo en cosas que no tienen que ver mas que con el mantenimiento de las computadoras, entre instalar versiones beta, instalar software de dudosa reputacion, etc.

Pero... en esta ocasión, en esta ocasión honestamente si culpa a Microsoft, porque no hice algo equivocado. Cuento la historia:

ANTECEDENTES

Recibi una computadora nueva para trabajar, y nueva es un decir, digamos que yo no usaba, me la dieron con windows xp recien cargado (¿por qué no con vista? esa es otra historia).

INSTALACION

Empece por instalar mi pequeña lista de software, para poder desarrollar, entre esos incluidos office, visual studio, componentes adicionales de visual, notepad++, netbeans, drivers de impresora, sqlserver, azureus, firefox, thunderbird, sql server... etc.

A continuacion los updates... y ahi si... irme a mi casa y descansar... al otro dia listo... la maquina con todos los updates, de todo.... incluidos los de hardware...

La deje por el momento asi, cargar mis documentos importantes, los desarrollos, la maquina esta particionada, entonces, poner en d: todo lo que se puede salvar, para el infortunio problable de una futura restauracion.

A continuacion regresamos a los update, si claro, los updates de los update o no?... otra nochecita que bajen los updates... a descansar.

ACTUALIZACIONES

Lunes y Martes perdidos en poner al tiro la computadora... recorro mi plan de trabajo los dos dias, es decir mi propio update, perfecto, todo va bien.

Abro Visual Studio y a pegarle... listo, correos a leer, escribir en este blog, parece que va bien la semana.

JUEVES

Momento de usar nuestro treeview, un componente de obout.com para el desarrollo, ejecutos el archivo de la documentacion el cual es un sitio web, y pum me pide el iis, ¡Cierto el iis!. Agregar componentes de windows, aprovechamos y colocamos el ftp server, por cualquier cosa. Se instala y bien. Visitamos windows update por si las dudas y todo bien, un nuevo update pero no tiene que ver con iis, pesa poco como va, a instalar. Debug en el proyecto, todo bien, el control aparece.... ya revise documentacion. Fin del dia.

VIERNES

¿En que me quede? Ah si, ver la documentacion de obout para agregar otros eventos, pum no se puede ejecutar la pagina aspx en el iis, ¡Que tonto soy!... configurar Net 2.0 en el iis. Propiedades, pestañita ASP.net, ya quedo. Veamos.

PUM!

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). For information on modifying metabase permissions, please see http://support.microsoft.com/?kbid=267904.

 

What! Metabase? Como crees!!! no no...mmm.... tiene liga super!

Leer documentacion el sitio de microsoft.... bajar Metaacl.exe... que un .vbs... en scripts.... agregale usuario.... NO, que siempre no porque si usas net, mejor uses aspnet_regiis.... mmm... por fin...

Ok, command prompt y que bill gates me ayude...

Nada..., ok google... metabase error..., que metaexplorer, metaedit, resource kit de iis 6.0, .... mmm

"recomiendo reinstalar iis"... ok... componente de windows.... quita palomita y listo...

Regclean por si las dudas...

reiniciar...

Otra vez... componnentes de windows pon palomita....

mmm....

Veamos... documentacion de obout... nada... PUM mismo error...

GOOGLE

Uchala... google...

http://www.forosdelweb.com/f29/failed-access-iis-metabase-377469/

"El problema está que si instalas primero el V.S o el Frameworks y luego el IIS te puede dar este problemita. Así que lo que hice para resolverlo es ir a panel de control, agregar o quitar programar y reparar frameworks y listo."

QUE!!!!

Como es de esperarse, hice lo anterior... y se resolvio el asunto, moraleja, nunca, nunca instalar Visual Studio o el Net framework, sin antes instalar IIS. NUNCA.

Segunda moraleja, no seguir las ligas de "solucion" que provee Microsoft, sin antes consultar Google, lo siento Live Search, google es google.

¿Por que echarle la culpa a Microsoft? En ninguna parte de la "solucion" del sitio de soporte se habla sobre este comportamiento. Te hace utilizar herramientas de edicion de la metabase del iis, que de por si, el usa de metabase me preocupa, si haces algo equivocadamente, puedes "esperar comportamientos inesperados". Si es algo que pasa conmunmente como pude ver en varios foros, porque no ponen una advertencia a la hora de la instalacion de Visual Studio. No se, hay varias maneras de preveer la situacion, porque lo cierto es que no deberia de ocasionar problemas, es como comprar pan, jamon y mayonesa... en realidad debo comprarlas en un orden para hacer un sandwich?

Y si fue final feliz porque ya esta funcionando mi IIS.... pero perdi toda la mañana... gracias microsoft.

Listo!

viernes, abril 11, 2008

Estamos con los heroes en Veracruz

El pasado Martes 8 de abril se realizó el evento de Microsoft "Estamos con los heroes" aquí en Veracruz, el cual tuvo la participación de Rubén Colomo y de Roberto Ramírez, el primero de las filas de Microsoft México y el segundo de Intellekt. Los temas fueron Visual Studio 2008, SQL Server 2008, Windows Server 2008 y Service Pack de Windows Vista.

En términos generales el curso estuvo bien, Rubén respondía casi todas las preguntas sin dudar, lo cual muestra el amplio conocimiento, me entero por el que BizTalk ya esta en versión 2006 R2 (no lo sabia yo). Y algo importante que estan impulsando en Microsoft es el TechBA administrado por el Fumec. Tendré que darme una vuelta a ver que onda con eso.

Roberto estuvo presentando VS8 y SQL8, me deja un sabor de que pudo estar mejor, no sé pero la parte de desarrollo no termina de gustarme como la presentan, tal vez sea necesario que traigan a alguien mas clavado, sentí que hubo mas preguntas sin contestar en esta parte.
Roberto se enfocó mucho a la parte de Linq.
¿Que me gusta de Linq?, por supuesto la parte de intellisense en VS8, creas un archivo nuevo ".dbml", le pones la parte de la base de datos arrastrandolo desde el explorador y ya tienes una capa de datos entre tus asp y sql server.

¿Qué no me gusta?... que solo puedes usar SQL Server... mientras no puedas colocar otro tipo de bases de datos, por lo menos Access o Excel, no creo que se extienda mucho el uso de Linq. Le pregunte a Roberto sobre este detalle y me contestó que no tenian informacion sobre el soporte de otras plataformas. Habra que esperar, no creo que no quieran dar la batalla con Oracle y DB2... etc.

Después de un buen rato con el asunto de Linq, pasamos a ver la parte de virtualizacion de SQL 2008, estuvo tan buena la platica que me quede con ganas de instalar por lo menos el Virtual PC 2007 en mi laptop. Seguro lo hare.

Estoy esperando que Ruben libere el contenido de la presentacion de Virtualización para tenerla guardada y en su caso hacer una explicacion a clientes o para lo que se requiera.

Algo mas que remarco Ruben, a parte de su BLOG!!!, es el asunto de que mandemos historias al sitio de "Estamos con los heroes", que puedes ganar diferentes premios. Ya tendre oportunidad de mandar algo sobre lo que hacemos en llanura.com.

Listo!

Troubleshooting: Error "alter authorization" en SQL Server

He querido crear diagramas en el SQL MSE y he tenido el problema de al momento de crear un diagrama despues de haber instalado una base de datos que proviene de otro lugar o
en su caso mediante un scritp, me aparece un error de permisos con una nota de "alter authorization"
Para resolver el problema se puede ejecutar:


EXEC sp_dbcmptlevel 'yourDB', '90';
go
ALTER AUTHORIZATION ON DATABASE::yourDB TO "yourLogin"
go
use [yourDB]
go
EXECUTE AS USER = N'dbo' REVERT
go

martes, abril 08, 2008

Encriptar y Desencriptar de manera sencilla en MS SQL 2005

Estoy en pleno desarrollo de una aplicacion que va a estar montada sobre la plataforma de .net. Una de las preocupaciones es la parte de seguridad de las contraseñas, es cierto que las sentencias de SQL que a continuacion se muestran, no son las mas seguras como lei por ahi. Pero es una manera sencilla y rapida de salir, es un mejor que nada.

Sin mucho rollo pongo el codigo:

INSERT INTO Users
(Id, Username, Password)
VALUES (20, 'user20', ENCRYPTBYPASSPHRASE('siempremeolvido', 'pass20'))

Para el caso de obtener la informacion en formato "leíble":

SELECT Id, Username, CONVERT(VARCHAR(300), DECRYPTBYPASSPHRASE('siempremeolvido', Password))
FROM Users


Para el caso de busqueda por un usuario y contraseña


SELECT Id, Username, Password, Added, Status
FROM Users
WHERE (Username='victor')AND(CONVERT(VARCHAR(300), DECRYPTBYPASSPHRASE('siempremeolvido', Password)) = 'pass20')

Listo!

viernes, enero 18, 2008

Truco: usar Firefox en el portal IDSE del IMSS

El truco es sencillo es usar el completemento (Add-On) de Firefox llamado IE Tab, el cual utiliza el motor de Internet Explorer para cargar las paginas que se visitan con Firefox.

Importante es tener una versión reciente de Java. En este caso lo mas práctico es visitar www.java.com, además de contar con el complemento de Java Policy que se obtiene desde la misma pagina de http://idse.imss.gob.mx.

Clipboard01

Empecé a tener problemas queriendo cargar esta pagina después de la instalación de Adobe Flex, pues se estaban ejecutando diferentes máquinas virtuales de java. Tuve la puntada ejecutar el CCleaner, pensando que se quedaban por ahí los archivos temporales en la carpeta de Internet Explorer, pero no fue hasta que leí el registro de errores de la máquina que entendí que pasaba. Desgraciadamente se borró algo mas en esa máquina y de plano ya no se ejecutan ningún javascript. Por la fecha y las prisas, decidí moverme a otra computadora, para realizar movimientos en la pagina de IDSE, pero no quería mover la configuración de seguridad de la nueva computadora, ya que no soy yo el que la utiliza de manera diaria.

Instale en un USB, firefox portable, supuse que entraría sin problemas con FF. Error!. Resulta que en realidad la pagina del IDSE, maneja unos ActiveX, es asi que requiere a fuerzas el IE. Entré a Google y en un foro encontré que existe algunos usuarios usaban navegadores basados en el motor de IE, para entrar.

Clipboard02

Y recordé el IE Tab de firefox. Funciona de maravilla. Lo único que se debe hacer es configurar las opciones del complemento las direcciones del imss:

http://*imss.gob.mx/*

Clipboard03

Ahora, cuando se entra al portal, en realidad se esta cargando el motor de IE, pero sin modificar la configuración de esa computadora y desde un USB. ;)

Aparece el icono de Internet Explorer de la siguiente manera en la barra de direcciones:

 Clipboard04

 

Listo!