viernes, diciembre 21, 2007

Lista de 10 noticias .Net (nov-dic 2007)

Tuve la intención de poner este post para principios de Enero, pero dado que es posible que no este en condiciones de escribir además de estar asistiendo a un curso de Java en la universidad veracruzana, creo que será mejor que lo haga antes, además, parece que el frenesí de la comunidad desarrolladora se detuvo un poco con la llegada de las festividades navideñas.



  1. .Net 3.5. Obviamente la primera noticia fue la llegada de .Net 3.5 hace algunas semanas, se acabaron los betas y los CTPs. Tiene muchos funcionalidades nuevas y existen un buen de sitios para comenzar desde obtener la nueva versión hasta documentación del mismo.


  2. Visual Studio 2008. Aun cuando no esta a la venta, ya se puede obtener un versión de esta IDE, mediante alguna suscripción a MSDN o en su caso pirata, seamos honestos esta por doquier la descarga, lo ultimo no lo entiendo, pues existe la versión Express y nos mantenemos en un entorno legal.


  3. ASP .Net MVC CTP. Nos llega la primera versión de MVC para ASP .Net desde Redmond, siguiendo los ejemplos de Rails, Struts, etc., Microsoft nos da esta herramienta para olvidarse de la documentación a la hora de realizar un proyecto y realizar programación ágil, ya era hora.


  4. IIS7. Para los dichosos que tiene un buen servidor con Windows 2003R2 ya pueden obtener su actualización a la nueva versión del cada vez mas popular servidor web de Microsoft. Una de las características principales es la parte modular del servidor.


  5. Mono 1.2.6. Siguiendo el camino de .Net, Mono actualizó la defunción de las clases de .Net 3.5 y aunque no están todavía disponibles para usar en mono, por lo menos se presentan los errores correspondientes.


  6. Expression Blend 2. Si crees que .Net 3.5 es solo C#, con esta herramienta vemos realmente el potencial del nuevo .Net y liberada la version Free Preview Trial  (What!), para seguir haciendo experimentos en Silverlight (quien va a pagar en estos momentos una aplicación de este tipo?).


  7. YUI 2.4.1. Tal vez esta librería no debería ser clasificada dentro de .Net, pero considero que esta nueva versión resuelve varios bugs y por otro lado se puede agregar de manera muy sencilla en cualquier desarrollo de .Net.


  8. FastCGI. Al igual que la anterior, FastCGI tal vez no se deberia incluir dentro de .Net, pero considerando Phalanger (php en .net) y el nuevo IIS. FastCGI viene a ser ese puente entre los dos anteriores.


  9. SQL Server 2008. Este sí, es muy importante para .Net, asi como existe LAMP... aqui es WISSN.. ;)


  10. Visual Studio Add-On de WorldCrat. La vida es un juego, y si eres apasionado de WorldCraft. Listo crea un mod y convierte en millonario.


Listo!

viernes, noviembre 30, 2007

Certificación Java

Preparándome para la certificación Java tratare de ir poniendo los ejercicios que van realizándose dentro del curso.

Problema:

public class TestVehicle {
public static void main(String[] args) {

// Create a vehicle that can handle 10,000 kilograms weight
System.out.println("Creating a vehicle with a 10,000kg maximum load.");
Vehicle vehicle = new Vehicle(10000.0);

// Add a few boxes
System.out.println("Add box #1 (500kg)");
vehicle.load = vehicle.load + 500.0;

System.out.println("Add box #2 (250kg)");
vehicle.load = vehicle.load + 250.0;

System.out.println("Add box #3 (5000kg)");
vehicle.load = vehicle.load + 5000.0;

System.out.println("Add box #4 (4000kg)");
vehicle.load = vehicle.load + 4000.0;

System.out.println("Add box #5 (300kg)");
vehicle.load = vehicle.load + 300.0;

// Print out the final vehicle load
System.out.println("Vehicle load is " + vehicle.getLoad() + " kg");
}
}



Solución:

public class Vehicle {

public double load,maxLoad;

public Vehicle(double maxLoad) {

this.maxLoad=maxLoad;

}

public double getLoad() {

return this.load;

}

public double getMaxload() {

return this.maxLoad;

}

}
Listo!

Notas del Tour Tecnológico de Microsoft en Veracruz

Ayer se realizó en el puerto de Veracruz el evento Tour Tecnológico 2007 de MSDN .

De entrada Jaime Sánchez de Microsoft platico sobre las aplicaciones disponibles de Live.com, dio una breve explicación sobre Writer, Messenger, Mail, Galería Fotográfica, Control Parental, etc. Lo cual no fue muy novedoso, pero en el marco del evento estuvo bien, aprendí que se pueden hacer fotos panorámicas, un punto mas para instalar esta aplicación.

Afirmo que los resultado de las búsquedas de live.com son mejores que en Google, comentando que se mejoraron los servicios de indexación y la interfaz para leer los resultados. Obviamente ya estuve haciendo algunas pruebas, y debo decir que sí, efectivamente ha mejorado bastante, lo pondré de regreso a mi barra de Firefox. Algo interesante es que pusieron la información de encarta como una de las fuentes principales.

No importa que persona sea, de que empresa venga, que lenguaje ocupe, si se trata de algún desarrollador, siempre, siempre, el Visual Notepad es indispensable, no será momento de mejorar estar herramienta en Windows?. Efectivamente Jaime lo usó para explicar que la generación de archivos de Office 2007, basados en XML se pueden realizar dentro del mismo .Net mediante

system.xml;
system.package;



Usando un convertidor del lado de cliente, se puede evitar los problemas de licenciamiento. Por cierto que fui el que levantó la mano para responder a la pregunta de como generar archivos de xml desde un servidor. Y claro es mediante los mime types dentro de un asp o asp.net. Dijo que el inconveniente de realizar esto de esta forma es el asunto de las licencias, aquí entre nos nunca me he puesto a investigar este asunto, asi que en los desarrollos que tuve que generar archivos de Excel, mmm... no se tienen licencia alguna. No se si reírme o preocuparme.


Menciono que existe mucha información en su blog sobre Visual Studio Team, como buen nerd que soy, ya la he revisado en ocasiones anteriores, y no recuerdo haber visto ese post. Tendré que darme una sumergida. Recomendó mucho el blog de Brian Keller, ¡Caray tanta información tan poco tiempo!.


Después se paso a UX, ya habiendo visto su presentación del blog, pues me aburrí. Pero sin embargo la hace divertida. Me pareció un poco comercial de Office 2007 y Windows Vista, entendible. Jaime habló mucho del choque de mundos entre diseñador y desarrollador. Afortunadamente no termino de considerarme un uno ni otro, es posible que yo sea un monstruo. Me preocupa mucho que al rato los clientes quieran tener combos con gráficos y animaciones, de por si es difícil cobrar software, ahora con esto. No vayamos muy lejos, tengo que realizar un sitio web con fondo dorado, pégale duro a la teoría del color y a la usabilidad.


Me gusto mucho la parte en donde comenzó a realizar un pequeño player con Expression Blend, ya me pondré a jugar de nuevo con él, en particular si el fin de semana instalo el VS2008 Express. Ya que no cuento con una MSDN Suscription. Super ejemplo librería británica: http://ttpdownload.bl.uk/


Ya con Expression Blend me surgió una idea para un juego. Si tengo tiempo le dedicaré unas horas. Ya que no he instalado VS2008 no sabia que no se pueden crear animaciones y transformaciones a los archivos XAML de manera sencilla, es forzoso tener otra herramienta para estos fines.


Durante el receso Jaime se juyó. Y nos dejaron a la de gente de la comunidad .Net Veracruz. Participación de Miguel Ortíz hablando de smart devices. En mis notas solo tengo dibujos. Después Tomas Ortíz, narró una historia de como empezó a trabajar el verano del '98 con visual studio y ahora ya maneja VS2008, bien Tomas. Explico perfectamente que es Net 3.5, me enteré que Rosario es la nueva versión después de Orcas. Puso un ejemplo sencillo pero cool de LINQ y C#.


Hice mi pregunta acerca de la creación de propiedades de una clase orientada a lenguaje VB, pero no sabia... tengo que investigar.


Fin de la sesión de la mañana.


Tarde con Rubén Colomo, al igual que con Jaime Sanchez, he leído su blog. Me cae que soy nerd.


Forefront seguridad para empresas grandes, muy interesante el tema pero honestamente no creo que vaya a utilizar pronto esta solución, sigo pensando que la seguridad es importante, pero no tanto para los jefes como lo son reportes que muestren los gastos o las perdidas de algún departamento de la empresa, por poner un ejemplo. Por mi encantado de poner un solucion asi, pero difícilmente tengo clientes que puedan costearse una solución de este tipo. A lo mas se llega  un Active Directory con algunas políticas. Me impacto que usara 5 máquinas virtuales en una laptop de 2 procesadores y solo con 2Gb de memoria, quien lo hubiera pensado. Eso, si cuando instaló el bonito IIS7, no terminaba y no terminaba.


