BUSCADOR INTERNO

Que esta buscando ?

funciones de busqueda de raices PSEUDOCODIGO

A continuacion voy a colocar 2 metodos de busqueda de raices en PSEUDOCODIGO, si quieres mas informacion y profundidad puedes consultar en libros de metodos numericos como el de Burden.


Los siguientes algoritmos son para buscar raices(soluciones) a algoritmos de grado <=3 , es decir, de la forma a*x^3+b*x^2+c*x+d

FUNCIONES
  • abs: devuelve el valor absoluto de un numero.
  • Regla_Falsa: Busca soluciones para la ecuacion f(x)=0 dada una funcion f continua en [p0,p1] donde f(p0) y f(p1) tienen sifnos opuestos.
  • Regla_Falsa: Busca soluciones para la ecuacion f(x)=0 dada una funcion f continua en [p0,p1] donde f(p0) y f(p1) tienen sifnos opuestos.
VALOR ABSOLUTO

FUNCION abs (n:real):real
SI (n<0) HAGA
n = n * (-1.0)
FIN_SI
RETORNE n
FIN_FUNCION

REGLA FALSA

FUNCION Regla_Falsa (a:real, b:real, c:real, d:real, P0:real, P1:real, TOL:real, N0:entero):real
q0, q1, p, q : real
i:entero
i = 2
q0 = a*(p0^3.0)+b*(p0^2.0)+c*p0+d
q1 = a*(p1^3.0)+b*(p1^2.0)+c*p0+d
MIENTRAS (i<=N0) HAGA
p = p1-q1(p1-p0)/(q1-q0)
SI (abs(p-p1)<TOL) HAGA
RETORNE p
FIN_SI
i = i+1
q = a*(p^3.0)+b*(p^2.0)+c*p+d
SI ((q*q1)<0.0) HAGA
p0 = p1
q0 = q1
FIN_SI
p1 = p
q1 = q
FIN_MIENTRAS
RETORNE TOL
FIN_FUNCION

PUNTO FIJO

FUNCION Punto_Fijo(a:real, b:real, c:real, d:real, P0:real, TOL:real, N0:entero):real
p:real
i:entero
i = 1
MIENTRAS (i<=N0) HAGA
p = a*(p0^3.0)+b*(p0^2.0)+c*p0+d
SI (abs(p-p1)<TOL) HAGA
RETORNE p
FIN_SI
i = i+1
p0 = p
FIN_MIENTRAS
RETORNE TOL
FIN_FUNCION

Leer más…

emesene current song & amarok 2

Sabiendo que se lanzo hace poco el release de amarok2 y muchos lectores utilizan emesene como su cliente de mensajería instantánea, quice crear un plugin o modificar el actual ya que obviamente no funcionaba, así que me puse a mirar si ya lo habían hecho (PARA NO REINVENTAR LA RUEDA) y menos mal alguien me ahorra trabajo creando una especie de parche para el plugin.

La comunicación anteriormente con el emesene se realizaba mediante python-dcop, por lo que solo bastaba instalar el paquete y reiniciar el emesene, pero ahora parece que han cambiado la vía de comunicación, no me atrevo a decir como lo hacen pues no me gusta especular, así que cuando tenga algo mas claro colocare la información.

Por el momento, solo debes ejecutar lo siguiente en Debian como ROOT si no perteneces al grupo de sudoers, si no lo sabes, simplemente ejecutalo como root; para debian y otras distros el proceso es muy similar y fácilmente deducible.

wget http://www.emesene.org/trac/raw-attachment/ticket/1955/pluginamarok2 && sudo sh pluginamarok2 && rm pluginamarok2

Usuarios de debian deben hacerlo como root.

En resumen, El comando anterior descarga, ejecuta y luego borra el plugin ya innecesario.. Si quieres ejecutar cada comando por separado, simplemente fijate que se separan por doble ‘&’

Luego abres tu emesene y en el plugin “current song”, seleccionas “amarok2″ y ya esta

Ahora pueden mostrarle a sus amigos su musica preferida, tambien es buena alternativa cuando se te acabo la creatividad para el mensaje personal ..

NOTA: si no funciona prueba
apt-get install python-dcop

reinicia emesene.

Si usas la version 1 de amarok, puedes encontrar como hacerlo en ESTA ENTRADA ANTIGUA

Leer más…

emesene current song & amarok

