Você está na página 1de 47

Doogg el “EKEKO”...

Exiten 3 Tipos de Personas


Las que “Intentan” Matar al Dragon
Los que “Matan” Dragones
Y el los “Saben” que los Dragones no Exiten!!!

C.U. Gerardo A. Cabero


Cabero@gmail.com
NECESITO PRESENTACION
¿Alguno/a no me Conoce?
97% LIBRE Como el Aire
3% Privativo
Dedicado
A mi Hermano David Manuel por el
Agunte...
Amigos -Fernado ,Luis , Ale , Ricardo, Javier , Diego y MAS -
SaltaLug -Miguel ,Matt, Oscar, Ricardo, y mas - !!!
Facultad de Cs. EXACTAS -TODOS - !!!
Hay vida mas alla de
GNU/Linux...
Que estoy defendiendo o
me e vuelto un purista?

Que Deseo Hacer, estoy


CAMBIE MI
aportando ALGO UTIL... forma de Pensar!!!
reconocer si me equivoque?

Ser Legal implica que la Gente


¿ Qué Paso te Señale...

en “un año”?
COMO
Llegue a GOOGLE
Y Wikimedia!!!
Google SOC
“Google Summer of Code
(en español: Verano de código Google)
es un programa anual donde, la empresa
Busca Proyectos y organizaciones .
De Estudiantes Universitarios para
Programar todo el verano...
NADA MAL ..NO....
WikiMedia
“Wikimedia es la Fundacion La misión de la
Fundación Wikimedia es facultar y animar
a la gente de todo el mundo a reunir y
desarrollar contenido educativo neutral
bajo una licencia de contenido libre o
en el dominio público,
y a difundirla de manera efectiva y global.
Title/Summary

Eclipse Plugins "GuiCo" para Superwaba

Organization
Eclipse Corria el AÑO 2007
Last Modified
2007/04/09 16:44:38 PDT
Status Not Selected ME RECHAZARON!!!!!
POR ALGO SERA …
No Estaba preparado...
No Era mi Tiempo...
Sabia que algo me
estaba esperando....
Le METI PATA!!! AÑO 2009
Una vez MAS
Sip Me Aceptaron!!!
Ya estaba maduro en Momento FELIZ !!!!!
conocimiento...
Y Sobre Todo
Hice Amigos
5600 Proyectos …
Solo 1000 Lugares....
7 Argentinos!!!
SUERTE ¿?
Google para 1000 SOC
Se Realizan las propuestas

# Ranquean las propuesta dentro de las


fundaciones

# Luego Google asigna cuantos SOC


recibe la fundacion....
Mi nombres : Gerardo Antonio Cabero
Universidad : Univesidad Nacional de Salta - Unsa -
Carrera : Lic en Analisis de sistema - Facultad de Ciencia Exactas..
Proyecto : Doog " The New Cortado Applet Player " - Soportar VLC,
Cortado, Flowpalyer ..Formtos soportado OGG , OGV...
fundacion : Wikimedia

Mi nombres : Francisco Tufró


Universidad : Universidad de Buenos Aires (UBA)
Carrera : Lic. en Ciencias de la Conputación
Proyecto : Audio Refactoring and Comment Support for Tux Paint

Mi nombre: Eliel Sardañons


Universidad: CAECE
Carrera: Lic. en Ciencias de la Computación
Proyecto: Generic data retrieval API for the Asterisk project.
Fundacion Asterisk

Mi nombres : Emilio Tagua


Universidad : Universidad de Mendoza
Carrera : Ingenieria en Informática
Proyecto : "Integrate Arel into ActiveRecord" Orgnizacion "Ruby on Rails"

Nombre: Lucas Amador


Universidad: UTN FRBA
Carrera: Ing en Sistemas de Información
Proyecto: Rules refactoring para JBoss Drools - Jboss

Nombre: Alejandro Santos


Universidad: UNLP
Carrera: Licenciatura en Informatica
Proyecto: Mercurial on Py3k - Python

Nombre: Gerardo Huck.


Carrera : Lic en Cs de la Computacion
Universidad Nacional de Rosario
Proyecto "Cytoscape GPU Assisted Graph Layout Plugin",
dentro de la organizacion GenMAPP.
Mi ¨PROPUESTA¨
Doogg EL EKEKO !!!
Doogg es la variant of the cortado applet java by embedding this applet in your
website, you can give viewers access to streams from either streaming server or play
a local file from your server without the need for a locally installed media player
supporting the correct formats on the visitor’s computer applet for Ogg formats
(Vorbis, Theora).