Términos nuevos para mi sobre seguridad:



  1. Seguridad Básica. Una instalación de Windows 2008 por omisión usando Active Directory

  2. Seguridad Racionalizada. Agregar políticas a Active Directory

  3. Seguridad de Monitoreo. Monitorear los servicios de seguridad.

  4. Seguridad Dinamica. Automatizar las tareas de seguridad.

Tal como lo plantea Rubén.


IIS 7 modular con FastCGI, y solo para windows 2008... :S


Finalmente varios vídeos sobre los servicios de Office Communications, combinando Telefonía, Video, Correo electrónico, Mensajería, etc. Sueña México, sueña.


Lo malo del evento:



  • La poca participación de la gente de aquí del puerto, no se si es apatía, o desconocimiento.

  • No se habló de MVC.

  • Que no me dejaron sabritas.. :S

Lo bueno del evento:



  • Que vino gente que esta en un buen nivel de Microsoft, y que se interesa porque la gente de México haga desarrollo, solo leer sus blogs.

  • Los regalos de CDC... un aplauso.

  • Que nos deja soñando lo que se puede realizar, siempre y cuando existieran mejores conexiones de Internet. Algún día RoundTable (Y).

martes, noviembre 20, 2007

Tip: Cambiando CakePHP para la flexión de palabras irregulares.

En esta ocasión veremos una sencilla forma de realizar una flexión gramatical dentro de CakePHP para lograr que nuestra estructura mantenga una correcta descripción de los elementos de nuestras entidades dentro de una aplicación.

CakePHP es un marco de desarrollo para aplicaciones de creación ágiles, basado en los patrones de MVC (Modelos, Vistas y Controles). CakePHP toma el esquema de una base de datos y crea los objetos MVC, con lo cual se tiene de manera muy sencilla una aplicación, que cierto no cumple con todos los requerimiento de la aplicación, por otra parte desahoga la manipulación sencilla y directa de la base de datos.

Para esto es muy importante considerar ciertas recomendaciones gramaticales al momento de generar nuestro esquema de base de datos:

  1. La tabla es un conjunto de registros, por lo cual si estamos guardando direcciones, la tabla deberá llamarse asi: "direcciones"
  2. La llave primaria debiera ser entonces llamada de forma singular y con un sufijo de "_id", para el caso: "direccion_id"
  3. El primer campo deberá ser "direccion" y a continuacion los campo restantes.
  4. Si queremos incluir una llave primaria externa, entonces deberemos llamarla con el sufijo "_id", para nuestro caso "provincias_id".

¿Qué pasa cuando tratamos de crear nuestro MVC?

CakePHP como varios marcos de desarrollo, basan la creación en lo anterior mencionado, y uno de los problemas es singularizar las palabras irregulares, para nuestro caso esto se puede ilustrar:

  • Modelo: direccione.php
  • Controlador: direcciones_controller.php
  • Vista: direccione.html

Por omision CakePHP considera las "s" como el plural de nuestro campo. Para nuestro ejemplo, el problema reside en el uso de "direccione", el cual no corresponde a una ortografía correcta. Una alternativa para solucionar esto es colocar "direccions" en lugar de "direcciones", pero esto de ninguna manera se ve atractivo. Y provoca problemas secundarios en el manejo de las aplicaciones.

La respuesta se encuentra en el archivo de configuración de "inflections.php", en él se pueden realizar diferentes modificaciones, que permitirán colocar un par de palabras para estos casos:

 *  $irregularPlural = array('atlas' => 'atlases', 'beef' => 'beefs', 'brother' => 'brothers')
 
$irregularPlural = array('direccion' => 'direcciones', 'pais' => 'paises');



Al volver a crear nuestro MVC con CakePHP, la estructura quedara:



  • Modelo: direccion.php

  • Controlador: direcciones_controller.php

  • Vista: direccion.html

Listo!

Tienda en línea de Apple México

Por fin abren la tienda de Apple en México, ahora si a pedir los regalos favoritos de Mac. Ya podremos grabar nuestros iPods sin costo adicional. Los precios no son tan atractivos, pero supongo que es la antesala a lo que sera la venta de los iPhone.

De todos modos, uno de los principales atractivos es la MacBook Pro, que fue considerada la mejor laptop para ejecutar Windows Vista.

http://www.apple.com/mexicostore/

Listo!

lunes, noviembre 19, 2007

Lanzamiento de Visual Studio 2008 gratuita

Con el lanzamiento de Visual Studio 2008 RTM para descargar mediante una suscripción MSD, también se acaba de liberar la versión Express Edition, la cual se puede obtener de forma gratuita:

http://www.microsoft.com/express/download/

viernes, noviembre 16, 2007

Aplicaciones Windows Live

Estoy escribiendo desde la versión liberada de Windows Live Writer, funciona maravilloso. Puedo escribir a varios de los blogs que tengo por ahí y lo mas importante he usado esta herramienta como un complemento para aquellos clientes que han decidido usar WordPress como la plataforma para manejar su sitio Web.

(No es por nada pero la ventana de dialogo para la actualización al blog remoto, ha logrado apantallar, se que es una simpleza, pero por increíble que parezca la gente lo ve mágico.... shhh!).

Obtuve la nueva versión desde el sitio de descarga, me topé que en realidad lo que baje es el instalador de aplicaciones Live.  ¿Qué quiere decir esto?, Bueno, pues, resulta que con el mismo instalador puedo actualizar o agregar varias aplicaciones que están saliendo del entorno Live:

  1. Live Messenger, quien no conoce messenger?
  2. Live Mail, la evolución de Outlook Express
  3. Live Toolbar, la competencia del google toolbar.
  4. Live Photo Gallery, la versión release de Windows Max ;)
  5. Live OneCare Child Protection, para la protección de menores.

Todo esto en un solo instalador, y gratuito (siempre y cuando tu máquina tenga windows xp o vista... :|)

Son un puñado de aplicaciones que en especial complementan a Windows XP, pues creo que algunas de ellas, de alguna manera ya están incluidas en Windows Vista.

Esta versión de Live Writer, me permite revisar la ortografía de una manera muy sencilla y en español, :D. Creo que en definitiva nunca mas usaré Word... solo necesito algo que reemplace a Excel... :D.

La otra herramienta que me interesó, es Photo Gallery esperaba que fuera igual o mas parecido a Windows Max, pero la herramienta es bastante rapida para el control de las fotos, y ademas permite etiquetarlas y documentarlas. Vale la pena.

Listo!

¿Cómo editar diccionario de Firefox?

Firefox cuenta con un add-on que permite revisar la ortografía del texto que se vaya colocando en los campos de textos dentro de las paginas o ventanas del navegador. Lo cual es muy practico, ya que usualmente no pongo acentos cuando escribo. Ya sea con papel y lápiz o con el teclado, me gusta comerme los acentos.

Uno de los problemas que he encontrado con el add-on es cuando escribo alguna palabra que ingresé mediante la opción de "Agregar al diccionario",  la palabra la pone tal como se había agregado, es decir en minúsculas, en mayúsculas o como un titulo. Lo cual hace que tenga que en ocasiones rescribir la palabra.

ffaddondic

Creo que el add-on debería tener esta funcionalidad, pero... no me voy a poner a hacerlo... espero que alguna nueva versión lo haga en el futuro.

Me es más sencillo colocar la palabra en el archivo que guarda las palabras del diccionario personal, el cual se encuentra en una de las carpetas de windows:

C:\Documents and Settings\vgarcia\Datos de programa\Mozilla\Firefox\Profiles\7emcp7xs.default



el archivo es  "persdict.dat"


Se abre el archivo en un editor de textos y se agrega las palabras correspondientes.


Se guarda y reiniciar Firefox. El resultado es:


ffaddondic2


Listo!

viernes, noviembre 09, 2007

Windows LiveID Authentication

Leo en el blog de Luis Daniel Soto que ya se libero la version de Windows LiveID Authentication, yo estuve haciendo pruebas, pedi mi AppKey y toda la cosa, pero resulta que lo unico que te manda es un token de 16 digitos o algo asi y listo.

En un principio pensé que con este servicio, me olvidaria de crear un registro para EM, o mejor dicho, quitaria esa parte, ya que no estoy usando Membership, pense que seria codigo que limpiaria la aplicacion, pero honestamente ni siquiera me manda el nombre y apellido de la persona de regreso.

Y estuve leyendo documentacion y curiosamente el webservice me puede mandar de regreso sus contactos, pero no su informacion, no me agradaria poner en la aplicacion "Hola 124128374128, bienvenido a nuestro sitio"... :S