Resulta que amarok es mi reproductor de medios preferido, y hoy al instalarlo me lleve la sorpresa de que no mostraba en el emesene la canción que estaba reproduciendo.

Lo primero es ver que en los plugins de emesene tengamos activado current song, ademas, que en sus propiedades este amarok elegido.

Luego en una terminal de root hacemos:

apt-get install python-dcop

Matamos el proceso de python con el Monitor del sistema, o reiniciamos las X con ctrl+alt+TECLADEBORRAR… O simplemente cerramos la sección (El caso es matar el proceso de python).

Luego prende tu musica con amarok =), hecha a andar el emesene y le picas al icono como una nota al lado del mensaje personal y ya estuvo 

Leer más…

Vulnerabilidad albumes Facebook

Esta vulnerabilidad permite al atacante obtener los enlaces de los álbumes de cualquier usuario de facebook haciendo uso de FQL(Facebook Query Language).

Si bien se pueden obtener los enlaces, algunos no pueden ser accedidos al tener configuraciones extras.
A continuación, voy a explicar paso a paso como realizar el proceso.

  • Buscamos el ID del usuario que deseamos obtener los enlaces: Para esto se busca la persona en el buscador interno del facebook, la idea es que lo intentes agregar como amigo, y al colocar el cursor sobre cualquier enlace relacionado, por ejemplo el de mensaje te dara un link como este http://www.facebook.com/addfriend.php?id=USERID.

  • Vamos al espacio para desarrolladores del api de Facebook http://developers.facebook.com/tools.php, ahi seleccionas en formato de respuesta "facebook PHP cliente", en Metodo, seleccionas "photos.getAlbums" y por ultimo, colocas el uid obtenido en el paso anterior y le das al boton "Metodo de llamada", lo cual te devuelve algo parecido a esto.


Array
(
[0] => Array
(
[aid] => 4838211643114538213
[cover_pid] => 4838211643114854938
[owner] => 1126483931
[name] => xxxxxxxxxxxxx
[created] => 1235487335
[modified] => 1237601584
[description] => DESCRIPCION
[location] => Luso!
[link] => http://www.facebook.com/album.php?aid=17637&id=USERID
[size] => 54
[visible] =>
)

)


El link que nos interesa es
http://www.facebook.com/album.php?aid=17637&id=USERID
Que debe quedar sin el "amp;"

Todos los creditos a Tryptophan de foro.elhacker.net

Leer más…

java y java-plugin en Debian/Ubuntu

Ahora podemos ver muchas aplicaciones que se ejecutan por medio de la maquina virtual de java, para lo cual se necesita tener instalada la version 6 (version a la fecha)..

Los applets extienden la funcionalidad de las paginas webs, pero para correrlos necesitamos instalar el plugin de java.

Primero instalamos los respectivos paquetes...

  • sudo aptitude install sun-java6-jre sun-java6-plugin
luego actualizamos la configuracion para que se use el java que acabamos de instalar
  • sudo update-alternatives --config java
la opcion que debemos elegir es la del enlace a java6

/usr/lib/jvm/java-6-sun/jre/bin/java

NOTA: si quieres correr un jar, se hace de la siguiente manera

java -jar programa.jar

Leer más…

Clase vector cpp (c++) #1

Los vectores son un tipo de contenedores secuenciales; se llama así debido a que su orden es estrictamente lineal, es decir, una posición tras otra.

La clase vector es muy útil para trabajar con cierta cantidad de datos desconocidos y arreglos, pues permite manejar dinámicamente objetos en dichos arreglos, pudiendo crearlos de clases y variables expandiendo o contrayendo el arreglo.

dicha clase se encuentra definida en la cabecera vector para incluirla simplemente se coloca en el campo de declaraciones.

#include <vector>  ;


Para declarar un vector se usa la siguiente notación formal

template < class T, class Allocator = allocator<T> > class vector;


Los que no entienden mucho la notación de arriba, en español (y en el codigo) se declara parecido a lo siguiente.

vector<tipo> nombre_vector;  


Como ejemplo, para declarar un vector de enteros se hace de la siguiente manera

vector <int>enteros;


La parte de class Allocator = allocator, se usa para indicar el tamaño en memoria que debe tomar cada elemento del vector, si no se especifica, tomara el tamaño definido en la clase que se le paso, en este caso, int [2 bytes] C/elemento.

Comparados con los arreglos, los vectores pueden ser redimensionados fácilmente, aunque los vectores suelen consumir mas memoria pues mantienen alguna cantidad reservada para futuros incrementos.

