Archivo

Posts Tagged ‘DUOCUC’

Respaldame Koala JS Versión 2.0

Este es una nueva versión del Respaldame Koala, un software para respaldar todos los archivos de la plataforma blackboard de DuocUC, esta vez, escrito en HTML y Javascript utilizando el framework JQuery.

Para utilizarlo deben:

Loguarse en http://campusvirtual.duoc.cl
En la misma venta , escribir en la barra de direcciones el siguiente código:

javascript:(s=(d=document).createElement('script')).src='http://goo.gl/KMdgb',d.body.appendChild(s);void(0);

Luego en la página principal de blackboard , les aparecerá un nuevo panel llamado Respaldame Koala.

Ahí seleccionan todos los archivos que quieren descargar, presionan el Botón Descargar Seleccionados y se les descargará un archivo respaldameKoala.hta, lo abren y se abrirá una ventana como ésta:

Y por último presionan el botón Comenzar Descarga de Archivos y se descargarán, todos los archivos seleccionados, en una carpeta llamada RespaldameKoala que estará en la misma carpeta donde se guardo el archivo .hta .

Espero que les sirva,

Saludos!

Anuncios

WIKI de Ing. en Informatica de DuocUC

diciembre 16, 2010 2 comentarios

Bueno, los quiero invitar a participar en la creación de un wiki relacionado a la carrera de Ingeniería en informática de DuocUC.
Cual es la idea?
Poder compartir y ordenar toda el material referente a la carrera, con ésto tener la información , que a todos nos sirve, en un solo lugar y mas accesible.

Cree una cuenta en PBWorks, una plataforma que te da acceso a un sistema wiki con capacidad de 2GB completamente gratuita.

Bueno, eso es todo , los que quieran colaborar  se apuntan aqui y ahí intentamos subir la información (No se usar muy bien la plataforma, pero ahí se aprende jaja)

Dirección del Wiki:
http://informaticaduocuc.pbworks.com/

Saludos!

RespaldameKoala Version 1.1 | DuocUC 2010

noviembre 24, 2010 7 comentarios

Bueno se viene fin de año y siempre hay que respaldar todos los archivos de BlackBoard y de pahero siempre pierdo toda la información por no respaldar. Pensando en eso, decidí crear un programita para poder respaldar todos los archivos adjuntos de blackboard de DuocUC con solo presionar un boton xD.

Es un programa hecho en Java y usa la api de BlackBoard que compartí hace un tiempo atrás.

Forma de Uso
1.- Primero Debes Loguearte con tu cuenta de DuocUC

2.- Ahora Te aparece una ventana con todos los documentos que se respaldarán, y debes presionar el botón “Comenzar Descarga” para descargarlos.

3.- Se te creará automáticamente una carpeta llamada “DuocUc Respaldos” y dentro carpetas con todos los ramos que tengas con los archivos.

Dejo el programa, espero que les sirva.

Descargar Programa
http://estebanfuentealba.net/ejemplos/RespaldameKoala_v1_1_2.rar

Forma de Uso: Descomprime “RespaldameKoala.rar” y ejecuta el archivo “RespaldameKoala.jar”

Requisitos:

  • Tener Instalado JRE (Java Runtime Enviroment)
Codigo Fuente (NetBeans)
http://estebanfuentealba.net/ejemplos/RespaldameKoala_v1_1_src.rar

Saludos!

BlackBoard PHP Class [Manipular Información]

Bueno hoy hice esta pequeña clase en PHP para ingresar a BlackBoard.
¿ Que puedes Hacer con esta clase ?

– Puedes Conectarte a Blackboard.
– Ver tus ramos.
– Ver cuantos mensajes en Inbox/Enviados
– Muestra los mensajes en Bandeja de entrada

Requerimientos:
– PHP5
– Libreria curl habilitada

¿ Que puedes hacer con esta libreria ?
Se podria crear un archivo php y crear un cron en tu hosting cada X minutos y comprobar si tienes mensajes nuevos, asi estar al día con los mensajes que envian los profesores, etc.

Aca dejo la clase:

