Archive for the 'General' Category
SITE-PERF.com - monitoriza el tiempo de carga de tu sitio web
SITE-PERF.com, (Site performance = rendimiento del sitio web) es una aplicación web según veo hecha con CGI que nos permite simular los tiempos de carga desde diferentes puntos (USA, Holanda) y con diferentes navegadores, simplemente tienes que introducir la URL a la que quieres monitorizar y se te desplegará toda la información acerca de los elementos que se estan cargando. Esto nos permite corregir y/o priorizar los elementos que se mostrarán.
Site Performace:
http://site-perf.com/
Script Sharp - desarrolla en C Sharp y genera código Javascript
Script# (Script Sharp), es un proyecto de Nikhil Kothari (creador del web development helper), básicamente es una herramienta para que los desarrolladores (.NET) que escriben código C# (C sharp) no tengan que escribir código javascript. Cabe resaltar que esta herramienta ha obtenido un premio a la excelencia en la ingenieria que otorga Microsoft.
Una imagen de como es la herramienta:

Y aqui va el tipico ejemplo “Hola Mundo”:
Si tenemos estos elementos en nuestro documento HTML:
<input type="text" id="nameTextBox" /> <input type="button" id="okButton" value="OK" /> <span id="helloLabel"></span>
Ahora escribo el script en C sharp en mi fichero HelloWorld.cs, haremos lo siguiente: en el evento onclick del boton (input type=”button”) recupero el valor de la caja de texto (nput type=”text”) y luego hare una llamada ajax y finalmente mostraré el resultado en la etiqueta (span).
using System;
using ScriptFX;
using ScriptFX.UI;
namespace HelloWorld {
public class HelloWorldScriptlet : IScriptlet {
private Button _okButton;
private TextBox _nameTextBox;
private Label _helloLabel;
private XMLHttpRequest _request;
public void Start() {
_okButton = new Button(Document.GetElementById("okButton"));
_nameTextBox = new TextBox(Document.GetElementById("nameTextBox"));
_helloLabel = new Label(Document.GetElementById("helloLabel"));
_okButton.Click += new EventHandler(OnOKButtonClick);
}
private void OnOKButtonClick(object sender, EventArgs e) {
Callback completedCallback = new Callback(this.OnRequestComplete);
_request = new XMLHttpRequest();
_request.Onreadystatechange = Delegate.Unwrap(completedCallback);
_request.Open("GET", "Hello.axd?name=" + _nameTextBox.Text, /* async */ true);
_request.Send(null);
}
private void OnRequestComplete() {
if (_request.ReadyState == 4) {
_request.Onreadystatechange = null;
string greeting = _request.ResponseText;
_helloLabel.Text = greeting;
}
}
}
}
Segun Nikhil aplicamos la magia del Script Sharp, con el siguiente comando:
ssc /ref:sscorlib.dll /ref:Script.ScriptFX.Core.dll /debug /out:HelloWorld.js HelloWorld.cs
y luego tenemos nuestro fichero HelloWorld.js con el siguiente código javascript:
Type.registerNamespace('HelloWorld');
////////////////////////////////////////////////////////////////////////////////
// HelloWorld.HelloWorldScriptlet
HelloWorld.HelloWorldScriptlet = function Scenarios_HelloWorldScriptlet() {
}
HelloWorld.HelloWorldScriptlet.prototype = {
_okButton: null,
_nameTextBox: null,
_helloLabel: null,
_request: null,
start: function Scenarios_HelloWorldScriptlet$start() {
this._okButton = new ScriptFX.UI.Button(document.getElementById('okButton'));
this._nameTextBox = new ScriptFX.UI.TextBox(document.getElementById('nameTextBox'));
this._helloLabel = new ScriptFX.UI.Label(document.getElementById('helloLabel'));
this._okButton.add_click(new Delegate(this, this._onOKButtonClick));
},
_onOKButtonClick: function Scenarios_HelloWorldScriptlet$_onOKButtonClick(sender, e) {
var completedCallback = new Delegate(this, this._onRequestComplete);
this._request = new XMLHttpRequest();
this._request.onreadystatechange = Delegate.unwrap(completedCallback);
this._request.open('GET', 'Hello.axd?name=' + this._nameTextBox.get_text(), true);
this._request.send(null);
},
_onRequestComplete: function Scenarios_HelloWorldScriptlet$_onRequestComplete() {
if (this._request.readyState == 4) {
this._request.onreadystatechange = null;
var greeting = this._request.responseText;
this._helloLabel.set_text(greeting);
}
}
}
HelloWorld.HelloWorldScriptlet.registerClass('HelloWorld.HelloWorldScriptlet', null, ScriptFX.IScriptlet);
Página Oficial:
http://www.nikhilk.net/ScriptSharpIntro.aspx
Video (10 minutos):
http://www.nikhilk.net/Content/Video/ScriptSharpIntro.wmv
Descargar:
http://projects.nikhilk.net/Binaries/ScriptSharp.zip
Tutorial PDF:
http://projects.nikhilk.net/Binaries/ScriptSharp.pdf
Tip - Trick - Oracle - PLSQL - mostrar el número de línea donde se produce el error
Esto ayuda a los que desarrollamos aplicaciones web con acceso a base de datos ORACLE. A partir de la versión de Oracle 10g, tenemos una función que devuelve una cadena de texto con el número de línea donde se ha producido un error, hacemos un ejemplo en la pestaña SQL Editor del TOAD con un bloque anónimo, en donde provocaremos un error comparando un valor númerico (NUMBER) con una cadena de texto:

El código de nuestro pequeño bloque anónimo es el siguiente:
DECLARE
dummy NUMBER := 0;
BEGIN
if dummy = 'alfa'
then
dbms_output.put_line('if');
else
dbms_output.put_line('else');
end if;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(sqlerrm);
dbms_output.put_line(DBMS_UTILITY.format_error_backtrace);
END;
Lo que se muestra en el DBMS_OUTPUT es:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 4
El SQLERRM como todos sabemos nos devuelve el mensaje de error, y DBMS_UTILITY.format_error_backtrace nos recupera el número de línea donde esta ocurriendo el error, si el código del EXCEPTION:
dbms_output.put_line(sqlerrm); dbms_output.put_line(DBMS_UTILITY.format_error_backtrace);
estuviera en un paquete (package) el mensaje seria de la forma:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at “IDENTIFICADOR_PACKAGE.IDENTIFICADOR_PROCEDIMIENTO_FUNCION”, line 4
Esto es muy útil al momento de tracear errores en tiempo de ejecución y en el manejo de excepciones, ya que no solo sabemos la descripción del error sino que también sabemos el número de la línea de nuestro paquete donde sucedio.
Safari para windows - mostrar Desarrollo en la barra de menus
A partir de la versión 3.1.1 de Safari para windows aparece en la sección Avanzado de Preferencias un check para mostrar el menu desarrollo en la barra de menus.

Una vez seleccionada esta opción, se muestra el menu Desarrollo

Se puede abrir la página actual con otros navegadores

Se puede hacer la petición al servidor de la pagina actual con distintos User-Agent (en castellano: Agente de Usuario)

También tiene un object inspector, donde podemos identificar un elemento de la página asi como el estilo que esta usando y las propiedades CSS

En la opción Network (Control Temporal de Red) veremos cuanto tarda en descargar los elementos de la página (imagenes, css, js) asi como el tamaño total de la transferencia.

Comments(0)