A
Que es lo que HAY
Todos FLASH
En que Me Inspire
En JS - VLC CONTROL

# Mi Primer
Plugins VLC CONTROL EKEKO
# Es Basico!!!
¨1er Contacto con¨
Michael Dale!!!
On 13th April 2009 21:24 Michael Dale wrote:

I am willing to mentor this project but the student will probably have to deviate
substantially from what was originally proposed. If the student can contact me
(very soon) ...... Also the student should give us some references to previous
projects that shows some experience in this area.

On 14th April 2009 14:03 Gerardo Antonio Cabero wrote:


Dear Michael Dale
I just contact you email Gerard
CORTADO APPLET es BASICO!!!!!

Y me enseño lo Siguiente...
¨Mv EMBED¨
is a javascript – Jquery - library for easy
embedding of ogg theora/vorbis media with
the html5 !!!
WAPPER para los
Siguiente Reproductores
VLC (win,linux,mac) (firefox & IE)

Oggplay (win,linux,mac) (firefox only)

Java cortado (java based win, linux, mac)

Mplayer, Totem/gstreamer (linux firefox only)

Native html5 Opera and firefox

Native Safari, with xiph quicktime component

Flash Plugin (win, linux, mac)


¨Mi Trabajo¨
# Controlador de Volumen
# Skins EKEKO
# MVConfig
#Busqueda Video Audio Relational !!!
DESAFIO EXTRA

IEXPLORER – SAFARI – Chrome – FF – OPERA


Bueno ya se por que los WebMaster tiene
Tantos Dolores de Cabeza
¨Algo del trabajo¨
1 MES
Control de Volumen
Muy Lindo – Muy Bello – Pero ....
El ritmo de codificacion en estos
Proyectos , es RE RE RE BESTIAL Y RAPIDO..