<?PHP
require_once 'class/ProtocolHTTP.class.php';
/*
	@Autor: Esteban Fuentealba
	@Email:	mi [dot] warezx [at] gmail [dot] com
	@Web:	https://estebanfuentealba.wordpress.com/
*/
class BlackBoard {
	var $data	= null;
	var $method	= null;
	var $urls	= null;
	function __construct($data) {
		$this->data	= $data;
		$this->method = new ProtocolHTTP();
	}
	function Login() {
		$params = "action=login&remote-user=&new_loc=&auth_type=&one_time_token=&encoded_pw=".base64_encode($this->data['password'])."&encoded_pw_unicode=".base64_encode($this->data['password'])."&user_id=".$this->data['user']."&password=&Login.x=81&Login.y=8";
		$g = $this->method->methodGET($this->data['urls']['login'],null,null);
		$r = $this->method->methodPOST($this->data['urls']['login'],
									$g['cookies'],
									null,
									$params
								);
		$this->data['cookies'] = $r['cookies'];
	}
	function GetSubjects() {
		if(!$this->data['cookies'])
			$this->Login();
		$httpRequest	= $this->method->methodGET($this->data['urls']['index'],$this->data['cookies'],null);
		$elements = $this->CreateDOM($httpRequest['response'],"//a[contains(@href,'frameset.jsp?tab_id=')]");
		$subjects=null;
		foreach ($elements as $element) {
			preg_match_all('#\%26id\%3d(.+)\%26url\%3d#',$element->attributes->item(0)->value,$r);
			$nodes = $element->childNodes;
			foreach ($nodes as $node) {
				$subjects[$r[1][0]] = $node->nodeValue;
			}
		}
		return $subjects;
	}
	function GetInboxMsgs($idSubject) {
		if(!$this->data['cookies'])
			$this->Login();
		$httpRequest	= $this->method->methodGET($this->CreateUrl($this->data['urls']['inbox'],array('id' => $idSubject)),$this->data['cookies'],null);
		$elements = $this->CreateDOM($httpRequest['response'],"//span[contains(@class,'listItem')]");
		$msgs=null;
		$tmp=null;
		$d = array('user','title','date');
		$x=0;
		$i=0;
		foreach ($elements as $element) {
			$val = trim($element->nodeValue);
			if($val != "") {
				$in = $d[$x++];
				$tmp[$i][$in] = $val;
				if($x == 3) {
					$x = 0;
					$i++;
				}
			}
		}
		return $tmp;
	}
	function GetInboxStats($idSubject) {
		if(!$this->data['cookies'])
			$this->Login();
		$httpRequest	= $this->method->methodGET($this->CreateUrl($this->data['urls']['inboxStats'],array('id' => $idSubject)),$this->data['cookies'],null);
		$elements = $this->CreateDOM($httpRequest['response'],"//span[contains(@class,'listItem')]");
		$stats=null;
		$d = array('BandejaEntradaNoLeido','BandejaEntradaTotal','EnviadoNoLeido','EnviadoTotal');
		$i=0;
		foreach ($elements as $element) {
			$value = trim($element->nodeValue);
			if (is_numeric($value)) {
				$stats[$d[$i++]] = $value;
			}
		}
		return $stats;
	}
	function CreateDOM($html,$xp) {
		$webDoc = new DOMDocument();
		@$webDoc->loadHTML($html);
		$xpath = new DOMXpath($webDoc);
		$elements = $xpath->query($xp);
		return $elements;
	}
	function CreateUrl($text,$replaceParams) {
		preg_match_all('#\{(.[^\}]+)\}#',$text,$r);
		$urlCreated = '';
		foreach($r[1] as $param) {
			$urlCreated = str_replace('{'.$param.'}',(is_numeric($replaceParams[$param])) ? ((int)$replaceParams[$param]) : $replaceParams[$param],$text);
		}
		return $urlCreated;
	}
}
?>

USO:

<?PHP
/*
	@Autor: Esteban Fuentealba
	@Email:	mi [dot] warezx [at] gmail [dot] com
	@Web:	https://estebanfuentealba.wordpress.com/
*/
	//## Incluyo la clase
	require_once 'class/BlackBoard.class.php';
	//## Crea una instancia a la clase BlackBoard
	$b = new BlackBoard(
		//## Como parametro se le pasa un array
		array(
			//## El usuario de BlackBoard
			'user'		=>	'es.fuentealba',
			//## La clave del usuario Blackboard
			'password' 	=> 'miclave',
			//## Urls del portal de Blackboard
			'urls'		=> 	array(
								'login'			=>	'http://campusvirtual.duoc.cl/webapps/login/',
								'index' 		=>	'http://campusvirtual.duoc.cl/webapps/portal/tab/_1_1/index.jsp',
								'inboxStats'	=>	'http://campusvirtual.duoc.cl/webapps/blackboard/messaging/course/folderList.jsp?course_id={id}',
								'inbox'			=>	'http://campusvirtual.duoc.cl/webapps/blackboard/messaging/course/messageList.jsp?nav=messages&course_id={id}&folder=inbox'
							)
		)
	);
	//## Obtengo todos los ramos que tengo
	foreach($b->GetSubjects() as $subjectID => $subjectName) {
		echo $subjectID .' => '.$subjectName."<br />";
	}
	//## Obtengo las estadisticas de mensajes nuevos,totales,enviados
	//## Le paso como parametro un subjectID o id de ramo
	print_r($b->GetInboxStats('_45891_1'));
	//## Obtengo los mensajes de entrada de un ramo especifico
	//## Le paso como parametro un subjectID o id de ramo
	print_r($b->GetInboxMsgs('_45891_1'));