Cuando se incrementa demasiado rápido un vector, suele disminuir mucho el performance del programa, pues el vector debe redimensionar la memoria que ocupa a un espacio mas grande, para evitarlo, se puede recurrir a tener una reserva constante de memoria para el vector con vector::reserve.

Voy a tomar algunas de las funciones mas importantes (aunque todas lo son) y a explicarlas en un código de ejemplo que no va a tener mucho sentido, pero sera bueno para ilustrar el uso básico de vectores.

#include <vector>  
#include <iostream>

using namespace std;  
  
int main()  
{  
    //Declaracion simple vector.  
    vector <int>enteros;  
    int num;  
  
    cout << num;  
  
    //se agrega un elemento al final del vector  
    enteros.push_back(num);  
  
    //se accede a una posicion estatica del vector y se muestra su amplitud  
    cout << "En la posicion 0 esta : " << (enteros[0]) << endl  
         << "Longitud del vector : "   << (enteros.size()) << endl  
         << "Capacidad: " << (enteros.capacity()) << endl  
         << "Longitud maxima del vector: " << (enteros.max_size()) << "\n\n";  

  
    //Se limpia el vector, es decir, se vacia  
    enteros.clear();  
  
    for (int i=1; i <=10; i++)  
    enteros.push_back(i);  
  
    cout << "Hay en el vector: " << (enteros.size()) << " elementos\n";  
  
    //Elimino el ultimo elemento del vector  

    enteros.pop_back();  
  
    cout << "Hay en el vector: " << (enteros.size()) << " elementos\n";  
  
    return 0;  
}  

salida:
Entre un numero: 666
En la posicion 0 esta : 666
Longitud del vector : 1
Capacidad: 1
Longitud maxima del vector: 1073741823


Hay en el vector: 10 elementos
Hay en el vector: 9 elementos

Esto es lo basico qe se debe saber sobre vectores, luego coloco mas ejemplos y un par de trucos.

Leer más…

Goear Downloader Python QT4

Para los que no la conocen, la pagina web www.goear.com te permite escuchar online variedad de canciones de muchos generos, lo malo (para nosotros claro), es que solo se pueden escuchar online, pero eso tiene su solucion con el Goear Downloader, el cual te permite descargar cualquier cancion de dicha web.

Para cualquier distro debes tener instaladas las librerias de "python-qt4" (PyQt4), en debian derivados se hace de la siguiente forma

sudo aptitude install python-qt4

Es un script/Aplicacion en python, por lo que se ejecuta desde una terminal si no se tiene asociada la extencion al interprete.




#! /usr/bin/python
# -*- coding: utf-8 -*-

import urllib2
import sys

from PyQt4 import QtCore, QtGui

class Tuxsong (QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.setGeometry(300, 300, 440, 90)
self.setWindowTitle('Tuxsong v 0.000 Beta')
self.edit=QtGui.QLineEdit(self)
self.edit.setGeometry(10, 10, 320, 26)
self.button = QtGui.QPushButton('Descargar', self)
self.button.move(340, 10)
self.progressbar = QtGui.QProgressBar(self)
self.progressbar.setGeometry(10, 48, 415, 25)
self.connect(self.button, QtCore.SIGNAL('clicked()'), self.Descargar)

def Descargar(self):
url = Tuxsong.edit.text()
url = url.split('listen/')
url = url[1].split('/')
url = "http://www.goear.com/files/xmlfiles/" + (url[0])[0] + "/secm" + url[0] + ".xml"
response = urllib2.urlopen(str(url))
xml = response.read()
xml = xml.split('\n')
url = xml[2].split('"')
url = url[1], url[5], url[7]

cancion = str(url[2]+"-"+url[1]+".mp3")
cancion = cancion.replace('/', '-')
mp3 = open( cancion, 'wb')
response = urllib2.urlopen(str(url[0]))

headers = response.info()
size = int(headers['Content-Length'])
self.progressbar.setRange(0, size)

mp3.write(response.read(4096))
i = 4096
self.progressbar.setValue(i)

while i <= size:
mp3.write(response.read(4096))
i = i + 4096
self.progressbar.setValue(i)

response.close()
mp3.close()
self.progressbar.setValue(i)


app = QtGui.QApplication(sys.argv)
Tuxsong = Tuxsong()
Tuxsong.show()

sys.exit(app.exec_())

Leer más…