LA TECNOLOGIA :
JavaSCRIPT – JQUERY
JSON – XML
API - Wiki y de MAS
API – De Conextores – Contar Flow y HTML5
CSS
CODIGO Function en MVEmbed!!!
+
+ //Volumen Slider
+ js_log(" should add slider binding: " + $j('#volume_bar_'+embedObj.id).length) ;
+ //get_vol_vlc
+ //$j('#volume_bar_'+embedObj.id).ready(function () {
+
+ //$j('#' +embedObj.id).get(0).vol_slider(perc);
+
+ //});
+ // $j('#volume_bar_' +embedObj.id).get(0).updateVolume(30/100);
+ $j('#volume_bar_'+embedObj.id).slider({
+ range: "min",
+ value: 30,
+ min: 0,
+ max: 100,
+ start: function(event, ui){
+ var id = (embedObj.pc!=null)?embedObj.pc.pp.id:embedObj.id;
+ embedObj.userSlide=true;
+ },
+ slide: function(event, ui) {
+ var perc = ui.value/100;
+ $j('#' +embedObj.id).get(0).updateVolume(perc);
+ $j('#volume_control_'+embedObj.id ).removeClass('ui-icon-volume-on').addClass('ui-icon-volume-off');
+ if (perc==0) {
+ $j('#volume_control_'+embedObj.id ).removeClass('ui-icon-volume-on').addClass('ui-icon-volume-off');
+
+
+ }
+ else{
+
+ $j('#volume_control_'+embedObj.id ).removeClass('ui-icon-volume-off').addClass('ui-icon-volume-on');
+ }
+ },
+ change:function(event, ui){
+ //only run the onChange event if done by a user slide:
+ if(embedObj.userSlide){
+ embedObj.userSlide=false;
+ embedObj.seeking=true;
+
+ var perc = ui.value/100;

+ $j('#' +embedObj.id).get(0).updateVolume(perc);
+
+ }
+ }
+ });+
+ $j('#volume_bar_'+embedObj.id).append( ctrlBuilder.MvBufferVolHtml() );
+ $j('#volume_bar_'+embedObj.id).addClass("ui-slider-handle");
+$j('#vol_'+embedObj.id).click(function(){
+ $j('#vol_'+embedObj.id).removeClass("ui-icon-volume-on");
+ $j('#vol_'+embedObj.id).addClass("ui-icon-volume-off"); });
ALGO DE CODIGO VLC!!!
onPause: function(){
this.parent_pause(); //update the inteface if paused via native control pause : function(){
}, this.parent_pause(); //update the inteface if
onStop: function(){ paused via native control
js_log('vlc:onStop:'); if( this.vlc ){
if(!this.seeking) this.vlc.playlist.togglePause();
this.onClipDone(); }
}, },
/* js hooks/controls */ toggleMute:function(){
play : function(){ this.parent_toggleMute();
js_log('f:vlcPlay'); this.getVLC();
this.getVLC(); if(this.vlc)
//call the parent this.vlc.audio.toggleMute();
this.parent_play(); },
if( this.vlc ){ //@@ Suport UpDateVolumen
//plugin is already being present send play call: updateVolumen:function(perc){
// clear the message log and enable error logging this.getVLC();
if( this.vlc.log ){ if(this.vlc)
this.vlc.log.messages.clear(); this.vlc.audio.volume = perc*100;
}
if(this.vlc.playlist) },
this.vlc.playlist.play(); //@@ Get Volumen
getVolumen:function(){
this.monitor(); this.getVLC();
this.paused=false; if(this.vlc)
} return this.vlc.audio.volume / 100;
}, },
stop : function(){ fullscreen : function(){
if(this.vlc){ if(this.vlc){
if(typeof this.vlc != 'undefined' ){ if(this.vlc.video)
if(typeof this.vlc.playlist != 'undefined'){ this.vlc.video.toggleFullscreen();
//dont' stop (issues all the plugin-stop actions) }
//this.vlc.playlist.stop(); },
if( this.monitorTimerId != 0 )
{
clearInterval(this.monitorTimerId);
this.monitorTimerId = 0;
}
}
}
}
//this.onStop();
//do parent stop
this.parent_stop();
},
ALGO DE CODIGO Native HTML 5 !!!
pause : function(){
this.getVID();
this.parent_pause(); //update interface
CSS ALGO
if(this.vid){ .mv-player .volume_on {
this.vid.pause(); background: url(images/player_volume_tag.png) 0 8px no-repeat;
} }
//stop updates: .mv-player .volume_off{
this.stopMonitor(); background: url(images/player_volume_tag_off.png) 0 8px no-repeat;
}, }
play:function(){
this.getVID(); .mv-player .volume_knob {
this.parent_play(); //update interface background: url(images/player_slider.png) 0 0 no-repeat;
if( this.vid ){ width: 14px;
this.vid.play(); height: 14px;
//re-start the monitor: position: absolute;
this.monitor(); z-index: 2;
} margin: -1px 0 0 3px;
}, cursor: pointer;
toggleMute:function(){ }
this.parent_toggleMute(); .mv-player .vol_container{
this.getVID(); z-index:99;
if(this.vid) width:23px;
this.vid.muted = this.muted; height:75px;
}, width:23px;
updateVolumen:function(perc){ background: #CCC;
this.getVID(); }
if(this.vid) .mv-player .vol_container_below{
this.vid.volume = perc; top:30px;
}, }
getVolumen:function(){ .mv-player .vol_container_top{
this.getVID(); top:-77px;
if(this.vid) }
return this.vid.volume; .mv-player .vol_container .volume-slider{
}, margin-top:5px;
getNativeDuration:function(){ height:65px;
if(this.vid) width:10px;
return this.vid.duration; margin-left: auto ;
}, margin-right: auto ;
load:function(){ }
this.getVID();
if( !this.vid ){
//no vid loaded
js_log('native::load() ... doEmbed');
this.onlyLoadFlag = true;
this.doEmbedHTML();
}else{
//won't happen offten
this.vid.load();
}
Primer Periodo de Evaluacion
ES COMO
# Comer Agujas – Clavos – Vidrio -
Tomar Veneno de Cobra …
Primitive
Video and Audio Relational Search
Nucleo del Video Relational Search !!!
CORE
+ "wikiTitleKey":null,

En Funciones
+
+ if($j(video_element).attr('wikiTitleKey'))
# API DE WIKIMEDIA
+ this.wikiTitleKey=$j(video_element).attr('wikiTitleKey');
COMMONS y OTRAS
+
+
mvVideoAudioSearch:function(){
// Primitive Search en Wikimedia Coommons ///
WIKI
+ var url_search = 'http://commons.wikimedia.org/w/api.php';
+ js_log('thum disp:'+ url_search );
+
+
+
js_log('switch video Relational' );
var _this=this
# JSON – JQUERY –
+
+
+
var reqObj = {
'action':'query',
DOM
+ 'titles': this.wikiTitleKey ,
+ 'generator':'categories'
+
+
+
};

var req_categories= new Array();


# Numeros Randomicos
+
+ do_api_req( { Para generar la tirarada
+
+
+
'data':reqObj,
'url': url_search
}, function(data){
de Monedas
+ var index=0;
+ if(data.query && data.query.pages){
+ for(var pageid in data.query.pages){
+ var page = data.query.pages[pageid];
+ req_categories[index]= page.title;
+ index++;
+ }
+ }
+ mv_getVideos(req_categories);
+ });
+
+ function mv_getVideos(categoria){
+ for ( var i= 0 ; i<= categoria.length ;i++ ){
+ categoria_relational= categoria[i];
+ var reqObj = {
+ 'action':'query',
+ 'list':'categorymembers' ,
+ 'cmtitle': categoria_relational,
+ };
+ do_api_req( {
+ 'data':reqObj,
+ 'url': url_search
+ }, function(data){
+ var _this=this;
+ var videos="";
+ if(data.query && data.query.categorymembers){
+ for(var pageid in data.query.categorymembers){
+ if( i != '-1' && i != '-2' ){
+ var page = data.query.categorymembers[pageid];
+ mvVideoRelatinal(page.title);
+ }
+ }
+ }
+ }
+ );
+
+ }
+ }
+
+ function mvVideoRelatinal(title){
+ var video = title;
+ var reqObj = {
+ 'action':'query',
+ 'titles':video,
+ 'prop' : 'imageinfo',
+ 'iiprop' : 'url',
+ 'iiurlwidth': '400'
+
+ };
+ do_api_req( {
+ 'data':reqObj,
+ 'url': url_search
+ }, function(data){
+ //alert(video);
+ var _this=this;
+ var listavideos="";
+ for(var i in data.query.pages){
+ if( i != '-1' && i != '-2' && (Math.random()>=0.5) ){
+ local_poster = data.query.pages[i]['imageinfo'][0].thumburl;
+ if(local_poster == false){
+ local_poster ="http://upload.wikimedia.org/wikipedia/commons/7/79/Wiki-commons.png";
+ }
+ local_description = data.query.pages[i]['imageinfo'][0].descriptionurl;
+ if (local_description.match(/.png$|.gif$|.jpg$/gi)==null) {
+ $j('ul').append('<li><a href="'+local_description+'" ><img src="'+local_poster+' "></a><div><span>
'+video+' </span></br></br><a title="link" target="_blank" href="'+ local_description +'">link Video</a></div></li>') ;
+ }
+ }
+ };
+ }
+ );
+ }
+},
+
+ onClipDone:function(){
+ js_log('base:onClipDone');
+ //stop the clip (load the thumbnail etc)
+ this.stop();
+ this.seek_time_sec = 0;
+ this.setSliderValue(0);
+ var _this = this;

+ this.onClipDone_disp=true;
+ this.thumbnail_disp=true;
+ //make sure we are not in preview mode( no end clip actions in preview mode)
+ if( this.preview_mode )
+ return ;
+ $j('#img_thumb_'+this.id).css('zindex',1);
+ $j('#big_play_link_'+this.id).hide();
+ //add the liks_info_div black back
+ $j('#dc_'+this.id).append('<div id="liks_info_'+this.id+'" ' +
+ 'style="width:' +parseInt(parseInt(this.width)/2)+'px;'+
+ 'height:'+ parseInt(parseInt(this.height)) +'px;'+
+ 'position:absolute;top:10px;overflow:auto'+
+ 'width: '+parseInt( ((parseInt(this.width)/2)-15) ) + 'px;'+
+ 'left:'+ parseInt( ((parseInt(this.width)/2)+15) ) +'px;">'+
+ '</div>' +
+ '<div id="black_back_'+this.id+'" ' +
+ 'style="z-index:-2;position:absolute;background:#000;' +
+ 'top:0px;left:0px;width:'+parseInt(this.width)+'px;' +
+ 'height:'+parseInt(this.height)+'px;">' +
+ '</div>' +
+ '<div class="widget" >' +
+ '<h1>Video and Audio Relational </h1>'+
+ '<div class="widget_style">' +
+ '<ul id="gerard" >' + '</br> ' +
+ '</ul>' +
+ '</div>' +
+ '</div>'
+ );
+ this.mvVideoAudioSearch();
+ //start animation (make thumb small in upper left add in div for "loading"
+ $j('#img_thumb_'+this.id).animate({
+ width:parseInt(parseInt(_this.width)/2), height:parseInt(parseInt(_this.height)/2), top:20, left:10
+ },
+ 1000,
+ function(){
+ //animation done.. add "loading" to div if empty
+ if($j('#liks_info_'+_this.id).html()==''){
+ $j('#liks_info_'+_this.id).html(gM('loading_txt')); }})
+ //now load roe if run the showNextPrevLinks
+ if(this.roe && this.media_element.addedROEData==false){
+ do_request(this.roe, function(data)
+ {
+ _this.media_element.addROE(data);
+ _this.getNextPrevLinks();
+ }); else{
+ this.getNextPrevLinks(); }},
+
/* Search Video */ +.widget a.previous{
+.widget { + float:left;
+width:345px; + display:block;
+z-index:6663; + width:20px;
+position: relative; + height:20px;
+width: 400px; + margin-top:28px;
+height: 130px; + margin-right:2px;
+left: 0px; +}
+top: 20px; +.widget a.next{
+background : transparent url(images/bg_202020_90.png) repeat scroll 0 0; + float:right;
+overflow-x:auto; + display:block;
+} + width:20px;
+.widget h1 { + height:20px;
+border:medium none; + margin-top:-31px;
+font-size:20px; +}
+margin:4px 0px 4px 11px; +
+padding:0; +.widget_style {
+color:#F0F0F0; +text-align:left;
+font-family:arial,sans-serif; +padding:0px 0px 0px 0px;
+} +}
+
+ +
+.widget_style li div { +.widget_style ul {
+float:right; +margin:0;
+margin:5px 0 0 10px; +padding:0;
+width:200px; +
+} +list-style-image:none;
+ +list-style-position:inside;
+.widget_style img { +list-style-type:none;
+width:90px; +margin:0;
+height:70px; +padding:0;
+z-index:2; +}
+border-bottom:3px solid #36393D; +
+border-top:3px solid #36393D; +
} +.widget_style li{
+-x-system-font:none;
+//background-color:red;
+color:#FAFAFA;
+display:table;
+font-family:arial,sans-serif;
+font-size:11px;
+font-size-adjust:none;
+font-stretch:normal;
+font-style:normal;
+font-variant:normal;
+font-weight:normal;
+line-height:normal;
+margin:0 0 6px 35px;
+padding:0;
+}
VEAMOS
Si Corre en FF en ubuntu
...
Un “Wikipedia Con Videos“
SIPI...
Proximo Paso:

Videos

Multimedia
Add Media Wizard
Shared javascript Remote Repository Search Wikimedia network
Provides Media of sites
Interfaces for:
Sequencer:

Legislative Video
Provides add media
Wiki
wizard for in page
insert

My Own
Open Licensed Content Network: Wiki.com
Client side
●archive.org firefog or image uploads
●metavid.org

●commons.wikimedia.org

●Flickr

●Kaltura content network

●etc.
Add Media Wizard
 Enabled by search apis (json, rss)
 Insert / Import based on Context
 In-line edit & layout tools: crop, scale, filters, etc
Add Media Wizard

 Selection of segments of videos from remote


content source
 enabled by oggz_chop
Definicion...
;)
Definicion...
;)
Definicion...
Momentos
Dificil !!!
Pienso que no estas listo para summer of code quisas
debes tratar de investigar conceptos de programacion
por el año y quisas re-aplicar el año que vine?
Leccion Importante
No vivir Atado !!!

Vivir como los Hijos de Dios


sin que nadie nos Encadene
(ATE)
¨Y DESPUES QUE...¨
# Actual Manenedor Oficial de MVEmbed
# Audio Relational
# Controladores para Audio
Soy Cobre... Y Brillo...
Vos que sos Diamante …
Con mas Razon tenes que Brillar...
Simplemente SI SE PUEDE!!!!

Você também pode gostar