Le dare una revisada por segunda ocasion para ver si puedo rescatar algo de este servicio para la aplicacion.

Listo!

Ejemplo de uso de los controles MS CUI

Aqui va un poco de código de la aplicacion que actualmente estoy haciendo, en la cual estoy incorporando los controles de MS CUI, usando como base de datos MySQL y no XML como el ejemplo que trae la documentación.

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim intIDMedico As Integer
Dim intIDPaciente As Integer
Dim odsPacientes As Data.DataSet
Dim odsDireccion As Data.DataSet
Dim dsPacientes As New Pacientes
Dim dsDireccion As New Direcciones
Dim opcionGenero As String
If Not Request.Cookies("IDMedico") Is Nothing Then
intIDMedico = Server.HtmlEncode(Request.Cookies("IDMedico").Value)
End If
If Not Request.QueryString("ID") Is Nothing Then
intIDPaciente = Request.QueryString("ID")
Response.Cookies("IDPaciente").Value = intIDPaciente
Else
If Not Request.Cookies("IDPaciente") Is Nothing Then
intIDPaciente = Server.HtmlEncode(Request.Cookies("IDPaciente").Value)
End If

End If

odsAntecedentes.SelectParameters("intIDPaciente").DefaultValue = intIDPaciente
odsPacientes = dsPacientes.obtenerPorIDPaciente(intIDPaciente)

'Llenar datos del paciente
opcionGenero = odsPacientes.Tables(0).Rows(0).Item("Genero").ToString
If opcionGenero = "F" Then
PatientBanner1.Gender = NhsCui.Toolkit.PatientGender.Female
PatientBanner1.PatientImage = "/images/generic-female.gif"
ImageButtonModificar.ImageUrl = "~/images/pacientes/modificarPacientesFem.gif"

Else
PatientBanner1.Gender = NhsCui.Toolkit.PatientGender.Male
PatientBanner1.PatientImage = "/images/generic-male.gif"
ImageButtonModificar.ImageUrl = "~/images/pacientes/modificarPacientesMas.gif"
End If
If Not IsDBNull(odsPacientes.Tables(0).Rows(0).Item("Foto")) Then
PatientBanner1.PatientImage = "/images/pacientes/" & odsPacientes.Tables(0).Rows(0).Item("Foto")
End If
PatientBanner1.GivenName = odsPacientes.Tables(0).Rows(0).Item("Nombre").ToString
PatientBanner1.FamilyName = odsPacientes.Tables(0).Rows(0).Item("ApellidoPaterno").ToString & " " & odsPacientes.Tables(0).Rows(0).Item("ApellidoMaterno").ToString
PatientBanner1.DateOfBirth = odsPacientes.Tables(0).Rows(0).Item("FechaNacimiento").ToString
PatientBanner1.Identifier = odsPacientes.Tables(0).Rows(0).Item("NumeroIdentificacion").ToString
PatientBanner1.Title = odsPacientes.Tables(0).Rows(0).Item("Titulo").ToString
PatientBanner1.MobilePhoneNumber = odsPacientes.Tables(0).Rows(0).Item("TelefonoCelular").ToString
PatientBanner1.WorkPhoneNumber = odsPacientes.Tables(0).Rows(0).Item("Telefono2").ToString
PatientBanner1.HomePhoneNumber = odsPacientes.Tables(0).Rows(0).Item("Telefono").ToString
PatientBanner1.EmailAddress = odsPacientes.Tables(0).Rows(0).Item("Email").ToString

End Sub




 La verdad es que el control trabaja relindo (dirian los Args), tengo un par de archivos que estan haciendo las conexiones a MySQL mediante objetos. Todo esto con VB, y no en C# como todo el mundo:

Imports Microsoft.VisualBasic
Imports System.Web
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Data
Imports MySql.Data.MySqlClient
Imports System
Imports System.Configuration

Public Class Pacientes

Imports System.Data.SqlClient

Public Function obtenerPorIDPaciente(ByVal IDPaciente As Integer) As DataSet
Dim conn As New MySqlConnection
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As New DataSet
Dim SQL As String
Dim opcion As Boolean

SQL = "SELECT * FROM pacientes WHERE IDPaciente=" & IDPaciente.ToString
conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("emConnectionString").ConnectionString

Try
conn.Open()

Try
myCommand.Connection = conn
myCommand.CommandText = SQL

myAdapter.SelectCommand = myCommand
myAdapter.Fill(myData)

If (myData Is DBNull.Value) Then
opcion = True
Else
opcion = False
End If

Catch myerror As MySqlException
'Response.Write("There was an error reading from the database: " & myerror.Message)
End Try
Catch myerror As MySqlException
'Response.Write("Error connecting to the database: " & myerror.Message)
Finally
'If conn.State <> ConnectionState.Closed Then

'End If
conn.Close()
End Try
Return myData
End FunctionPublic Class Pacientes

End Class



 


La pantalla se ve de lujo (eso digo yo):


expediaMedicus - Datos Generales del Paciente

Health Vault SDK no en primera version.

Tiene como un mes que esta disponible el SDK de Health Vault de Microsoft, enseguida lo descargue de su sitio y empece a jugar con él.

En principio pense que me seria de mucha ayuda para la aplicacion de expedientes medicos que estoy realizando, y que en un par de ocasiones he comentado en este blog. El problema ha sido la poca documentacion que existe en cuanto a su uso, no veo mucha interaccion en el foro, casi olvidado al igual que la parte de MS CUI, que al principio vi que mucha gente lo descargo de codeplex, pero se ha ido quedando resagado.

Regresando a Health Vault, uno de los problemas que he visto ha sido que por lo pronto no es internacional, ojalá y sea pronto el hecho que se pueda utilizar en cualquier parte del mundo. Lo bueno es que me ha obligado a desarrollar una aplicacion pensando en el mercado de EEUU. Lo cual no habia contemplado.

Me sigo retirando del tema, total que he tenido algo de problemas en integrar lo que ya tenia de ExpediaMedicus con el Health Vault, en especial el asunto de las clases que trae el SDK, pues tiene mas metodos y propiedades de lo que yo habia diseñado en EM. Sobretodo que se basa mucho en usar XML para estar llenar los datos.

Quisiera ver una version terminada pronto de ExpediaMedicus, por lo que no podré integrar este SDK. Espero que en una futura version y conun poco de madurez de HealthVault en la parte de internalizacion la pueda integrar.

Pronto saldra la version de Google Health, la competencia. Sera mejor o peor?

Listo!

Nuevo Plugin de Wordpress: WP-Kwicks

Este es un plugin que permite usar mediante la libreria de Mootools un menu de Kwicks. Lo primero es obtener el plugin y descargarlo WP-Plugin Kwick,
Se requiere contar con la libreria de Mootools. La pueden obtener en http://www.mootools.net/download
recomiendo obtener la version completa de la libreria.Se descomprime el archivo en la carpeta de plugins, /wp-content/plugins/ , solo se requieren dos archivos :

  • kwicks.php
  • kwicks.css

Se activa el plugin desde el panel de administracion de wordpress, y a continuacion se tiene que configurar las opciones del plugin. Solo se tiene que ir a Opciones de wordpress y existe un nuevo boton llamado "kwicks options", se coloca el path de la libreria mootools.js, y los valores que se desea para la lista. Considerando el archivo css, los valores para deberian ser:

  • normal:110
  • small:90
  • full:120

Se puede jugar con estos valores. Pero recordar modificar el archivo kwicks.css.

Ahora en el tema que esten usando solo deben colocar la lista, ya sea de posts o de categorias o cualquier lista que vayan a usar de la siguiente manera:

<div id="kwicks_container">
<ul id="kwicks">
<?php wp_list_cats('sort_column=name&hierarchical=0'); ?>
</ul>
</div>



Demo: http://www.llanura.com

Listo!

martes, octubre 02, 2007

Yahoo! UI (yui) TabView como menu horizontal.

Ultimamente estoy usando la libreria de Yahoo! UI para todo lo que tenga que ver con Ajax, en los sitios web en los cuales solo se requiere html. Para los casos de ASP.Net sigo utilizando el Ajax Control Toolkit.

Me gusto mucho el menu que encontré en la página de Raphaël GOETTER

Este consiste de un menu horizontal expandible, muy rápido y muy sencillo. El problema es que tienes que batallar un poco con el posicionamiento de CSS, y me estaba atorando con algunos margenes y detalles.

Pero tomando esta idea y con algunas modificaiones pude obtener un menu que funciona de la misma forma, pero con la ventaja de no estar batallando con lo que mencionaba anteriormente.

Para lo anterior use el widget TabView de la libreria de YUI. Sólo tuve que hacer algunas modificaciones para en el archivo de estilo de yahoo, en particular /build/tabview/assets/skins/sam/tabview.css:

