¿Por qué aguardas con impaciencia las cosas? Si son inútiles para tu vida, inútil es también aguardarlas. Si son necesarias, ellas vendrán y vendrán a tiempo. Amado Nervo
domingo, 2 de agosto de 2009
Asp .Net: Ajax y consumo de WebServices con Javascript
El sitio donde explican más o menos cómo usar el framework de Asp.Net Ajax está en CideSoft
viernes, 31 de julio de 2009
Web Service: ¿Service1 is not define?
function btnEnviar_onclick() {
var resultado = Service1.HelloWorld(document.getElementById("txtNombre").value,
OnComplete, OnTimeOut, OnError);
return true;
}
function OnComplete(arg) {
alert(arg);
}
function OnTimeOut() {
alert("Time is up");
}
function OnError() {
alert("Error");
}
El problema es que estoy consiguiendo el error "Service1 is not define". Existe cinco cosas importantes que hay que tomar en cuenta:
1º - El web service debe estar corriendo, ¡obvio!
2º - El nombre del directorio donde está el web service debe ser utilizado en el momento de instanciar o llamar a un método del web service.
3º - Por supuesto, también es importante agregar el control ScripManager a la página *.aspx y dentro de ese control agregar un ServiceReference.
4º Si aun no aparece, entonces revizar el código Javascript y verificar que los nombres de los métodos OnComplete, OnTimeOut y OnError estén bien escritos en todo lado donde se vayan a usar. Recordemos que Javascript es sencible a mayúsculas y minúsculas.
5º Si se están usando WebService estáticos, el método debe ser declarado con la palabra reservada Shared (VB) o static (C#).
6º Puede ocurrir que el web service es llamado pero se lanza una excepción indicando que no encuentra al web service y por más que intente hacerlo funcionar, no ocurre. Un caso así ocurrió cuando se ejecutaba una aplicación en una máquina virtual. La solución fue simplemente reiniciar la máquina virtual. Sí por supuesto, dicha solición se aplicó casí después de tres horas después de tantos intentos infructuosos, jaja!
7º Existe un caso especial, pero ocurre solo si utilizamos Web Services Estáticos.El mensaje de error equivalente con el que podemos toparnos es el siguiente:
Error: Sys.Net.WebServiceFailedException: The server
method 'StaticMethod' failed with the following error:
Archivo de origen: http://localhost:10258/WebSite2
/ScriptResource.axd?d=58xHtP0kV6y42p9jtK_IzqsHQXnRb-
2ldpNeZlGfSlZEESQ9GeHLihiyxiP1&t=d2c0a1c Línea: 5488
Eso es por una única razón. Se produce si un botón que se
supone llama a una función de JS y la función de JS llama
a una función stática en el lado del servidor, es muy
probable que la función sí se pueda ejecutar (la del lado
del servidor) pero la respuesta de retorno va a fallar ya
que el botón hace postback haciendo que el otro mensaje
que se había enviado, falle totalemente.
Y continuando con la solución para el problema anterior del Web Service, lo que hay que hacer es llamar al web service utilizando el nombre del directorio seguido del nombre de la clase web service separado con punto quedando ahora:var resultado = SimpleWebService.Service1.HelloWorld.....;
Otro punto importante es que debe existir la siguiente línea de código en el encabezado
de la clase:
<System.Web.Script.Services.ScriptService()> _
miércoles, 22 de julio de 2009
Javascript: Los 10 frameworks más populares.
Frases acerca de software y programación
Esta buena ésta lista de frases que encontré en Web Intenta:
- La simplicidad es requisito previo para la fiabilidad. (Dijkstra)
- No debes dar al mundo lo que pide, pero sí lo que necesita. (Dijkstra)
- Si un oyente asiente con la cabeza cuando estás explicando tu programa, despiértale. (Perlis)
- No tengas buenas ideas si no estás dispuesto a responsabilizarte de las mismas. (Perlis)
- Optimización prematura es la fuente de todo mal -o al menos la mayor parte- en la programación. (Knuth)
- Hablar es barato. Muéstrame el código. (Torvalds)
- Sólo podemos vislumbrar un corto período hacia el futuro, pero podemos ver que hay muchas cosas por hacer. (Turing)
- Hay muchas preguntas que los tontos pueden hacer y que los sabios no pueden responder. (Polya)
- Daría mi brazo derecho a ser ambidiestro. (Kernighan)
- UNIX es básicamente un sistema operativo sencillo, pero tienes que ser un genio para entender su simplicidad. (Ritchie)
- A veces la manera más fácil de conseguir algo es ser un poco ingenuo al respecto. (Joy)
- El software es un gas, se expande hasta llenar su recipiente. (Myhrvold)
- Se requiere una mente muy inusual para llevar a cabo el análisis de lo obvio. (Whitehead)
- Todas las verdades son fáciles de entender una vez que se descubren, la cuestión es descubrirlas. (Galilei)
- No hay nada más despreciable en el campo de la programación que un programa no documentado. (Yourdan)
- El control de la complejidad es la esencia de la programación. (Kernighan)
- Es mejor tener 100 funciones que operan sobre una estructura de datos, que 10 funciones que operan sobre 10 estructuras de datos. (Perlis)
- La mejor manera de predecir el futuro es inventarlo. (Kay)
- Un ejemplo no es otra manera de enseñar, es la única manera de enseñar. (Einstein)
- Cada programa es una parte de algún otro programa y rara vez se ajustan. (Perlis)
MySql: HeidiSQL, un gestor gráfico más.

HeidiSql es un interfaz gráfico para administrar MySQL. Permite navegar y gestionar las bases de datos MySQL de una forma intuitiva y con un interfaz Windows. El programa es gratuito.
Con un tamaño de descarga inferior a los 2Mb y de ejecución rápida y liviana, otras de sus características principales son:
- Generación de exportaciones SQL.
- Sincronización de tablas entre bases de datos.
- Gestión de privilegios de usuario.
- Importación de archivos de texto.
- Exportación de datos a formatos CSV, HTML y XML.
- Navegación y edición de los datos de las tablas en una "confortable" grid.
- Procesos de inserción batch y ficheros binarios dentro de las tablas.
- Escritura de consultas con un resaltado de sintaxis personalizado y con autocompletado.
- Monitorización y eliminación de procesos de cliente.
martes, 14 de julio de 2009
Asp.Net: Validar páginas en CSS Validation Service
Analizando un poco la situación vi que la URL para llamar al servicio es:
http://jigsaw.w3.org/css-validator/validator?uri=URL
Donde URL es donde debemos poner la URL de nuestra página. Entonces muy fácil, solo tengo que poner en código una sentencia que me devuelva la URL de la página web en la que estoy navengando. Para obtener la dirección de un recurso específico del sitio web (URI) se puede usar la función Page.Request.Url.AbsoluteUri.
Finalmente todo el link para mandar a validar la página me quedó de la siguiente manera:
<a href="http://jigsaw.w3.org/css-validator/validator?uri=<% Response.Write(Page.Request.Url.AbsoluteUri) %>">Validar CSS</a>
domingo, 12 de julio de 2009
Drupal: Problemas con APC
Performance logging APC.
Performance logging on live web sites works best if APC is enabled.
Performance logging APC memory size.
APC has been configured for , which is less than the recommended 48 MB of memory. If you encounter errors when viewing the summary report, then try to increase that limit for APC.
Performance logging details
Performance detailed logging is enabled. This can cause severe issues on live sites.
Esto se debe a que yo había activado el módulo llamado Performance logging details y por eso estaba recibiendo dichas advertencias. Basándome en soluciones encontradas en diferentes foros se dice que tengo que activar un módulo en el archivo php.ini. El módulo es php_apc.dll (se activa quitando el punto y coma que lo precede) además hay que agregar una línea de código al final del mismo archivo; la línea de código es la siguiente:
apc.shm_size = 64
Luego reinicie el servidor Apache y efectivamente las advertencias dejaron de aparecer. El detallazo es que me comenzó a salir un cuadro de diálogo avisando sobre un error en el servidor Apache. En otras palabras arreglé una cosa pero se daño el sistema por otro lado.
Finalmente, llegué a una conclusión efectiva. Como a mi no me gusta ver esas advertencias llegué a la conclusión de desactivar el módulo Performance logging details, de por sí, ni me interesaba, jaja!
viernes, 10 de julio de 2009
Web: Que buen sitio
El sitio es www.baluart.net
sábado, 4 de julio de 2009
Asp.Net: Referenciar un objeto de un CreateUserWizard object
Dim errMessage As Literal
errMessage = CType(AsistenteCrearUsuario.CreateUserStep.
ContentTemplateContainer.FindControl("ErrorMessage"), Literal)
En el caso de que se esté usando un CreateUserWizard dentro de un UpdatePanel, lo mejor es convertir el CreateUserWizard en templates ya que los controles de Login no permiten modificar fácilmente los controles dentro del CreateUserWizard.
Asp.Net: Modificar Items que crea un Repeater Control
VB.Net:
Dim nav As XPathNavigator = CType(e.Item.DataItem, IXPathNavigable).CreateNavigator
Dim pagina As String = nav.Select("/Titulos/Titulo").Current.SelectSingleNode("pagina").Value
C#:
XPathNavigator nav = ((IXPathNavigable) e.Item.DataItem).CreateNavigator();
string pagina = nav.Select("/Titulos/Titulo").Current.SelectSingleNode("pagina").Value
El objeto XPathNavigator también tiene el método SelectSingleNode("nombreNodo") para recuperar el valor de un nodo.
Asp.Net: Response.End()
- HttpContext.Current.ApplicationInstance.CompleteRequest()
Asp.Net: Globalization
1º En CodeBehind usar el objeto GetLocalResourceObject:
- Label1.Text = GetLocalResourceObject("Label1Resource1.Text").ToString()
- <asp:Label ID="Label1" runat="server" Text="<% Resources:Label1.Text %>" />
3º En el source usar el atributo meta en el elemento del control Asp.Net:
- <asp:Label ID="Label1" runat="server" meta:ResourceKey="lblLabel1" />
4º Usando recursos globales; en el source modificar el atributo Text:
- <asp:Label ID="Label1" runat="server" Text="<%$ Resources:ClassNameRS, Label1 %>" />
5º Usando recursos globales; en el code behind usar objeto Resources:
- Label1.Text = Resources.ClassNameRS.Label1
En la parte gráfica de la página (Diseño) existe una propiedad llamada Expressions. Esa propiedad permite asociar un key que se encuentra en un archivo de recursos con una propiedad del control. Esto es solo para hacer las cosas más rápido.