martes, 27 de diciembre de 2011

Java HttpServetRequest

Ante la petición "http://localhost:8080/contexto/action.do?campoa=a&campob=b"

request.getQueryString() = campoa=a&campob=b
request.getRequestURI() = /contexto/action.do
request.getRequestURL() = http://localhost:8080/contexto/action.do
request.getServletPath() = /action.do
request.getLocalName() = localhost
request.getLocalPort() = 8080
request.getProtocol() = HTTP/1.1
request.getRemotePort() = 2075
request.getScheme() = http
request.getServerName() = localhost
request.getServerPort() = 8080

miércoles, 31 de agosto de 2011

Monitorización con Nagios

Artículos sobre Nagios

taller nagios: http://www.caldum.org/?p=4899

monitorizar tomcat: http://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=jmx4perl

PNP4nagios (gráficas): http://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=nagios_nagiosql_pnp4nagios

Añadir a nuestras páginas comentarios de Facebook

En la siguiente URL hay un interesante artículo de como integrar en nuestras páginas WEB la opción de que los usuarios puedan añadir comentarios de Facebook.

http://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=facebook-comment-plugin

con las siguientes opciones:
* No tenemos que preocuparnos en nuestro web de guardar los comentarios, se guardan en los almacenes de datos de Facebook.
* Los administradores se enteran de los comentarios por que te llega una notificación a su Facebook.
* El autor del comentario puede borrar el comentario en cualquier momento.
* Una vez que un administrador aprueba un comentario no lo puede borrar, aunque si lo puede ocultar, de manera que sólo el autor del comentario y sus amigos podrán verlo.
* Cualquier usuario logado en Facebook y que visite tu web, puede indicar que un comentario es spam o un abuso.
* Cualquier usuario logado en Facebook puede usar el botón de "Me gusta" o "Reponder" sobre cualquier comentario.
* Cualquier usuario logado en Facebook puede subscribirse a la página donde está el plugin de manera que cualquier comentario se se produzca en la misma lo verá en tu muro cuanto se conecte a Facebook.
* El administrador puede banear a un usuario, de manera que aunque pueda continuar publicando, sólo lo verán dichos comentarios él y sus amigos.
* Cuando uno comenta identificándose con Hotmail y un usuario responda le llegará un email notificándoselo.

miércoles, 6 de julio de 2011

ORACLE función para retornar subcadenas


CREATE OR REPLACE FUNCTION GET_TOKEN(TEXTO IN VARCHAR2, POSICION IN NUMBER, SEPARADOR IN VARCHAR2 DEFAULT '|') RETURN VARCHAR2 IS
tmpVar NUMBER;
/*
retorna el substring indicado en POSICION de la cadena TEXTO utilizando el
separador indicado

Ejemplo:
select get_token('1234|ABC', 1, '|'), get_token('1234ABC', 1, '|') from dual
retorna '1234' y '1234ABC'
*/
VALOR VARCHAR2(32767) := '';
POSTTEXTO VARCHAR2(32767) := TEXTO;
CONTADOR NUMBER := 1;
BEGIN
IF ((LENGTH(TEXTO) = 0) OR (POSICION = 0)) THEN
RETURN NULL;
END IF;
WHILE ((CONTADOR < ABS(POSICION)) AND (LENGTH(POSTTEXTO) > 0)) LOOP
IF (SUBSTR(POSTTEXTO, SIGN(POSICION), 1) = SEPARADOR) THEN
CONTADOR := CONTADOR + 1;
END IF;
IF POSICION > 0 THEN
POSTTEXTO := SUBSTR(POSTTEXTO, 2);
ELSE
POSTTEXTO := SUBSTR(POSTTEXTO, 1, LENGTH(POSTTEXTO) - 1);
END IF;
END LOOP;
IF (LENGTH(POSTTEXTO) = 0) THEN
RETURN NULL;
END IF;
WHILE ((SUBSTR(POSTTEXTO, SIGN(POSICION), 1) <> SEPARADOR) AND (LENGTH(POSTTEXTO) > 0)) LOOP
IF POSICION > 0 THEN
VALOR := VALOR || SUBSTR(POSTTEXTO, 1, 1);
POSTTEXTO := SUBSTR(POSTTEXTO, 2);
ELSE
VALOR := SUBSTR(POSTTEXTO, -1, 1) || VALOR;
POSTTEXTO := SUBSTR(POSTTEXTO, 1, LENGTH(POSTTEXTO) - 1);
END IF;
END LOOP;
RETURN VALOR;
END;

martes, 12 de abril de 2011

Librerías JQuery

ptTimeSelect: time picket
http://pttimeselect.sourceforge.net/

jGrowl: notificaciones zona inferior derecha
http://stanlemon.net/projects/jgrowl.html

ContextMenu: menu popup
http://www.trendskitchens.co.nz/jquery/contextmenu/

Color picker: selector de color
http://www.eyecon.ro/colorpicker/


BlockUI: bloquear interfaz cuando se están haciendo peticiones AJAX
http://malsup.com/jquery/block/