.yui-navset {
clear:both;
white-space:nowrap;
}
.yui-content {
background:silver;
}
a.yui-link:visited {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
font-weight: bold;
text-decoration: none;
margin-right: 15px;
color: #EEEEEE;
}
a.yui-link:active {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
font-weight: bold;
text-decoration: none;
margin-right: 15px;
color: #EEEEEE;
}
a.yui-link {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
font-weight: bold;
text-decoration: none;
margin-right: 15px;
color: #EEEEEE;
}
a.yui-link:hover{
color:#FFFFFF;
text-decoration:underline;
}

Nota: la anterior modificacion se puede hacer en un archivo separado de css, o hasta el final del archivo tabview.css, para poder heredar el estilo que trae por omision.

Ahora bien, el problema que encontre es cuando se da click en algunos de los botones padres del menu, no se puede ir a otra pagina se tiene que poner dentro de la parte del submenu, por lo menos una liga:

Y aunque lo anterior, funcionaba bien, el cliente y yo mismo decidimos que no era lo mejor, la navegacion se volvia repitiva, pues escoges por ejemplo financiamiento y despues te aparece la pestaña con los enlace correspondientes, pero en este caso solo es un enlace, es decir para ver una pagina habia que clickear 2 veces. No, nada de "usability".

Asi que me puse a investigar un poco sobre la libreria de Yahoo, y resulta que se puede agregar eventos y propiedades al control tabview para este tipo de requerimientos.

Con mi viejo pero util libro de javascript 1.0 a un lado y la documentacion del API de Yahoo!, agregue el siguiente código:

(function() {
var tabView = new YAHOO.widget.TabView('demo');
var handleActiveTabChange = function(e,obj){
window.location=YAHOO.util.Dom.get(obj).firstChild.getAttribute("href").toString();
return false;
}
var handleNewWindowFromTab = function(e,obj){
window.open(YAHOO.util.Dom.get(obj).firstChild.getAttribute("href").toString());
return false;
}
YAHOO.util.Event.addListener("tab1", "click", handleActiveTabChange, "tab1");
YAHOO.util.Event.addListener("tab3", "click", handleNewWindowFromTab, "tab3");
YAHOO.util.Event.addListener("tab4", "click", handleActiveTabChange, "tab4");
YAHOO.util.Event.addListener("tab6", "click", handleActiveTabChange, "tab6");
YAHOO.util.Event.addListener("tab7", "click", handleActiveTabChange, "tab7");

})();

Ahora bien estos "listeners" buscan la pestaña tab1, tab3, tab4, etc., y al evento click se ejecuta la funcion handleActiveTabChange o en su caso handleNewwindowFromTab. Pero se tiene que modificar la estructura del ejemplo basico de TabView.

<ul class="yui-nav">
<li id="tab1"><a id="inicio" href="index.html"><em>Inicio</em></a></li>
<li><a href="#tab2"><em>Línea de modelos</em></a></li>
<li id="tab3"><a id="seminuevas" href=http://www.autos-usados.autoplaza.com.mx><em>Unidades seminuevas</em></a></li>
<li id="tab4"><a href="financiamiento.htm"><em>Financiamiento</em></a></li>
<li><a href="#tab5"><em>Acerca de Subaru</em></a></li>
<li id="tab6"><a id="contacto" href="contacto.htm"><em>Contacto</em></a></li>
<li id="tab7" class="selected"><a href="bolsa_trabajo.htm"><em>Bolsa de trabajo</em></a></li>
<li><a href="#tab8"><em>Mi Subaru</em></a></li>
</ul>

Agregue un ID a los elementos li que no tendrian un submenu con la ordenacion correspondiente y la siguiente etiqueta es la que contiene el link, esto es importante pues en la funcion handleActiveTabChange se esta obtiendo el atributo href de la etiqueta hija de li:


  • YAHOO.util.Dom.get(obj).firstChild.getAttribute("href")
Por otra parte encontre que tenia que colocar los divs correspondientes en el html, para que aquellos botones con submenus no se recorrieran:

<div id="notab1"></div>
<div id="tab2">
<a href="autos/forester.htm" class="yui-link">Forester</a>
<a href="autos/impreza.htm" class="yui-link">Impreza</a>
<a href="autos/imprezaWRX.htm" class="yui-link">Impreza WRX</a>
<a href="autos/legacy.htm" class="yui-link">Legacy</a>
<a href="autos/outback.htm" class="yui-link">Outback</a>
<a href="autos/tribeca.htm" class="yui-link">Tribeca</a>
</div>
<div id="notab3">
</div>

Ahora lo que mi menu funciona con links a nivel raiz, o a nivel submenus.

Listo!

jueves, septiembre 20, 2007

Enlace veracruzano - Nuevas formas de buscar en Internet

Muchas gracias a Enlace Veracruzano por su invitación a participar como un colaborador en su revista de este mes de septiembre con el artículo "Nuevas formas de buscar en Internet.", el cual estoy reproduciendo en las siguientes líneas:

 

Es cierto que Google cambio para siempre las búsquedas en Internet, la sencilla idea de indexar lo que la gente encuentra útil en Internet ha demostrado ser muy valiosa para esta empresa. Google utiliza un algoritmo llamado Pagerank el cual representa que tan significativo es esa página Web para el resto de los usuarios. Y si es popular, debe ser porque es útil para cualquier internauta.

Pero con la indexación de millones de páginas Web por parte de Google y además con miles de usuarios tratando de engañar a Google, haciéndolo creer que un sitio en particular es popular, cada vez los resultados de las búsquedas no son acertadas.

Es así, que otra forma de realizar búsquedas en Internet es a través de otros servicios que se están volviendo muy populares, algunos de ellos son:

