On Github lporras / BiTorrent-Apps-Presentation
Presentado por Luis Porras / @lporras16 Ruby/Javascript Developer en Selfie.com
Oh hey, these are some notes. They'll be hidden in your presentation, but you can see them if you open the speaker notes window (hit 's' on your keyboard).Technically the site doesn’t search Kim Dotcom’s Mega. Instead, it allows users to submit links to files hosted on Mega and makes this repository searchable.
Mega-Search.me, a searchable repository of files hosted on Kim Dotcom’s Mega, has launched a new sister site. Mega-Stream.me brings back some of the Megavideo glory by allowing users to stream video and audio files from Mega. Users can stream videos directly from the Mega-Search.me website or paste a link to an audio or video file hosted on Mega.
Por favor NO APOYEN LA PIRATERIA
Esta charla no es para aprender a piratear
Yo no soy un pirata
Trackers: Inicialmente es la única forma de localizar qué usuarios contienen el archivo que se quiere descargar.
Los Usuarios que los trackers se encargan de buscar.
Tracker, panal de abejas.
Enjambre, los usuarios.
La miel, el contenido del torrent
Cada Nodo conserva info de los nodos vecinos
Evitando un cuello de botella en la caida de un Tracker
Los clientes Torrent tienen la funcionalidad de desactivar el DHT con "Private Flag"
Busca combinar la potencia de la descarga directa del servidor con la del P2P.
Hay como mínimo una semilla completa de la que descargar siempre
Ayuda a reducir el número de piezas que el 1er seed debe subir para crear las primeras semillas
Cuando un seed “A” es super seeding, no es una semilla normal con el 100% del archivo sino que se oculta como un leecher normal que no tiene ningún dato. A medida que otros peers entran en el enjambre, el superseeder (el peer disfrazado) les manda un mensaje de que tiene una nueva pieza — una pieza que en realidad nunca ha sido enviada. Esto hará que el peer “B” del enjambre pida solamente ese trozo.
Cuando el peer “B” termina de descargar aquella pieza, el seed "A" no le comunicará que tiene otras piezas para enviar hasta que vea que la primera pieza que le envió a "B" haya sido compartida con al menos otro peer “C”. Mientras eso no pase, el peer “B” no tendrá acceso a ninguna de las demás piezas de la semilla “A”, y así “A” no desperdiciará su ancho de banda de subida teniendo que volver a enviar piezas que ya ha enviado.
Leeching: Normalmente los usuarios se desconectan rápidamente una vez obtenido la copia completa de su archivo.
Para evitar esto han aparecido los denominados trackers privados. Normalmente para usar un tracker privado hay que identificarse previamente.
Se considera que lo justo es subir la misma cantidad de datos que se ha bajado, es decir que la tasa de descarga/subida sea de 1, pero este comportamiento no es común ni está garantizado en BitTorrent. Normalmente los usuarios se desconectan rápidamente una vez que han obtenido la copia completa de su archivo. Esto se denomina leeching. Esta forma de actuar provoca que aunque todo el contenido nuevo se comparta al principio muy rápidamente, con el paso de los días el torrent caduque porque no quedan semillas, ya que BitTorrent sólo ofrece incentivos a los leechers pero no a los seeds que no obtienen ninguna ventaja por permanecer subiendo a la red.
Para evitar esto han aparecido los denominados trackers privados. Normalmente para usar un tracker privado hay que identificarse previamente. Para cada usuario registrado guardan las estadísticas de tráfico y utilizan un sistema de porcentajes que permite saber si el usuario comparte o no los datos que haya descargado o esté descargando. Muchos de estos trackers suelen expulsar a los usuarios que tienen un porcentaje bajo, ya que al no compartir no colaboran con la red.
Btapp.js depente fuertemente de jQuery, Backbone, Json2 y jStorage
Backbrace es altamente recomendado, para aliviar algunos de los problemas que podrías tener usando árboles profundos de modelos y colecciones.
Por defecto, el Api tratará de usar Torque
lo que significa, facilita la instalación de un plugin, y el mencionado cliente torrent Si no se encuentra.
//Se conecta a Torque (por Defecto) var btapp = new Btapp; btapp.connect();
O...
//Usando la sintáxis de plugin var btapp = new Btapp; btapp.connect({ product: 'Torque' plugin: true });
var btapp = new Btapp; btapp.connect({ product: 'uTorrent', plugin: false, pairing_type: 'native' });
var btapp = new Btapp; btapp.connect({ product: 'BitTorrent', plugin: false, pairing_type: 'native' });
No Hacer
var btapp = new Btapp(); btapp.connect(); btapp.get('torrent').each(function(torrent) { torrent.remove(); });
Hacer
var btapp = new Btapp(); btapp.connect(); // Este código esperará por el evento de añadir el torrent. btapp.on('add:torrent', function(torrents) { torrents.each(function(torrent) { torrent.remove(); }); });
var magnet = 'magnet:?xt=urn:btih:f0d665f264393a7dafd7d05d739e1097df652e80&dn=The.Yes.Men.Fix.The.World'; //var url = 'http://vodo.net/media/torrents/Deadside.Pilot.2012.720p.x264-VODO.torrent'; var callback = function() { alert('añadido el torrent'); }; btapp.get('add').torrent({ url: magnet, callback: callback });
var files = btapp.get('torrent').get('D9C70109CB05C181F9EC9373BE876A0D40C4D7B0').get('file'); > files.pluck('id'); ["Continuum Tour 2013.mkv", "Want.to.see.what.happens.next.url", "vodo.nfo"]
var btapp = new Btapp; btapp.connect(); var url = 'http://vodo.net/media/torrents/Deadside.Pilot.2012.720p.x264-VODO.torrent'; btapp.live('add', function(add) { add.torrent(url); }); btapp.live('torrent * properties download_url', function(download_url, properties) { // Solo interesado en el torrent que tiene un download_url que coincide la url provista if(download_url == url) { var name = properties.get('name'); // Encontramos nuestro Torrent! // Ahora escuchamos los cambios del progreso properties.on('change:progress', function(progress) { // Tenemos una actualización! alert('Progreso de tu descarga de ' + name + ': ' + progress); }); } });
Programando en Vivo: Aplicación DHT usando btapp.js por Patrick Williams en Vimeo.