O BLOB!
Fevereiro 15, 2009

A parte mais interessante nas cadeiras que possuem parte prática é sem dúvida a parte em que metemos as “mãos na massa”! E não, não estou a falar de culinária… Com efeito, é com os trabalhos práticos que aprendemos e apreendemos melhor os conceitos que nos ensinaram ao longo do semestre e criar do zero uma aplicação numa dada linguagem de programação é sempre um desafio interessante (a maior parte das vezes pelo menos!).
Ora com o trabalho da cadeira de Base de Dados foi-nos proposto que criássemos um sistema web-based que consistia num repositório multimédia inserido num contexto hospitalar. A aplicação deveria permitir a gestão e visualização de ficheiros relacionados com exames de diagnóstico médico, ficheiros esses de vários tipos incluindo vídeos! Para tal e tal como nos foi pedido, utilizamos o motor de base de dados Oracle e para os ficheiros de maior tamanho foi usado o tipo BLOB! Assim nasceu o MEDEX, criado através da interacção de PHP com Oracle.
O BLOB (Binary Large Object) é um tipo especial do Oracle que permite armazenar ficheiros com grande quantidade de dados. Porém a parte de visualizar os ficheiros inseridos na base de dados com este tipo, revelou-se algo complicada uma vez que existe pouca informação de como lidar com estes ficheiros mais complicados, como é o caso dos vídeos. A seguir demonstro como resolvemos esta situação em particular. Algumas partes serão no entanto omitidas pelo simples facto de apenas querer mostrar como se lida com a visualização de vídeos armazenados com o tipo BLOB, sem entrar no contexto do trabalho que é muito mais complexo e abrangente ,como decerto compreenderão. De notar que o código mostrado abaixo está em PHP. Para mais informações, quer sobre o tipo BLOB, quer sobre a utilização do PHP com o Oracle, poderão consultar a informação disponível aqui.
Porque achámos ser a melhor maneira de o fazer, utilizámos para a visualização, um player embebido na página (que podem encontrar aqui) que lê de uma pasta temporária o ficheiro de vídeo proveniente da base de dados. Assim sempre que um utilizador pretender visualizar um vídeo, é criada uma pasta temporária com o seu nome de utilizador, é descarregado o vídeo para essa pasta e depois quando o utilizador abandonar a página, a pasta é apagada.
Temos então:
$myblobid como identificador do nome do vídeo que queremos visualizar;
$myblobtipo como identificador do tipo de ficheiro que neste caso será “flv”.
A seguir mostra-se o código para descarregar o vídeo. Este é tratado como sendo um objecto:
$s = oci_parse ($c, “select DADOS from FICHEIROS where CODIGOFICHEIRO =’$myblobid‘”);
oci_execute($s, OCI_DEFAULT);
$res = oci_fetch_object($s);
$result = $res->DADOS->load();
Depois é criada a pasta temporária com o nome do utilizador e é guardado o ficheiro:
$user = $_SESSION['user']; // O nome do utilizador;
$location = “C:/…/” . $user . “/”; // A localização da pasta;
$filename = $myblobid.$myblobtipo; // Para ser usado no player;
$filepath=$location.$filename; // Para guardar o vídeo;
$file=fopen($filepath, ‘w’);
fwrite($file,$result);
fclose($file);
A seguir é então necessário invocar o player com o $filename criado:
echo ” <script type=’text/javascript’ src=’video/swfobject.js’></script>
<div id=’player’>Video</div>
<script type=’text/javascript’>
var so = new SWFObject(‘video/player.swf’,'mpl’,'470′,’320′,’9′);
so.addParam(‘allowscriptaccess’,'always’);
so.addParam(‘allowfullscreen’,'true’);
so.addParam(‘flashvars’,'&file=$user/$filename‘);
so.write(‘player’);
</script>”;
E pronto, se tudo correu bem, podem então visualizar o vídeo na vossa página web.
Boas programações!
O sono do Mac!
Novembro 1, 2008
Já por algumas vezes precisei de me movimentar enquanto estava a fazer um ou outro download e como todos sabemos é uma chatice transportar um portátil com a tampa do ecrã aberta. Sim porque os Macs “adormecem” quando se fecha a tampa. Uma particularidade que na maior parte das vezes (quase todas) é fantástica mas que é um problema quando queremos que ele se mantenha activo. É neste contexto que surge o InsomniaX! Esta aplicação permite manter o Mac activo, mesmo fechando a tampa! Maravilha!
Uma outra aplicação que dá imenso jeito no meio académico dá pelo nome de Caffeine e como o próprio nome indica, evita que o Mac entre em suspensão ou em modo de screen saver não interrompendo, por exemplo, uma apresentação brilhante de um trabalho extremamente bem conseguido, como é o caso dos meus!