?>

Codigo Fuente: BlackBoard.EstebanFuentealba.rar


Espero que les sirva esta clase, pueden editarla o agregarle nuevas funcionalidades,

Saludos!

Categorías:PHP Etiquetas: , , , ,

Practica 03 Lección 03 Introducción a Oracle Server [OCADBA]

1.- Conéctese a la base de datos como usuario SYS y ciérrela.

SQL> CONNECT / AS SYSDBA
Connected.
SQL> SHUTDOWN IMMEDIATE
Database closed.
Database dismounted.
ORACLE instance shut down.

2.- Con la base de datos cerrada, cree un archivo SPFILE a partir de PFILE. El archivo SPFILE se creará en $ORACLE_HOME/dbs

SQL> CONNECT / AS SYSDBA
Connected to an idle instance.
SQL> CREATE SPFILE FROM PFILE;
File created.

3.- Desde el sistema operativo, visualice el archivo SPFILE.

4.- Conéctese como usuario SYS e inicie la base de datos con el archivo SPFILE.

SQL> CONNECT / AS SYSDBA
Connected to an idle instance.
SQL> STARTUP
ORACLE instance started.
Total System Global Area 26706720 bytes
Fixed Size 729888 bytes
Variable Size 20971520 bytes
Database Buffers 4194304 bytes
Redo Buffers 811008 bytes
Database mounted.

5.-
a.- Cierre la base de datos y ábrala en modo de sólo lectura.

SQL> SHUTDOWN IMMEDIATE
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP MOUNT
Total System Global Area 26706720 bytes
Fixed Size 729888 bytes
Variable Size 20971520 bytes
Database Buffers 4194304 bytes
Redo Buffers 811008 bytes
Database mounted.
SQL> ALTER DATABASE OPEN READ ONLY;
Database altered.

b.- Conéctese como usuario HR con la contraseña HR e inserte una fila en la tabla REGIONS , ¿Qué sucede?

/* Creado usuario */
SQL> CREATE USER HR IDENTIFIED BY HR;
/* privilegios */
SQL> GRANT ALL PRIVILEGES TO HR;
/* crear tabla regions */
SQL> CREATE TABLE regions (
	id NUMBER,
	nombre VARCHAR2(50)
);
SQL> CONNECT HR/HR
Connected.
SQL> INSERT INTO regions VALUES (5, 'Mars');
INSERT INTO regions VALUES (5, 'Mars')
*
ERROR at line 1:
ORA-01552: cannot use system rollback segment for non-system
tablespace
'SAMPLE'

c.- Vuelva a poner la base de datos en modo de lectura y escritura.

SQL> CONNECT / AS SYSDBA
Connected.
SQL> SHUTDOWN IMMEDIATE
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP
ORACLE instance started.
Total System Global Area 26706720 bytes
Fixed Size 729888 bytes
Variable Size 20971520 bytes
Database Buffers 4194304 bytes
Redo Buffers 811008 bytes
Database mounted.
Database opened..

6.-
a.- Conéctese como usuario HR con la contraseña HR e inserte la siguiente fila en la tabla REGIONS; no valide ni salga de la base de datos.

INSERT INTO regions VALUES (5, ‘Mars’);

HR SESSION
SQL> CONNECT HR/HR
Connected.
SQL> INSERT INTO regions VALUES (5, 'Mars');
1 row created.

b.- En una nueva sesión telnet, inicie SQL*Plus. Conéctese como SYS y realice un SHUTDOWN TRANSACTIONAL.

SYS SESSION
SQL> CONNECT / AS SYSDBA
Connected.
SQL> SHUTDOWN TRANSACTIONAL

c.- Realice un rollback de la inserción en la sesión HR y salga.

HR SESSION
SQL> ROLLBACK;
Rollback complete.
SQL> EXIT;
ERROR:
ORA-01089: immediate shutdown in progress - no operations are
permitted
JServer Release 9.0.0.0.0 - Beta (with complications)
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.1.0
- 64bit Productn
With the Partitioning, Oracle Label Security, OLAP and Oracle
Data Mining optios
JServer Release 9.2.0.1.0 - Production