1. Clusty (http://www.clusty.com) , el sitio entra en la categoría de los metabuscadores, en el cual obtiene información de diversas fuentes incluidas google, yahoo y msn, para mostrar los sitios mas representativos, cuenta además con una categorización de los enlaces mostrados.

2. Rollyo (http://www.rollyo.com), el cual permite realizar búsquedas personalizadas, esto se hace delimitando cuales son los sitios que uno considera que son buena fuente de información.

3. Delicious (http://del.icio.us), este sitio es una enorme colección de favoritos (bookmarks), dado que los usuarios registrados van “etiquetando” aquellas fuentes de información que guardan como favoritos, se hace mas sencilla su búsqueda gracias a la metainformación.

4. Quintura (http://www.quintura.com), este sitio no es el que tiene los mejores resultados, pero el acercamiento a las búsquedas es novedoso, ya que se acompaña de una nube de etiquetas que van dando una navegación visual muy fácil de usar.

5. Ask (http://www.ask.com), al igual que el anterior los resultados son muy parecidos a los de google, sin embargo las opciones visuales que presenta el sitio hace que nuestro proceso de búsqueda se simplifique enormemente.

6. Answers (http://www.answers.com), como su nombre lo indica se trata de un sitio en el cual se responden todas las preguntas que los usuarios van realizando y las personas que colocaron la pregunta califican las respuestas, si se tiene una pregunta seguramente alguien ya la contestó.

7. A9 (http://www.a9.com), un sitio de búsquedas especializado en encontrar productos que se encuentran a la venta en alguna de las tiendas de comercio electrónico que tiene como afiliado. Patrocinado en su mayoría por la empresa Amazon, este sitio poco a poco a desarrollado una gran base de datos que incluyen muchos productos de venta en Internet.

8. Wikipedia (http:// (www.wikipedia.org), sitio indispensable para la búsqueda de información de tipo académico.

Es innegable que la primera opción para cualquier persona que desea buscar algo en Internet por lo pronto es Google, pero la especialización y la creatividad es lo que marca este tipo de tecnologías de búsqueda.

lunes, agosto 20, 2007

Convertir de csharp a vb

De vez en cuando encuentro alguna clase, codigo, metodos, etc., muy útiles para lo que estoy haciendo, el problema/ventaja de asp.net es que existe a quien le gusta programar con c# o vb.

Por supuesto la ley de murphy se aplica, cuando estoy programando con c# resulta que el código esta en vb y viceversa.

Encontre rapidámente el sitio de labs.developerfusion.co.uk, que cuenta con un convertidor de csharp a vb y viceversa.

Sé que se pueden crear un par de carpetas en un sitio web para usar ambos lenguajes de la siguiente manera:

/app_code 
/vb
/cs

Y modificar el web.config:


<codeSubDirectories>
  <add directoryName="cs"/>
  <add directoryName="vb"/>
</codeSubDirectories>

Pero este es un maravilloso recurso para cualquiera que esta en estas andanzas.


Listo!

jueves, agosto 09, 2007

Enlace veracruzano - Computadoras para este regreso a clases.",

Muchas gracias a Enlace Veracruzano por su invitación a participar como un colaborador en su revista de este mes de agosto con el artículo " Computadoras para este regreso a clases.", el cual estoy reproduciendo en las siguientes líneas:

Una de las preguntas mas comunes que me hacen en esta temporada, es acerca del equipo de cómputo que se debe de comprar ahora en el regreso a clases. Es cierto que además de la compra de los útiles escolares, cada vez mas familias hacen un esfuerzo por que sus hijos tengan acceso a una computadora para realizar sus tareas.

Desafortunadamente, las opciones del nuevo Windows complican un poco las cosas para los papás, ya que existe la versión Starter, Home Basic, Home Premium, Business y Ultimate. Además de lo anterior, la interrogante entre comprar una de escritorio y una portátil, la cantidad de memoria que debe tener, la velocidad del procesador interno, capacidad de disco duro, tarjeta de video, etc. De forma alternativa, podemos encontrar las Mac (de los creadores del iPod y iPhone) que solo cuentan con una sola versión de su sistema operativo y equipos con Linux donde existen mas de 10 distribuciones gratuitas que valen la pena intentar.

Pero lo que nadie toma en cuenta es la conexión a Internet, esto último es lo más valioso en cualquier aparato de cómputo, es mas, me atrevo a decir que posiblemente en el mediano plazo, tal vez no necesitemos una computadora como actualmente las conocemos y estemos usando aparatos parecidos al iPhone con conexión inalámbrica que servirán a cualquier niño en su tareas.

El problema es el costo de este servicio, que aun sigue siendo caro, el claro ejemplo es Telmex, que cuenta con el servicio de banda ancha a un costo de poco más de $3,500 al año, la mitad del precio de un equipo de cómputo sencillo.

Otro detalle en un equipo de cómputo es el consumo de energía eléctrica, que puede representar el tener prendido 2 focos de 100 watts, con un uso promedio de 4 horas al día, representa un aumento de hasta $100 al bimestre en una cuenta de luz.

¿Qué hacer? Tomar en cuenta que el Web toma mas importancia cada día, sobre todo en la educación de las nuevas generaciones, ya no es necesario ir a una biblioteca cuando se tiene Google y Wikipedia en la computadora. Los costos del acceso a Internet han ido bajando de precio de forma gradual, lento pero seguro. Entonces, mi recomendación es comprar el equipo de cómputo más barato que encuentren de preferencia una laptop, que tenga alguna forma de ahorro de energía, conexión a Internet alámbrica o inalámbrica, con cualquier versión de Windows, MacOS o Linux, lo más seguro es que sus hijos solo usen un par de programas: un navegador y uno de chat. Instalar un programa para controlar las horas de uso y sitios permitidos mediante un programa guardián (Windows Vista ya cuenta con esta función de forma interna).

Comparar precios en www.buscape.com.mx es una buena idea. Así como consultar las paginas de las empresas mas importantes en México como lo son Dell (ww.dell.com.mx), HP (www.hp.com.mx), Toshiba (www.toshiba.com.mx), Sony (www.sonystyle.com.mx) Lenovo (www.lenovo.com.mx), Lanix(www.lanix.com.mx) y Gateway (www.gateway.com.mx).

HTML 5

Me puse a revisar la version de trabajo de HTML 5 del W3. Como desarrollador web, me da gusto que estan agregando algunas formas sencillas de poner contenido con mejor semántica. Una de las primeras etiquetas que observe es <nav>, que tiene como objetivo contar con contenido de enlaces dentro de una pagina. Ya estoy usando esta etiqueta de la siguiente forma <div id=nav>, obviamente el proposito de usar solo <nav> es estandarizar algo que es muy comun en el dia a dia del desarrollo web, pero que robots araña (tipo google) y programas no entienden, de esta manera se podra determinar mas facil lo anterior.

Otra etiqueta importante es <audio>, esta etiqueta debio de estar presente desde hace mucho tiempo pero solo hasta esta versión parece que saldra a la luz. Esperemos que para la versión final de HTML 5 se quede.

Existen algunas etiquetas mas que se me hacen interesante, como <time>, <figure>, <dialog>, <section>, etc. Pero lo novedoso es que se va a lograr contar con un sistema de analisis (parsing) del codigo, algo asi como lo que sucede cuando se intenta abrir un archivo de xml en el explorer o en otra herramienta. Esto obligara a que el codigo de html sea escrito de forma correcta.

Lo cual me parece muy bueno, pues muchas veces los scripts de javascript por mencionar algo, tienen problemas de ejecucion y vuelan con errores de ejecucion a los navegadores.

Listo!

Codepress plugin para Wordpress

Recientemente encontré este maravilloso plugin para wordpress, el cual con lo permisos necesarios permite realizar cualquier tipo de modificación para las plantillas y los mismo plugins de wordpress.

Lo interesante de este plugin en si, es que utiliza Codepress el cual es un editor de código realizado con JavaScript.

Espero que para la próxima versión de WordPress venga integrado por omisión para la edicion de las plantillas, etc.

Actualmente lo tengo ya incorporado como instalación para los clientes que asi lo requieren. El plugin se puede obtener en http://www.naden.de/blog/wordpress-code-editor, las instrucciones estan en alemán pero no tiene gran complejidad.

  1. Es descargar.
  2. Ponerlo en la sección de plugins /wp-content/plugins/code-editor
  3. Activar el plugin en la pagina de administración

Listo!

lunes, julio 16, 2007

Control Login usando MySQL

Estuve el fin de semana haciendo diversas pruebas con el control login de asp.net, primero que nada la verdad es que el membership provider de microsoft, estará muy fácil de instalar y usar pero esta muy limitado, necesitas montar toda la aplicacion alrededor de las tablas que microsoft decide para la administración de los usuarios, aún cuando la estructura es buena, en muchas ocasiones esa misma tabla tiene que llevar otro tipo de información, pude haber hecho una tabla que se manejara de forma paralela para el resto de la información de estos usuarios, pero uno es necio de verdad, lo que quiero es usar mi tabla, además quiero que este en mysql (solo me falta que me ponga otra vez de necio y montar la aplicación sobre linux).

Lo primero fue crear mi tabla en mysql, solo pondré la estructura necesaria para el ejemplo:

CREATE TABLE `medicos` (
`IDMedico` int(10) NOT NULL auto_increment,
`Titulo` varchar(50) character set latin1 default NULL,
`Nombre` varchar(50) character set latin1 default NULL,
`ApellidoPaterno` varchar(50) character set latin1 default NULL,
`ApellidoMaterno` varchar(50) character set latin1 default NULL,
`Email` varchar(50) character set latin1 default NULL,
`Password` varchar(50) character set latin1 NOT NULL default '0',
PRIMARY KEY (`IDMedico`),
KEY `Password` (`Password`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci AUTO_INCREMENT=2 ;

CREATE TABLE

En esta ocasión decidí conectarme a MySQL mediante el connector de .Net (funciona mejor que el ByteFX) las instrucciones para instalar este componente estan en http://dev.mysql.com/downloads/connector/net/. El namespace de este componente es MySql.Data.MySqlClient, la cual tenemos que agregar como una referencia al proyecto en el que estamos, en realidad no se porque esto no se dio de manera automática cuando realice la instalación, pero lo resolví agregándolo.




A continuación creamos un archivo con una clase para la autenticación de los usuarios:

Imports Microsoft.VisualBasic
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports MySql.Data.MySqlClient


Public Class AutenticarMedico
Public Function Autenticar(ByVal username As String, ByVal password As String) As Boolean
Dim conn As New MySqlConnection
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As New Data.DataTable
Dim SQL As String
Dim opcion As Boolean


SQL = "SELECT * FROM Medicos WHERE username='" + username + "' AND Password='" + password + "';"

conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("emConnectionString").ConnectionString

conn.Open()

myCommand.Connection = conn
myCommand.CommandText = SQL

myAdapter.SelectCommand = myCommand
myAdapter.Fill(myData)

If (myData Is DBNull.Value Or myData.Rows.Count > 0) Then
opcion = True
Else
opcion = False
End If

conn.Close()
Return opcion
End Function
End Class

Guardamos nuestro archivo anterior. Creamos uno nuevo con extensión aspx, es decir un web form, agregamos el control Login de nuestra caja de herramientas, opcionalmente le damos algún formato, escogemos el control para agregarle el método on_authenticate el cual en lugar de irse a membership como omisión tendría que realizar la comprobación hacia nuestro mysql mediante las siguientes instrucciones:

Protected Sub Login1_Authenticate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs)
Dim verificarUsuario As New AutenticarMedico
Dim usuario As String = Login1.UserName
Dim password As String = Login1.Password
Dim resultado As Boolean

resultado = verificarUsuario.Autenticar(usuario, password)

e.Authenticated = resultado

End Sub

A continuación una breve video en youtube:


Como resultado tenemos el control en una pagina que se autentifica contra la base de datos de mysql.
Listo!

Mi nuevo esquema básico de html

En los ultimos meses he desarrollado sitios web, basados en un sistema basico de divs en combinacion con CSS, esto no me ha facilitado el diseño, pues despues de años de usar tablas y formas mas rudimentarias por asi decirlo, el uso de CSS para el diseño se torna laborioso, pero al mismo tiempo se logra tener un mejor diseño y la semantica del html tiene sentido.

Lo cierto tambien es que tenia que renovar mis practicas de construccion de paginas y he terminado por convercerme en usar divs. No se si en las escuelas actualmente enseñan estas practicas. Veo que por lo menos en México y en particular el diseño que reviso en Veracruz, sigue usando las clasicas tablas y paginas hechas con imagenes divididas.

Ademas, he reducido mi uso de etiquetas a unas cuantas, recuerdo que solia utilizar dl, blockquote, hasta el famoso marquee de ie4 lo llegue a usar, pero en realidad pierden el sentido cuando aplicamos solo las etiquetas div, span, ul, li con el uso apropiado de css.

Por otra parte en el ultimo proyecto me obligué a crear una unica plantilla de html y los diseños estan por completo realizados con css, los ejemplos estaran disponible proximamente.

Sin mas que decir, aqui mi esquema basico:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" http://www.w3.org/TR/html4/strict.dtd">

<head>

<title>Titulo del Sitio Web</title>

<link rel="stylesheet" type="text/css" href="estilo.css" />

<meta name="keywords" content="HTML, DHTML, CSS, XML, XHTML, JavaScript, VBScript" />

<meta name="description" content="Free Web tutorials on HTML, CSS, XML, and XHTML" />

</head>

<body>

<div id="cuerpo">

<div id="encabezado">

<div id="logo"></div><div id="eslogan"></div>

</div>

<div id="menu">

<ul>

<li><a href="index.html">Inicio</a></li>

<li><a href="empres.html">Nuestra empresa</a></li>

<li><a href="productos.html">Productos</a></li>

<li><a href="servicios.html">Servicios</a></li>

<li><a href="clientes.html">Portafolio clientes</a></li>

<li><a href="contacto.html">Contacto</a></li>

</ul>

</div>

<div id="contenido">

<h1 id="titulo">Bienvenido a nuestro sitio</h1>

<h2 id="subtitlo">por webmaster@llanura.com</h2>

<p id="parrafo">Hola mundo</p>

</div>

<div id="piedepagina">

<address id="direccion">Veracruz, Ver.</address>

</div>

</div>

</body>

</html>

La estructura anterior permite crear cualquier diseño:



Listo!

Enlace Veracruzano - Wikis

Muchas gracias a Enlace Veracruzano por su invitación a participar como un colaborador en su revista de este mes de julio con el artículo "WIKIS", el cual estoy reproduciendo en las siguientes lineas:

 

La palabra WIKI-WIKI proviene de la lengua hawaiana que significa “rápido”, pero en el mundo Web, esta palabra se refiere a la creación de contenidos y sitios Web colaborativos. Tal vez el mejor ejemplo de este tipo de aplicaciones es Wikipedia.org, un esfuerzo mundial por tener la mejor enciclopedia en Internet. El soporte para este sitio es precisamente este tipo de herramientas, las cuales permiten que cualquier usuario con permisos pueda agregar y/o modificar más información.

En el caso de Wikipedia.org, cualquier usuario puede registrarse de forma gratuita y colaborar con los documentos que se encuentran en línea, y ciertamente se esta volviendo la herramienta educativa mas importante en el Web. Mucha de la información se encuentra en idioma ingles, pero el mayor crecimiento se esta dando en otras lenguas como el alemán, chino y español. Pero existen más de 250 lenguas usadas en Wikipedia.org entre ellas el Náhuatl (nah.wikipedia.org).

Actualmente en Internet muchos desarrollos de software, están usando algún Wiki para crear manuales y documentación relacionada con estos productos. Una ventaja de este tipo de utilerías Web es la gran sencillez con el que se puede crear contenido de una manera rápida (wiki-wiki). Pero inclusive, permiten que los usuarios y clientes de este producto, que van encontrando nuevos usos a sus productos, pongan en la documentación estos ejemplos.

Además del claro ejemplo de Wikipedia, los wikis educativos permiten que en una escuela, colegio o universidad, las clases impartidas sean revisadas no solo por los maestros y estudiantes, sino que permiten que padres de familia puedan tener un rol mas activo en la educación, al contribuir con su propia experiencia en ejemplos de diversas materias.

Ahora bien, en el ámbito empresarial el uso de un Wiki en una intranet permite a una organización:

  • Planear proyectos de desarrollos
  • Crear una base de conocimientos
  • Implementar sistemas de flujos
  • Registro y control de operaciones

Por ejemplo, un Wiki funciona de manera excepcional en una empresa con mucha rotación de personal, al permitir que los manuales de operación y la base de conocimiento de los diferentes puestos en una organización se mantengan en un repositorio con toda la información necesaria, logrando que un nuevo empleado se documente de forma ágil, sobre los procesos de la empresa

Los Wikis no sólo funcionan para la administración de texto algunos de ellos están orientados, hacia la manipulación de imágenes, de música y de video. Actualmente existen más de 50 productos que se distinguen por la variedad de precios, lenguaje en que están desarrollados, requerimientos de sistema, etc., un buen sitio web para comparar cualquiera de estos productos es www.wikimatrix.org.

sábado, junio 30, 2007

Enlace Veracruzano - Portadas Web Personales

Muchas gracias a Enlace Veracruzano por su invitación a participar como un colaborador en su revista de este mes de junio con el artículo "PORTADAS WEB PERSONALES", el cual estoy reproduciendo en las siguientes lineas:

 

Cada vez que nos acercamos a un puesto de revistas y/o de periódicos, indudablemente lo primero que hacemos es leer los títulos de las diferentes opciones que tenemos a la vista, en algunas ocasiones ya contamos con algún periódico o revista que preferimos o que normalmente compramos, pero siempre una portada nos dará una idea general del contenido.

De igual manera en Internet podemos tener una portada Web en la cual se incorporaran diferentes encabezados o títulos provenientes de diferentes fuentes de información, de tal forma que en una sola ventana del navegador podremos tener desde la temperatura de alguna región en particular hasta las últimas noticias de las diversas agencias internacionales como Reuters, Associated Press, etc.

Para lo anterior tenemos que registrarnos en alguno de los sitios Web especializados en tener portadas Web o paginas de inicio personalizadas como son PageFlakes (www.pageflakes.com), NetVibes (www.netvibes.com), Mi Yahoo! (my.yahoo.com), iGoogle (www.google.com/ig), o Live de Microsoft (www.live.com).

Después de obtener un usuario y contraseña, podemos agregar los diferentes contenidos que nos permitan cada uno de los sitios. Una de las características comunes es la posibilidad de usar un formato estándar llamado Really Simple Syndication o RSS que es usado por diversas empresas que se dedican a publicar información en Internet, como son los periódicos El Universal, La Jornada, Reforma, El Norte, CNN, etc., incluyendo las secciones deportivas, de espectáculos, sociales, etc.

En el momento en que decidamos que alguno de los títulos o encabezados nos parece interesante, podremos dar un clic y leer la nota completa. Aunque las mejores aplicaciones que existen ahora en el mercado son de empresas de tamaño pequeño, el triunvirato MYG (Microsoft, Yahoo! y Google) está impulsando estas herramientas con sus usuarios. El caso particular de Yahoo! con su versión beta del cliente Web para correo electrónico ya permite personalizar la ventana de inicio.

Día a día, la información que se puede ir agregando a una portada Web es mayor y más diversificada, se pueden incluir fotos de algún servicio Web como Flickr o vídeos de algún sitio web como YouTube o Metacafe, canales de información especializada, búsquedas de conceptos o por tema, por ejemplo existe en MS Live un gadget que permite a todos los ciudadanos mexicanos obtener información de donde pueden realizar sus tramites, como el pasaporte, la licencia de conducir, el pago de tenencia y demás servicios que el gobierno de la republica mexicana ofrece.

En un plano empresarial estas páginas nos permiten ver los cambios del mercado de dinero, las noticias locales, las ofertas que ofrecen nuestros proveedores, los correos electrónicos que recibimos en nuestros diferentes buzones, los anuncios clasificados de diversos portales Web, notificaciones sobre los pagos de impuestos de la secretaria de hacienda, etc.

Listo!

miércoles, mayo 16, 2007

Enlace Veracruzano - El Big Brother del Planeta Tierra

Muchas gracias a Enlace Veracruzano por su invitación a participar como un colaborador en su revista de este mes de mayo con el artículo "EL BIG BROTHER DEL PLANETA TIERRA", el cual estoy reproduciendo en las siguientes lineas:

 

Si es una de esas personas que disfruta del sol, pero no gusta de ir a un lugar tan publico como una playa, la solución es quedarse en casa a disfrutar de una terraza o por lo menos de una cómoda azotea. Pero, tenga cuidado que los curiosos y fisgones están a la orden del día, y para nuestro caso no solo desde una ventana en alguna casa, sino a través de algo tan sencillo como un monito de computadora. Los satélites que se encuentran girando alrededor de nuestro planeta, pueden descubrir nuestro gusto por tomar un baño de sol.

Diariamente los satélites TERRA-MODIS y LandSat toman fotografías desde las alturas con una resolución que llega a por lo menos los 25 metros de pixel. Existen tres aplicaciones que cuentan con una forma sencilla de usar estas imágenes: Google Earth, Microsoft Virtual Earth y NASA World Wind.

Cada uno de los anteriores tienen prestaciones diferentes, pero, posiblemente el mas usado es Google Earth, el cual cuenta con una forma de señalar lugares, crear estructuras de edificios en 3D, de monumentos, etc. La aplicación de la NASA tiene como fuerte las imágenes climatológicas, de incendios y topográficas, siguiendo siempre un fin científico. Lo más valioso de la aplicación de Microsoft son la gran cantidad de calles, avenidas y carreteras trazadas con las que cuenta, sin embargo estas son en su mayoría de ciudades de EEUU.

Entre las curiosidades de Google Earth, una es la que permite marcar puntos específicos (pins) para señalar algún lugar, edificio, monumento, etc., por cualquier usuario, otra es que se puede agregar imágenes en algún pin y otra mas, permite tener en la capa Comercial las diversas sucursales de una empresa, los cajeros automáticos de algún banco comercial, etc. Existen varios sitios en Internet que muestran algunas imágenes obtenidas de esta aplicación en las cuales se muestran personas haciendo cualquier tipo de actividad, entre ellas la de estar recostado claramente tomando el sol y posiblemente sin un bikini.

Es cierto que actualmente no se puede apreciar con toda claridad los objetos en estas aplicaciones, por lo menos tiene que cubrir un metro cuadrado para determinar lo que puede ser, pero los adelantos en este tipo de tecnología, están avanzando con gran rapidez, ya existen cámaras digitales de alta definición que pueden fotografiar un objetivo a mas de un kilómetro de distancia si no existe algún obstáculo. Por lo que es pausible que en unos cuantos años la resolución de las imágenes satelitales sea de mayor precisión.

Seguramente el futuro de este tipo de tecnología, será apoyado por video con transmisión en tiempo real, es decir, el verdadero “Big Brother” puede estar a la vuelta de la esquina. Por lo pronto, si no se encuentra entre las personas que son exhibicionistas, le aconsejamos se olvide de los vecinos, mejor piense un momento y vea al cielo buscando algún punto metálico, le aseguro no será un platillo volador, y permita que desaparezca para poder disfrutar del sol.

Listo!

miércoles, abril 04, 2007

Asp.net usando MySQL en Linux con Mono

Una vez que esta instalado mono y ya esta funcionando asp.net en linux, conforme al post Mono en un VDS de Godaddy.

Vamos a realizar un par de modificaciones al ejemplo de base de datos que viene por omision en la carpeta de pruebas (test), para que se pueda accesar a MySQL con los archivos dbpage1.aspx, dbpage2.aspx:

Resulta que los ejemplos que trae esta instalacion de mono es con un servidor PostgreSQL, asi que para nuestro caso que usamos MySQL tenemos que cambiar los archivos de configuracion de la aplicacion, en particular el web.config: 

<appSettings>
.
.
.
<add key="DBProviderAssembly"
value="ByteFX.Data"/>
<add key="DBConnectionType"
value="ByteFX.Data.MySqlClient.MySqlConnection"/>
<add key="DBConnectionString"
value="server=127.0.0.1;user id=xxxx;password=xxxxx;database=xxxxx"/>
.
.
.
</appSettings>

Con lo anterior le decimos a nuestra aplicacion que use el conector ByteFX para hacer uso de MySQL. Este provider ya viene de forma estandar en la instalacion de mono.

Creamos nuestra base de datos en MySQL con:

CREATE TABLE `test` (
`person` text character set utf8 collate utf8_spanish_ci NOT NULL,
`email` text character set utf8 collate utf8_spanish_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE `customers` (
`id` INT( 8 ) NOT NULL ,
`name` VARCHAR( 256 ) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL ,
`address` VARCHAR( 256 ) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM ;

 Una vez creadas las tablas en MySQL ejecutamos los archivos:

dbpage1.aspx

dbpage2.aspx

Listo!

Mono en un VDS de Godaddy

Tenemos un desarrollo listo en asp.net y nos topamos con la necesidad de ponerlo en Linux. La respuesta es usar mono en apache, y dado que ya contamos con un servidor en internet con Fedora 4 decidimos instalarlo.

Pero resulta que el Virtual Dedicated Server (VDS) de GoDaddy no trae por omisión la instalación de mono, asi que seguimos las instrucciones de go-mono.com para instalarlo.

Lo primero es obtener 3 archivos zip desde http://www.mono-project.com/Downloads:

  1. mono.zip
  2. xsp (para obtener la carpeta test xsp-1.2.3-0.novell.noarch.rpm)
  3. mod_mono (un rpm: mod_mono-1.2.1-0.fedora4.novell.i386.rpm)

Es lo unico que se requiere para ejecutar un desarrollo asp.net 1.1. Para desarrollos de asp.net 2.0 (digamos construidos con Visual Web Developer) es recomendable esperar a la version mono 2.0. En nuestro caso es un desarrollo sencillo que no utiliza muchos objetos nuevos de net 2.0, asi que no hubo problema.

Lo siguiente es descomprimir

$ unzip mono-all.zip

Instalar mono con Root (debe incluirse los archivos de xsp y mod_mono) :

$ rpm -Uvh *rpm

Con lo anterior ya tenemos instalado mono, ahora tenemos que configurar el servidor apache, para esto cambiamos de directorio a /etc/httpd/conf/. Aun cuando se ha instalado xsp que en si es un servidor, no lo usaremos, como mencionamos solo queremos la carpeta test que se instala.

Tenemos que editar el archivo httpd.conf agregando una linea, de preferencia despues de:

#
# Load config files from the config
# directory  "/etc/httpd/conf.d".
#
Include conf.d/*.conf
Include /etc/httpd/conf.d/mod_mono.conf

Guardamos el archivo anterior y verificamos que mod_mono.conf efectivamente se encuentre dentro de la carpeta conf.d, de lo contrario creamos un nuevo archivo y agregamos lo siguiente:

# mod_mono.conf

# Acthung! This file may be overwritten
# Use 'include mod_mono.conf' from other configuration file
# to load mod_mono module.

<IfModule !mod_mono.c>
LoadModule mono_module /usr/lib/httpd/modules/mod_mono.so
AddType application/x-asp-net .aspx
AddType application/x-asp-net .asmx
AddType application/x-asp-net .ashx
AddType application/x-asp-net .asax
AddType application/x-asp-net .ascx
AddType application/x-asp-net .soap
AddType application/x-asp-net .rem
AddType application/x-asp-net .axd
AddType application/x-asp-net .cs
AddType application/x-asp-net .config
AddType application/x-asp-net .Config
AddType application/x-asp-net .dll
DirectoryIndex index.aspx
DirectoryIndex Default.aspx
DirectoryIndex default.aspx

Por ultimo debemos comprobar que el modulo se encuentre en la direccion que pusimos en el archivo conf.

/usr/lib/httpd/modules/mod_mono.so

En caso de no ser asi podemos buscar el archivo con

% find / -name mod_mono.so -print

Modificamos la ruta o en su caso copiamos el archivo.

Si queremos comprobar que esta funcionando mono en nuestro servidor apache copiamos la carpeta de test de mono a la carpeta de los documentos html que usamos normalmente:

cp /usr/lib/xsp/test /home/miusuario/public_html/

Listo!

martes, marzo 20, 2007

Triara: Test de Php y MySQL

Con los siguientes scripts se puede hacer una pequeña prueba si todo esta funcionando en correctamente en Triara:

Primero si php funciona:
<?php
phpinfo();
?>

Una vez comprobado lo anterior:


<?php
set_time_limit(3000);
$link = mysql_connect ("172.16.253.90", "user", "pass")
or die("Could not connect: " . mysql_error());
print ("Connected successfully");
mysql_select_db("basededatos") or die("Could not select database");
$query = "Select * From tabla";
$result = mysql_query($query) or die("Query failed");

print "<table border=1 cellspacing=1>\n"
for ($i = 0; $i < mysql_num_fields($result); $i++) {
print "<th>".mysql_field_name($result, $i)."</th>\n"
}
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print "\t<tr>\n"
foreach ($line as $col_value) {
print "\t\t<td>$col_value</td>\n"
}
print "\t</tr>\n"
}
print "</table>\n"

/* Free resultset */
mysql_free_result($result);

mysql_close($link);
?>


 
Listo!

lunes, marzo 19, 2007

Problemas de WordPress en Godaddy

Estuve teniendo problemas con wordpress en el servidor que tengo de godaddy. Por alguna razon se estaba iendo la memoria por los cielos, y no encuentro hasta ahorita la razon. Es una combinacion de MySQL y de Java de Tomcat lo que esta ocasionando el problema.

El personal de GoDaddy, me dice que le meta mas memoria... pero la verdad me parece que 256Mb con swap de 700Mb, es mas que suficiente, entre por Putty al servidor y me tope con lo siguiente:

 

login as: vgarcia
vgarcia@www.llanura.com's password:
Last login: Mon Mar 19 08:55:36 2007 from 189.129.143.64
-bash: /usr/bin/id: Too many open files in system
-bash: /usr/bin/id: Too many open files in system
[vgarcia@vds_godaddy ~]$ su
su: error while loading shared libraries: libaudit.so.0: cannot open shared object file: Error 23
[vgarcia@vds_godaddy ~]$ su
su: user root does not exist
[vgarcia@vds_godaddy ~]$ su
su: incorrect password
[vgarcia@vds_godaddy ~]$ su
su: incorrect password
[vgarcia@vds_godaddy ~]$ su
su: error while loading shared libraries: libc.so.6: cannot open shared object file: Error 23
[vgarcia@vds_godaddy ~]$ su
su: error while loading shared libraries: libaudit.so.0: cannot open shared object file: Error 23
[vgarcia@vds_godaddy ~]$ su
su: error while loading shared libraries: libaudit.so.0: cannot open shared object file: Error 23
[vgarcia@vds_godaddy ~]$ su
su: user root does not exist
[vgarcia@vds_godaddy ~]$ su
Password:
[root@vds_godaddy vgarcia]# cd /tmp
[root@vds_godaddy tmp]# ls
ls: error while loading shared libraries: librt.so.1: cannot open shared object file: Error 23
[root@vds_godaddy tmp]# ls
ls: error while loading shared libraries: librt.so.1: cannot open shared object file: Error 23
[root@vds_godaddy tmp]# ls
ls: error while loading shared libraries: libacl.so.1: cannot open shared object file: Error 23
[root@vds_godaddy tmp]# ls
ls: error while loading shared libraries: libpthread.so.0: cannot open shared object file: Error 23
[root@vds_godaddy tmp]# ls

En definita el servidor estaba tronando con el problema de la memoria, hasta el momento no encontre una buena solucion. Lo que si encontre es como detener el consumo irracional de java. Detuve Tomcat. No lo estaba usando. Asi que simplemente lo detuve y ademas ya lo quite de Bootup:

Listo!

jueves, marzo 15, 2007

Enlace Veracruzano - Administra tu propio sitio web con WordPress

Muchas gracias a Enlace Veracruzano por su invitación a participar como un colaborador en su revista de este mes de abril con el artículo "ADMINISTRA TU PROPIO SITIO WEB CON WORDPRESS", el cual estoy reproduciendo en las siguientes lineas:

 

ADMINISTRA TU PROPIO SITIO WEB CON WORDPRESS

Administrar un sitio Web se ha vuelto cada vez más fácil, gracias a aplicaciones que cumplen con este propósito usando y basándose en tecnologías Web 2.0.

Existen varias herramientas que permiten que cualquier persona con un mínimo de conocimiento en el uso de computadoras y de aplicaciones ofimáticas, puedan crear, editar, y administrar un sitio Web.

WordPress comenzó como un sitio dedicado a realizar blogs, muy pronto pusieron el código fuente a disposición del público en general mediante una licencia de código abierto, logrando que desarrolladores interesados, mejoraran y ampliaran la herramienta. Lo anterior ha permitido que WordPress realice tareas para la cual no fue inicialmente diseñado.

El código de WordPress se puede instalar en cualquier servidor Web que existe en el mercado, sólo se requiere tener una base de datos y acceso a programar con PHP. Muchas empresas especializadas en dar servicios de hospedaje Web, cuentan con WordPress como una de sus funcionalidades en su servicio.

Una de las características más atractivas de WordPress es la posibilidad de usar plantillas de diseño, de esta manera el administrador se olvida de la parte del diseño y lo único que tiene que hacer es colocar la información que se desea agregar en el sitio Web.

Las plantillas de diseño de WordPress se pueden obtener de Internet, existen listas que cuentan con más de 500 diseños distintos, clasificados por colores, por número de columnas, por temas, etc. Seguramente se puede encontrar alguno que cumple con las necesidades que se tienen para el sitio web.

Además de las plantillas existen los plug-ins, que son módulos que se van agregando a la plataforma de WordPress, los cuales permites, por ejemplo tener contenido de otros sitios Web como noticias, pronósticos del tiempo, resultados de deportes, estadísticas financieras, etc.

El desarrollo alrededor de WordPress es tan amplio, que existen plug-ins que permiten que se tenga diversas opciones desde foros de discusión, chats, encuestas, postales electrónicas, hasta la integración de comercio electrónico

El contenido se guarda en una base de datos, por lo que la información se puede respaldar, modificar, ampliar y compartir de una manera muy sencilla, ya que se guarda como texto sencillo. Se puede exportar a Word, Excel, PDF, etc.

Microsoft ha entendido la importancia de esta herramienta, por lo que incluye en la última versión, Word 2007, una sencilla forma de exportar los documentos escritos en esta para WordPress.

Listo!

Enlace Veracruzano - Respalda y comparte tus fotos en Internet

Muchas gracias a Enlace Veracruzano por su invitación a participar como un colaborador en su revista de este mes de Marzo con el artículo "RESPALDA Y COMPARTE TUS FOTOS EN INTERNET", el cual estoy reproduciendo en las siguientes lineas:

 

RESPALDA Y COMPARTE TUS FOTOS EN INTERNET

Los servicios gratuitos de Internet com Flickr de Yahoo!, pueden ayudarnos a mantener nuestras fotos respaldadas y al mismo tiempo con la posibilidad de compartirlas con nuestros amigos y familiares.

En el año 2005 con el paso del huracán Stan, muchas personas sufrieron la perdida de sus bienes materiales, y en ocasiones de todo con lo que contaban en su casa. Entre ellos algo que es difícil de reponer son las fotos personales.

Gran parte de lo que existe en una casa se puede comprar, reparar, seguramente con mucho esfuerzo, pero la foto de unos quince años, de un bebe recién nacido, de una boda, puede ser difícil de recuperar. Las fotos guardan nuestros recuerdos y de alguna manera las personas que somos.

La mayoría de las personas guardan sus fotos en un álbum, o en su caso con la llegada de las fotografías digitales, en una computadora o un cd. Pero cuando la devastación llega a niveles como los últimos huracanes que se han formado en el golfo de México, es difícil que cualquiera de los anteriores se salven.

Una forma sencilla de evitar lo anterior, es colocar las fotos en algún sitio de Internet para lo cual existen muchos sitios Web que prestan este servicio, ya sea gratuitamente o con un costo.

Uno de estos, posiblemente el más famoso y mas usado es el de Flickr.com. Este sitio propiedad de Yahoo!, es muy fácil de usar, permite agregar en su servicio gratuito hasta 10 megas mensualmente, que se van agregando a lo usado en meses anteriores.

Permite crear álbumes, clasificar las fotos, agregar comentarios y títulos a cada una de elas, es un servicio sencillo de usar que cuenta con algunos programas que se pueden instalar en Windows para que la forma de subir las fotos sea más rápido.

Para compartir las fotos solo se requiere de proporcionar la dirección que nos indique Flickr, el usuario registrado puede seleccionar si las fotos son publicas, privadas y que tipo de permisos para su uso otorga a cada foto.

Ya que cuenta con una forma de exponer las fotos mediante los llamados servicios Web, cualquier aplicación o sitio que tenga una forma de leer este servicio Web, puede incluir en alguna parte de su contenido las fotos que estamos colocando en Flickr, por ejemplo en myspace.com, algún blog personal o en el escritorio de windows.

Y aunque Flickr no cuenta con el servicio de impresión para nuestro país, en Veracruz ya existen algunas negocios que permite el envió de los archivos a su buzón electrónico para realizar la impresión correspondiente en el tamaño que queramos, si la resolución de la foto lo permite. De esta manera nuestras fotos se encontraran seguras y listas para colocarse de nuevo en un marco en nuestro hogar.

Listo!