Librerías de interés para PHP

FPDF: herramientas para generar PDF online
http://www.fpdf.org/

PHPExcel: exporta a varios formatos
http://www.codeplex.com/PHPExcel

PHPLOT: generar gráficos de barras, lineas y tarta
http://sourceforge.net/projects/phplot/

QR-Code generator: para generar códigos QR
http://prgm.spipu.net/php_qrcode

Google Data APIs: Permite sincronizar la agenda con el servicio de Google Calendar
http://www.rcdtokyo.com/etc/gdataapis/

MimeParser: parsea un fichero RFC822 y retorna un array con toda la información del fichero
http://www.phpclasses.org/package/3169-PHP-Decode-MIME-e-mail-messages.html

Pop3Class: control de una cuenta mediante pop3
http://www.phpclasses.org/package/2-PHP-Access-to-e-mail-mailboxes-using-the-POP3-protocol.html

PHPMailer: envio de correo smtp
http://phpmailer.codeworxtech.com/

PHPThumb: tratamiento de imagenes
http://phpthumb.sourceforge.net/


TAR: generar TAR y ZIP
http://www.phpclasses.org/package/945-PHP-Create-tar-gzip-bzip2-zip-extract-tar-gzip-bzip2-.html

Detertar dispositivo movil:
http://code.google.com/p/php-mobile-detect/

Iconos
http://www.everaldo.com/crystal/

jueves, 7 de abril de 2011

Capturar presentaciones de Slideshare

Acabo de encontrar el siguiente enlace con indicaciones de como poder capturar presentaciones "protegidas" para descargas de Slideshare

http://blog.txipinet.com/2009/07/26/bajar-presentaciones-no-disponibles-para-descarga-en-slideshare/

y este otro enlace

http://techawakening.org/download-author-disabled-slideshare-presentations/1361/

martes, 22 de marzo de 2011

ORACLE Utilidades

PL/SQL
.$$plsql_unit > nombre del paquete o procedimiento|función en ejecución
.$$plsql_line > número de línea actual de un procedimiento|función


.OWA_UTIL.WHO_CALLED_ME(owner_name,caller_name,line_number,caller_type) > datos de quien ha invocado el PL/SQL

miércoles, 16 de marzo de 2011

ORACLE sentencia MERGE

Oracle permite con la sentencia MERGE insertar y/o actualizar una tabla desde otra tabla/consulta.

Para situaciones de volcado de datos, se puede insertar/actualizar una tabla respecto a otra consulta, y realizar insert/update dependiendo de si existe el registro en la tabla destino, para ello se indican ambas tablas y el criterio de comparación.

http://mioracle.blogspot.com/2008/01/sql-y-plsql-la-nueva-sentencia-merge.html

http://www.oracle-developer.net/display.php?id=203

http://www.idevelopment.info/data/Oracle/DBA_tips/SQL/SQL_14.shtml

miércoles, 16 de febrero de 2011

TOMCAT + SSL

En la URL http://libra.dif.um.es/~edumart/asignaturas/servicios/apuntes/TomcatSSL.pdf indican los pasos a seguir para instalar SSL en TOMCAT.

Para crear uno mismo un certificado, debemos ejecutar el comando:

JAVA_HOME\bin\keytool -genkey -alias tomcat -keyalg RSA

lo que crea el fichero .keystore en la carpeta "Document and Settings" del usuario. La clave original del keystore es "changeit".


Después configuramos en el server.xml del TOMCAT el conector HTTPS:

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />

y a rular

viernes, 21 de enero de 2011

ORACLE y UPDATE con varias tablas

hay situaciones en las que tienes que actualizar el valor del campo de una tabla, con el valor de una consulta (mediante una relación 1 a 1).

La primera manera es:
UPDATE tablaA set
campoA1 = (
select distinct campoB1
from tablaB
where tablaB.campoBi = tablaA.campoAi
)
...

una forma eficiente más eficiente es la siguiente:

UPDATE (
SELECT
tablaA.campoA1,
tablaB.campoB1
FROM tablaA
INNER JOIN tablaB on tablaB.campoBi = tablaA.campoAi)
)
SET campoA1 = campoB1;

Para que esta segunda opción funcione necesitamos tener UNIQUE or PRIMARY KEY constraint en la relación entre tablas.

Si no tienes esta constraint, puedes utilizar el hint /*+BYPASS_UJVC*/ después de la palabra UPDATE
(bypass update join view constraint).

Vistas de ORACLE

//listado del diccionario de datos
select * from dictionary

//tablas de un esquema
select * from user_tables

//todos los objetos de un esquema
select * from user_catalog

//productos ORACLE instalados
select * from product_component_version

//listado de constraint con columnas
select * from sys.all_cons_columns

//listado de todos los sinonimos
SELECT * from sys.all_synonyms

//listado de usuarios
Select * FROM dba_users

//listado de los argumentos de las funciones/procedimientos de PL/SQL
SELECT * FROM all_arguments