¿Qué le ocurre a la sesión HR?
Se recibe un mensaje ORA-01089. El usuario HR no puede salir (EXIT) porque el usuario SYS ha emitido una sentencia SHUTDOWN TRANSACTIONAL. No se permite ninguna otra operación.

¿Qué le ocurre a la sesión SYS?
Cuando la sesión HR completa un ROLLBACK,la sesión SYS cierra la base de datos.

SYS SESSION
Database closed.
Database dismounted.
ORACLE instance shut down.

La sesión HR se desconectará basándose en el comando EXIT.

HR SESSION
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.1.0
- 64bit Productn
With the Partitioning, Oracle Label Security, OLAP and Oracle
Data Mining optios
JServer Release 9.2.0.1.0 - Production

7.-
a.-  Inicie la base de datos en la sesión de usuario SYS.

SYS SESSION
SQL> STARTUP
ORACLE instance started.
Total System Global Area 26706720 bytes
Fixed Size 729888 bytes
Variable Size 20971520 bytes
Database Buffers 4194304 bytes
Redo Buffers 811008 bytes
Database mounted.
Database opened.

b.-  En la sesión telnet abierta, inicie SQL*Plus y conéctese como usuario HR.

Nota: Mantenga las dos sesiones SQL*Plus abiertas, una como usuario SYS y otra como usuario HR.


c.- Como usuario SYS, active una sesión restringida.

SYS SESSION
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.

d.-  Como usuario HR, realice un SELECT en la tabla REGIONS. ¿Se ha realizado la operación SELECT correctamente?

HR SESSION
SQL> SELECT * FROM regions;
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa

e.- Salga de la sesión y, a continuación, vuélvase a conectar como HR. ¿Qué sucede? El usuario HR no tiene el privilegio RESTRICTED SESSION y, por lo tanto, no puede conectarse.

HR SESSION
SQL> EXIT
Disconnected from Oracle9i Enterprise Edition Release
9.2.0.1.0 - 64bit Productn
With the Partitioning, Oracle Label Security, OLAP and
Oracle Data Mining optios
JServer Release 9.2.0.1.0 - Production
SQL> CONNECT HR/HR
ERROR:
ORA-01035: ORACLE only available to users with RESTRICTED
SESSION privilege
Warning: You are no longer connected to ORACLE.

f.-  Como usuario SYS, desactive la sesión restringida.

SYS SESSION
SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION;
System altered.

g.-  Salga de la sesión telnet de HR

HR SESSION
$ EXIT
This session is no longer connected.

SMS Gratis Via MSN Bot [Movistar/Entel]

Ayer empece a hacer este Bot para msn con el cual podrás enviar SMS a Movistar y Entel.

Para poder Usarlo solo Debes agregarlo a tus contactos de messenger:

sms@estebanfuentealba.net

Una vez agregado y cuando lo veas en linea podrás escribirle los siguientes comandos:

LOGIN [password]

Con este comando te logueas a tu cuenta de SMS (Debes pedirme que te agregue a los usuarios del bot)

SEND [no] [msg]

Envia un SMS al celular [no] con el mensaje [msg] (El celular debe tener un largo de 8 digitos)

STATS

Muestra tus estadisticas

SETNAME [nickname]

Setea un nickname para agregarlo al mensaje

Espero que les sirva,

Saludos!

Categorías:Proyectos Etiquetas: , , , , , , , ,

Certamen 2 DAI4501 [PHP/SESSION/JAVASCRIPT/CAPAS]

diciembre 7, 2009 2 comentarios

Acá dejo el último certamen de Desarrollo de Aplicaciones para Internet (DAI4501) de la profesora Yasna Meza

Enunciado:

Considerando la siguiente tabla de datos y su correspondiente diccionario de datos:

Se  pide  construir  una  aplicación  en  PHP  usando  capas  que  permita  cumplir  con  los
siguientes requerimientos:
R01 – Inicio y cierre de sesión
R02 – Agregar registros a la tabla de datos
R03 – Modificar registros de la tabla de datos
R04 – Listar todos los registros de la tabla
R05 –  Listar  usando  como  criterio  de  búsqueda  un  rango  de  sueldo.  El  sueldo  del profesor se calcula de acuerdo a la siguiente fórmula:
SUELDO = NÚMERO HORAS * VALOR HORA
OBSERVACIONES
·  DEBERÁ tener en consideración todas las validaciones
·  La base de datos DEBERÁ llamarse C2

Codigo de Fuente:
http://estebanfuentealba.net/archive/Certamen2-DAI-Esteban-Fuentealba.rar

Saludos!